- */
- public function definition(): array
- {
- return [
- 'name' => $this->faker->name,
- 'description' => $this->faker->sentence,
- 'url' => $this->faker->url,
- 'category' => BookmarkCategory::factory(),
- ];
- }
-}
diff --git a/database/migrations/2024_02_13_230402_create_bookmark__categories_table.php b/database/migrations/2024_01_31_204730_create_bookmark__categories_table.php
similarity index 86%
rename from database/migrations/2024_02_13_230402_create_bookmark__categories_table.php
rename to database/migrations/2024_01_31_204730_create_bookmark__categories_table.php
index bb1799b..68bf949 100644
--- a/database/migrations/2024_02_13_230402_create_bookmark__categories_table.php
+++ b/database/migrations/2024_01_31_204730_create_bookmark__categories_table.php
@@ -12,9 +12,9 @@
public function up(): void
{
Schema::create('bookmark__categories', function (Blueprint $table) {
- $table->id();
+ $table->increments('id');
$table->string('name');
- $table->unsignedBigInteger('priority')->nullable();
+ $table->float('priority');
$table->timestamps();
});
}
diff --git a/database/migrations/2024_02_13_230457_create_bookmark__sites_table.php b/database/migrations/2024_01_31_204742_create_bookmark__sites_table.php
similarity index 53%
rename from database/migrations/2024_02_13_230457_create_bookmark__sites_table.php
rename to database/migrations/2024_01_31_204742_create_bookmark__sites_table.php
index f016f43..775c6bb 100644
--- a/database/migrations/2024_02_13_230457_create_bookmark__sites_table.php
+++ b/database/migrations/2024_01_31_204742_create_bookmark__sites_table.php
@@ -12,15 +12,13 @@
public function up(): void
{
Schema::create('bookmark__sites', function (Blueprint $table) {
- $table->id();
- $table->string('name');
- $table->text('description')->nullable();
- $table->string('url');
- $table->unsignedBigInteger('category');
- $table->foreign('category')
- ->references('id')
- ->on('bookmark__categories')
- ->onDelete('cascade');
+ $table->increments('id');
+ $table->string('name', 50);
+ $table->string('description', 150);
+ $table->string('url', 100);
+ $table->float('priority');
+ $table->integer('category_id')->unsigned();
+ $table->foreign('category_id')->references('id')->on('bookmark__categories');
$table->timestamps();
});
}
@@ -30,6 +28,6 @@ public function up(): void
*/
public function down(): void
{
- Schema::dropIfExists('bookmarks');
+ Schema::dropIfExists('bookmark__sites');
}
};
diff --git a/database/migrations/2024_01_31_204815_create_guestbook__bans_table.php b/database/migrations/2024_01_31_204815_create_guestbook__bans_table.php
new file mode 100644
index 0000000..6f0a959
--- /dev/null
+++ b/database/migrations/2024_01_31_204815_create_guestbook__bans_table.php
@@ -0,0 +1,29 @@
+increments('id');
+ $table->string('ip_address', 40);
+ $table->string('reason', 50);
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('guestbook__bans');
+ }
+};
diff --git a/database/migrations/2024_02_25_151527_create_guestbook__entries_table.php b/database/migrations/2024_01_31_204820_create_guestbook__entries_table.php
similarity index 60%
rename from database/migrations/2024_02_25_151527_create_guestbook__entries_table.php
rename to database/migrations/2024_01_31_204820_create_guestbook__entries_table.php
index f1b2a11..baaf862 100644
--- a/database/migrations/2024_02_25_151527_create_guestbook__entries_table.php
+++ b/database/migrations/2024_01_31_204820_create_guestbook__entries_table.php
@@ -12,12 +12,13 @@
public function up(): void
{
Schema::create('guestbook__entries', function (Blueprint $table) {
- $table->id();
- $table->string('name');
- $table->string('ip');
- $table->string('agent');
- $table->longText('message');
- $table->boolean('admin');
+ $table->increments('id');
+ $table->string('name', 255);
+ $table->bigInteger('timestamp');
+ $table->string('ip_address', 40);
+ $table->string('agent', 2048)->default('Agent unavailable');
+ $table->boolean('site_owner')->default(0);
+ $table->string('message', 512);
$table->timestamps();
});
}
diff --git a/database/migrations/2024_01_31_210227_populate_bookmark__categories_table.php b/database/migrations/2024_01_31_210227_populate_bookmark__categories_table.php
new file mode 100644
index 0000000..fb81e1f
--- /dev/null
+++ b/database/migrations/2024_01_31_210227_populate_bookmark__categories_table.php
@@ -0,0 +1,34 @@
+count() == 0) {
+ // Insert placeholder categories
+ DB::table('bookmark__categories')->insert([
+ ['name' => 'Friends\' Websites', 'priority' => 1],
+ ['name' => 'Cool Projects', 'priority' => 2],
+ ['name' => 'Other Cool Sites', 'priority' => 3],
+ ['name' => 'Miscellaneous Resources', 'priority' => 4]
+ ]);
+ }
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ //
+ }
+};
diff --git a/database/seeders/BookmarkCategoriesTableSeeder.php b/database/seeders/BookmarkCategoriesTableSeeder.php
deleted file mode 100644
index 5c8ea2f..0000000
--- a/database/seeders/BookmarkCategoriesTableSeeder.php
+++ /dev/null
@@ -1,30 +0,0 @@
-count(5)->create()->each(function ($category) {
-// $category->sites()->saveMany(BookmarkSite::factory()->count(3)->make());
-// });
- $category = new BookmarkCategory([
- 'name' => 'cool people',
- ]);
- $category->save();
- $site = new BookmarkSite([
- 'name' => 'campos',
- 'description' => 'Cool brazilian dude, does programming and stuff',
- 'url' => 'https://campos02.me/',
- 'category' => 1,
- ]);
- $site->save();
- }
-}
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
new file mode 100644
index 0000000..a9f4519
--- /dev/null
+++ b/database/seeders/DatabaseSeeder.php
@@ -0,0 +1,22 @@
+create();
+
+ // \App\Models\User::factory()->create([
+ // 'name' => 'Test User',
+ // 'email' => 'test@example.com',
+ // ]);
+ }
+}
diff --git a/package-lock.json b/package-lock.json
index 87accd6..b1b6ee3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,5 +1,5 @@
{
- "name": "wah.moe",
+ "name": "diskfloppy.me",
"lockfileVersion": 3,
"requires": true,
"packages": {
@@ -10,7 +10,7 @@
"devDependencies": {
"axios": "^1.1.2",
"laravel-vite-plugin": "^0.7.5",
- "vite": "^4.5.3"
+ "vite": "^4.5.2"
}
},
"node_modules/@esbuild/android-arm": {
@@ -21,7 +21,6 @@
"arm"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"android"
@@ -38,7 +37,6 @@
"arm64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"android"
@@ -55,7 +53,6 @@
"x64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"android"
@@ -72,7 +69,6 @@
"arm64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -89,7 +85,6 @@
"x64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -106,7 +101,6 @@
"arm64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"freebsd"
@@ -123,7 +117,6 @@
"x64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"freebsd"
@@ -140,7 +133,6 @@
"arm"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -157,7 +149,6 @@
"arm64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -174,7 +165,6 @@
"ia32"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -191,7 +181,6 @@
"loong64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -208,7 +197,6 @@
"mips64el"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -225,7 +213,6 @@
"ppc64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -242,7 +229,6 @@
"riscv64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -259,7 +245,6 @@
"s390x"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -276,7 +261,6 @@
"x64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -293,7 +277,6 @@
"x64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"netbsd"
@@ -310,7 +293,6 @@
"x64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"openbsd"
@@ -327,7 +309,6 @@
"x64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"sunos"
@@ -344,7 +325,6 @@
"arm64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -361,7 +341,6 @@
"ia32"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -378,7 +357,6 @@
"x64"
],
"dev": true,
- "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -388,126 +366,87 @@
}
},
"node_modules/@sentry-internal/feedback": {
- "version": "7.120.3",
- "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.120.3.tgz",
- "integrity": "sha512-ewJJIQ0mbsOX6jfiVFvqMjokxNtgP3dNwUv+4nenN+iJJPQsM6a0ocro3iscxwVdbkjw5hY3BUV2ICI5Q0UWoA==",
- "license": "MIT",
+ "version": "7.91.0",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.91.0.tgz",
+ "integrity": "sha512-SJKTSaz68F5YIwF79EttBm915M2LnacgZMYRnRumyTmMKnebGhYQLwWbZdpaDvOa1U18dgRajDX8Qed/8A3tXw==",
"dependencies": {
- "@sentry/core": "7.120.3",
- "@sentry/types": "7.120.3",
- "@sentry/utils": "7.120.3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@sentry-internal/replay-canvas": {
- "version": "7.120.3",
- "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.120.3.tgz",
- "integrity": "sha512-s5xy+bVL1eDZchM6gmaOiXvTqpAsUfO7122DxVdEDMtwVq3e22bS2aiGa8CUgOiJkulZ+09q73nufM77kOmT/A==",
- "license": "MIT",
- "dependencies": {
- "@sentry/core": "7.120.3",
- "@sentry/replay": "7.120.3",
- "@sentry/types": "7.120.3",
- "@sentry/utils": "7.120.3"
+ "@sentry/core": "7.91.0",
+ "@sentry/types": "7.91.0",
+ "@sentry/utils": "7.91.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/@sentry-internal/tracing": {
- "version": "7.120.3",
- "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.3.tgz",
- "integrity": "sha512-Ausx+Jw1pAMbIBHStoQ6ZqDZR60PsCByvHdw/jdH9AqPrNE9xlBSf9EwcycvmrzwyKspSLaB52grlje2cRIUMg==",
- "license": "MIT",
+ "version": "7.91.0",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.91.0.tgz",
+ "integrity": "sha512-JH5y6gs6BS0its7WF2DhySu7nkhPDfZcdpAXldxzIlJpqFkuwQKLU5nkYJpiIyZz1NHYYtW5aum2bV2oCOdDRA==",
"dependencies": {
- "@sentry/core": "7.120.3",
- "@sentry/types": "7.120.3",
- "@sentry/utils": "7.120.3"
+ "@sentry/core": "7.91.0",
+ "@sentry/types": "7.91.0",
+ "@sentry/utils": "7.91.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/@sentry/browser": {
- "version": "7.120.3",
- "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.120.3.tgz",
- "integrity": "sha512-i9vGcK9N8zZ/JQo1TCEfHHYZ2miidOvgOABRUc9zQKhYdcYQB2/LU1kqlj77Pxdxf4wOa9137d6rPrSn9iiBxg==",
- "license": "MIT",
+ "version": "7.91.0",
+ "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.91.0.tgz",
+ "integrity": "sha512-lJv3x/xekzC/biiyAsVCioq2XnKNOZhI6jY3ZzLJZClYV8eKRi7D3KCsHRvMiCdGak1d/6sVp8F4NYY+YiWy1Q==",
"dependencies": {
- "@sentry-internal/feedback": "7.120.3",
- "@sentry-internal/replay-canvas": "7.120.3",
- "@sentry-internal/tracing": "7.120.3",
- "@sentry/core": "7.120.3",
- "@sentry/integrations": "7.120.3",
- "@sentry/replay": "7.120.3",
- "@sentry/types": "7.120.3",
- "@sentry/utils": "7.120.3"
+ "@sentry-internal/feedback": "7.91.0",
+ "@sentry-internal/tracing": "7.91.0",
+ "@sentry/core": "7.91.0",
+ "@sentry/replay": "7.91.0",
+ "@sentry/types": "7.91.0",
+ "@sentry/utils": "7.91.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/@sentry/core": {
- "version": "7.120.3",
- "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.3.tgz",
- "integrity": "sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==",
- "license": "MIT",
+ "version": "7.91.0",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.91.0.tgz",
+ "integrity": "sha512-tu+gYq4JrTdrR+YSh5IVHF0fJi/Pi9y0HZ5H9HnYy+UMcXIotxf6hIEaC6ZKGeLWkGXffz2gKpQLe/g6vy/lPA==",
"dependencies": {
- "@sentry/types": "7.120.3",
- "@sentry/utils": "7.120.3"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@sentry/integrations": {
- "version": "7.120.3",
- "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.3.tgz",
- "integrity": "sha512-6i/lYp0BubHPDTg91/uxHvNui427df9r17SsIEXa2eKDwQ9gW2qRx5IWgvnxs2GV/GfSbwcx4swUB3RfEWrXrQ==",
- "license": "MIT",
- "dependencies": {
- "@sentry/core": "7.120.3",
- "@sentry/types": "7.120.3",
- "@sentry/utils": "7.120.3",
- "localforage": "^1.8.1"
+ "@sentry/types": "7.91.0",
+ "@sentry/utils": "7.91.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/@sentry/replay": {
- "version": "7.120.3",
- "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.120.3.tgz",
- "integrity": "sha512-CjVq1fP6bpDiX8VQxudD5MPWwatfXk8EJ2jQhJTcWu/4bCSOQmHxnnmBM+GVn5acKUBCodWHBN+IUZgnJheZSg==",
- "license": "MIT",
+ "version": "7.91.0",
+ "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.91.0.tgz",
+ "integrity": "sha512-XwbesnLLNtaVXKtDoyBB96GxJuhGi9zy3a662Ba/McmumCnkXrMQYpQPh08U7MgkTyDRgjDwm7PXDhiKpcb03g==",
"dependencies": {
- "@sentry-internal/tracing": "7.120.3",
- "@sentry/core": "7.120.3",
- "@sentry/types": "7.120.3",
- "@sentry/utils": "7.120.3"
+ "@sentry-internal/tracing": "7.91.0",
+ "@sentry/core": "7.91.0",
+ "@sentry/types": "7.91.0",
+ "@sentry/utils": "7.91.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/@sentry/types": {
- "version": "7.120.3",
- "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.3.tgz",
- "integrity": "sha512-C4z+3kGWNFJ303FC+FxAd4KkHvxpNFYAFN8iMIgBwJdpIl25KZ8Q/VdGn0MLLUEHNLvjob0+wvwlcRBBNLXOow==",
- "license": "MIT",
+ "version": "7.91.0",
+ "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.91.0.tgz",
+ "integrity": "sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==",
"engines": {
"node": ">=8"
}
},
"node_modules/@sentry/utils": {
- "version": "7.120.3",
- "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.3.tgz",
- "integrity": "sha512-UDAOQJtJDxZHQ5Nm1olycBIsz2wdGX8SdzyGVHmD8EOQYAeDZQyIlQYohDe9nazdIOQLZCIc3fU0G9gqVLkaGQ==",
- "license": "MIT",
+ "version": "7.91.0",
+ "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.91.0.tgz",
+ "integrity": "sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==",
"dependencies": {
- "@sentry/types": "7.120.3"
+ "@sentry/types": "7.91.0"
},
"engines": {
"node": ">=8"
@@ -517,17 +456,15 @@
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true,
- "license": "MIT"
+ "dev": true
},
"node_modules/axios": {
- "version": "1.7.9",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
- "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz",
+ "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "follow-redirects": "^1.15.6",
+ "follow-redirects": "^1.15.0",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
@@ -537,7 +474,6 @@
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
@@ -550,7 +486,6 @@
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
@@ -561,7 +496,6 @@
"integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
"dev": true,
"hasInstallScript": true,
- "license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
@@ -594,9 +528,9 @@
}
},
"node_modules/follow-redirects": {
- "version": "1.15.9",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
- "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "version": "1.15.4",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz",
+ "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==",
"dev": true,
"funding": [
{
@@ -604,7 +538,6 @@
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
- "license": "MIT",
"engines": {
"node": ">=4.0"
},
@@ -615,11 +548,10 @@
}
},
"node_modules/form-data": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
- "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dev": true,
- "license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
@@ -635,7 +567,6 @@
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
- "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -644,18 +575,11 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "node_modules/immediate": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
- "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
- "license": "MIT"
- },
"node_modules/laravel-vite-plugin": {
"version": "0.7.8",
"resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.7.8.tgz",
"integrity": "sha512-HWYqpQYHR3kEQ1LsHX7gHJoNNf0bz5z5mDaHBLzS+PGLCTmYqlU5/SZyeEgObV7z7bC/cnStYcY9H1DI1D5Udg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"picocolors": "^1.0.0",
"vite-plugin-full-reload": "^1.0.5"
@@ -667,30 +591,11 @@
"vite": "^3.0.0 || ^4.0.0"
}
},
- "node_modules/lie": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
- "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==",
- "license": "MIT",
- "dependencies": {
- "immediate": "~3.0.5"
- }
- },
- "node_modules/localforage": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz",
- "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==",
- "license": "Apache-2.0",
- "dependencies": {
- "lie": "3.1.1"
- }
- },
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -700,7 +605,6 @@
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
@@ -709,9 +613,9 @@
}
},
"node_modules/nanoid": {
- "version": "3.3.8",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
- "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"dev": true,
"funding": [
{
@@ -719,7 +623,6 @@
"url": "https://github.com/sponsors/ai"
}
],
- "license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -728,18 +631,16 @@
}
},
"node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "dev": true,
- "license": "ISC"
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
},
"node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -748,9 +649,9 @@
}
},
"node_modules/postcss": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
- "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
+ "version": "8.4.32",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
+ "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
"dev": true,
"funding": [
{
@@ -766,11 +667,10 @@
"url": "https://github.com/sponsors/ai"
}
],
- "license": "MIT",
"dependencies": {
- "nanoid": "^3.3.8",
- "picocolors": "^1.1.1",
- "source-map-js": "^1.2.1"
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
},
"engines": {
"node": "^10 || ^12 || >=14"
@@ -780,15 +680,13 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
- "dev": true,
- "license": "MIT"
+ "dev": true
},
"node_modules/rollup": {
- "version": "3.29.5",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz",
- "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
+ "version": "3.29.4",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
+ "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
"dev": true,
- "license": "MIT",
"bin": {
"rollup": "dist/bin/rollup"
},
@@ -801,21 +699,19 @@
}
},
"node_modules/source-map-js": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
- "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
"dev": true,
- "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/vite": {
- "version": "4.5.5",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.5.tgz",
- "integrity": "sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ==",
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz",
+ "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==",
"dev": true,
- "license": "MIT",
"dependencies": {
"esbuild": "^0.18.10",
"postcss": "^8.4.27",
@@ -867,11 +763,10 @@
}
},
"node_modules/vite-plugin-full-reload": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.2.0.tgz",
- "integrity": "sha512-kz18NW79x0IHbxRSHm0jttP4zoO9P9gXh+n6UTwlNKnviTTEpOlum6oS9SmecrTtSr+muHEn5TUuC75UovQzcA==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.1.0.tgz",
+ "integrity": "sha512-3cObNDzX6DdfhD9E7kf6w2mNunFpD7drxyNgHLw+XwIYAgb+Xt16SEXo0Up4VH+TMf3n+DSVJZtW2POBGcBYAA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"picocolors": "^1.0.0",
"picomatch": "^2.3.1"
diff --git a/package.json b/package.json
index 8360ac0..e8ba17f 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
"devDependencies": {
"axios": "^1.1.2",
"laravel-vite-plugin": "^0.7.5",
- "vite": "^4.5.3"
+ "vite": "^4.5.2"
},
"dependencies": {
"@sentry/browser": "^7.40.0"
diff --git a/public/ai.txt b/public/ai.txt
deleted file mode 100644
index 81e3a83..0000000
--- a/public/ai.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-#
-# ai.txt
-# Generated by Empathy First Media Digital Marketing Agency
-# https://EmpathyFirstMedia.com
-#
-
-User-Agent: *
-
-# Text Permissions
-Disallow: *.txt
-Disallow: *.pdf
-Disallow: *.doc
-Disallow: *.docx
-Disallow: *.odt
-Disallow: *.rtf
-Disallow: *.tex
-Disallow: *.wks
-Disallow: *.wpd
-Disallow: *.wps
-Disallow: *.html
-
-# Images Permissions
-Disallow: *.bmp
-Disallow: *.gif
-Disallow: *.ico
-Disallow: *.jpeg
-Disallow: *.jpg
-Disallow: *.png
-Disallow: *.svg
-Disallow: *.tif
-Disallow: *.tiff
-Disallow: *.webp
-
-# Audio Permissions
-Disallow: *.aac
-Disallow: *.aiff
-Disallow: *.amr
-Disallow: *.flac
-Disallow: *.m4a
-Disallow: *.mp3
-Disallow: *.oga
-Disallow: *.opus
-Disallow: *.wav
-Disallow: *.wma
-
-# Video Permissions
-Disallow: *.mp4
-Disallow: *.webm
-Disallow: *.ogg
-Disallow: *.avi
-Disallow: *.mov
-Disallow: *.wmv
-Disallow: *.flv
-Disallow: *.mkv
-
-# Code Permissions
-Disallow: *.py
-Disallow: *.js
-Disallow: *.java
-Disallow: *.c
-Disallow: *.cpp
-Disallow: *.cs
-Disallow: *.h
-Disallow: *.css
-Disallow: *.php
-Disallow: *.swift
-Disallow: *.go
-Disallow: *.rb
-Disallow: *.pl
-Disallow: *.sh
-Disallow: *.sql
-
-# Disallow
-Disallow: /
-# --------------------------
-# Empathy First Media AI.TXT
-# --------------------------
-
-# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@& &@@@@@@@@@@@@@
-# @@@@@@@@@@@@@& &@@@@@@@@@@@@@
-# @@@@@@@@@@@@@& &@@@@@@@@@@@@@
-# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@&GGGGGGGGGGGGGGGGGGG#@@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@& @@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@& @@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@& &@@@@@@@@@@@@@
-# @@@@@@@@@@@@@& &@@@@@@@@@@@@@
-# @@@@@@@@@@@@@& &@@@@@@@@@@@@@
-# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-
-# This ai.txt file was created by Empathy First Media.
-# https://empathyfirstmedia.com/
diff --git a/public/css/colorschemes/c64.css b/public/css/colorschemes/c64.css
new file mode 100644
index 0000000..b3b7bf8
--- /dev/null
+++ b/public/css/colorschemes/c64.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #40318d;
+ --background-secondary: #483c8b;
+ --foreground: #f7f7f7;
+ --links: #67b6bd;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
diff --git a/public/css/colorschemes/catppuccin-frappe.css b/public/css/colorschemes/catppuccin-frappe.css
new file mode 100644
index 0000000..debb417
--- /dev/null
+++ b/public/css/colorschemes/catppuccin-frappe.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #232634;
+ --background-secondary: #414559;
+ --foreground: #c6d0f5;
+ --links: #8caaee;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
diff --git a/public/css/colorschemes/catppuccin-latte.css b/public/css/colorschemes/catppuccin-latte.css
new file mode 100644
index 0000000..5990649
--- /dev/null
+++ b/public/css/colorschemes/catppuccin-latte.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #dce0e8;
+ --background-secondary: #ccd0da;
+ --foreground: #4c4f69;
+ --links: #1e66f5;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: light;
+}
diff --git a/public/css/colorschemes/catppuccin-macchiato.css b/public/css/colorschemes/catppuccin-macchiato.css
new file mode 100644
index 0000000..5d69ee6
--- /dev/null
+++ b/public/css/colorschemes/catppuccin-macchiato.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #181926;
+ --background-secondary: #363a4f;
+ --foreground: #cad3f5;
+ --links: #8aadf4;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
diff --git a/public/css/colorschemes/catppuccin-mocha.css b/public/css/colorschemes/catppuccin-mocha.css
new file mode 100644
index 0000000..7d91e5e
--- /dev/null
+++ b/public/css/colorschemes/catppuccin-mocha.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #11111b;
+ --background-secondary: #313244;
+ --foreground: #cdd6f4;
+ --links: #89b4fa;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
diff --git a/public/css/colorschemes/gruvbox-dark.css b/public/css/colorschemes/gruvbox-dark.css
new file mode 100644
index 0000000..783303a
--- /dev/null
+++ b/public/css/colorschemes/gruvbox-dark.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #282828;
+ --background-secondary: #928374;
+ --foreground: #ebdbb2;
+ --links: #458588;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
diff --git a/public/css/colorschemes/gruvbox-material.css b/public/css/colorschemes/gruvbox-material.css
new file mode 100644
index 0000000..db83475
--- /dev/null
+++ b/public/css/colorschemes/gruvbox-material.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #282828;
+ --background-secondary: #3c3836;
+ --foreground: #d4be98;
+ --links: #7daea3;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
diff --git a/public/css/colorschemes/gruvbox.css b/public/css/colorschemes/gruvbox.css
new file mode 100644
index 0000000..5d02951
--- /dev/null
+++ b/public/css/colorschemes/gruvbox.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #fbf1c7;
+ --background-secondary: #928374;
+ --foreground: #3c3836;
+ --links: #458588;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: light;
+}
diff --git a/public/css/colorschemes/maia.css b/public/css/colorschemes/maia.css
new file mode 100644
index 0000000..4717327
--- /dev/null
+++ b/public/css/colorschemes/maia.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #31363a;
+ --background-secondary: #4c4f4d;
+ --foreground: #e8e8e8;
+ --links: #13bf9d;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
diff --git a/public/css/colorschemes/man-page.css b/public/css/colorschemes/man-page.css
new file mode 100644
index 0000000..6a75bbe
--- /dev/null
+++ b/public/css/colorschemes/man-page.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #fef49c;
+ --background-secondary: #e5e500;
+ --foreground: #000000;
+ --links: #b200b2;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: light;
+}
diff --git a/public/css/colorschemes/mono-amber.css b/public/css/colorschemes/mono-amber.css
new file mode 100644
index 0000000..364900b
--- /dev/null
+++ b/public/css/colorschemes/mono-amber.css
@@ -0,0 +1,17 @@
+:root {
+ --background: #2b1900;
+ --background-secondary: #402500;
+ --foreground: #ff9400;
+ --links: #ffc28a;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
+
+a {
+ text-decoration: underline !important;
+}
diff --git a/public/css/colorschemes/mono-cyan.css b/public/css/colorschemes/mono-cyan.css
new file mode 100644
index 0000000..e31971f
--- /dev/null
+++ b/public/css/colorschemes/mono-cyan.css
@@ -0,0 +1,17 @@
+:root {
+ --background: #00222B;
+ --background-secondary: #003340;
+ --foreground: #00CCFF;
+ --links: #ccf0ff;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
+
+a {
+ text-decoration: underline !important;
+}
diff --git a/public/css/colorschemes/mono-green.css b/public/css/colorschemes/mono-green.css
new file mode 100644
index 0000000..ed40158
--- /dev/null
+++ b/public/css/colorschemes/mono-green.css
@@ -0,0 +1,17 @@
+:root {
+ --background: #022B00;
+ --background-secondary: #034000;
+ --foreground: #0BFF00;
+ --links: #b6ffb1;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
+
+a {
+ text-decoration: underline !important;
+}
diff --git a/public/css/colorschemes/mono-red.css b/public/css/colorschemes/mono-red.css
new file mode 100644
index 0000000..d20690a
--- /dev/null
+++ b/public/css/colorschemes/mono-red.css
@@ -0,0 +1,17 @@
+:root {
+ --background: #2B0C00;
+ --background-secondary: #401200;
+ --foreground: #FF3600;
+ --links: #ffb09c;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
+
+a {
+ text-decoration: underline !important;
+}
diff --git a/public/css/colorschemes/mono-white.css b/public/css/colorschemes/mono-white.css
new file mode 100644
index 0000000..e921ece
--- /dev/null
+++ b/public/css/colorschemes/mono-white.css
@@ -0,0 +1,17 @@
+:root {
+ --background: #262626;
+ --background-secondary: #3B3B3B;
+ --foreground: #FAFAFA;
+ --links: #a9a9a9;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
+
+a {
+ text-decoration: underline !important;
+}
diff --git a/public/css/colorschemes/mono-yellow.css b/public/css/colorschemes/mono-yellow.css
new file mode 100644
index 0000000..b979c4b
--- /dev/null
+++ b/public/css/colorschemes/mono-yellow.css
@@ -0,0 +1,17 @@
+:root {
+ --background: #2B2400;
+ --background-secondary: #403500;
+ --foreground: #FFD300;
+ --links: #ffe8a2;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
+
+a {
+ text-decoration: underline !important;
+}
diff --git a/public/css/colorschemes/papercolor-dark.css b/public/css/colorschemes/papercolor-dark.css
new file mode 100644
index 0000000..1f5fe91
--- /dev/null
+++ b/public/css/colorschemes/papercolor-dark.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #1C1C1C;
+ --background-secondary: #585858;
+ --foreground: #D0D0D0;
+ --links: #5FAFD7;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
diff --git a/public/css/colorschemes/papercolor-light.css b/public/css/colorschemes/papercolor-light.css
new file mode 100644
index 0000000..19edd87
--- /dev/null
+++ b/public/css/colorschemes/papercolor-light.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #EEEEEE;
+ --background-secondary: #BCBCBC;
+ --foreground: #444444;
+ --links: #0087AF;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: light;
+}
diff --git a/public/css/colorschemes/rose-pine-dawn.css b/public/css/colorschemes/rose-pine-dawn.css
new file mode 100644
index 0000000..a74f80e
--- /dev/null
+++ b/public/css/colorschemes/rose-pine-dawn.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #F2E9E1;
+ --background-secondary: #9893A5;
+ --foreground: #575279;
+ --links: #907AA9;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: light;
+}
diff --git a/public/css/colorschemes/rose-pine-moon.css b/public/css/colorschemes/rose-pine-moon.css
new file mode 100644
index 0000000..dc5012a
--- /dev/null
+++ b/public/css/colorschemes/rose-pine-moon.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #393552;
+ --background-secondary: #6E6A86;
+ --foreground: #E0DEF4;
+ --links: #C4A7E7;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: light;
+}
diff --git a/public/css/colorschemes/rose-pine.css b/public/css/colorschemes/rose-pine.css
new file mode 100644
index 0000000..f45e235
--- /dev/null
+++ b/public/css/colorschemes/rose-pine.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #26233A;
+ --background-secondary: #6E6A86;
+ --foreground: #E0DEF4;
+ --links: #C4A7E7;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
diff --git a/public/css/colorschemes/shel.css b/public/css/colorschemes/shel.css
new file mode 100644
index 0000000..6ea4e5d
--- /dev/null
+++ b/public/css/colorschemes/shel.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #2C2423;
+ --background-secondary: #918988;
+ --foreground: #F5EEEC;
+ --links: #2C64A2;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
diff --git a/public/css/colorschemes/slate.css b/public/css/colorschemes/slate.css
new file mode 100644
index 0000000..df41859
--- /dev/null
+++ b/public/css/colorschemes/slate.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #222222;
+ --background-secondary: #494949;
+ --foreground: #E0E0E0;
+ --links: #02C5E0;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
diff --git a/public/css/colorschemes/solarized-dark.css b/public/css/colorschemes/solarized-dark.css
new file mode 100644
index 0000000..d3a2aa9
--- /dev/null
+++ b/public/css/colorschemes/solarized-dark.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #073642;
+ --background-secondary: #657B83;
+ --foreground: #FDF6E3;
+ --links: #2699FF;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: dark;
+}
diff --git a/public/css/colorschemes/solarized-light.css b/public/css/colorschemes/solarized-light.css
new file mode 100644
index 0000000..70d747a
--- /dev/null
+++ b/public/css/colorschemes/solarized-light.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #FDF6E3;
+ --background-secondary: #EEE8D5;
+ --foreground: #073642;
+ --links: #268BD2;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: light;
+}
diff --git a/public/css/colorschemes/terminal-basic.css b/public/css/colorschemes/terminal-basic.css
new file mode 100644
index 0000000..929a613
--- /dev/null
+++ b/public/css/colorschemes/terminal-basic.css
@@ -0,0 +1,13 @@
+:root {
+ --background: #FFFFFF;
+ --background-secondary: #bfbfbf;
+ --foreground: #000000;
+ --links: #0000ff;
+ --warning: #ff7272;
+ --warning-box-bg: #f64a3c;
+ --warning-box-border: #c81a11;
+}
+
+html {
+ color-scheme: light;
+}
diff --git a/public/css/dirlist.css b/public/css/dirlist.css
index b63c94b..73d10b9 100644
--- a/public/css/dirlist.css
+++ b/public/css/dirlist.css
@@ -1,54 +1,40 @@
+@import "colorschemes/catppuccin-macchiato.css";
+
body {
- color: #2f2f42;
- margin: 20px;
- background: #80c9fa url("/images/peek.png") no-repeat bottom right 10px fixed;
+ background-color: var(--background);
+ color: var(--foreground);
}
img {
- image-rendering: pixelated;
+ image-rendering: pixelated;
}
a {
- color: #2f2f42;
- text-decoration: underline dotted;
+ color: #99f;
+ text-decoration: none;
}
a:hover {
- color: #2f2f42;
- text-decoration: underline solid;
+ text-decoration: underline;
}
h1#indextitle {
- font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
- Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue",
- sans-serif;
- margin: 0;
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
+ margin-bottom: 0;
}
-tr,
-th,
-td {
- font-family: monospace;
- font-size: 12pt;
- padding: 0 15px;
-}
-
-tr td:nth-child(2) {
- padding-left: 0;
+tr, th, td {
+ font-family: monospace;
+ font-size: 12pt;
+ padding: 0 5px;
}
address {
- font-family: sans-serif;
- font-size: 12pt;
+ font-family: sans-serif;
+ font-size: 12pt
}
.description {
- font-style: italic;
- font-size: 90%;
+ font-style: italic;
+ font-size: 90%;
}
-
-hr {
- border: none;
- border-bottom: 2px solid #2f2f42;
-}
-
diff --git a/public/css/master.css b/public/css/master.css
index f8ee557..397009f 100644
--- a/public/css/master.css
+++ b/public/css/master.css
@@ -1,133 +1,270 @@
-:root {
- --background: hsl(214, 67%, 85%);
- --foreground: hsl(214, 20%, 14%);
- --border-color: hsl(214, 96%, 48%);
- --border: var(--border-color) 2px solid;
- --shadow-color: hsla(214, 96%, 43%, 0.4);
- --shadow: drop-shadow(8px 8px var(--shadow-color));
- --shadow-small: drop-shadow(3px 3px var(--shadow-color));
- --links: hsl(214, 27%, 22%);
- --links-hover: hsl(214, 27%, 15%);
- --table-header: hsla(214, 96%, 43%, 0.2);
-}
-
-/* ───────────────────────────────────── Fonts ────────────────────────────────────── */
-@font-face {
- font-family: "PT Sans";
- src: url("/fonts/PTSans-Regular.ttf") format("truetype");
- font-weight: normal;
- font-style: normal;
-}
-
-@font-face {
- font-family: "PT Sans";
- src: url("/fonts/PTSans-Italic.ttf") format("truetype");
- font-weight: normal;
- font-style: italic;
-}
-
-@font-face {
- font-family: "PT Sans";
- src: url("/fonts/PTSans-Bold.ttf") format("truetype");
- font-weight: bold;
- font-style: normal;
-}
-
-@font-face {
- font-family: "PT Sans";
- src: url("/fonts/PTSans-BoldItalic.ttf") format("truetype");
- font-weight: bold;
- font-style: italic;
-}
-
-@font-face {
- font-family: "PT Serif";
- src: url("/fonts/PTSerif-Regular.ttf") format("truetype");
- font-weight: normal;
- font-style: normal;
-}
-
-@font-face {
- font-family: "PT Serif";
- src: url("/fonts/PTSerif-Italic.ttf") format("truetype");
- font-weight: normal;
- font-style: italic;
-}
-
-@font-face {
- font-family: "PT Serif";
- src: url("/fonts/PTSerif-Bold.ttf") format("truetype");
- font-weight: bold;
- font-style: normal;
-}
-
-@font-face {
- font-family: "PT Serif";
- src: url("/fonts/PTSerif-BoldItalic.ttf") format("truetype");
- font-weight: bold;
- font-style: italic;
-}
-
-/* ───────────────────────────────────── Pride ────────────────────────────────────── */
-#prideflag {
- position: fixed;
- top: 0;
- right: 0;
- width: 120px;
- transform-origin: 100% 0;
- transition: transform .5s cubic-bezier(.32,1.63,.41,1.01);
- z-index: 8008135;
-}
-#prideflag:hover {
- transform: scale(110%);
-}
-#prideflag:active {
- transform: scale(110%);
-}
-#prideflag * {
- pointer-events: all;
-}
-
-/* ───────────────────────────────────── Global ───────────────────────────────────── */
-html {
- height: 100%;
- color-scheme: light;
- scrollbar-color: var(--border-color) var(--background);
-}
+/*@import "colorschemes/catppuccin-macchiato.css";*/
body {
+ font-family: sans-serif;
+ margin: 0;
color: var(--foreground);
- min-height: 100%;
- background: url('/images/roscoe_tile.jpg');
- padding: 5px;
- font-family: "PT Serif", serif;
+ background-color: var(--background);
+ text-align: left;
}
-img.logo_paw {
- filter: grayscale(100%) sepia(100%) hue-rotate(180deg) saturate(300%);
+ul {
+ list-style-type: square;
+}
+
+hr {
+ border: 1px solid var(--foreground);
+ border-bottom: none;
+}
+
+div.page {
+ min-width: 780px;
+ max-width: 800px;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ margin: auto;
+}
+
+h1.inline {
+ margin-top: 0;
+ clear: none;
+ display: inline;
}
h1,
h2,
-h3,
-h4,
-h5,
-h6 {
- margin: 20px 0 0 0;
+h3 {
+ margin-top: 1em;
+ clear: left;
}
-p,
-ul,
-ol,
-dl,
-menu,
-dir {
- margin: 0;
-}
-
-hr {
+img {
border: none;
- border-top: var(--border);
+ max-width: 100%;
+}
+
+img.right {
+ float: right;
+ margin-left: 0.5em;
+}
+
+table.form td {
+ border: none;
+}
+
+/* -------------------------------------------------------------------------- */
+
+div.code-block {
+ background-color: var(--background);
+ border: 2px solid var(--foreground);
+ padding: 10px;
+ display: inline-block;
+ text-align: left;
+ max-width: 90%;
+ min-width: 400px;
+ margin: 10px;
+}
+
+div.code-block hr {
+ margin-top: 5px;
+ margin-bottom: 5px;
+}
+
+div.code-block h1 {
+ margin: 0;
+ font-family: monospace;
+}
+
+div.code-block h1 small {
+ color: var(--foreground);
+ font-size: 12px;
+}
+
+div.code-block pre hr {
+ margin-bottom: 5px;
+}
+
+div.code-block pre code {
+ background-color: var(--background);
+}
+
+pre {
+ display: inline;
+ max-width: 95%;
+ overflow: auto;
+}
+
+.header a {
+ text-decoration: none;
+}
+
+.theme-selector {
+ text-align: right;
+ vertical-align: middle;
+}
+
+.nav-wrapper {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ grid-template-rows: 1fr;
+ grid-column-gap: 0;
+ grid-row-gap: 0;
+}
+
+.theme-selector label {
+ font-weight: bold;
+}
+
+.theme-selector label::after {
+ content: ': ';
+}
+
+nav {
+ margin-bottom: 0.3em;
+ text-align: left;
+}
+
+nav img {
+ width: 32px;
+}
+
+nav h1 {
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
+ Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue",
+ sans-serif;
+ font-weight: normal;
+ font-size: 30px;
+ margin: 10px 10px 10px 0;
+}
+
+div.date {
+ text-align: center;
+}
+
+div.note {
+ font-style: italic;
+}
+
+table {
+ border-collapse: collapse;
+ border-color: var(--foreground);
+}
+
+table.weather th {
+ font-weight: normal;
+}
+
+table.weather td {
+ font-weight: bold;
+ text-align: right;
+}
+
+div.rss {
+ position: absolute;
+ top: 1em;
+ right: 1em;
+}
+
+div.archived {
+ margin-top: 0.5em;
+}
+
+div.archived span.date {
+ font-style: italic;
+ margin-right: 0.2em;
+}
+
+video {
+ max-width: 100%;
+}
+
+table td {
+ border: 1px solid var(--foreground);
+}
+
+td {
+ padding: 0;
+ vertical-align: top;
+}
+
+.header .title {
+ color: var(--foreground);
+}
+
+.header {
+ font-size: 100%;
+ font-weight: normal;
+ padding-bottom: 0;
+ text-align: center;
+}
+
+h1 {
+ font-size: 150%;
+}
+h1 {
+ font-size: 150%;
+}
+
+h2 {
+ font-size: 130%;
+}
+
+h3 {
+ font-size: 115%;
+}
+
+table.computers {
+ width: 100%;
+}
+
+table.computers td:first-child {
+ text-align: center;
+ font-weight: bold;
+}
+table.computers td ul {
+ margin: 0;
+ padding-left: 20px;
+}
+
+table.computers section-title {
+ text-decoration: underline;
+ font-style: italic;
+ font-weight: bold;
+}
+
+table.computers p.description {
+ font-style: italic;
+ margin: 5px 0 2px 0;
+}
+
+table.computers th {
+ background-color: var(--background-secondary);
+}
+
+table.computers td,
+table.computers th {
+ border: var(--foreground) solid 1px;
+ padding: 5px;
+}
+
+
+
+img.pixel {
+ image-rendering: pixelated;
+}
+
+div.footer {
+ text-align: center;
+ margin-bottom: 5px;
+}
+
+div.footer a.button {
+ text-decoration: none;
+}
+
+table.commits tr td {
+ border: none;
+ padding-right: 5px;
}
a {
@@ -135,225 +272,219 @@ a {
text-decoration: underline dotted;
}
-a:hover {
- color: var(--links-hover);
- text-decoration: underline solid;
+table.gb-entry-form tr td {
+ border: none;
}
-div.page-container {
- width: 800px;
- margin: 5px auto;
+table.gb-entry-form tr td label {
+ padding-right: 5px;
}
-div.page-container > div {
+table.gb-entry-form tr td span.text-danger {
+ padding-left: 5px;
+ color: var(--warning);
+}
+
+table.gb-entry-form tr td textarea,
+table.gb-entry-form tr td input,
+table.gb-entry-form tr td button{
+ margin-bottom: 5px;
+ margin-left: 10px;
background-color: var(--background);
- filter: var(--shadow);
- padding: 10px;
- border: var(--border);
- margin-bottom: 20px;
+ border: var(--foreground) solid 1px;
}
-div.page-container > div:last-child {
- margin-bottom: 0;
+table.gb-entry-form tr td button {
+ color: var(--foreground);
+ background-color: var(--background-secondary);
}
-header {
- display: grid;
- grid-template-columns: 64px 1fr;
- grid-template-rows: 1fr;
- grid-column-gap: 15px;
- grid-row-gap: 0;
- align-items: center;
-}
-
-header img {
- image-rendering: pixelated;
-}
-
-header h1 {
- margin: 0;
- font-style: italic;
-}
-
-header h1,
-header p {
- display: inline;
-}
-
-main>div {
- position: relative;
-}
-
-main>div::after {
- display: block;
- content: "";
- clear: both;
-}
-
-div#footer {
- display: grid;
- grid-template-columns: auto 1fr;
- grid-template-rows: 1fr;
- grid-column-gap: 0;
- grid-row-gap: 0;
- align-items: center;
-}
-
-div#footer div:last-child {
- text-align: right;
-}
-
-div#footer div:last-child img {
- image-rendering: pixelated;
- margin: 0;
- padding: 0;
- width: 88px;
- height: 31px;
-}
-
-/** Wah! **/
-div.wah {
- float: right;
- border: var(--border);
- padding: 5px;
- filter: var(--shadow-small);
- background-color: var(--background);
-}
-
-div.wah img {
- display: block;
-}
-
-div.wah h3,
-div.wah p {
- text-align: center;
- margin: 5px 0;
- font-style: italic;
-}
-
-div.wah p {
- margin-bottom: 0;
-}
-
-div.wah img {
- width: 250px;
-}
-
-/** Guestbook **/
-table.form input,
-table.form textarea,
-table.form button {
- background-color: var(--background);
- border: var(--border);
- filter: var(--shadow-small);
-}
-
-table.form input,
-table.form textarea {
- width: 250px;
-}
-
-table.form textarea {
- resize: none;
-}
-
-table.form button:hover {
- background-color: var(--border-color);
+table.gb-entry-form tr td button:hover {
color: var(--background);
- filter: none;
+ background-color: var(--foreground);
}
-table.form tr td,
-table.gb-entry-form-container td:last-child {
+table.gb-entry-form-container {
+ width: 100%;
+}
+
+table.gb-entry-form-container tr td {
+ border: none;
vertical-align: top;
}
-div.gb-entry {
- border: var(--border);
- filter: var(--shadow-small);
- background-color: var(--background);
- width: 75%;
- padding: 10px;
-}
-
-/** Music **/
-table.music-top10 {
- border: var(--border);
- filter: var(--shadow-small);
- background-color: var(--background);
- border-collapse: collapse;
-}
-
-table.music-top10 th,
-table.music-top10 td {
- padding: 2px 5px;
-}
-
-table.music-top10 th:first-child {
- text-align: left;
-}
-
-table.music-top10 tr:first-child th {
- border-right: var(--border);
- border-bottom: var(--border);
-}
-
-table.music-top10 tr:first-child th:last-child {
- border-right: none;
-}
-
-table.music-top10 tr td {
- border-right: var(--border);
-}
-
-table.music-top10 tr td:last-child {
- border-right: none;
-}
-table.music-top10 tr:first-child th,
-table.music-top10 tr td:first-child {
- background-color: var(--table-header);
-}
-
-div.current-track {
- display: grid;
- grid-template-columns: 180px auto;
- grid-template-rows: 1fr;
- grid-column-gap: 10px;
- align-items: center;
-}
-
-div.current-track img {
- float: left;
- filter: var(--shadow-small);
- border: var(--border);
- width: 174px;
- height: 174px;
-}
-
-/** Bookmarks **/
-div.bookmark-category:first-child h2 {
+table.gb-entry-form-container tr td p,
+table.gb-entry-form-container tr td ul {
margin: 0;
}
-
-
-/* ────────────────────────────────── Rosco & Leko ────────────────────────────────── */
-div.rosco-leko-gallery {
- display: flex;
- flex-wrap: wrap;
- align-items: flex-start;
+table.gb-entry-form tbody tr td textarea {
+ width: 210px;
}
-div.rosco-leko-gallery > div {
- border: var(--border);
+table.gb-entry tr td {
+ border: solid var(--foreground) 1px;
+ width: 500px;
+ vertical-align: top;
padding: 5px;
- filter: var(--shadow-small);
- background-color: var(--background);
- margin: 10px;
- height: auto;
}
-div.rosco-leko-gallery > div,
-div.rosco-leko-gallery > div img {
- max-width: 220px;
+table.gb-entry {
+ margin-bottom: 5px;
+}
+
+table.gb-entry hr {
+ border: 1px dotted var(--foreground);
+ border-bottom: none;
+}
+
+table.gb-entry address {
+ font-size: 0.8pc;
+}
+
+table.gb-admin {
+ margin-bottom: 5px;
+ width: 500px;
+ border: var(--foreground) solid;
+}
+
+table.gb-admin tr td {
+ border-right: none;
+ border-bottom: none;
+ vertical-align: top;
+ padding: 5px;
+}
+
+table.gb-admin tr td.gb-del {
+ border-left: none;
+ vertical-align: top;
+ padding: 5px;
+ width: 32px;
+}
+
+table.gb-admin tr td.gb-message {
+ border-top: none;
+ vertical-align: top;
+ padding: 5px;
+}
+
+table.info-table tr td {
+ border: none;
+ padding-right: 5px;
+}
+
+table.info-table {
+ width: 100%;
+}
+
+table.info-table tr td h1,
+table.info-table tr td h2,
+table.info-table tr td small {
+ margin: 0;
+}
+
+caption h1,
+caption h2 {
+ margin: 0;
+}
+
+caption {
+ text-align: left;
+}
+
+table.info-table tr td small {
+ margin-bottom: 5px;
+}
+.me img {
+ float: right;
+ margin: 5px;
+}
+
+.me p {
+ text-align: justify;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+.spec {
+ padding-left: 20px;
+}
+
+.spec-title {
+ font-weight: bold;
+}
+
+.project-grid {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ grid-template-rows: repeat(0, 1fr);
+ grid-column-gap: 0;
+ grid-row-gap: 0;
+ height: 100%;
+}
+
+.project-grid div {
+ padding: 5px;
+}
+
+.project-section-title,
+.project-grid div h1,
+.project-grid div p {
+ margin: 5px 0;
+}
+
+.project-section-title {
+ margin-top: 20px;
+ padding-bottom: 5px;
+ border-bottom: 1px solid var(--foreground);
+}
+
+.project-grid div h1 {
+ margin-top: 10px;
+}
+
+.project-grid div a {
+ text-decoration: underline dotted;
+ padding: 2px 2px 0 2px;
+ margin: 0;
+ font-size: 10pt;
+}
+
+.project-grid .project-links a {
+ color: var(--links);
+ border: 1px solid var(--foreground);
+ border-left: none;
+}
+
+.project-grid .project-links a:first-child {
+ border: 1px solid var(--foreground);
+}
+
+.project-grid .project-links a:hover {
+ background-color: var(--foreground);
+ color: var(--background);
+}
+
+.error-box {
+ width: 500px;
+ border: 5px solid var(--warning-box-border);
+ background-color: var(--warning-box-bg);
+ padding: 5px;
+}
+.error-box a,
+.error-box p {
+ margin: 0;
+ color: var(--foreground)
+}
+
+label[for="scheme-selector"] {
+ font-weight: bold;
+}
+
+#scheme-selector {
+ border: var(--foreground) solid 1px;
+ background-color: var(--background-secondary);
+ color: var(--foreground)
}
diff --git a/public/css/minimal.css b/public/css/minimal.css
index 697673f..b64e0e9 100644
--- a/public/css/minimal.css
+++ b/public/css/minimal.css
@@ -1,13 +1,12 @@
-html { color-scheme: light; }
-body { color: #2a271c; background-color: #f2efbd; font-family: serif; }
+* { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; }
+html { color-scheme: dark; }
+body { color: #cad3f5; background-color: #181926; }
h1, h2, h4, ul, p { margin: 0; }
h1 { font-weight: normal; }
h4 { margin-bottom: 5px; }
ul { padding: 5px 30px; }
-a { color: hsl(183, 93%, 27%); text-decoration: underline dotted; }
-a:hover { color: hsl(183, 93%, 15%); text-decoration: underline solid; }
+a { color: #8aadf4; text-decoration: none; }
+a:hover { text-decoration: underline; }
code { font-family: monospace; }
code.addr { font-size: 24px; }
-table { border: #f27405 2px solid; background-color: #f2efbd; filter: drop-shadow(3px 3px hsla(11, 96%, 43%, 0.4)); }
-img { border: #f27405 2px solid; filter: drop-shadow(3px 3px hsla(11, 96%, 43%, 0.4)); }
-hr { border: none; border-bottom: 2px solid #f27405; }
+table { border: 1px solid #cad3f5; }
diff --git a/public/favicon-128x128.png b/public/favicon-128x128.png
index 28251df..0d6300c 100644
Binary files a/public/favicon-128x128.png and b/public/favicon-128x128.png differ
diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png
index 388ddf4..0d067a5 100644
Binary files a/public/favicon-16x16.png and b/public/favicon-16x16.png differ
diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png
index 2252f28..f6a32dc 100644
Binary files a/public/favicon-32x32.png and b/public/favicon-32x32.png differ
diff --git a/public/favicon.ico b/public/favicon.ico
index 48ce013..28434f3 100644
Binary files a/public/favicon.ico and b/public/favicon.ico differ
diff --git a/public/fonts/PTSans-Bold.ttf b/public/fonts/PTSans-Bold.ttf
deleted file mode 100644
index f82c3bd..0000000
Binary files a/public/fonts/PTSans-Bold.ttf and /dev/null differ
diff --git a/public/fonts/PTSans-BoldItalic.ttf b/public/fonts/PTSans-BoldItalic.ttf
deleted file mode 100644
index 3e6cf4e..0000000
Binary files a/public/fonts/PTSans-BoldItalic.ttf and /dev/null differ
diff --git a/public/fonts/PTSans-Italic.ttf b/public/fonts/PTSans-Italic.ttf
deleted file mode 100644
index b06ce61..0000000
Binary files a/public/fonts/PTSans-Italic.ttf and /dev/null differ
diff --git a/public/fonts/PTSans-Regular.ttf b/public/fonts/PTSans-Regular.ttf
deleted file mode 100644
index adaf671..0000000
Binary files a/public/fonts/PTSans-Regular.ttf and /dev/null differ
diff --git a/public/fonts/PTSerif-Bold.ttf b/public/fonts/PTSerif-Bold.ttf
deleted file mode 100644
index 36d47eb..0000000
Binary files a/public/fonts/PTSerif-Bold.ttf and /dev/null differ
diff --git a/public/fonts/PTSerif-BoldItalic.ttf b/public/fonts/PTSerif-BoldItalic.ttf
deleted file mode 100644
index fa30e55..0000000
Binary files a/public/fonts/PTSerif-BoldItalic.ttf and /dev/null differ
diff --git a/public/fonts/PTSerif-Italic.ttf b/public/fonts/PTSerif-Italic.ttf
deleted file mode 100644
index 9b110a4..0000000
Binary files a/public/fonts/PTSerif-Italic.ttf and /dev/null differ
diff --git a/public/fonts/PTSerif-Regular.ttf b/public/fonts/PTSerif-Regular.ttf
deleted file mode 100644
index f87c0f1..0000000
Binary files a/public/fonts/PTSerif-Regular.ttf and /dev/null differ
diff --git a/public/images/background.jpg b/public/images/background.jpg
deleted file mode 100644
index 4e94b27..0000000
Binary files a/public/images/background.jpg and /dev/null differ
diff --git a/public/images/buttons/aliasing.png b/public/images/buttons/aliasing.png
deleted file mode 100644
index 27b53e9..0000000
Binary files a/public/images/buttons/aliasing.png and /dev/null differ
diff --git a/public/images/buttons/browser.gif b/public/images/buttons/browser.gif
new file mode 100644
index 0000000..3f73e3f
Binary files /dev/null and b/public/images/buttons/browser.gif differ
diff --git a/public/images/buttons/cnfunknown.gif b/public/images/buttons/cnfunknown.gif
deleted file mode 100644
index b8e9239..0000000
Binary files a/public/images/buttons/cnfunknown.gif and /dev/null differ
diff --git a/public/images/buttons/csshard.gif b/public/images/buttons/csshard.gif
deleted file mode 100644
index 24fb8d5..0000000
Binary files a/public/images/buttons/csshard.gif and /dev/null differ
diff --git a/public/images/buttons/debian.gif b/public/images/buttons/debian.gif
new file mode 100644
index 0000000..6a51e15
Binary files /dev/null and b/public/images/buttons/debian.gif differ
diff --git a/public/images/buttons/evaluatedWAVE.png b/public/images/buttons/evaluatedWAVE.png
new file mode 100644
index 0000000..a9d3bb9
Binary files /dev/null and b/public/images/buttons/evaluatedWAVE.png differ
diff --git a/public/images/buttons/html_learn_it_today.gif b/public/images/buttons/html_learn_it_today.gif
new file mode 100644
index 0000000..dd832a0
Binary files /dev/null and b/public/images/buttons/html_learn_it_today.gif differ
diff --git a/public/images/buttons/juli.gif b/public/images/buttons/juli.gif
deleted file mode 100644
index 4ff0364..0000000
Binary files a/public/images/buttons/juli.gif and /dev/null differ
diff --git a/public/images/buttons/nukeieani.gif b/public/images/buttons/nukeieani.gif
new file mode 100644
index 0000000..e110127
Binary files /dev/null and b/public/images/buttons/nukeieani.gif differ
diff --git a/public/images/buttons/paws-aliased.png b/public/images/buttons/paws-aliased.png
deleted file mode 100644
index a7d1b22..0000000
Binary files a/public/images/buttons/paws-aliased.png and /dev/null differ
diff --git a/public/images/buttons/servfail.png b/public/images/buttons/servfail.png
deleted file mode 100644
index acfebd0..0000000
Binary files a/public/images/buttons/servfail.png and /dev/null differ
diff --git a/public/images/buttons/thnlqd.png b/public/images/buttons/thnlqd.png
deleted file mode 100644
index ec17caa..0000000
Binary files a/public/images/buttons/thnlqd.png and /dev/null differ
diff --git a/public/images/buttons/transrights.gif b/public/images/buttons/transrights.gif
deleted file mode 100644
index 7f705aa..0000000
Binary files a/public/images/buttons/transrights.gif and /dev/null differ
diff --git a/public/images/buttons/valid-html401-blue.png b/public/images/buttons/valid-html401-blue.png
new file mode 100644
index 0000000..dd20e49
Binary files /dev/null and b/public/images/buttons/valid-html401-blue.png differ
diff --git a/public/images/buttons/vcss-blue.gif b/public/images/buttons/vcss-blue.gif
new file mode 100644
index 0000000..3ab6b83
Binary files /dev/null and b/public/images/buttons/vcss-blue.gif differ
diff --git a/public/images/buttons/wah.png b/public/images/buttons/wah.png
deleted file mode 100644
index 65e3f74..0000000
Binary files a/public/images/buttons/wah.png and /dev/null differ
diff --git a/public/images/buttons/wiby.gif b/public/images/buttons/wiby.gif
new file mode 100644
index 0000000..87a6a75
Binary files /dev/null and b/public/images/buttons/wiby.gif differ
diff --git a/public/images/buttons/x86.gif b/public/images/buttons/x86.gif
deleted file mode 100644
index f271daa..0000000
Binary files a/public/images/buttons/x86.gif and /dev/null differ
diff --git a/public/images/calculators/casio-fx-120/1s.jpeg b/public/images/calculators/casio-fx-120/1s.jpeg
new file mode 100644
index 0000000..6b84854
Binary files /dev/null and b/public/images/calculators/casio-fx-120/1s.jpeg differ
diff --git a/public/images/calculators/casio-fx-120/2s.jpeg b/public/images/calculators/casio-fx-120/2s.jpeg
new file mode 100644
index 0000000..1a663bb
Binary files /dev/null and b/public/images/calculators/casio-fx-120/2s.jpeg differ
diff --git a/public/images/calculators/casio-fx-120/3s.jpeg b/public/images/calculators/casio-fx-120/3s.jpeg
new file mode 100644
index 0000000..076d147
Binary files /dev/null and b/public/images/calculators/casio-fx-120/3s.jpeg differ
diff --git a/public/images/calculators/casio-fx-120/4s.jpeg b/public/images/calculators/casio-fx-120/4s.jpeg
new file mode 100644
index 0000000..988ab31
Binary files /dev/null and b/public/images/calculators/casio-fx-120/4s.jpeg differ
diff --git a/public/images/calculators/casio-fx-82/1s.jpeg b/public/images/calculators/casio-fx-82/1s.jpeg
new file mode 100644
index 0000000..69216ac
Binary files /dev/null and b/public/images/calculators/casio-fx-82/1s.jpeg differ
diff --git a/public/images/calculators/casio-fx-82/2s.jpeg b/public/images/calculators/casio-fx-82/2s.jpeg
new file mode 100644
index 0000000..adf3e2e
Binary files /dev/null and b/public/images/calculators/casio-fx-82/2s.jpeg differ
diff --git a/public/images/calculators/casio-fx-82/3s.jpeg b/public/images/calculators/casio-fx-82/3s.jpeg
new file mode 100644
index 0000000..87c6f16
Binary files /dev/null and b/public/images/calculators/casio-fx-82/3s.jpeg differ
diff --git a/public/images/calculators/casio-fx-82/4s.jpeg b/public/images/calculators/casio-fx-82/4s.jpeg
new file mode 100644
index 0000000..5a09e97
Binary files /dev/null and b/public/images/calculators/casio-fx-82/4s.jpeg differ
diff --git a/public/images/calculators/casio-fx-cg50/1s.jpeg b/public/images/calculators/casio-fx-cg50/1s.jpeg
new file mode 100644
index 0000000..6850678
Binary files /dev/null and b/public/images/calculators/casio-fx-cg50/1s.jpeg differ
diff --git a/public/images/calculators/casio-fx-cg50/2s.jpeg b/public/images/calculators/casio-fx-cg50/2s.jpeg
new file mode 100644
index 0000000..14dd3cf
Binary files /dev/null and b/public/images/calculators/casio-fx-cg50/2s.jpeg differ
diff --git a/public/images/calculators/casio-fx-cg50/3s.jpeg b/public/images/calculators/casio-fx-cg50/3s.jpeg
new file mode 100644
index 0000000..c0c87e1
Binary files /dev/null and b/public/images/calculators/casio-fx-cg50/3s.jpeg differ
diff --git a/public/images/calculators/casio-fx-cg50/4s.jpeg b/public/images/calculators/casio-fx-cg50/4s.jpeg
new file mode 100644
index 0000000..fcdac2a
Binary files /dev/null and b/public/images/calculators/casio-fx-cg50/4s.jpeg differ
diff --git a/public/images/calculators/texet-880/1s.jpeg b/public/images/calculators/texet-880/1s.jpeg
new file mode 100644
index 0000000..8454640
Binary files /dev/null and b/public/images/calculators/texet-880/1s.jpeg differ
diff --git a/public/images/calculators/texet-880/2s.jpeg b/public/images/calculators/texet-880/2s.jpeg
new file mode 100644
index 0000000..707b37c
Binary files /dev/null and b/public/images/calculators/texet-880/2s.jpeg differ
diff --git a/public/images/calculators/texet-880/3s.jpeg b/public/images/calculators/texet-880/3s.jpeg
new file mode 100644
index 0000000..a5e5f1e
Binary files /dev/null and b/public/images/calculators/texet-880/3s.jpeg differ
diff --git a/public/images/calculators/texet-880/4s.jpeg b/public/images/calculators/texet-880/4s.jpeg
new file mode 100644
index 0000000..eedc9be
Binary files /dev/null and b/public/images/calculators/texet-880/4s.jpeg differ
diff --git a/public/images/calculators/ti-30/1s.jpeg b/public/images/calculators/ti-30/1s.jpeg
new file mode 100644
index 0000000..fd34a30
Binary files /dev/null and b/public/images/calculators/ti-30/1s.jpeg differ
diff --git a/public/images/calculators/ti-30/2s.jpeg b/public/images/calculators/ti-30/2s.jpeg
new file mode 100644
index 0000000..23804f5
Binary files /dev/null and b/public/images/calculators/ti-30/2s.jpeg differ
diff --git a/public/images/calculators/ti-30/3s.jpeg b/public/images/calculators/ti-30/3s.jpeg
new file mode 100644
index 0000000..e0d1c27
Binary files /dev/null and b/public/images/calculators/ti-30/3s.jpeg differ
diff --git a/public/images/calculators/ti-30/4s.jpeg b/public/images/calculators/ti-30/4s.jpeg
new file mode 100644
index 0000000..b0c3d44
Binary files /dev/null and b/public/images/calculators/ti-30/4s.jpeg differ
diff --git a/public/images/computers/icons/display.png b/public/images/computers/icons/display.png
new file mode 100644
index 0000000..7df70e9
Binary files /dev/null and b/public/images/computers/icons/display.png differ
diff --git a/public/images/computers/icons/expansion1.png b/public/images/computers/icons/expansion1.png
new file mode 100644
index 0000000..cbde656
Binary files /dev/null and b/public/images/computers/icons/expansion1.png differ
diff --git a/public/images/computers/icons/expansion2.png b/public/images/computers/icons/expansion2.png
new file mode 100644
index 0000000..67452fa
Binary files /dev/null and b/public/images/computers/icons/expansion2.png differ
diff --git a/public/images/computers/icons/floppy35.png b/public/images/computers/icons/floppy35.png
new file mode 100644
index 0000000..9c2b5e6
Binary files /dev/null and b/public/images/computers/icons/floppy35.png differ
diff --git a/public/images/computers/icons/floppy525.png b/public/images/computers/icons/floppy525.png
new file mode 100644
index 0000000..511bcd9
Binary files /dev/null and b/public/images/computers/icons/floppy525.png differ
diff --git a/public/images/computers/icons/hdd.png b/public/images/computers/icons/hdd.png
new file mode 100644
index 0000000..cf02818
Binary files /dev/null and b/public/images/computers/icons/hdd.png differ
diff --git a/public/images/computers/icons/mem1.png b/public/images/computers/icons/mem1.png
new file mode 100644
index 0000000..1f61096
Binary files /dev/null and b/public/images/computers/icons/mem1.png differ
diff --git a/public/images/computers/icons/mem2.png b/public/images/computers/icons/mem2.png
new file mode 100644
index 0000000..9f4eca6
Binary files /dev/null and b/public/images/computers/icons/mem2.png differ
diff --git a/public/images/computers/icons/msdos.png b/public/images/computers/icons/msdos.png
new file mode 100644
index 0000000..61251a7
Binary files /dev/null and b/public/images/computers/icons/msdos.png differ
diff --git a/public/images/computers/icons/network.png b/public/images/computers/icons/network.png
new file mode 100644
index 0000000..108fcc6
Binary files /dev/null and b/public/images/computers/icons/network.png differ
diff --git a/public/images/computers/icons/printer.png b/public/images/computers/icons/printer.png
new file mode 100644
index 0000000..b60c2f1
Binary files /dev/null and b/public/images/computers/icons/printer.png differ
diff --git a/public/images/computers/icons/proc.png b/public/images/computers/icons/proc.png
new file mode 100644
index 0000000..2b38b71
Binary files /dev/null and b/public/images/computers/icons/proc.png differ
diff --git a/public/images/computers/icons/scsi.png b/public/images/computers/icons/scsi.png
new file mode 100644
index 0000000..0446891
Binary files /dev/null and b/public/images/computers/icons/scsi.png differ
diff --git a/public/images/computers/icons/win311.png b/public/images/computers/icons/win311.png
new file mode 100644
index 0000000..572511d
Binary files /dev/null and b/public/images/computers/icons/win311.png differ
diff --git a/public/images/computers/icons/windows9x.png b/public/images/computers/icons/windows9x.png
new file mode 100644
index 0000000..1fee0a5
Binary files /dev/null and b/public/images/computers/icons/windows9x.png differ
diff --git a/public/images/embeds/pandamonium.png b/public/images/embeds/pandamonium.png
deleted file mode 100644
index ec4f22e..0000000
Binary files a/public/images/embeds/pandamonium.png and /dev/null differ
diff --git a/public/images/icons/fav/ico/calc.ico b/public/images/icons/fav/ico/calc.ico
new file mode 100755
index 0000000..b304c47
Binary files /dev/null and b/public/images/icons/fav/ico/calc.ico differ
diff --git a/public/images/icons/fav/ico/computer.ico b/public/images/icons/fav/ico/computer.ico
new file mode 100644
index 0000000..01f4a74
Binary files /dev/null and b/public/images/icons/fav/ico/computer.ico differ
diff --git a/public/images/icons/fav/ico/favicon.ico b/public/images/icons/fav/ico/favicon.ico
new file mode 100755
index 0000000..848cc6f
Binary files /dev/null and b/public/images/icons/fav/ico/favicon.ico differ
diff --git a/public/images/icons/fav/ico/globe.ico b/public/images/icons/fav/ico/globe.ico
new file mode 100644
index 0000000..55ae5a3
Binary files /dev/null and b/public/images/icons/fav/ico/globe.ico differ
diff --git a/public/images/icons/fav/ico/help-book.ico b/public/images/icons/fav/ico/help-book.ico
new file mode 100644
index 0000000..a156820
Binary files /dev/null and b/public/images/icons/fav/ico/help-book.ico differ
diff --git a/public/images/icons/fav/png/calc.png b/public/images/icons/fav/png/calc.png
new file mode 100644
index 0000000..fcbf0ea
Binary files /dev/null and b/public/images/icons/fav/png/calc.png differ
diff --git a/public/images/icons/fav/png/computer.png b/public/images/icons/fav/png/computer.png
new file mode 100644
index 0000000..d53eb99
Binary files /dev/null and b/public/images/icons/fav/png/computer.png differ
diff --git a/public/images/icons/fav/png/globe.png b/public/images/icons/fav/png/globe.png
new file mode 100644
index 0000000..21b4b17
Binary files /dev/null and b/public/images/icons/fav/png/globe.png differ
diff --git a/public/images/icons/fav/png/help-book.png b/public/images/icons/fav/png/help-book.png
new file mode 100644
index 0000000..845863a
Binary files /dev/null and b/public/images/icons/fav/png/help-book.png differ
diff --git a/public/images/icons/nav/bookmarks.png b/public/images/icons/nav/bookmarks.png
new file mode 100644
index 0000000..1409930
Binary files /dev/null and b/public/images/icons/nav/bookmarks.png differ
diff --git a/public/images/icons/nav/computers.png b/public/images/icons/nav/computers.png
new file mode 100644
index 0000000..e6dda18
Binary files /dev/null and b/public/images/icons/nav/computers.png differ
diff --git a/public/images/icons/nav/guestbook.png b/public/images/icons/nav/guestbook.png
new file mode 100644
index 0000000..a1f7fc4
Binary files /dev/null and b/public/images/icons/nav/guestbook.png differ
diff --git a/public/images/icons/nav/home.png b/public/images/icons/nav/home.png
new file mode 100644
index 0000000..304ab01
Binary files /dev/null and b/public/images/icons/nav/home.png differ
diff --git a/public/images/icons/nav/login.png b/public/images/icons/nav/login.png
new file mode 100644
index 0000000..77f7e71
Binary files /dev/null and b/public/images/icons/nav/login.png differ
diff --git a/public/images/icons/nav/mail.png b/public/images/icons/nav/mail.png
new file mode 100644
index 0000000..5249691
Binary files /dev/null and b/public/images/icons/nav/mail.png differ
diff --git a/public/images/icons/nav/music.png b/public/images/icons/nav/music.png
new file mode 100644
index 0000000..748094a
Binary files /dev/null and b/public/images/icons/nav/music.png differ
diff --git a/public/images/icons/nav/pubfiles.png b/public/images/icons/nav/pubfiles.png
new file mode 100644
index 0000000..06ba84a
Binary files /dev/null and b/public/images/icons/nav/pubfiles.png differ
diff --git a/public/images/icons/nav/repo.png b/public/images/icons/nav/repo.png
new file mode 100644
index 0000000..27ade1c
Binary files /dev/null and b/public/images/icons/nav/repo.png differ
diff --git a/public/images/icons/nav/weather.png b/public/images/icons/nav/weather.png
new file mode 100644
index 0000000..f087e56
Binary files /dev/null and b/public/images/icons/nav/weather.png differ
diff --git a/public/images/login-background.png b/public/images/login-background.png
new file mode 100644
index 0000000..0dc7bfc
Binary files /dev/null and b/public/images/login-background.png differ
diff --git a/public/images/logo-v2.gif b/public/images/logo-v2.gif
deleted file mode 100755
index afd32b8..0000000
Binary files a/public/images/logo-v2.gif and /dev/null differ
diff --git a/public/images/logo-v2.png b/public/images/logo-v2.png
deleted file mode 100644
index 0edda8f..0000000
Binary files a/public/images/logo-v2.png and /dev/null differ
diff --git a/public/images/logo.png b/public/images/logo.png
index bbd099b..a20bab1 100644
Binary files a/public/images/logo.png and b/public/images/logo.png differ
diff --git a/public/images/pandamonium-legacy/filters.jpg b/public/images/pandamonium-legacy/filters.jpg
deleted file mode 100644
index 3a7a3ab..0000000
Binary files a/public/images/pandamonium-legacy/filters.jpg and /dev/null differ
diff --git a/public/images/pandamonium-legacy/frontrowseat.jpg b/public/images/pandamonium-legacy/frontrowseat.jpg
deleted file mode 100644
index e99addf..0000000
Binary files a/public/images/pandamonium-legacy/frontrowseat.jpg and /dev/null differ
diff --git a/public/images/pandamonium-legacy/gel-drawer.jpg b/public/images/pandamonium-legacy/gel-drawer.jpg
deleted file mode 100644
index ffe17bc..0000000
Binary files a/public/images/pandamonium-legacy/gel-drawer.jpg and /dev/null differ
diff --git a/public/images/pandamonium-legacy/lxdesk.jpg b/public/images/pandamonium-legacy/lxdesk.jpg
deleted file mode 100644
index 7ac691e..0000000
Binary files a/public/images/pandamonium-legacy/lxdesk.jpg and /dev/null differ
diff --git a/public/images/pandamonium-legacy/pa_meister.jpg b/public/images/pandamonium-legacy/pa_meister.jpg
deleted file mode 100644
index e9b7bc8..0000000
Binary files a/public/images/pandamonium-legacy/pa_meister.jpg and /dev/null differ
diff --git a/public/images/pandamonium-legacy/projectionist.jpg b/public/images/pandamonium-legacy/projectionist.jpg
deleted file mode 100644
index 878ac82..0000000
Binary files a/public/images/pandamonium-legacy/projectionist.jpg and /dev/null differ
diff --git a/public/images/pandamonium-legacy/technician.jpg b/public/images/pandamonium-legacy/technician.jpg
deleted file mode 100644
index f5708f0..0000000
Binary files a/public/images/pandamonium-legacy/technician.jpg and /dev/null differ
diff --git a/public/images/pandamonium-legacy/three-of-them.jpg b/public/images/pandamonium-legacy/three-of-them.jpg
deleted file mode 100644
index 7abffb9..0000000
Binary files a/public/images/pandamonium-legacy/three-of-them.jpg and /dev/null differ
diff --git a/public/images/pandamonium-legacy/two-of-them.jpg b/public/images/pandamonium-legacy/two-of-them.jpg
deleted file mode 100644
index cdc8b30..0000000
Binary files a/public/images/pandamonium-legacy/two-of-them.jpg and /dev/null differ
diff --git a/public/images/pandamonium/filters.jpg b/public/images/pandamonium/filters.jpg
deleted file mode 100644
index a19d958..0000000
Binary files a/public/images/pandamonium/filters.jpg and /dev/null differ
diff --git a/public/images/pandamonium/frontrowseat.jpg b/public/images/pandamonium/frontrowseat.jpg
deleted file mode 100644
index 17228a0..0000000
Binary files a/public/images/pandamonium/frontrowseat.jpg and /dev/null differ
diff --git a/public/images/pandamonium/gel-drawer.jpg b/public/images/pandamonium/gel-drawer.jpg
deleted file mode 100644
index abdcc51..0000000
Binary files a/public/images/pandamonium/gel-drawer.jpg and /dev/null differ
diff --git a/public/images/pandamonium/lxdesk.jpg b/public/images/pandamonium/lxdesk.jpg
deleted file mode 100644
index c85da3d..0000000
Binary files a/public/images/pandamonium/lxdesk.jpg and /dev/null differ
diff --git a/public/images/pandamonium/pa_meister.jpg b/public/images/pandamonium/pa_meister.jpg
deleted file mode 100644
index 4a50065..0000000
Binary files a/public/images/pandamonium/pa_meister.jpg and /dev/null differ
diff --git a/public/images/pandamonium/projectionist.jpg b/public/images/pandamonium/projectionist.jpg
deleted file mode 100644
index dcb1186..0000000
Binary files a/public/images/pandamonium/projectionist.jpg and /dev/null differ
diff --git a/public/images/pandamonium/technician.jpg b/public/images/pandamonium/technician.jpg
deleted file mode 100644
index 29b9e92..0000000
Binary files a/public/images/pandamonium/technician.jpg and /dev/null differ
diff --git a/public/images/pandamonium/three-of-them.jpg b/public/images/pandamonium/three-of-them.jpg
deleted file mode 100644
index 1f7eee0..0000000
Binary files a/public/images/pandamonium/three-of-them.jpg and /dev/null differ
diff --git a/public/images/pandamonium/two-of-them.jpg b/public/images/pandamonium/two-of-them.jpg
deleted file mode 100644
index f149d73..0000000
Binary files a/public/images/pandamonium/two-of-them.jpg and /dev/null differ
diff --git a/public/images/peek.png b/public/images/peek.png
deleted file mode 100644
index 2647658..0000000
Binary files a/public/images/peek.png and /dev/null differ
diff --git a/public/images/progress.svg b/public/images/progress.svg
deleted file mode 100644
index 0e3bd33..0000000
--- a/public/images/progress.svg
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/images/roscoe_tile.jpg b/public/images/roscoe_tile.jpg
deleted file mode 100755
index 5bde1b1..0000000
Binary files a/public/images/roscoe_tile.jpg and /dev/null differ
diff --git a/public/images/separator.gif b/public/images/separator.gif
deleted file mode 100644
index c8565df..0000000
Binary files a/public/images/separator.gif and /dev/null differ
diff --git a/public/images/wah-paw-v2.gif b/public/images/wah-paw-v2.gif
deleted file mode 100644
index 6d879e0..0000000
Binary files a/public/images/wah-paw-v2.gif and /dev/null differ
diff --git a/public/js/christmas/snow.js b/public/js/christmas/snow.js
new file mode 100644
index 0000000..3d2d7af
--- /dev/null
+++ b/public/js/christmas/snow.js
@@ -0,0 +1,113 @@
+/*!
+// Snow.js - v0.0.3
+// kurisubrooks.com
+//
+// Modified by floppydisk
+// - Changed snowflakes to "Heavy chevron snowflake" (U+2746)
+// - Made snowflakes randomly rotate slowly either right or left
+*/
+
+// Amount of Snowflakes
+var snowMax = 80;
+
+// Snowflake Colours
+var snowColor = [
+ "#cad3f5",
+ "#a5adcb",
+ "#5b6078"
+];
+
+// Snow Entity
+var snowEntity = "❆" //"•";
+
+// Falling Velocity
+var snowSpeed = 0.5;
+
+// Minimum Flake Size
+var snowMinSize = 8;
+
+// Maximum Flake Size
+var snowMaxSize = 24;
+
+// Refresh Rate (in milliseconds)
+var snowRefresh = 50;
+
+// Additional Styles
+var snowStyles = "cursor: default; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; -o-user-select: none; user-select: none;";
+
+/*
+// End of Configuration
+// ----------------------------------------
+// Do not modify the code below this line
+*/
+
+var snow = [],
+ pos = [],
+ coords = [],
+ lefr = [],
+ marginBottom,
+ marginRight;
+
+function randomise(range) {
+ rand = Math.floor(range * Math.random());
+ return rand;
+}
+
+function initSnow() {
+ var snowSize = snowMaxSize - snowMinSize;
+ marginBottom = Math.max(document.body.scrollHeight, window.innerHeight) - 5;
+ marginRight = document.body.clientWidth - 15;
+
+ for (i = 0; i <= snowMax; i++) {
+ coords[i] = 0;
+ lefr[i] = Math.random() * 15;
+ pos[i] = 0.03 + Math.random() / 10;
+ snow[i] = document.getElementById("flake" + i);
+ snow[i].style.fontFamily = "inherit";
+ snow[i].size = randomise(snowSize) + snowMinSize;
+ snow[i].style.fontSize = snow[i].size + "px";
+ snow[i].style.color = snowColor[randomise(snowColor.length)];
+ snow[i].style.zIndex = 1000;
+ snow[i].sink = snowSpeed * snow[i].size / 5;
+ snow[i].posX = randomise(marginRight - snow[i].size);
+ snow[i].posY = randomise(2 * marginBottom - marginBottom - 2 * snow[i].size);
+ snow[i].style.left = snow[i].posX + "px";
+ snow[i].style.top = snow[i].posY + "px";
+ snow[i].rotation = Math.random() * 360; // add a random initial rotation
+ snow[i].direction = Math.random() > 0.5 ? 1 : -1; // add a random direction
+ }
+
+ moveSnow();
+}
+
+function resize() {
+ marginBottom = Math.max(document.body.scrollHeight, window.innerHeight) - 5;
+ marginRight = document.body.clientWidth - 15;
+}
+
+function moveSnow() {
+ for (i = 0; i <= snowMax; i++) {
+ coords[i] += pos[i];
+ snow[i].posY += snow[i].sink;
+ snow[i].style.left = snow[i].posX + lefr[i] * Math.sin(coords[i]) + "px";
+ snow[i].style.top = snow[i].posY + "px";
+
+
+ if (snow[i].posY >= marginBottom - 2 * snow[i].size || parseInt(snow[i].style.left) > (marginRight - 3 * lefr[i])) {
+ snow[i].posX = randomise(marginRight - snow[i].size);
+ snow[i].posY = 0;
+ }
+ snow[i].rotation += snow[i].sink * snow[i].direction; // increment rotation based on direction
+ snow[i].style.transform = "rotate(" + snow[i].rotation + "deg)"; // rotate the snowflake
+ }
+
+ setTimeout("moveSnow()", snowRefresh);
+}
+
+for (i = 0; i <= snowMax; i++) {
+ document.write("" + snowEntity + " ");
+}
+
+window.addEventListener('resize', resize);
+window.addEventListener('load', initSnow);
+
diff --git a/public/js/christmas/snowstorm.js b/public/js/christmas/snowstorm.js
deleted file mode 100644
index 6cce1b0..0000000
--- a/public/js/christmas/snowstorm.js
+++ /dev/null
@@ -1,680 +0,0 @@
-/** @license
- * DHTML Snowstorm! JavaScript-based snow for web pages
- * Making it snow on the internets since 2003. You're welcome.
- * -----------------------------------------------------------
- * Version 1.44.20131208 (Previous rev: 1.44.20131125)
- * Copyright (c) 2007, Scott Schiller. All rights reserved.
- * Code provided under the BSD License
- * http://schillmania.com/projects/snowstorm/license.txt
- */
-
-/*jslint nomen: true, plusplus: true, sloppy: true, vars: true, white: true */
-/*global window, document, navigator, clearInterval, setInterval */
-
-// 10/2021: Yes, some university hotlinked this script. This is an attempt to stop them.
-// Admin: Please download this script and host it on your own site. Thank you.
-// if (!document.domain.match(/schillmania.com/i)) {
-// alert('SECURITY WARNING\nPlease tell your site administrator to host their own snow script. Thank you.');
-// // try { document.body.innerHTML = 'SECURITY WARNING Please tell your site administrator to host their own snow script. Thank you.
'; } catch(e) {}; // go away.
-// document.body.innerHTML = 'SECURITY WARNING: Please tell your site administrator to host their own snow script. Thank you.';
-// throw new Error('SECURITY WARNING: Please tell your site administrator to host their own snowstorm script. Thank you.');
-// fail();
-// debugger;
-// }
-
-var snowStorm = (function (window, document) {
-
- // --- common properties ---
-
- this.autoStart = true; // Whether the snow should start automatically or not.
- this.excludeMobile = true; // Snow is likely to be bad news for mobile phones' CPUs (and batteries.) Enable at your own risk.
- this.flakesMax = 256; // Limit total amount of snow made (falling + sticking)
- this.flakesMaxActive = 128; // Limit amount of snow falling at once (less = lower CPU use)
- this.animationInterval = 33; // Theoretical "miliseconds per frame" measurement. 20 = fast + smooth, but high CPU use. 50 = more conservative, but slower
- this.useGPU = true; // Enable transform-based hardware acceleration, reduce CPU load.
- this.className = null; // CSS class name for further customization on snow elements
- this.flakeBottom = null; // Integer for Y axis snow limit, 0 or null for "full-screen" snow effect
- this.followMouse = false; // Snow movement can respond to the user's mouse
- this.snowColor = '#fff'; // Don't eat (or use?) yellow snow.
- this.snowCharacter = '•'; // • = bullet, · is square on some systems etc.
- this.snowStick = true; // Whether or not snow should "stick" at the bottom. When off, will never collect.
- this.targetElement = null; // element which snow will be appended to (null = document.body) - can be an element ID eg. 'myDiv', or a DOM node reference
- this.useMeltEffect = true; // When recycling fallen snow (or rarely, when falling), have it "melt" and fade out if browser supports it
- this.useTwinkleEffect = false; // Allow snow to randomly "flicker" in and out of view while falling
- this.usePositionFixed = false; // true = snow does not shift vertically when scrolling. May increase CPU load, disabled by default - if enabled, used only where supported
- this.usePixelPosition = false; // Whether to use pixel values for snow top/left vs. percentages. Auto-enabled if body is position:relative or targetElement is specified.
-
- // --- less-used bits ---
-
- this.freezeOnBlur = true; // Only snow when the window is in focus (foreground.) Saves CPU.
- this.flakeLeftOffset = 0; // Left margin/gutter space on edge of container (eg. browser window.) Bump up these values if seeing horizontal scrollbars.
- this.flakeRightOffset = 0; // Right margin/gutter space on edge of container
- this.flakeWidth = 8; // Max pixel width reserved for snow element
- this.flakeHeight = 8; // Max pixel height reserved for snow element
- this.vMaxX = 5; // Maximum X velocity range for snow
- this.vMaxY = 4; // Maximum Y velocity range for snow
- this.zIndex = 0; // CSS stacking order applied to each snowflake
-
- // --- "No user-serviceable parts inside" past this point, yadda yadda ---
-
- var storm = this,
- features,
- // UA sniffing and backCompat rendering mode checks for fixed position, etc.
- isIE = navigator.userAgent.match(/msie/i),
- isIE6 = navigator.userAgent.match(/msie 6/i),
- isMobile = navigator.userAgent.match(/mobile|opera m(ob|in)/i),
- isBackCompatIE = (isIE && document.compatMode === 'BackCompat'),
- noFixed = (isBackCompatIE || isIE6),
- screenX = null, screenX2 = null, screenY = null, scrollY = null, docHeight = null, vRndX = null, vRndY = null,
- windOffset = 1,
- windMultiplier = 2,
- flakeTypes = 6,
- fixedForEverything = false,
- targetElementIsRelative = false,
- opacitySupported = (function () {
- try {
- document.createElement('div').style.opacity = '0.5';
- } catch (e) {
- return false;
- }
- return true;
- }()),
- didInit = false,
- docFrag = document.createDocumentFragment();
-
- features = (function () {
-
- var getAnimationFrame;
-
- /**
- * hat tip: paul irish
- * http://paulirish.com/2011/requestanimationframe-for-smart-animating/
- * https://gist.github.com/838785
- */
-
- function timeoutShim(callback) {
- window.setTimeout(callback, 1000 / (storm.animationInterval || 20));
- }
-
- var _animationFrame = (window.requestAnimationFrame ||
- window.webkitRequestAnimationFrame ||
- window.mozRequestAnimationFrame ||
- window.oRequestAnimationFrame ||
- window.msRequestAnimationFrame ||
- timeoutShim);
-
- // apply to window, avoid "illegal invocation" errors in Chrome
- getAnimationFrame = _animationFrame ? function () {
- return _animationFrame.apply(window, arguments);
- } : null;
-
- var testDiv;
-
- testDiv = document.createElement('div');
-
- function has(prop) {
-
- // test for feature support
- var result = testDiv.style[prop];
- return (result !== undefined ? prop : null);
-
- }
-
- // note local scope.
- var localFeatures = {
-
- transform: {
- ie: has('-ms-transform'),
- moz: has('MozTransform'),
- opera: has('OTransform'),
- webkit: has('webkitTransform'),
- w3: has('transform'),
- prop: null // the normalized property value
- },
-
- getAnimationFrame: getAnimationFrame
-
- };
-
- localFeatures.transform.prop = (
- localFeatures.transform.w3 ||
- localFeatures.transform.moz ||
- localFeatures.transform.webkit ||
- localFeatures.transform.ie ||
- localFeatures.transform.opera
- );
-
- testDiv = null;
-
- return localFeatures;
-
- }());
-
- this.timer = null;
- this.flakes = [];
- this.disabled = false;
- this.active = false;
- this.meltFrameCount = 20;
- this.meltFrames = [];
-
- this.setXY = function (o, x, y) {
-
- if (!o) {
- return false;
- }
-
- if (storm.usePixelPosition || targetElementIsRelative) {
-
- o.style.left = (x - storm.flakeWidth) + 'px';
- o.style.top = (y - storm.flakeHeight) + 'px';
-
- } else if (noFixed) {
-
- o.style.right = (100 - (x / screenX * 100)) + '%';
- // avoid creating vertical scrollbars
- o.style.top = (Math.min(y, docHeight - storm.flakeHeight)) + 'px';
-
- } else {
-
- if (!storm.flakeBottom) {
-
- // if not using a fixed bottom coordinate...
- o.style.right = (100 - (x / screenX * 100)) + '%';
- o.style.bottom = (100 - (y / screenY * 100)) + '%';
-
- } else {
-
- // absolute top.
- o.style.right = (100 - (x / screenX * 100)) + '%';
- o.style.top = (Math.min(y, docHeight - storm.flakeHeight)) + 'px';
-
- }
-
- }
-
- };
-
- this.events = (function () {
-
- var old = (!window.addEventListener && window.attachEvent), slice = Array.prototype.slice,
- evt = {
- add: (old ? 'attachEvent' : 'addEventListener'),
- remove: (old ? 'detachEvent' : 'removeEventListener')
- };
-
- function getArgs(oArgs) {
- var args = slice.call(oArgs), len = args.length;
- if (old) {
- args[1] = 'on' + args[1]; // prefix
- if (len > 3) {
- args.pop(); // no capture
- }
- } else if (len === 3) {
- args.push(false);
- }
- return args;
- }
-
- function apply(args, sType) {
- var element = args.shift(),
- method = [evt[sType]];
- if (old) {
- element[method](args[0], args[1]);
- } else {
- element[method].apply(element, args);
- }
- }
-
- function addEvent() {
- apply(getArgs(arguments), 'add');
- }
-
- function removeEvent() {
- apply(getArgs(arguments), 'remove');
- }
-
- return {
- add: addEvent,
- remove: removeEvent
- };
-
- }());
-
- function rnd(n, min) {
- if (isNaN(min)) {
- min = 0;
- }
- return (Math.random() * n) + min;
- }
-
- function plusMinus(n) {
- return (parseInt(rnd(2), 10) === 1 ? n * -1 : n);
- }
-
- this.randomizeWind = function () {
- var i;
- vRndX = plusMinus(rnd(storm.vMaxX, 0.2));
- vRndY = rnd(storm.vMaxY, 0.2);
- if (this.flakes) {
- for (i = 0; i < this.flakes.length; i++) {
- if (this.flakes[i].active) {
- this.flakes[i].setVelocities();
- }
- }
- }
- };
-
- this.scrollHandler = function () {
- var i;
- // "attach" snowflakes to bottom of window if no absolute bottom value was given
- scrollY = (storm.flakeBottom ? 0 : parseInt(window.scrollY || document.documentElement.scrollTop || (noFixed ? document.body.scrollTop : 0), 10));
- if (isNaN(scrollY)) {
- scrollY = 0; // Netscape 6 scroll fix
- }
- if (!fixedForEverything && !storm.flakeBottom && storm.flakes) {
- for (i = 0; i < storm.flakes.length; i++) {
- if (storm.flakes[i].active === 0) {
- storm.flakes[i].stick();
- }
- }
- }
- };
-
- this.resizeHandler = function () {
- if (window.innerWidth || window.innerHeight) {
- screenX = window.innerWidth - 16 - storm.flakeRightOffset;
- screenY = (storm.flakeBottom || window.innerHeight);
- } else {
- screenX = (document.documentElement.clientWidth || document.body.clientWidth || document.body.scrollWidth) - (!isIE ? 8 : 0) - storm.flakeRightOffset;
- screenY = storm.flakeBottom || document.documentElement.clientHeight || document.body.clientHeight || document.body.scrollHeight;
- }
- docHeight = document.body.offsetHeight;
- screenX2 = parseInt(screenX / 2, 10);
- };
-
- this.resizeHandlerAlt = function () {
- screenX = storm.targetElement.offsetWidth - storm.flakeRightOffset;
- screenY = storm.flakeBottom || storm.targetElement.offsetHeight;
- screenX2 = parseInt(screenX / 2, 10);
- docHeight = document.body.offsetHeight;
- };
-
- this.freeze = function () {
- // pause animation
- if (!storm.disabled) {
- storm.disabled = 1;
- } else {
- return false;
- }
- storm.timer = null;
- };
-
- this.resume = function () {
- if (storm.disabled) {
- storm.disabled = 0;
- } else {
- return false;
- }
- storm.timerInit();
- };
-
- this.toggleSnow = function () {
- if (!storm.flakes.length) {
- // first run
- storm.start();
- } else {
- storm.active = !storm.active;
- if (storm.active) {
- storm.show();
- storm.resume();
- } else {
- storm.stop();
- storm.freeze();
- }
- }
- };
-
- this.stop = function () {
- var i;
- this.freeze();
- for (i = 0; i < this.flakes.length; i++) {
- this.flakes[i].o.style.display = 'none';
- }
- storm.events.remove(window, 'scroll', storm.scrollHandler);
- storm.events.remove(window, 'resize', storm.resizeHandler);
- if (storm.freezeOnBlur) {
- if (isIE) {
- storm.events.remove(document, 'focusout', storm.freeze);
- storm.events.remove(document, 'focusin', storm.resume);
- } else {
- storm.events.remove(window, 'blur', storm.freeze);
- storm.events.remove(window, 'focus', storm.resume);
- }
- }
- };
-
- this.show = function () {
- var i;
- for (i = 0; i < this.flakes.length; i++) {
- this.flakes[i].o.style.display = 'block';
- }
- };
-
- this.SnowFlake = function (type, x, y) {
- var s = this;
- this.type = type;
- this.x = x || parseInt(rnd(screenX - 20), 10);
- this.y = (!isNaN(y) ? y : -rnd(screenY) - 12);
- this.vX = null;
- this.vY = null;
- this.vAmpTypes = [1, 1.2, 1.4, 1.6, 1.8]; // "amplification" for vX/vY (based on flake size/type)
- this.vAmp = this.vAmpTypes[this.type] || 1;
- this.melting = false;
- this.meltFrameCount = storm.meltFrameCount;
- this.meltFrames = storm.meltFrames;
- this.meltFrame = 0;
- this.twinkleFrame = 0;
- this.active = 1;
- this.fontSize = (10 + (this.type / 5) * 10);
- this.o = document.createElement('div');
- this.o.innerHTML = storm.snowCharacter;
- if (storm.className) {
- this.o.setAttribute('class', storm.className);
- }
- this.o.style.color = storm.snowColor;
- this.o.style.position = (fixedForEverything ? 'fixed' : 'absolute');
- if (storm.useGPU && features.transform.prop) {
- // GPU-accelerated snow.
- this.o.style[features.transform.prop] = 'translate3d(0px, 0px, 0px)';
- }
- this.o.style.width = storm.flakeWidth + 'px';
- this.o.style.height = storm.flakeHeight + 'px';
- this.o.style.fontFamily = 'arial,verdana';
- this.o.style.cursor = 'default';
- this.o.style.overflow = 'hidden';
- this.o.style.fontWeight = 'normal';
- this.o.style.zIndex = storm.zIndex;
-
- // Add drop shadow to snowflakes
- this.o.style.filter = "drop-shadow(3px 3px hsla(0,0%,8%,0.2))"
-
- docFrag.appendChild(this.o);
-
- this.refresh = function () {
- if (isNaN(s.x) || isNaN(s.y)) {
- // safety check
- return false;
- }
- storm.setXY(s.o, s.x, s.y);
- };
-
- this.stick = function () {
- if (noFixed || (storm.targetElement !== document.documentElement && storm.targetElement !== document.body)) {
- s.o.style.top = (screenY + scrollY - storm.flakeHeight) + 'px';
- } else if (storm.flakeBottom) {
- s.o.style.top = storm.flakeBottom + 'px';
- } else {
- s.o.style.display = 'none';
- s.o.style.bottom = '0%';
- s.o.style.position = 'fixed';
- s.o.style.display = 'block';
- }
- };
-
- this.vCheck = function () {
- if (s.vX >= 0 && s.vX < 0.2) {
- s.vX = 0.2;
- } else if (s.vX < 0 && s.vX > -0.2) {
- s.vX = -0.2;
- }
- if (s.vY >= 0 && s.vY < 0.2) {
- s.vY = 0.2;
- }
- };
-
- this.move = function () {
- var vX = s.vX * windOffset, yDiff;
- s.x += vX;
- s.y += (s.vY * s.vAmp);
- if (s.x >= screenX || screenX - s.x < storm.flakeWidth) { // X-axis scroll check
- s.x = 0;
- } else if (vX < 0 && s.x - storm.flakeLeftOffset < -storm.flakeWidth) {
- s.x = screenX - storm.flakeWidth - 1; // flakeWidth;
- }
- s.refresh();
- yDiff = screenY + scrollY - s.y + storm.flakeHeight;
- if (yDiff < storm.flakeHeight) {
- s.active = 0;
- if (storm.snowStick) {
- s.stick();
- } else {
- s.recycle();
- }
- } else {
- if (storm.useMeltEffect && s.active && s.type < 3 && !s.melting && Math.random() > 0.998) {
- // ~1/1000 chance of melting mid-air, with each frame
- s.melting = true;
- s.melt();
- // only incrementally melt one frame
- // s.melting = false;
- }
- if (storm.useTwinkleEffect) {
- if (s.twinkleFrame < 0) {
- if (Math.random() > 0.97) {
- s.twinkleFrame = parseInt(Math.random() * 8, 10);
- }
- } else {
- s.twinkleFrame--;
- if (!opacitySupported) {
- s.o.style.visibility = (s.twinkleFrame && s.twinkleFrame % 2 === 0 ? 'hidden' : 'visible');
- } else {
- s.o.style.opacity = (s.twinkleFrame && s.twinkleFrame % 2 === 0 ? 0 : 1);
- }
- }
- }
- }
- };
-
- this.animate = function () {
- // main animation loop
- // move, check status, die etc.
- s.move();
- };
-
- this.setVelocities = function () {
- s.vX = vRndX + rnd(storm.vMaxX * 0.12, 0.1);
- s.vY = vRndY + rnd(storm.vMaxY * 0.12, 0.1);
- };
-
- this.setOpacity = function (o, opacity) {
- if (!opacitySupported) {
- return false;
- }
- o.style.opacity = opacity;
- };
-
- this.melt = function () {
- if (!storm.useMeltEffect || !s.melting) {
- s.recycle();
- } else {
- if (s.meltFrame < s.meltFrameCount) {
- s.setOpacity(s.o, s.meltFrames[s.meltFrame]);
- s.o.style.fontSize = s.fontSize - (s.fontSize * (s.meltFrame / s.meltFrameCount)) + 'px';
- s.o.style.lineHeight = storm.flakeHeight + 2 + (storm.flakeHeight * 0.75 * (s.meltFrame / s.meltFrameCount)) + 'px';
- s.meltFrame++;
- } else {
- s.recycle();
- }
- }
- };
-
- this.recycle = function () {
- s.o.style.display = 'none';
- s.o.style.position = (fixedForEverything ? 'fixed' : 'absolute');
- s.o.style.bottom = 'auto';
- s.setVelocities();
- s.vCheck();
- s.meltFrame = 0;
- s.melting = false;
- s.setOpacity(s.o, 1);
- s.o.style.padding = '0px';
- s.o.style.margin = '0px';
- s.o.style.fontSize = s.fontSize + 'px';
- s.o.style.lineHeight = (storm.flakeHeight + 2) + 'px';
- s.o.style.textAlign = 'center';
- s.o.style.verticalAlign = 'baseline';
- s.x = parseInt(rnd(screenX - storm.flakeWidth - 20), 10);
- s.y = parseInt(rnd(screenY) * -1, 10) - storm.flakeHeight;
- s.refresh();
- s.o.style.display = 'block';
- s.active = 1;
- };
-
- this.recycle(); // set up x/y coords etc.
- this.refresh();
-
- };
-
- this.snow = function () {
- var active = 0, flake = null, i, j;
- for (i = 0, j = storm.flakes.length; i < j; i++) {
- if (storm.flakes[i].active === 1) {
- storm.flakes[i].move();
- active++;
- }
- if (storm.flakes[i].melting) {
- storm.flakes[i].melt();
- }
- }
- if (active < storm.flakesMaxActive) {
- flake = storm.flakes[parseInt(rnd(storm.flakes.length), 10)];
- if (flake.active === 0) {
- flake.melting = true;
- }
- }
- if (storm.timer) {
- features.getAnimationFrame(storm.snow);
- }
- };
-
- this.mouseMove = function (e) {
- if (!storm.followMouse) {
- return true;
- }
- var x = parseInt(e.clientX, 10);
- if (x < screenX2) {
- windOffset = -windMultiplier + (x / screenX2 * windMultiplier);
- } else {
- x -= screenX2;
- windOffset = (x / screenX2) * windMultiplier;
- }
- };
-
- this.createSnow = function (limit, allowInactive) {
- var i;
- for (i = 0; i < limit; i++) {
- storm.flakes[storm.flakes.length] = new storm.SnowFlake(parseInt(rnd(flakeTypes), 10));
- if (allowInactive || i > storm.flakesMaxActive) {
- storm.flakes[storm.flakes.length - 1].active = -1;
- }
- }
- storm.targetElement.appendChild(docFrag);
- };
-
- this.timerInit = function () {
- storm.timer = true;
- storm.snow();
- };
-
- this.init = function () {
- var i;
- for (i = 0; i < storm.meltFrameCount; i++) {
- storm.meltFrames.push(1 - (i / storm.meltFrameCount));
- }
- storm.randomizeWind();
- storm.createSnow(storm.flakesMax); // create initial batch
- storm.events.add(window, 'resize', storm.resizeHandler);
- storm.events.add(window, 'scroll', storm.scrollHandler);
- if (storm.freezeOnBlur) {
- if (isIE) {
- storm.events.add(document, 'focusout', storm.freeze);
- storm.events.add(document, 'focusin', storm.resume);
- } else {
- storm.events.add(window, 'blur', storm.freeze);
- storm.events.add(window, 'focus', storm.resume);
- }
- }
- storm.resizeHandler();
- storm.scrollHandler();
- if (storm.followMouse) {
- storm.events.add(isIE ? document : window, 'mousemove', storm.mouseMove);
- }
- storm.animationInterval = Math.max(20, storm.animationInterval);
- storm.timerInit();
- };
-
- this.start = function (bFromOnLoad) {
- if (!didInit) {
- didInit = true;
- } else if (bFromOnLoad) {
- // already loaded and running
- return true;
- }
- if (typeof storm.targetElement === 'string') {
- var targetID = storm.targetElement;
- storm.targetElement = document.getElementById(targetID);
- if (!storm.targetElement) {
- throw new Error('Snowstorm: Unable to get targetElement "' + targetID + '"');
- }
- }
- if (!storm.targetElement) {
- storm.targetElement = (document.body || document.documentElement);
- }
- if (storm.targetElement !== document.documentElement && storm.targetElement !== document.body) {
- // re-map handler to get element instead of screen dimensions
- storm.resizeHandler = storm.resizeHandlerAlt;
- //and force-enable pixel positioning
- storm.usePixelPosition = true;
- }
- storm.resizeHandler(); // get bounding box elements
- storm.usePositionFixed = (storm.usePositionFixed && !noFixed && !storm.flakeBottom); // whether or not position:fixed is to be used
- if (window.getComputedStyle) {
- // attempt to determine if body or user-specified snow parent element is relatlively-positioned.
- try {
- targetElementIsRelative = (window.getComputedStyle(storm.targetElement, null).getPropertyValue('position') === 'relative');
- } catch (e) {
- // oh well
- targetElementIsRelative = false;
- }
- }
- fixedForEverything = storm.usePositionFixed;
- if (screenX && screenY && !storm.disabled) {
- storm.init();
- storm.active = true;
- }
- };
-
- function doDelayedStart() {
- window.setTimeout(function () {
- storm.start(true);
- }, 20);
- // event cleanup
- storm.events.remove(isIE ? document : window, 'mousemove', doDelayedStart);
- }
-
- function doStart() {
- if (!storm.excludeMobile || !isMobile) {
- doDelayedStart();
- }
- // event cleanup
- storm.events.remove(window, 'load', doStart);
- }
-
- // hooks for starting the snow
- if (storm.autoStart) {
- storm.events.add(window, 'load', doStart, false);
- }
-
- return this;
-
-}(window, document));
diff --git a/public/js/neverSaid.js b/public/js/neverSaid.js
new file mode 100644
index 0000000..5b58d60
--- /dev/null
+++ b/public/js/neverSaid.js
@@ -0,0 +1,35 @@
+// Define an array of strings
+const neverSaid = [
+ "ASM: The Director liked all the props we got today. ",
+ "PM: Ah ha, a revolve. Terrific. ",
+ "Chippie: I don't know, let's look at the ground plan. ",
+ "Set Designer: Well, let's just have whatever is cheaper. ",
+ "Sound: Better turn that down a bit. We don't want to deafen them. ",
+ "Director: Sorry, my mistake. ",
+ "Electrics: This equipment is more complicated than we need. ",
+ "Performer: I really think my big scene should be cut. ",
+ "SM: Can we doo that scene change again please?",
+ " LX designer: Bit more light from those big chaps at the side. Yes that's right, the ones on stalks whatever they are called. ",
+ "Electrics: All the equipment works perfectly. ",
+ "Musicians: So what if that's the end of a call. Let's just finish this bit off. ",
+ "Wardrobe: Now, when exactly is the first dress rehearsal?",
+ " Workshop: I don't want anyone to know, but if you insist then yes, I admit it, I have just done an all-nighter. ",
+ "Performer: This costume is so comfortable. ",
+ "Admin: The level of overtime payments here are simply unacceptable. Our backstage staff deserve better. ",
+ "Box Office: Comps? No problem. ",
+ "Set Designer: You're right, it looks dreadful. ",
+ "Flyman: No, my lips are sealed. What I may or may not have seen remains a secret. ",
+ "Electrics: That had nothing to do with the computer, it was my fault. ",
+ "Crew: No, no, I'm sure that's our job. ",
+ "SMgt: Thanks, but I don't drink",
+ " Performer: Let me stand down here with my back to the audience. ",
+ "Chippie: I can't really manage those big fast power tools myself. ",
+ "Chippie: I prefer to use these little hand drills. ",
+ "All: Let's go and ask the Production Manager. He'll know. "
+]
+
+// Generate a random index into the array
+const randomIndex = Math.floor(Math.random() * neverSaid.length);
+
+// Use document.write to output the random string
+document.write(neverSaid[randomIndex]);
diff --git a/public/js/schemeSwap.js b/public/js/schemeSwap.js
index 044df0f..3baa09b 100644
--- a/public/js/schemeSwap.js
+++ b/public/js/schemeSwap.js
@@ -26,11 +26,10 @@ function getCookie(cname) {
* @param {number} exdays Cookie lifespan (days)
*/
function setCookie(cname, cvalue, exdays) {
- const hostname = window.location.hostname;
const d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
let expires = "expires="+ d.toUTCString();
- document.cookie = `${cname}=${cvalue};${expires};path=/;SameSite=Strict;Domain=${hostname}`
+ document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/;SameSite=Strict;Domain=.diskfloppy.me";
}
/**
@@ -47,8 +46,7 @@ function cookieExists(cname) {
* Swaps the colorscheme
* @param {string} scheme Color scheme ID
*/
-function swapScheme() {
- let scheme = document.getElementById('scheme-selector').value ;
+function swapScheme(scheme) {
setCookie("colorscheme", scheme, 90);
document.getElementById("css-colorscheme").href = `/css/colorschemes/${scheme}.css`;
console.log(`Set colorscheme to ${getCookie("colorscheme")}`)
diff --git a/public/pub b/public/pub
new file mode 120000
index 0000000..dfdd58e
--- /dev/null
+++ b/public/pub
@@ -0,0 +1 @@
+/srv/pubfiles
\ No newline at end of file
diff --git a/public/robots.txt b/public/robots.txt
index ccc50e1..e65f07c 100644
--- a/public/robots.txt
+++ b/public/robots.txt
@@ -3,27 +3,3 @@ Disallow: /admin
Disallow: /login
Disallow: /js
Disallow: /css
-
-User-Agent: GPTBot
-Disallow: /
-
-User-Agent: ChatGPT-User
-Disallow: /
-
-User-Agent: Google-Extended
-Disallow: /
-
-User-Agent: CCBot
-Disallow: /
-
-User-Agent: PerplexityBot
-Disallow: /
-
-User-agent: anthropic-ai
-Disallow: /
-
-User-agent: Claude-Web
-Disallow: /
-
-User-agent: ClaudeBot
-Disallow: /
diff --git a/public/sitemap.xml b/public/sitemap.xml
index 6ce30cf..d29d3ce 100644
--- a/public/sitemap.xml
+++ b/public/sitemap.xml
@@ -1,28 +1,45 @@
-
+
- https://wah.moe/
- 2024-12-28T18:33:23+01:00
- 1.0
+ https://www.diskfloppy.me
+ 2023-10-10
+ always
+ 0.5
- https://wah.moe/bookmarks
- 2024-12-28T18:33:23+01:00
- 1.0
+ https://www.diskfloppy.me/pub
+ 2023-10-10
+ always
+ 0.5
- https://wah.moe/guestbook
- 2024-12-28T18:33:23+01:00
- 1.0
+ https://www.diskfloppy.me/computers
+ 2023-10-10
+ always
+ 0.5
- https://wah.moe/music
- 2024-12-28T18:33:23+01:00
- 1.0
+ https://www.diskfloppy.me/guestbook
+ 2023-10-10
+ always
+ 0.5
- https://wah.moe/rosco
- 2024-12-28T18:33:23+01:00
- 1.0
+ https://www.diskfloppy.me/weather
+ 2023-10-10
+ always
+ 0.5
-
+
+ https://www.diskfloppy.me/music
+ 2023-10-10
+ always
+ 0.5
+
+
+ https://www.diskfloppy.me/bookmarks
+ 2023-10-10
+ always
+ 0.5
+
+
\ No newline at end of file
diff --git a/resources/js/app.js b/resources/js/app.js
new file mode 100644
index 0000000..e59d6a0
--- /dev/null
+++ b/resources/js/app.js
@@ -0,0 +1 @@
+import './bootstrap';
diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js
new file mode 100644
index 0000000..846d350
--- /dev/null
+++ b/resources/js/bootstrap.js
@@ -0,0 +1,32 @@
+/**
+ * We'll load the axios HTTP library which allows us to easily issue requests
+ * to our Laravel back-end. This library automatically handles sending the
+ * CSRF token as a header based on the value of the "XSRF" token cookie.
+ */
+
+import axios from 'axios';
+window.axios = axios;
+
+window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
+
+/**
+ * Echo exposes an expressive API for subscribing to channels and listening
+ * for events that are broadcast by Laravel. Echo and event broadcasting
+ * allows your team to easily build robust real-time web applications.
+ */
+
+// import Echo from 'laravel-echo';
+
+// import Pusher from 'pusher-js';
+// window.Pusher = Pusher;
+
+// window.Echo = new Echo({
+// broadcaster: 'pusher',
+// key: import.meta.env.VITE_PUSHER_APP_KEY,
+// cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1',
+// wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`,
+// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80,
+// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443,
+// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https',
+// enabledTransports: ['ws', 'wss'],
+// });
diff --git a/resources/views/bookmarks.blade.php b/resources/views/bookmarks.blade.php
deleted file mode 100644
index 178478f..0000000
--- a/resources/views/bookmarks.blade.php
+++ /dev/null
@@ -1,24 +0,0 @@
-
- Bookmarks
- @foreach($categories as $category)
-
-
{{ $category->name }}
- @if($category->id == 1)
-
(These are shuffled every load)
- @php
- $sites = $category->sites->shuffle();
- @endphp
- @else
- @php
- $sites = $category->sites;
- @endphp
- @endif
-
-
- @foreach($sites as $site)
- {{ $site->name }} - {{ $site->description }}
- @endforeach
-
-
- @endforeach
-
diff --git a/resources/views/components/git.blade.php b/resources/views/components/git.blade.php
new file mode 100644
index 0000000..e66a6eb
--- /dev/null
+++ b/resources/views/components/git.blade.php
@@ -0,0 +1,48 @@
+@php
+$api_root = app('config')->get('app')['api_root'];
+
+$commits = json_decode(file_get_contents($api_root.'/gitdata'));
+$count = 0;
+
+function formatRelativeTime(DateTime $dateTime) {
+ $currentTimestamp = time();
+ $dateTimeTimestamp = $dateTime->getTimestamp();
+ $difference = $currentTimestamp - $dateTimeTimestamp;
+
+ if ($difference < 60) {
+ return "just now";
+ } elseif ($difference < 3600) {
+ $minutes = floor($difference / 60);
+ $suffix = ($minutes > 1) ? "s" : "";
+ return $minutes . " minute" . $suffix . " ago";
+ } elseif ($difference < 86400) {
+ $hours = floor($difference / 3600);
+ $suffix = ($hours > 1) ? "s" : "";
+ return $hours . " hour" . $suffix . " ago";
+ } elseif ($difference < 604800) {
+ $days = floor($difference / 86400);
+ $suffix = ($days > 1) ? "s" : "";
+ return $days . " day" . $suffix . " ago";
+ } else {
+ return $dateTime->format('Y-m-d H:i:s'); // Fallback to a specific format if desired
+ }
+}
+@endphp
+Recent Site Updates
+
+@foreach ($commits as $commit)
+
+ @if ($count >= 5)
+
+ @break
+ @endif
+ @php
+ $date = DateTime::createFromFormat("Y-m-d\TH:i:s\Z", $commit->author->date)
+ @endphp
+
+ •
+ {{ formatRelativeTime($date) }}
+ {{ $commit->message }}
+
+@php $count++ @endphp
+@endforeach
diff --git a/resources/views/components/lastfm-current.blade.php b/resources/views/components/lastfm-current.blade.php
deleted file mode 100644
index 230a07a..0000000
--- a/resources/views/components/lastfm-current.blade.php
+++ /dev/null
@@ -1,34 +0,0 @@
-@if (isLegacy())
- @php
- $artUrl = null;
- $path = parse_url($track["image"], PHP_URL_PATH);
- if ($track["image"] !== "") {
- $artUrl = "//" . request()->getHttpHost() . "/proxy/lastfm/" . basename($path);
- }
- @endphp
-
- @if ($artUrl !== null)
-
- @endif
-
-
- {{ $track["header"] }}:
- {{ $track["title"] }}
- by {{ $track["artist"] }}
-
-
-
-@else
-
- @if($track["image"] !== "")
-
-
-
- @endif
-
-
-@endif
diff --git a/resources/views/components/lastfm-top.blade.php b/resources/views/components/lastfm-top.blade.php
deleted file mode 100644
index e6a5968..0000000
--- a/resources/views/components/lastfm-top.blade.php
+++ /dev/null
@@ -1,21 +0,0 @@
-@if (isLegacy())
-
- Top 10 Tracks (Last 30 days):
-@else
-
-
- Top 10 Tracks (Last 30 days):
-
-@endif
-
- #
- Track
- Artist
- Plays
-
- @php($count = 0)
- @foreach ($tracks as $track)
- @php($count++)
-
- @endforeach
-
diff --git a/resources/views/components/lastfm-track.blade.php b/resources/views/components/lastfm-track.blade.php
deleted file mode 100644
index f61d41e..0000000
--- a/resources/views/components/lastfm-track.blade.php
+++ /dev/null
@@ -1,6 +0,0 @@
-
- {{ $count }}
- {{ $track["title"] }}
- {{ $track["artist"] }}
- {{ $track["plays"] }}
-
diff --git a/resources/views/components/layout-err.blade.php b/resources/views/components/layout-err.blade.php
deleted file mode 100644
index 5c75d0e..0000000
--- a/resources/views/components/layout-err.blade.php
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
- {{ $title ?? '' }}
-
-
-
-
- Error {{ $code }} | {{ $message }}
-
- Here, have a cat...
-
- If you believe this is a server error, contact the webmaster
-
- Diagnostic Info
-
-
- Server: {{ gethostname() }}
- Your IP: {{ Request::ip() }}
- Root: {!! url('') !!}
- Path: @if(Request::path() == "/")/@else/{{ Request::path() }}/@endif
- Epoch: {{ now()->timestamp }}
- Agent: {{ request()->userAgent() }}
-
-
- © RoscoeDaWah 2021-2024
-
-
diff --git a/resources/views/components/layout-legacy.blade.php b/resources/views/components/layout-legacy.blade.php
deleted file mode 100644
index 56379f9..0000000
--- a/resources/views/components/layout-legacy.blade.php
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-
-
-
- wah! (dot moe) - {{ $title }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- wah! (dot moe)
- "i mean it looks alright, but then you realise its all tables" ~ alice
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $slot }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- © RoscoeDaWah 2021-2025
-
-
-
-
-
-
-
-
-
-
-
diff --git a/resources/views/components/layout-min.blade.php b/resources/views/components/layout-min.blade.php
deleted file mode 100644
index 37e6e03..0000000
--- a/resources/views/components/layout-min.blade.php
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- {{ $title ?? 'Unknown' }}
-
-
-{{ $slot }}
-
-
diff --git a/resources/views/components/layout.blade.php b/resources/views/components/layout.blade.php
deleted file mode 100644
index a9a1728..0000000
--- a/resources/views/components/layout.blade.php
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
-
-
-
-
-
- wah! (dot moe)
-
-
-
- @if ($isChristmas)@endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/resources/views/components/navigation.blade.php b/resources/views/components/navigation.blade.php
deleted file mode 100644
index acf5406..0000000
--- a/resources/views/components/navigation.blade.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
- Pages:
- home |
- @if(!isLegacy())
- wah-ki |
- @endif
- git |
- files |
- gopher |
- bookmarks |
- guestbook |
- music |
- pandamonium
-
diff --git a/resources/views/components/wah.blade.php b/resources/views/components/wah.blade.php
deleted file mode 100644
index 105c9b7..0000000
--- a/resources/views/components/wah.blade.php
+++ /dev/null
@@ -1,12 +0,0 @@
-@if(!isLegacy())
-
-
Random Wah!
- @if ($wah !== "")
-
-
Image "stolen" from tinyfox.dev
- @else
-
-
Unable to retrieve image
- @endif
-
-@endif
diff --git a/resources/views/errors/401.blade.php b/resources/views/errors/401.blade.php
index f3dce11..5c586db 100644
--- a/resources/views/errors/401.blade.php
+++ b/resources/views/errors/401.blade.php
@@ -1,4 +1,5 @@
-
- 401
- Unauthorized
-
+@extends('errors::minimal')
+
+@section('title', __('Unauthorized'))
+@section('code', '401')
+@section('message', __('Unauthorized'))
diff --git a/resources/views/errors/402.blade.php b/resources/views/errors/402.blade.php
index 06f6d5e..3bc23ef 100644
--- a/resources/views/errors/402.blade.php
+++ b/resources/views/errors/402.blade.php
@@ -1,4 +1,5 @@
-
- 402
- Payment Required
-
+@extends('errors::minimal')
+
+@section('title', __('Payment Required'))
+@section('code', '402')
+@section('message', __('Payment Required'))
diff --git a/resources/views/errors/403.blade.php b/resources/views/errors/403.blade.php
index 22b14ad..a5506f0 100644
--- a/resources/views/errors/403.blade.php
+++ b/resources/views/errors/403.blade.php
@@ -1,4 +1,5 @@
-
- 403
- {{__($exception->getMessage() ?: 'Forbidden')}}
-
+@extends('errors::minimal')
+
+@section('title', __('Forbidden'))
+@section('code', '403')
+@section('message', __($exception->getMessage() ?: 'Forbidden'))
diff --git a/resources/views/errors/404.blade.php b/resources/views/errors/404.blade.php
index a3cd44c..ebd22b7 100644
--- a/resources/views/errors/404.blade.php
+++ b/resources/views/errors/404.blade.php
@@ -1,4 +1,27 @@
-
- 404
- Page not found!
-
+@extends('errors::minimal')
+@section('content')
+
+Error 404 | Page not found!
+
+The page /{{ Request::path() }}/ doesn't exist! Did you mean...
+
+Still haven't found what you were looking for or believe this is a server error? Contact the webmaster !
+
+Diagnostic Info
+
+
+ Server: {{ gethostname() }}
+ Your IP: {{ Request::ip() }}
+ Epoch: {{ now()->timestamp }}
+ Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:122.0) Gecko/20100101 Firefox/122.0
+
+
+© floppydisk 2021-2024
+@endsection
diff --git a/resources/views/errors/418.blade.php b/resources/views/errors/418.blade.php
index f69b9a2..412ea92 100644
--- a/resources/views/errors/418.blade.php
+++ b/resources/views/errors/418.blade.php
@@ -1,4 +1,5 @@
-
- 418
- I'm a teapot
-
+@extends('errors::minimal')
+
+@section('title', __('I\'m a teapot'))
+@section('code', '418')
+@section('message', __('I\'m a teapot'))
diff --git a/resources/views/errors/419.blade.php b/resources/views/errors/419.blade.php
index 5d5781e..c09216e 100644
--- a/resources/views/errors/419.blade.php
+++ b/resources/views/errors/419.blade.php
@@ -1,4 +1,5 @@
-
- 419
- Page Expired
-
+@extends('errors::minimal')
+
+@section('title', __('Page Expired'))
+@section('code', '419')
+@section('message', __('Page Expired'))
diff --git a/resources/views/errors/429.blade.php b/resources/views/errors/429.blade.php
index a3a3e51..f01b07b 100644
--- a/resources/views/errors/429.blade.php
+++ b/resources/views/errors/429.blade.php
@@ -1,4 +1,5 @@
-
- 429
- Too Many Requests
-
+@extends('errors::minimal')
+
+@section('title', __('Too Many Requests'))
+@section('code', '429')
+@section('message', __('Too Many Requests'))
diff --git a/resources/views/errors/500.blade.php b/resources/views/errors/500.blade.php
index f578dca..d9e95d9 100644
--- a/resources/views/errors/500.blade.php
+++ b/resources/views/errors/500.blade.php
@@ -1,4 +1,5 @@
-
- 500
- Server Error
-
+@extends('errors::minimal')
+
+@section('title', __('Server Error'))
+@section('code', '500')
+@section('message', __('Server Error'))
diff --git a/resources/views/errors/503.blade.php b/resources/views/errors/503.blade.php
index 61587ac..c5a9dde 100644
--- a/resources/views/errors/503.blade.php
+++ b/resources/views/errors/503.blade.php
@@ -1,4 +1,5 @@
-
- 503
- Service Unavailable
-
+@extends('errors::minimal')
+
+@section('title', __('Service Unavailable'))
+@section('code', '503')
+@section('message', __('Service Unavailable'))
diff --git a/resources/views/errors/generic-error.blade.php b/resources/views/errors/generic-error.blade.php
index cbdca62..6f08ea5 100644
--- a/resources/views/errors/generic-error.blade.php
+++ b/resources/views/errors/generic-error.blade.php
@@ -1,8 +1,9 @@
-
- Error 401: Unauthorized User!
+@extends('layouts.minimal')
+@section('title', 'Error 401: Unauthorized User!')
+@section('content')
{{ $error }}
@if(isset($description))
{{ $description }}
@endif
-
+@stop
diff --git a/resources/views/errors/guestbook-invalid.blade.php b/resources/views/errors/guestbook-invalid.blade.php
deleted file mode 100644
index 6c72bcf..0000000
--- a/resources/views/errors/guestbook-invalid.blade.php
+++ /dev/null
@@ -1,12 +0,0 @@
-
- Error dsdf!
-
-
-
Error 400: Invalid message!
-
-
Whoa there! Your form submission seems to contain a URL (or one of the fields was left blank)!
-
- Click
here to go back to the guestbook.
-
-
-
diff --git a/resources/views/errors/guestbook-ipban.blade.php b/resources/views/errors/guestbook-ipban.blade.php
index 319aff0..386d22a 100644
--- a/resources/views/errors/guestbook-ipban.blade.php
+++ b/resources/views/errors/guestbook-ipban.blade.php
@@ -1,5 +1,6 @@
-
- Error 403: IP Blocked!
+@extends('layouts.minimal')
+@section('title', 'Error 403: IP Blocked!')
+@section('content')
Error 403: IP Blocked!
Your IP has been banned from submitting to the guestbook.
@@ -8,4 +9,4 @@
@endif
Click here to go back to the guestbook.
-
+@stop
diff --git a/resources/views/errors/guestbook-ratelimit.blade.php b/resources/views/errors/guestbook-ratelimit.blade.php
index adfa5a9..7fecd97 100644
--- a/resources/views/errors/guestbook-ratelimit.blade.php
+++ b/resources/views/errors/guestbook-ratelimit.blade.php
@@ -1,13 +1,10 @@
-
- Error 429: Overclocking Detected!
-
-
-
Error 429: Overclocking Detected!
-
-
Whoa there! Your submissions are going at warp speed.
-
Remember you can only submit an entry once every hour !
-
- Click
here to go back to the guestbook.
-
-
-
+@extends('layouts.minimal')
+@section('title', 'Error 429: Overclocking Detected!')
+@section('content')
+ Error 429: Overclocking Detected!
+
+ Whoa there! Your submissions are going at warp speed.
+ Remember you can only submit an entry once every hour !
+
+ Click here to go back to the guestbook.
+@stop
diff --git a/resources/views/errors/layout.blade.php b/resources/views/errors/layout.blade.php
new file mode 100644
index 0000000..019c2cd
--- /dev/null
+++ b/resources/views/errors/layout.blade.php
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+ @yield('title')
+
+
+
+
+
+
+
+
+ @yield('message')
+
+
+
+
+
diff --git a/resources/views/errors/minimal.blade.php b/resources/views/errors/minimal.blade.php
new file mode 100644
index 0000000..e15c833
--- /dev/null
+++ b/resources/views/errors/minimal.blade.php
@@ -0,0 +1,21 @@
+@extends('layouts.minimal')
+@section('content')
+ Error @yield('code') | @yield('message')
+
+ Here, have a cat...
+
+ If you believe this is a server error, contact the webmaster
+
+ Diagnostic Info
+
+
+ Server: {{ gethostname() }}
+ Your IP: {{ Request::ip() }}
+ Root: {!! url('') !!}
+ Path: /{{ Request::path() }}/
+ Epoch: {{ now()->timestamp }}
+ Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:122.0) Gecko/20100101 Firefox/122.0
+
+
+ © floppydisk 2021-2024
+@endsection
diff --git a/resources/views/errors/no-auth.blade.php b/resources/views/errors/no-auth.blade.php
new file mode 100644
index 0000000..1d99498
--- /dev/null
+++ b/resources/views/errors/no-auth.blade.php
@@ -0,0 +1,8 @@
+@extends('layouts.minimal')
+@section('title', 'Error 401: Unauthorized User!')
+@section('content')
+ Error 401: Unauthorized User!
+
+ Woah there! Only authorized users can access this page. Please log in to proceed.
+ Ended up here on accident? Click here to return to the homepage!
+@stop
diff --git a/resources/views/guestbook.blade.php b/resources/views/guestbook.blade.php
deleted file mode 100644
index fb73da2..0000000
--- a/resources/views/guestbook.blade.php
+++ /dev/null
@@ -1,127 +0,0 @@
-
- Guestbook
-
-
-
-
-
-
- A few things to note:
-
- You can submit an entry once every hour .
- Your IP address is logged but not publicly displayed.
- Any entries that appear to be spam will be removed.
- @if (isLegacy())
- This form is broken in super-old browsers.
- Entries submitted on this site are flagged for manual review.
- @endif
-
-
-
-
-
- @if (isLegacy())
- Entries ({{ count($entries) }} total)
-
- @foreach ($entries as $entry)
- @php
- $user_agent = $parser->parse($entry->agent);
- @endphp
-
-
-
-
- Submitted by {{ $entry->name }}
- on {{ $entry->created_at->format('Y-m-d') }}
- at {{ $entry->created_at->format('h:i:s A (e)') }}
-
- {{ $entry->message }}
-
- @if($entry->agent === "Agent Unavailable")
- Agent unavailable
- @else
- @if ($user_agent->ua->toString() == "Other" || $user_agent->os->toString() == "Other")
- Posted using {{ $entry->agent }}
- @else
- Posted using {{ $user_agent->ua->toString() }}
- on {{ $user_agent->os->toString() }}
- @endif
- @endif
-
-
-
-
- @endforeach
-
-
- @else
-
- Entries ({{ count($entries) }} total)
- @foreach ($entries as $entry)
- @php
- $user_agent = $parser->parse($entry->agent);
- @endphp
-
- Submitted by
{{ $entry->name }}
- on
{{ $entry->created_at->format('Y-m-d') }}
- at
{{ $entry->created_at->format('h:i:s A (e)') }}
-
-
{{ $entry->message }}
-
- @if($entry->agent === "Agent Unavailable")
-
Agent unavailable
- @else
- @if ($user_agent->ua->toString() == "Other" || $user_agent->os->toString() == "Other")
-
Posted using {{ $entry->agent }}
- @else
-
Posted using {{ $user_agent->ua->toString() }}
- on {{ $user_agent->os->toString() }}
- @endif
- @endif
-
-
- @endforeach
- @endif
-
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php
deleted file mode 100644
index 91184e5..0000000
--- a/resources/views/home.blade.php
+++ /dev/null
@@ -1,33 +0,0 @@
-
- Home
-
-
- Hi! This is my personal homepage on the W orld W ide
- W eb.
-
- @if(!isLegacy())
-
- @endif
- Some quick facts about me:
-
- {{ $age }} y/o, he/him, British
- Theatre Technician and "Web Developer"
- Loves ETC desks, prefers Generics to LEDs for some reason
- Spends way too much time on his computer
- Favorite games: OneShot ,
- Minecraft, Stardew Valley, N++ and Starbound
- CWOP member
-
- @if(!isLegacy())
-
- @endif
- Interests:
-
- Tech Theatre - Lighting, Stage Management, etc.
- Programming - HTML, CSS, JavaScript, C#, Java, PHP, Ruby, Python (GitHub )
- Photography - Flickr
- Gaming - Steam Profile
-
-
-
diff --git a/resources/views/includes/admin/header.blade.php b/resources/views/includes/admin/header.blade.php
new file mode 100644
index 0000000..edb2fd7
--- /dev/null
+++ b/resources/views/includes/admin/header.blade.php
@@ -0,0 +1,12 @@
+
+
+
diff --git a/resources/views/includes/footer.blade.php b/resources/views/includes/footer.blade.php
new file mode 100644
index 0000000..b606564
--- /dev/null
+++ b/resources/views/includes/footer.blade.php
@@ -0,0 +1,66 @@
+
+
diff --git a/resources/views/includes/head.blade.php b/resources/views/includes/head.blade.php
new file mode 100644
index 0000000..d6d1280
--- /dev/null
+++ b/resources/views/includes/head.blade.php
@@ -0,0 +1,21 @@
+@php // Get colorscheme from cookie and apply immediately
+ $colorscheme = request()->cookie('colorscheme', 'catppuccin-macchiato');
+@endphp
+
+
+
+
+
+
+
+
+
+
+ {!! (intval(date('n')) == 12) ? '' : '' !!}
+
+
+ @yield('title') - diskfloppy.me
+
+
+
+
diff --git a/resources/views/includes/header.blade.php b/resources/views/includes/header.blade.php
new file mode 100644
index 0000000..fd80877
--- /dev/null
+++ b/resources/views/includes/header.blade.php
@@ -0,0 +1,17 @@
+
+ diskfloppy.me | @yield('title')
+
+
+
diff --git a/resources/views/layouts/default-admin.blade.php b/resources/views/layouts/default-admin.blade.php
new file mode 100644
index 0000000..5a16524
--- /dev/null
+++ b/resources/views/layouts/default-admin.blade.php
@@ -0,0 +1,23 @@
+
+
+
+ @include('includes.head')
+
+
+
+
+
+
+
+
+@yield('content')
+
+
+
+
+
+
diff --git a/resources/views/layouts/default.blade.php b/resources/views/layouts/default.blade.php
new file mode 100644
index 0000000..0945b9c
--- /dev/null
+++ b/resources/views/layouts/default.blade.php
@@ -0,0 +1,20 @@
+
+
+
+ @include('includes.head')
+
+
+
+
+
+
+@yield('content')
+
+
+
+
+
diff --git a/resources/views/layouts/minimal.blade.php b/resources/views/layouts/minimal.blade.php
new file mode 100644
index 0000000..5cef094
--- /dev/null
+++ b/resources/views/layouts/minimal.blade.php
@@ -0,0 +1,11 @@
+
+
+
+ @yield('title')
+
+
+
+
+@yield('content')
+
+
diff --git a/resources/views/music.blade.php b/resources/views/music.blade.php
deleted file mode 100644
index d0793cd..0000000
--- a/resources/views/music.blade.php
+++ /dev/null
@@ -1,5 +0,0 @@
-
- Music
-
-
-
diff --git a/resources/views/pages/admin/guestbook-del-confirm.blade.php b/resources/views/pages/admin/guestbook-del-confirm.blade.php
new file mode 100644
index 0000000..de920e0
--- /dev/null
+++ b/resources/views/pages/admin/guestbook-del-confirm.blade.php
@@ -0,0 +1,33 @@
+@extends('layouts.minimal')
+@section('title', 'Delete confirm')
+@section('content')
+ Delete Confirmation
+
+ Are you sure you want to delete this entry?
+
+ Entry Details:
+
+
+ ID:
+ {{ $entry->id }}
+
+
+ Name:
+ {{ $entry->name }}
+
+
+ Date:
+ {{ gmdate("H:i:s - Y-m-d", $entry->timestamp) }}
+
+
+ Message:
+ {{ $entry->message }}
+
+
+
+
+ @csrf
+
+ Confirm Delete
+
+@stop
diff --git a/resources/views/pages/admin/guestbook.blade.php b/resources/views/pages/admin/guestbook.blade.php
new file mode 100644
index 0000000..85460cc
--- /dev/null
+++ b/resources/views/pages/admin/guestbook.blade.php
@@ -0,0 +1,32 @@
+@extends('layouts.default-admin')
+@section('title', 'Guestbook')
+@section('content')
+ @php
+ $entries = DB::select('
+ SELECT id, name, timestamp, message, ip_address
+ FROM guestbook__entries
+ ORDER BY id DESC
+ ');
+ @endphp
+ Entries ({{ count($entries) }} total)
+ @foreach ($entries as $entry)
+
+
+
+ Name: {{ $entry->name }}
+ IP: {{ $entry->ip_address }}
+ Date: {{ gmdate("H:i:s - Y-m-d", $entry->timestamp) }}
+
+
+ del
+
+
+
+
+
+ {{ htmlspecialchars($entry->message) }}
+
+
+ @endforeach
+@stop
+
diff --git a/resources/views/pages/admin/index.blade.php b/resources/views/pages/admin/index.blade.php
new file mode 100644
index 0000000..fd34313
--- /dev/null
+++ b/resources/views/pages/admin/index.blade.php
@@ -0,0 +1,9 @@
+@extends('layouts.default-admin')
+@section('title', 'Page Title')
+@section('description', 'Page description goes here')
+@php
+ $user = auth()->user();
+@endphp
+@section('content')
+ You are logged in as {{ $user->name }} ({{ $user->email }})
+@stop
diff --git a/resources/views/pages/bookmarks.blade.php b/resources/views/pages/bookmarks.blade.php
new file mode 100644
index 0000000..55cc801
--- /dev/null
+++ b/resources/views/pages/bookmarks.blade.php
@@ -0,0 +1,52 @@
+@extends('layouts.default')
+@section('title', 'Bookmarks')
+@section('description', 'This is the personal homepage of floppydisk.')
+@section('content')
+ @php
+ $db_alive = true;
+ try {
+ DB::connection()->getPdo();
+ } catch (Exception $e) {
+ $db_alive = false;
+ }
+ @endphp
+ @if (!$db_alive)
+ @include('components.errors.db-error')
+ @else
+ @php
+ $categories = DB::select('
+ SELECT id, name
+ FROM bookmark__categories
+ ORDER BY priority ASC
+ ');
+ @endphp
+
+ @foreach ($categories as $category)
+
+
+
+ {{ $category->name }}
+
+
+
+ @php
+ $sites = DB::select(
+ '
+ SELECT name, url, description
+ FROM bookmark__sites
+ WHERE category_id = ? ORDER BY priority ASC
+ ',
+ [$category->id],
+ );
+ @endphp
+ @foreach ($sites as $site)
+
+ {{ $site->name }}
+ - {{ $site->description }}
+
+ @endforeach
+
+
+ @endforeach
+ @endif
+@stop
diff --git a/resources/views/pages/bot.blade.php b/resources/views/pages/bot.blade.php
new file mode 100644
index 0000000..b9475fc
--- /dev/null
+++ b/resources/views/pages/bot.blade.php
@@ -0,0 +1,7 @@
+@extends('layouts.default')
+@section('title', 'Discord Bot')
+@section('description', '')
+@section('content')
+ The diskfloppy.me Discord bot blah blah blah blah blah
+ Maybe I'll finish this page later idk
+@stop
diff --git a/resources/views/pages/calculators.blade.php b/resources/views/pages/calculators.blade.php
new file mode 100644
index 0000000..5d629ed
--- /dev/null
+++ b/resources/views/pages/calculators.blade.php
@@ -0,0 +1,110 @@
+@extends('layouts.default')
+@section('title', 'Calculators')
+@section('description', 'C a l c u l a t o r s.')
+@section('content')
+ CASIO fx-CG50
+ TBD
+ Pictures
+ Click images to view full size
+
+
+
+
+
+ CASIO fx-120 (1977-78)
+ TBD
+ Specifications
+
+
+ Size
+ 8.4cm x 16.2cm x 2.4cm
+
+
+ Weight (w/ battery)
+ 209g
+
+
+ Type
+ Scientific
+
+
+ CPU
+ Hitachi HD38111A
+
+
+ Registers
+ 2 standard 1 constant 4 bracket 1 memory
+
+
+ Features
+ %, +/-, RV, F, Sci, ab ⁄c , Sqr, x2 , pi, 1 ⁄x , trig, hyp, DMS-DD, log, yx , SD, nCr, P-R, n!
+
+
+ Display
+ 12-digit VFD (NEC LD8197A)
+
+
+ Pictures
+ Click images to view full size
+
+
+
+
+
+ CASIO fx-82 (1982-85)
+ TBD
+ Pictures
+ Click images to view full size
+
+
+
+
+
+ Texas Instruments TI-30 (1976-90)
+ TBD
+ Pictures
+ Click images to view full size
+
+
+
+
+
+ Texet 880 Executive (1977-78)
+
+ The calculator measures 74.2mm x 135mm x 22.2mm. It weighs 86g without the battery installed, which is a 9v PP3-type battery. Rather than the usual press-stud type holder, the housing has two metal slide clips. There is also what I assume to be a sponge at one end which is supposed to aid in holding the battery in, however it appears to have gone completely hard and I will most likely replace it in the future. There's small adaptor hole at the top, of which the input isn't specified (though it's generally agreed that it's 4.5v centre-positive).
+ The case is black & silvery colored with a thin brushed metallic front panel. The eight-digit bubble display has an absolutely terrible viewing angle, which means you either have to be holding it under your coat or against your face to read it!
+ The keypad is particularly strange in the way that it has 3 cancel buttons, [CE] , [C] and [CA] , while the [CS] button is a Clear Sign button, not another cancel! The keys themselves are particularly stiff and you really have to push them to get them to register. Many 880s suffered something referred to as the "pseudo fixed decimal bug" where, if you typed in 1 + 1.00 = , it would display 2.00 instead of the expected 2
+ Specifications
+
+
+ Size
+ 7.4cm x 13.5cm x 2.2cm
+
+
+ Weight (w/o battery)
+ 86
+
+
+ Type
+ Arithmetic
+
+
+ Logic
+ Algebraic
+
+
+ Power Source
+ PP3 9v
+
+
+ Display
+ 8-digit LED
+
+
+ Pictures
+ Click images to view full size
+
+
+
+
+@stop
diff --git a/resources/views/pages/computers.blade.php b/resources/views/pages/computers.blade.php
new file mode 100644
index 0000000..a7cec24
--- /dev/null
+++ b/resources/views/pages/computers.blade.php
@@ -0,0 +1,442 @@
+@extends('layouts.default')
+@section('title', 'Computers')
+@section('description', 'Computers I own or have owned.')
+@section('content')
+
+
+ PICTURES
+ SPECS & DESCRIPTION
+
+
+ 2023 MacBook Pro 14"
+
+ Quick Specs
+
+ Apple M3 Pro
+ 18GB RAM
+ 500GB SSD
+ macOS Sonoma
+
+ WHAT
+
+
+
+ 2018 MacBook Pro 13"
+
+ Quick Specs
+
+ Intel i5-8259U @ 2.3GHz
+ Intel Iris Plus Graphics 655
+ 8GB RAM
+ 250GB SSD
+ macOS Sonoma
+
+
+
+
+ 2012 Lenovo ThinkPad T430
+
+ Quick Specs
+
+ Intel Core i7
+ 16GB RAM
+ Windows 7 Professional
+
+
+
+
+ 2005 IBM ThinkPad X41T
+
+ Quick Specs
+
+ Intel Pentium M @ 1.6GHz
+ Mobile Intel Express Chipset Family (128MB)
+ 1.5GB RAM
+ 40GB HDD
+ Windows XP Tablet PC Edition
+
+
+
+
+ 1999 Dell OptiPlex GX1
+
+ Quick Specs
+
+ Intel Pentium II (Deschutes) @ 400MHz
+ ATI 3D Rage Pro (4MB)
+ 639MB
+ 40GB HDD
+ MS-DOS 6.22 & WFW 3.10
+
+
+
+
+ 2003 IBM ThinkPad T40
+
+ Quick Specs
+
+ Intel Pentium M @ 1.3GHz
+ ATI Mobility Radeon 7500 (32MB)
+ 1GB RAM
+ 30GB HDD
+ Windows 2000 Professional
+
+
+
+
+ 2010 HP Compaq Elite 8100
+
+ Quick Specs
+
+ Intel Core i7
+ 16GB RAM
+ some SSD and an HDD
+ Windows Vista Ultimate (64-bit)
+
+
+
+
+ 2014 Mac mini
+
+ Quick Specs
+
+ Intel Core i5-4278U @ 2.6GHz
+ Intel Iris Graphics
+ 8GB RAM
+ 1TB HDD
+ VMware ESXi 6.7.0u3
+
+
+
+
+ 1996 Fujitsu Milan
+
+ Quick Specs
+
+ Intel Pentium
+ 32MB RAM
+ 1215MB HDD
+ Windows 98 SE
+
+
+
+
+ 1999 Compaq Armada M300
+
+ Quick Specs
+
+
+
+
+
+
+@stop
diff --git a/resources/views/pages/guestbook.blade.php b/resources/views/pages/guestbook.blade.php
new file mode 100644
index 0000000..a2c39fb
--- /dev/null
+++ b/resources/views/pages/guestbook.blade.php
@@ -0,0 +1,102 @@
+@extends('layouts.default')
+@section('title', 'Guestbook')
+@section('content')
+ @php
+ use UAParser\Parser;
+ $parser = Parser::create();
+ $db_alive = true;
+ try {
+ DB::connection()->getPdo();
+ } catch (Exception $e) {
+ $db_alive = false;
+ }
+ @endphp
+ @if (!$db_alive)
+ @include('components.errors.db-error')
+ @else
+
+
+
+
+
+ @csrf
+
+
+
+
+
+ A few things to note:
+
+ You can submit an entry once every hour .
+ Your IP address is logged but not publicly displayed.
+ Any entries that appear to be spam will be removed.
+
+
+
+
+
+
+
+ @php
+ $entries = DB::select('
+ SELECT name, timestamp, message, agent
+ FROM guestbook__entries
+ ORDER BY id DESC
+ ');
+ @endphp
+ Entries ({{ count($entries) }} total)
+ @foreach ($entries as $entry)
+ @php
+ $user_agent = $parser->parse($entry->agent);
+ @endphp
+
+
+
+ Submitted by {{ $entry->name }}
+ on {{ gmdate('Y-m-d', $entry->timestamp) }}
+ at {{ gmdate('h:i:s A (e)', $entry->timestamp) }}
+
+ {{ $entry->message }}
+
+ @if($entry->agent === "Agent Unavailable")
+ Agent unavailable
+ @else
+ Posted using {{ $user_agent->ua->toString() }}
+ on {{ $user_agent->os->toString() }}
+ @endif
+
+
+
+
+ @endforeach
+ @endif
+@stop
diff --git a/resources/views/pages/home.blade.php b/resources/views/pages/home.blade.php
new file mode 100644
index 0000000..01831d6
--- /dev/null
+++ b/resources/views/pages/home.blade.php
@@ -0,0 +1,88 @@
+@extends('layouts.default')
+@section('title', 'Home')
+@section('description', 'This is the personal homepage of floppydisk.')
+@section('content')
+
+ Hi! This is my personal homepage on the W orld W ide W eb.
+
+
+
+ QuickFacts™
+
+
+
+ ◆ 18 y/o, he/him, British
+
+
+ ◆ Theatre Technician, "Web Developer" and NixOS User
+
+
+ ◆ Loves ETC desks, prefers Generics to LEDs for some reason
+
+
+ ◆ Spends way too much time on his computer
+
+
+ ◆ Favorite games: OneShot , Minecraft, Stardew Valley, N++ and Starbound
+
+
+ ◆ CWOP member
+
+
+
+
+
+
+ Interests
+
+
+
+ ◆ Tech Theatre
+ - Lighting, Stage Management, etc. (ControlBooth )
+
+
+ ◆ Programming
+ - HTML, CSS, JavaScript, C#, Java, PHP, Ruby, Python (GitHub )
+
+
+ ◆ Photography
+ - Flickr
+
+
+ ◆ Gaming
+ - Steam Profile
+
+
+
+
+
+
+ Things they never said
+
+
+
+
+ Oops! You need JavaScript enabled to view this content.
+
+
+
+
+
+@stop
diff --git a/resources/views/pages/music.blade.php b/resources/views/pages/music.blade.php
new file mode 100644
index 0000000..0fbcda2
--- /dev/null
+++ b/resources/views/pages/music.blade.php
@@ -0,0 +1,68 @@
+@extends('layouts.default')
+@section('title', 'Music')
+@section('description', '')
+@section('content')
+ @php
+
+ $cfg = app('config')->get('services')['lastfm'];
+ $api_root = app('config')->get('app')['api_root'];
+
+ $api_alive = true;
+
+ try {
+ $data = file_get_contents($api_root.'/lastfm/current');
+ } catch (Exception $e) {
+ $api_alive = false;
+ }
+ @endphp
+ @if (!$api_alive)
+ @include('components.errors.api-error')
+ @else
+
+ @php
+ $current_track = json_decode(file_get_contents($api_root . '/lastfm/current'));
+ $top_tracks = json_decode(file_get_contents($api_root . '/lastfm/top'));
+ $count = 0;
+ @endphp
+
+
+
+ Last/Current Track:
+
+
+
+
+ {{ $current_track->title }} • {{ $current_track->artist }}
+
+
+
+
+
+
+
+
+
+ Top {{ $cfg['toptracks'] }} Tracks (Last 7 days)
+
+
+
+ #
+ Track
+ Artist
+ Plays
+
+ @foreach ($top_tracks as $track)
+ @php $count++ @endphp
+ @if ($count >= $cfg['toptracks']+1)
+ @break
+ @endif
+
+ {{ $count }}
+ {{ $track->title }}
+ {{ $track->artist }}
+ {{ $track->playcount }}
+
+ @endforeach
+
+ @endif
+@stop
diff --git a/resources/views/pages/projects.blade.php b/resources/views/pages/projects.blade.php
new file mode 100644
index 0000000..aad454b
--- /dev/null
+++ b/resources/views/pages/projects.blade.php
@@ -0,0 +1,16 @@
+get('projects'); ?>
+@extends('layouts.default')
+@section('title', 'Projects')
+@section('description', 'My projects')
+@section('content')
+ @foreach ($categories as $category)
+ {{ $category['name']}}
+ @foreach ($category['projects'] as $project)
+
+
{{ $project['name'] }} - {{ $project['description'] }}
+
Languages: {{ implode(", ", $project['languages']) }}
+
+
+ @endforeach
+@endforeach
+@stop
diff --git a/resources/views/pages/template.blade.php b/resources/views/pages/template.blade.php
new file mode 100644
index 0000000..18fe585
--- /dev/null
+++ b/resources/views/pages/template.blade.php
@@ -0,0 +1,6 @@
+@extends('layouts.default')
+@section('title', 'Page Title')
+@section('description', 'Page description goes here')
+@section('content')
+page content
+@stop
diff --git a/resources/views/pages/weather.blade.php b/resources/views/pages/weather.blade.php
new file mode 100644
index 0000000..a759534
--- /dev/null
+++ b/resources/views/pages/weather.blade.php
@@ -0,0 +1,61 @@
+@extends('layouts.default')
+@section('title', 'Weather')
+@section('description', 'Data from my weather station')
+@section('content')
+@php
+$api_root = app('config')->get('app')['api_root'];
+
+function degreesToCompassDirection($degrees) {
+ $cardinalDirections = [
+ 'N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE',
+ 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW', 'N'
+ ];
+ return $cardinalDirections[round($degrees*16/360)];
+}
+
+$api_alive = true;
+
+try {
+ $data = file_get_contents($api_root.'/weather');
+} catch (Exception $e) {
+ $api_alive = false;
+}
+@endphp
+@if (!$api_alive)
+ @include('components.errors.api-error')
+@else
+ @php
+ $data = json_decode(file_get_contents($api_root.'/weather'));
+ $updated = gmdate('H:i Y-m-d', $data->updated);
+ $data = $data->current;
+ @endphp
+
+
+ Local Weather
+
+
+
+ Wind Speed:
+ {{ $data->wind->speed }} mph
+
+
+ Wind Direction:
+ {{ $data->wind->direction->degrees }}°, {{ $data->wind->direction->cardinal }}
+
+
+ Temperature:
+ {{ $data->temperature }}°C
+
+
+ Rain Rate:
+ {{ $data->rain_rate }} mm/hr
+
+
+ Humidity:
+ {{ $data->humidity }}%
+
+
+
+(Last Update: {{ $updated }})
+@endif
+@stop
diff --git a/resources/views/pandamonium.blade.php b/resources/views/pandamonium.blade.php
deleted file mode 100644
index 0e90c46..0000000
--- a/resources/views/pandamonium.blade.php
+++ /dev/null
@@ -1,25 +0,0 @@
-
- Absolute Pandamonium!
- {{ asset('/images/embeds/pandamonium.png') }}
- Follow the adventures of Rosco, Leko, Viz and AJ!
- @if (isLegacy())
- Click images for full-size version (56k no!)
- @foreach($images as $image)
-
- @if(isset($image["description"]))
- {{$image["description"]}}
- @endif
- @endforeach
- @else
-
- @foreach($images as $image)
-
-
- @if(isset($image["description"]))
-
{{$image["description"]}}
- @endif
-
- @endforeach
-
- @endif
-
diff --git a/routes/web.php b/routes/web.php
index 28bb7d0..d9b39c6 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -1,11 +1,8 @@
middleware('validator')
+Route::get('/', function () {
+ return View::make('pages.home');
+});
+
+Route::get('/bookmarks', function () {
+ return View::make('pages.bookmarks');
+});
+
+Route::get('/projects', function () {
+ return View::make('pages.projects');
+});
+
+Route::get('/calculators', function () {
+ return View::make('pages.calculators');
+});
+
+Route::get('/computers', function () {
+ return View::make('pages.computers');
+});
+
+Route::get('/guestbook', 'App\Http\Controllers\GuestbookController@guestbook')
+ ->name('guestbook');
+
+Route::post('/guestbook', 'App\Http\Controllers\GuestbookController@guestbookpost')
+ ->name('guestbookPost')
->middleware('rate_limit');
-Route::get('/proxy/wah/{image}', function (string $image) {
- $client = new \GuzzleHttp\Client();
- $response = $client->request('GET', 'https://api.tinyfox.dev/hourly/wahs/'.$image);
-
- return response($response->getBody())
- ->header('Content-Type', $response->getHeader('Content-Type'));
+Route::get('/weather', function () {
+ return View::make('pages.weather');
});
-Route::get('/proxy/lastfm/{image}', function (string $image) {
- $client = new \GuzzleHttp\Client();
- $response = $client->request('GET', 'https://lastfm.freetls.fastly.net/i/u/174s/'.$image);
-
- return response($response->getBody())
- ->header('Content-Type', $response->getHeader('Content-Type'));
+Route::get('/music', function () {
+ return View::make('pages.music');
});
+
+Route::get('/bot', function () {
+ return View::make('pages.bot');
+});
+
+/* ------------------------------ Admin Routes ------------------------------ */
+
+//Route::get('/admin', function () {
+// if (!auth()->check()) {
+// return View::make('errors.no-auth');
+// }
+// return View::make('pages.admin.index');
+//});
+//
+//Route::get('/admin/guestbook', function () {
+// if (!auth()->check()) {
+// return View::make('errors.no-auth');
+// }
+// return View::make('pages.admin.guestbook');
+//});
+//
+//Route::get('/admin/guestbook/delete', function () {
+// if (!auth()->check()) {
+// return View::make('errors.no-auth');
+// }
+//
+// $id = request()->input('id');
+// $entry = DB::table('guestbook__entries')->find($id);
+//
+// if ($entry) {
+// // Render a confirmation view
+// return View::make('pages.admin.guestbook-del-confirm', compact('entry'));
+// } else {
+// return View::make('errors.generic-error')
+// ->with('error', "Entry not found")
+// ->with('description', "The specified entry does not exist!");
+// }
+//});
+//
+//Route::post('/admin/guestbook/delete', function () {
+// if (!auth()->check()) {
+// return View::make('errors.no-auth');
+// }
+//
+// $id = request()->input('id');
+// DB::table('guestbook__entries')->where('id', $id)->delete();
+//
+// return back()->with('success', 'Entry deleted successfully!');
+//});
+
diff --git a/scripts/updatecache.bat b/scripts/updatecache.bat
deleted file mode 100644
index 0245663..0000000
--- a/scripts/updatecache.bat
+++ /dev/null
@@ -1,6 +0,0 @@
-@echo off
-php artisan config:cache
-php artisan route:cache
-php artisan view:cache
-php artisan event:cache
-php artisan cache:clear
diff --git a/scripts/updatecache.sh b/scripts/updatecache.sh
index b4acd8c..53dad65 100755
--- a/scripts/updatecache.sh
+++ b/scripts/updatecache.sh
@@ -2,4 +2,3 @@ php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
-php artisan cache:clear
diff --git a/storage/app/.gitignore b/storage/app/.gitignore
old mode 100755
new mode 100644
diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore
old mode 100755
new mode 100644
diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore
old mode 100755
new mode 100644
diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore
old mode 100755
new mode 100644
diff --git a/storage/framework/cache/data/.gitignore b/storage/framework/cache/data/.gitignore
old mode 100755
new mode 100644
diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore
old mode 100755
new mode 100644
diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore
old mode 100755
new mode 100644
diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore
old mode 100755
new mode 100644
diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore
old mode 100755
new mode 100644