22 lines
1.3 KiB
PHP
22 lines
1.3 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);
|
|
}
|
|
}
|