From ff1d2e082d9a116f1f3c7a3420c27812715ca669 Mon Sep 17 00:00:00 2001
From: JoanFo1456 <161775222+JoanFo1456@users.noreply.github.com>
Date: Tue, 23 Dec 2025 22:35:21 +0000
Subject: [PATCH] Add theme
---
starrynight/config/starrynight.php | 4 +
starrynight/css/starry-night-light.css | 226 ++++++++++++
starrynight/css/starry-night.css | 338 ++++++++++++++++++
starrynight/plugin.json | 23 ++
.../Providers/StarryNightPluginProvider.php | 46 +++
starrynight/src/StarryNightPlugin.php | 318 ++++++++++++++++
6 files changed, 955 insertions(+)
create mode 100644 starrynight/config/starrynight.php
create mode 100644 starrynight/css/starry-night-light.css
create mode 100644 starrynight/css/starry-night.css
create mode 100644 starrynight/plugin.json
create mode 100644 starrynight/src/Providers/StarryNightPluginProvider.php
create mode 100644 starrynight/src/StarryNightPlugin.php
diff --git a/starrynight/config/starrynight.php b/starrynight/config/starrynight.php
new file mode 100644
index 0000000..b625128
--- /dev/null
+++ b/starrynight/config/starrynight.php
@@ -0,0 +1,4 @@
+ensureCssPublished();
+ }
+
+ public function boot(): void
+ {
+ $sourceDark = __DIR__.'/../../css/starry-night.css';
+ $destDark = public_path('plugins/starrynight/css/starry-night.css');
+
+ $sourceLight = __DIR__.'/../../css/starry-night-light.css';
+ $destLight = public_path('plugins/starrynight/css/starry-night-light.css');
+
+ $this->publishes([
+ $sourceDark => $destDark,
+ $sourceLight => $destLight,
+ ], 'starrynight-assets');
+ }
+
+ private function ensureCssPublished(): void
+ {
+ $pairs = [
+ [__DIR__.'/../../css/starry-night.css', public_path('plugins/starrynight/css/starry-night.css')],
+ [__DIR__.'/../../css/starry-night-light.css', public_path('plugins/starrynight/css/starry-night-light.css')],
+ ];
+
+ foreach ($pairs as [$source, $destination]) {
+ if (! File::exists($destination) && File::exists($source)) {
+ $dir = dirname($destination);
+ if (! File::isDirectory($dir)) {
+ File::makeDirectory($dir, 0755, true);
+ }
+ File::copy($source, $destination);
+ }
+ }
+ }
+}
diff --git a/starrynight/src/StarryNightPlugin.php b/starrynight/src/StarryNightPlugin.php
new file mode 100644
index 0000000..7279ae5
--- /dev/null
+++ b/starrynight/src/StarryNightPlugin.php
@@ -0,0 +1,318 @@
+colors([
+ 'danger' => Color::Rose,
+ 'gray' => Color::Slate,
+ 'info' => Color::Pink,
+ 'primary' => Color::Purple,
+ 'success' => Color::Emerald,
+ 'warning' => Color::Amber,
+ ]);
+
+ $panel->renderHook('panels::head.end', function () {
+ $dark = asset('plugins/starrynight/css/starry-night.css');
+ $light = asset('plugins/starrynight/css/starry-night-light.css');
+
+ return <<
+
+HTML;
+ });
+
+ $panel->renderHook('panels::body.start', function () {
+ $meteorHtml = '