Skip to content

Commit 848c278

Browse files
committed
remove PluginServiceProvider and configure updates
1 parent 81ee508 commit 848c278

10 files changed

Lines changed: 218 additions & 42 deletions

File tree

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"private": true,
33
"scripts": {
4-
"dev:styles": "npx tailwindcss -i resources/css/plugin.css -o resources/dist/skeleton.css --postcss --watch",
4+
"dev:styles": "npx tailwindcss -i config-stubs/theme/plugin.css -o resources/dist/skeleton.css --postcss --watch",
55
"dev:scripts": "esbuild resources/js/plugin.js --bundle --sourcemap=inline --outfile=resources/dist/skeleton.js --watch",
6-
"build:styles": "npx tailwindcss -i resources/css/plugin.css -o resources/dist/skeleton.css --postcss --minify && npm run purge",
6+
"build:styles": "npx tailwindcss -i config-stubs/theme/plugin.css -o resources/dist/skeleton.css --postcss --minify && npm run purge",
77
"build:scripts": "esbuild resources/js/plugin.js --bundle --minify --outfile=resources/dist/skeleton.js",
88
"purge": "filament-purge -i resources/dist/skeleton.css -o resources/dist/skeleton.css",
99
"dev": "npm-run-all --parallel dev:*",
@@ -15,6 +15,7 @@
1515
"esbuild": "^0.8.57",
1616
"npm-run-all": "^4.1.5",
1717
"postcss": "^8.4.14",
18+
"postcss-import": "^15.0.0",
1819
"prettier": "^2.7.1",
1920
"prettier-plugin-tailwindcss": "^0.1.13",
2021
"tailwindcss": "^3.2"

configure-stubs/theme/package.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"private": true,
3+
"scripts": {
4+
"dev": "npx tailwindcss -i config-stubs/theme/plugin.css -o resources/dist/skeleton.css --postcss --watch",
5+
"build": "npx tailwindcss -i config-stubs/theme/plugin.css -o resources/dist/skeleton.css --postcss --minify"
6+
},
7+
"devDependencies": {
8+
"autoprefixer": "^10.4.7",
9+
"postcss": "^8.4.14",
10+
"postcss-import": "^15.0.0",
11+
"prettier": "^2.7.1",
12+
"prettier-plugin-tailwindcss": "^0.1.13",
13+
"tailwindcss": "^3.2"
14+
}
15+
}

configure-stubs/theme/plugin.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@import "../../vendor/filament/filament/resources/css/index.css";

configure.php

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636
$isTheme = confirm('Is this a custom theme?');
3737
$formsOnly = ! $isTheme && confirm('Is this for Forms only?');
38-
$tablesOnly = ! $formsOnly && confirm('Is this for Tables only?');
38+
$tablesOnly = ! ($isTheme || $formsOnly) && confirm('Is this for Tables only?');
3939

4040
writeln("\r");
4141
writeln('------');
@@ -83,15 +83,23 @@
8383
]);
8484
} else {
8585
if ($isTheme) {
86-
safeUnlink(__DIR__.'/src/SkeletonServiceProvider.php');
87-
remove_package_script(['purge']);
88-
remove_package_script(['dev:scripts']);
89-
remove_package_script(['build:scripts']);
90-
remove_package_script(['@awcodes/filament-plugin-purge']);
91-
remove_package_script(['esbuild']);
92-
replace_in_file(__DIR__.'/package.json', [' && npm run purge' => '']);
86+
copy(__DIR__ . '/configure-stubs/theme/package.json', __DIR__ . '/package.json');
87+
copy(__DIR__ . '/configure-stubs/theme/plugin.css', __DIR__ . '/resources/css/plugin.css');
88+
safeUnlink(__DIR__ . '/src/SkeletonServiceProvider.php');
89+
safeUnlink(__DIR__ . '/src/Skeleton.php');
90+
removeDirectory(__DIR__ . '/config');
91+
removeDirectory(__DIR__ . '/database');
92+
removeDirectory(__DIR__ . '/stubs');
93+
removeDirectory(__DIR__ . '/resources/js');
94+
removeDirectory(__DIR__ . '/resources/lang');
95+
removeDirectory(__DIR__ . '/resources/views');
96+
removeDirectory(__DIR__ . '/src/Commands');
97+
removeDirectory(__DIR__ . '/src/Facades');
98+
removeDirectory(__DIR__ . '/src/Testing');
9399
} else {
94-
safeUnlink(__DIR__.'/src/SkeletonTheme.php');
100+
safeUnlink(__DIR__ . '/src/SkeletonTheme.php');
101+
copy(__DIR__ . '/configure-stubs/package/package.json', __DIR__ . '/package.json');
102+
copy(__DIR__ . '/configure-stubs/package/plugin.css', __DIR__ . '/resources/css/plugin.css');
95103
}
96104

97105
remove_composer_filament_deps([
@@ -124,6 +132,7 @@
124132
str_contains($file, determineSeparator('src/SkeletonTheme.php')) => rename($file, determineSeparator('./src/'.$className.'Theme.php')),
125133
str_contains($file, determineSeparator('src/Facades/Skeleton.php')) => rename($file, determineSeparator('./src/Facades/'.$className.'.php')),
126134
str_contains($file, determineSeparator('src/Commands/SkeletonCommand.php')) => rename($file, determineSeparator('./src/Commands/'.$className.'Command.php')),
135+
str_contains($file, determineSeparator('src/Testing/TestsSkeleton.php')) => rename($file, determineSeparator('./src/Testing/Tests'.$className.'.php')),
127136
str_contains($file, determineSeparator('database/migrations/create_skeleton_table.php.stub')) => rename($file, determineSeparator('./database/migrations/create_'.$packageSlugWithoutPrefix.'_table.php.stub')),
128137
str_contains($file, determineSeparator('config/skeleton.php')) => rename($file, determineSeparator('./config/'.$packageSlugWithoutPrefix.'.php')),
129138
str_contains($file, 'README.md') => remove_tag($file, 'delete'),
@@ -174,7 +183,10 @@
174183

175184
confirm('Execute `composer install` and run tests?') && run('composer install && composer test');
176185

177-
confirm('Let this script delete itself?', true) && unlink(__FILE__);
186+
if (confirm('Let this script delete itself?', true)) {
187+
removeDirectory(__DIR__ . '/configure-stubs');
188+
unlink(__FILE__);
189+
}
178190

179191
function ask(string $question, string $default = ''): string
180192
{
@@ -362,3 +374,15 @@ function replaceForAllOtherOSes(): array
362374
{
363375
return explode(PHP_EOL, run('grep -E -r -l -i ":author|:vendor|:package|VendorName|skeleton|vendor_name|vendor_slug|author@domain.com" --exclude-dir=vendor ./* ./.github/* | grep -v '.basename(__FILE__)));
364376
}
377+
378+
function removeDirectory($dir): void {
379+
if (is_dir($dir)) {
380+
$objects = scandir($dir);
381+
foreach ($objects as $object) {
382+
if ($object != "." && $object != "..") {
383+
if (filetype($dir."/".$object) == "dir") removeDirectory($dir."/".$object); else unlink($dir."/".$object);
384+
}
385+
}
386+
rmdir($dir);
387+
}
388+
}

postcss.config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
module.exports = {
22
plugins: {
3+
"postcss-import": {},
4+
"tailwindcss/nesting": {},
35
tailwindcss: {},
46
autoprefixer: {},
57
},

src/SkeletonServiceProvider.php

Lines changed: 136 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,44 +2,109 @@
22

33
namespace VendorName\Skeleton;
44

5-
//use Filament\Support\Assets\Js;
6-
//use Filament\Support\Assets\Css;
5+
use Filament\Facades\Filament;
6+
use Filament\Context;
77
use Filament\PluginServiceProvider;
8+
use Filament\Support\Assets\AssetManager;
9+
use Filament\Support\Assets\Js;
10+
use Filament\Support\Assets\Css;
811
use Filament\Support\Assets\Asset;
12+
use Filament\Support\Facades\FilamentAsset;
13+
use Filament\Support\Facades\FilamentIcon;
14+
use Filament\Support\Icons\Icon;
15+
use Filament\Support\Icons\IconManager;
16+
use Filament\Support\Assets\AlpineComponent;
17+
use Illuminate\Filesystem\Filesystem;
918
use Spatie\LaravelPackageTools\Package;
10-
//use Filament\Support\Assets\AlpineComponent;
19+
use Spatie\LaravelPackageTools\PackageServiceProvider;
20+
use Spatie\LaravelPackageTools\Commands\InstallCommand;
21+
use Livewire\Testing\TestableLivewire;
1122
use VendorName\Skeleton\Commands\SkeletonCommand;
23+
use VendorName\Skeleton\Testing\TestsSkeleton;
1224

13-
class SkeletonServiceProvider extends PluginServiceProvider
25+
class SkeletonServiceProvider extends PackageServiceProvider
1426
{
1527
public static string $name = 'skeleton';
1628

29+
public static string $viewNamespace = 'skeleton';
30+
1731
public function configurePackage(Package $package): void
1832
{
1933
$package->name(static::$name)
20-
->hasConfigFile()
21-
->hasViews()
22-
->hasMigration('create_skeleton_table')
23-
->hasCommand(SkeletonCommand::class);
34+
->hasCommands($this->getCommands())
35+
->hasInstallCommand(function(InstallCommand $command) {
36+
$command
37+
->publishConfigFile()
38+
->publishMigrations()
39+
->askToRunMigrations()
40+
->askToStarRepoOnGitHub(':vendor_slug/:package_slug');
41+
});
42+
43+
$configFileName = $package->shortName();
44+
45+
if (file_exists($this->package->basePath("/../config/{$configFileName}.php"))) {
46+
$package->hasConfigFile();
47+
}
48+
49+
if (file_exists($this->package->basePath('/../database/migrations'))) {
50+
$package->hasMigrations($this->getMigrations());
51+
}
52+
53+
if (file_exists($this->package->basePath('/../resources/lang'))) {
54+
$package->hasTranslations();
55+
}
56+
57+
if (file_exists($this->package->basePath('/../resources/views'))) {
58+
$package->hasViews(static::$viewNamespace);
59+
}
2460
}
2561

2662
public function packageRegistered(): void
2763
{
28-
parent::packageRegistered();
29-
64+
// Facade Registration
3065
$this->app->bind('skeleton', function (): Skeleton {
3166
return new Skeleton();
3267
});
68+
69+
// Context Registration
70+
$this->app->resolving('skeleton', function () {
71+
foreach ($this->getContexts() as $context) {
72+
Filament::registerContext($context);
73+
}
74+
});
75+
76+
// Asset Registration
77+
$this->app->resolving(AssetManager::class, function () {
78+
FilamentAsset::register($this->getAssets(), $this->getAssetPackage());
79+
FilamentAsset::registerScriptData($this->getScriptData(), $this->getAssetPackage());
80+
});
81+
82+
// Icon Registration
83+
$this->app->resolving(IconManager::class, function () {
84+
FilamentIcon::register($this->getIcons());
85+
});
3386
}
3487

3588
public function packageBooted(): void
3689
{
37-
parent::packageBooted();
90+
$this->registerMacros();
91+
92+
// Handle Stubs
93+
if ($this->app->runningInConsole()) {
94+
foreach (app(Filesystem::class)->files(__DIR__ . '/../stubs/') as $file) {
95+
$this->publishes([
96+
$file->getRealPath() => base_path("stubs/skeleton/{$file->getFilename()}"),
97+
], 'forms-stubs');
98+
}
99+
}
100+
101+
// Testing
102+
TestableLivewire::mixin(new TestsSkeleton());
38103
}
39104

40105
protected function getAssetPackage(): ?string
41106
{
42-
return 'skeleton';
107+
return static::$name ?? null;
43108
}
44109

45110
/**
@@ -48,9 +113,65 @@ protected function getAssetPackage(): ?string
48113
protected function getAssets(): array
49114
{
50115
return [
51-
// AlpineComponent::make('skeleton', __DIR__ . '/../resources/dist/components/skeleton.js'),
52-
// Css::make('echo', __DIR__ . '/../resources/dist/skeleton.js'),
53-
// Js::make('echo', __DIR__ . '/../resources/dist/skeleton.js'),
116+
// AlpineComponent::make('skeleton', __DIR__ . '/../resources/dist/components/skeleton.js'),
117+
Css::make('skeleton-styles', __DIR__ . '/../resources/dist/skeleton.js'),
118+
Js::make('skeleton-scripts', __DIR__ . '/../resources/dist/skeleton.js'),
119+
];
120+
}
121+
122+
/**
123+
* @return array<class-string>
124+
*/
125+
protected function getCommands(): array
126+
{
127+
return [
128+
SkeletonCommand::class
129+
];
130+
}
131+
132+
/**
133+
* @return array<Context>
134+
*/
135+
protected function getContexts(): array
136+
{
137+
return [];
138+
}
139+
140+
/**
141+
* @return array<string, Icon>
142+
*/
143+
protected function getIcons(): array
144+
{
145+
return [];
146+
}
147+
148+
/**
149+
* @return array<string>
150+
*/
151+
protected function getRoutes(): array
152+
{
153+
return [];
154+
}
155+
156+
/**
157+
* @return array<string, mixed>
158+
*/
159+
protected function getScriptData(): array
160+
{
161+
return [];
162+
}
163+
164+
/**
165+
* @return array<string>
166+
*/
167+
protected function getMigrations(): array
168+
{
169+
return [
170+
'create_skeleton_table'
54171
];
55172
}
173+
174+
protected function registerMacros(): void
175+
{
176+
}
56177
}

src/SkeletonTheme.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Filament\Contracts\Plugin;
66
use Filament\Support\Assets\Theme;
77
use Filament\Support\Facades\FilamentAsset;
8+
use Filament\Support\Color;
89

910
class SkeletonTheme implements Plugin
1011
{
@@ -20,6 +21,15 @@ public function register(Context $context): void
2021
]);
2122

2223
$context
24+
->font('DM Sans')
25+
->primaryColor(Color::Amber)
26+
->secondaryColor(Color::Gray)
27+
->warningColor(Color::Amber)
28+
->dangerColor(Color::Rose)
29+
->successColor(Color::Green)
30+
->grayColor(Color::Slate)
31+
->sidebarWidth('20rem')
32+
->collapsedSidebarWidth('5.4rem')
2333
->theme('skeleton');
2434
}
2535

src/Testing/TestsSkeleton.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace VendorName\Skeleton\Testing;
4+
5+
use Illuminate\Testing\Assert;
6+
use Livewire\Testing\TestableLivewire;
7+
8+
/**
9+
* @mixin TestableLivewire
10+
*/
11+
class TestsSkeleton
12+
{
13+
//
14+
}

tailwind.config.js

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,9 @@
1-
const colors = require('tailwindcss/colors')
1+
const preset = require('./vendor/filament/filament/tailwind.config.preset')
22

3-
/** @type {import('tailwindcss').Config} */
43
module.exports = {
5-
content: ['./resources/views/**/*.blade.php', './src/**/*.php'],
6-
darkMode: 'class',
7-
theme: {
8-
extend: {
9-
colors: {
10-
danger: colors.rose,
11-
primary: colors.amber,
12-
success: colors.green,
13-
warning: colors.amber,
14-
},
15-
},
16-
},
4+
presets: [preset],
5+
content: ['./resources/**/*.{blade.php,js}'],
176
corePlugins: {
187
preflight: false,
198
},
20-
plugins: [],
219
}

0 commit comments

Comments
 (0)