Files
2026-07-24 14:59:44 +01:00

25 lines
1.4 KiB
PHP

<?php
namespace Modules\Developer\Support;
final class ThemeGenerator extends Generator
{
public function generate(string $name, bool $force = false): array
{
$name = $this->kebab($name);
$root = rtrim(config('developer.themes_path', resource_path('themes')), '/').'/'.$name;
$files = [
"$root/theme.json" => json_encode(['name' => str($name)->headline()->toString(), 'slug' => $name, 'version' => '1.0.0', 'parent' => 'common'], JSON_PRETTY_PRINT).PHP_EOL,
"$root/views/layouts/app.blade.php" => "<!DOCTYPE html><html lang=\"{{ str_replace('_', '-', app()->getLocale()) }}\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><title>{{ \$title ?? config('app.name') }}</title>@vite(['resources/css/app.css', 'resources/js/app.js'])</head><body>{{ \$slot }}</body></html>\n",
"$root/views/home.blade.php" => "<x-layouts.app><main><h1>{{ config('app.name') }}</h1></main></x-layouts.app>\n",
"$root/assets/css/theme.css" => ":root { --theme-radius: 0.5rem; }\n",
"$root/README.md" => '# '.str($name)->headline()." Theme\n\nGenerated by `php artisan theme:make {$name}`.\n",
];
foreach ($files as $path => $contents) {
$this->write($path, $contents, $force);
}
return array_keys($files);
}
}