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 = '
+ + + + + + + + + + +
'; + $meteorCss = <<<'CSS' + + CSS; + $starDiv = '
'; + $starStyle = <<<'CSS' + +CSS; + $starJs = <<<'JS' + +JS; + + return $meteorCss.$meteorHtml.$starDiv.$starStyle.$starJs; + }); + } + + public function boot(Panel $panel): void {} +}