From 37d477081db3e2f87aa26087aac0120504c9a689 Mon Sep 17 00:00:00 2001 From: Mark Gregory Date: Sat, 15 Aug 2026 22:29:42 +0100 Subject: [PATCH] Initial Commit --- .gitignore | 1 + .../Providers/StylistServiceProvider.php | 8 +- .../Stylist/Services/TenantThemeResolver.php | 17 + .../Tests/Feature/TenantThemeResolverTest.php | 10 + .../Tests/Feature/ThemeManifestTest.php | 9 + .../Tests/Feature/WelcomeThemeViewTest.php | 13 + THEMING-STANDARD.md | 41 --- resources/js/app.js => provision/.gitignore | 0 AGENTS.md => provision/AGENTS.md | 0 readme.md | 2 + .../{ => themes/backend/assets}/css/app.css | 12 +- .../backend/assets}/js/passkeys.js | 0 resources/themes/backend/css/theme.css | 1 - resources/themes/backend/js/app.js | 1 - resources/themes/backend/theme.json | 2 - .../components/passkey-registration.blade.php | 2 +- .../views/components/passkey-verify.blade.php | 2 +- .../backend/views/partials/head.blade.php | 2 +- resources/themes/frontend/css/theme.css | 1 - resources/themes/frontend/js/app.js | 1 - resources/themes/frontend/theme.json | 2 - resources/views/.gitkeep | 0 .../views/components/app-logo-icon.blade.php | 8 - resources/views/components/app-logo.blade.php | 17 - .../views/components/auth-header.blade.php | 9 - .../components/auth-session-status.blade.php | 9 - .../components/desktop-user-menu.blade.php | 39 --- .../components/passkey-registration.blade.php | 116 ------- .../views/components/passkey-verify.blade.php | 76 ---- .../components/placeholder-pattern.blade.php | 12 - .../components/settings/layout.blade.php | 20 -- resources/views/dashboard.blade.php | 18 - .../views/flux/icon/book-open-text.blade.php | 47 --- .../flux/icon/chevrons-up-down.blade.php | 43 --- .../views/flux/icon/folder-git-2.blade.php | 45 --- .../views/flux/icon/layout-grid.blade.php | 45 --- resources/views/flux/navlist/group.blade.php | 51 --- resources/views/layouts/app.blade.php | 5 - resources/views/layouts/app/header.blade.php | 84 ----- resources/views/layouts/app/sidebar.blade.php | 101 ------ resources/views/layouts/auth.blade.php | 3 - resources/views/layouts/auth/card.blade.php | 33 -- resources/views/layouts/auth/simple.blade.php | 29 -- resources/views/layouts/auth/split.blade.php | 50 --- .../livewire/auth/confirm-password.blade.php | 36 -- .../livewire/auth/forgot-password.blade.php | 31 -- resources/views/livewire/auth/login.blade.php | 59 ---- .../views/livewire/auth/register.blade.php | 69 ---- .../livewire/auth/reset-password.blade.php | 54 --- .../auth/two-factor-challenge.blade.php | 101 ------ .../livewire/auth/verify-email.blade.php | 29 -- .../livewire/settings/appearance.blade.php | 13 - .../settings/delete-user-form.blade.php | 34 -- .../views/livewire/settings/profile.blade.php | 36 -- .../livewire/settings/security.blade.php | 327 ------------------ .../two-factor/recovery-codes.blade.php | 89 ----- resources/views/partials/head.blade.php | 15 - .../views/partials/settings-heading.blade.php | 5 - resources/views/welcome.blade.php | 202 ----------- scripts/ensure-directories.php | 23 ++ vite.config.js | 5 +- 61 files changed, 91 insertions(+), 2024 deletions(-) delete mode 100644 THEMING-STANDARD.md rename resources/js/app.js => provision/.gitignore (100%) rename AGENTS.md => provision/AGENTS.md (100%) create mode 100644 readme.md rename resources/{ => themes/backend/assets}/css/app.css (80%) rename resources/{ => themes/backend/assets}/js/passkeys.js (100%) delete mode 100644 resources/themes/backend/css/theme.css delete mode 100644 resources/themes/backend/js/app.js delete mode 100644 resources/themes/frontend/css/theme.css delete mode 100644 resources/themes/frontend/js/app.js delete mode 100644 resources/views/.gitkeep delete mode 100644 resources/views/components/app-logo-icon.blade.php delete mode 100644 resources/views/components/app-logo.blade.php delete mode 100644 resources/views/components/auth-header.blade.php delete mode 100644 resources/views/components/auth-session-status.blade.php delete mode 100644 resources/views/components/desktop-user-menu.blade.php delete mode 100644 resources/views/components/passkey-registration.blade.php delete mode 100644 resources/views/components/passkey-verify.blade.php delete mode 100644 resources/views/components/placeholder-pattern.blade.php delete mode 100644 resources/views/components/settings/layout.blade.php delete mode 100644 resources/views/dashboard.blade.php delete mode 100644 resources/views/flux/icon/book-open-text.blade.php delete mode 100644 resources/views/flux/icon/chevrons-up-down.blade.php delete mode 100644 resources/views/flux/icon/folder-git-2.blade.php delete mode 100644 resources/views/flux/icon/layout-grid.blade.php delete mode 100644 resources/views/flux/navlist/group.blade.php delete mode 100644 resources/views/layouts/app.blade.php delete mode 100644 resources/views/layouts/app/header.blade.php delete mode 100644 resources/views/layouts/app/sidebar.blade.php delete mode 100644 resources/views/layouts/auth.blade.php delete mode 100644 resources/views/layouts/auth/card.blade.php delete mode 100644 resources/views/layouts/auth/simple.blade.php delete mode 100644 resources/views/layouts/auth/split.blade.php delete mode 100644 resources/views/livewire/auth/confirm-password.blade.php delete mode 100644 resources/views/livewire/auth/forgot-password.blade.php delete mode 100644 resources/views/livewire/auth/login.blade.php delete mode 100644 resources/views/livewire/auth/register.blade.php delete mode 100644 resources/views/livewire/auth/reset-password.blade.php delete mode 100644 resources/views/livewire/auth/two-factor-challenge.blade.php delete mode 100644 resources/views/livewire/auth/verify-email.blade.php delete mode 100644 resources/views/livewire/settings/appearance.blade.php delete mode 100644 resources/views/livewire/settings/delete-user-form.blade.php delete mode 100644 resources/views/livewire/settings/profile.blade.php delete mode 100644 resources/views/livewire/settings/security.blade.php delete mode 100644 resources/views/livewire/settings/two-factor/recovery-codes.blade.php delete mode 100644 resources/views/partials/head.blade.php delete mode 100644 resources/views/partials/settings-heading.blade.php delete mode 100644 resources/views/welcome.blade.php create mode 100755 scripts/ensure-directories.php diff --git a/.gitignore b/.gitignore index 322f96a..99b900e 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ yarn-error.log .DS_Store */.DS_Store **/.DS_Store +/provision/ diff --git a/Modules/Stylist/Providers/StylistServiceProvider.php b/Modules/Stylist/Providers/StylistServiceProvider.php index 58b9f5c..84d2510 100644 --- a/Modules/Stylist/Providers/StylistServiceProvider.php +++ b/Modules/Stylist/Providers/StylistServiceProvider.php @@ -80,10 +80,12 @@ final class StylistServiceProvider extends ServiceProvider private function registerViews(): void { $sourcePath = module_path(ModuleInfo::name(), 'Resources/views'); - $viewPath = resource_path('views/modules/'.ModuleInfo::nameLower()); - $this->publishes([$sourcePath => $viewPath], ['views', 'stylist-module-views']); - $this->loadViewsFrom([$viewPath, $sourcePath], ModuleInfo::nameLower()); + // Module-owned package views stay inside the module. Application overrides + // belong to resources/themes/{theme}/views/modules/stylist, which Stylist + // registers as the authoritative themed namespace. Never publish back into + // resources/views; the standard baseline intentionally has no legacy view tree. + $this->loadViewsFrom($sourcePath, ModuleInfo::nameLower()); } private function registerThemeViews(): void diff --git a/Modules/Stylist/Services/TenantThemeResolver.php b/Modules/Stylist/Services/TenantThemeResolver.php index 511ecc4..8b03eb7 100644 --- a/Modules/Stylist/Services/TenantThemeResolver.php +++ b/Modules/Stylist/Services/TenantThemeResolver.php @@ -51,6 +51,18 @@ final class TenantThemeResolver 'admin/*', 'helpdesk', 'helpdesk/*', + 'login', + 'register', + 'forgot-password', + 'reset-password', + 'reset-password/*', + 'confirm-password', + 'user/confirm-password', + 'two-factor-challenge', + 'verify-email', + 'verify-email/*', + 'email/verify', + 'email/verify/*', ) || $request->routeIs( 'dashboard', 'profile.edit', @@ -58,6 +70,11 @@ final class TenantThemeResolver 'security.edit', 'admin.*', 'helpdesk.*', + 'login', + 'register', + 'password.*', + 'verification.*', + 'two-factor.*', ) ? 'backend' : 'frontend'; diff --git a/Modules/Stylist/Tests/Feature/TenantThemeResolverTest.php b/Modules/Stylist/Tests/Feature/TenantThemeResolverTest.php index c10817a..8026255 100644 --- a/Modules/Stylist/Tests/Feature/TenantThemeResolverTest.php +++ b/Modules/Stylist/Tests/Feature/TenantThemeResolverTest.php @@ -39,4 +39,14 @@ final class TenantThemeResolverTest extends TestCase $this->assertSame('backend', app(TenantThemeResolver::class)->context()); } + public function test_authentication_requests_use_backend_context(): void + { + foreach (['/login', '/register', '/forgot-password', '/reset-password/token', '/user/confirm-password', '/two-factor-challenge', '/email/verify'] as $uri) { + $request = Request::create($uri, 'GET'); + $this->app->instance('request', $request); + + $this->assertSame('backend', app(TenantThemeResolver::class)->context(), $uri); + } + } + } diff --git a/Modules/Stylist/Tests/Feature/ThemeManifestTest.php b/Modules/Stylist/Tests/Feature/ThemeManifestTest.php index 11d681e..7bde34a 100644 --- a/Modules/Stylist/Tests/Feature/ThemeManifestTest.php +++ b/Modules/Stylist/Tests/Feature/ThemeManifestTest.php @@ -27,6 +27,15 @@ final class ThemeManifestTest extends TestCase parent::tearDown(); } + public function test_bundled_default_themes_have_valid_manifests(): void + { + foreach (['backend', 'frontend'] as $key) { + $theme = app(Loader::class)->fromPath(resource_path("themes/{$key}")); + + $this->assertSame($key, $theme->key()); + } + } + public function test_manifest_is_normalised(): void { $path = $this->themesPath.'/sample'; diff --git a/Modules/Stylist/Tests/Feature/WelcomeThemeViewTest.php b/Modules/Stylist/Tests/Feature/WelcomeThemeViewTest.php index ba59075..d7ef3d1 100644 --- a/Modules/Stylist/Tests/Feature/WelcomeThemeViewTest.php +++ b/Modules/Stylist/Tests/Feature/WelcomeThemeViewTest.php @@ -29,4 +29,17 @@ final class WelcomeThemeViewTest extends TestCase view('welcome')->getPath(), ); } + public function test_application_views_exist_only_inside_themes(): void + { + $this->assertDirectoryDoesNotExist(resource_path('views')); + $this->assertDirectoryDoesNotExist(resource_path('css')); + $this->assertDirectoryDoesNotExist(resource_path('js')); + } + + public function test_backend_compiled_assets_are_owned_by_the_backend_theme(): void + { + $this->assertFileExists(resource_path('themes/backend/assets/css/app.css')); + $this->assertFileExists(resource_path('themes/backend/assets/js/passkeys.js')); + } + } diff --git a/THEMING-STANDARD.md b/THEMING-STANDARD.md deleted file mode 100644 index 514ac05..0000000 --- a/THEMING-STANDARD.md +++ /dev/null @@ -1,41 +0,0 @@ -# Standard Stylist Theme Baseline - -Stylist is enabled by default in this project and is the presentation layer for all application Blade views. - -## Default themes - -- `resources/themes/frontend` — public-facing pages. The standard `/` route resolves `welcome.blade.php` from this theme. -- `resources/themes/backend` — authenticated application, dashboard, authentication/settings UI, layouts, shared components, and Flux view overrides. - -The defaults are controlled by: - -```dotenv -STYLIST_DEFAULT_THEME=backend -STYLIST_BACKEND_THEME=backend -STYLIST_FRONTEND_THEME=frontend -``` - -`modules_statuses.json` enables the `Stylist` module on a standard installation. - -## View ownership rule - -Do not add application Blade templates back to `resources/views`. Keep public views in the frontend theme and application/admin views in the backend theme. Module-specific theme overrides belong beneath the appropriate theme's `views/modules/{module}` tree. - -The root `resources/views` directory is retained only as an empty Laravel fallback location. - -## Assets - -Global compiled assets remain under `resources/css` and `resources/js`. Theme-only overrides belong under each theme's `css` and `js` directories. Tailwind scans `resources/themes/**/*.blade.php`, so classes used only inside theme views remain present in production builds. - -## Validation - -After dependencies are installed, use: - -```bash -php artisan module:list -php artisan stylist:validate frontend -php artisan stylist:validate backend -php artisan stylist:doctor -php artisan test -npm run build -``` diff --git a/resources/js/app.js b/provision/.gitignore similarity index 100% rename from resources/js/app.js rename to provision/.gitignore diff --git a/AGENTS.md b/provision/AGENTS.md similarity index 100% rename from AGENTS.md rename to provision/AGENTS.md diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..f7ef683 --- /dev/null +++ b/readme.md @@ -0,0 +1,2 @@ +### Standard Laravel 13 Install for Developpment + diff --git a/resources/css/app.css b/resources/themes/backend/assets/css/app.css similarity index 80% rename from resources/css/app.css rename to resources/themes/backend/assets/css/app.css index 9c1e1c5..df58402 100644 --- a/resources/css/app.css +++ b/resources/themes/backend/assets/css/app.css @@ -1,11 +1,11 @@ @import 'tailwindcss'; -@import '../../vendor/livewire/flux/dist/flux.css'; +@import '../../../../../vendor/livewire/flux/dist/flux.css'; -@source '../views'; -@source '../themes/**/*.blade.php'; -@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php'; -@source '../../vendor/livewire/flux-pro/stubs/**/*.blade.php'; -@source '../../vendor/livewire/flux/stubs/**/*.blade.php'; +@source '../../views'; +@source '../../../**/*.blade.php'; +@source '../../../../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php'; +@source '../../../../../vendor/livewire/flux-pro/stubs/**/*.blade.php'; +@source '../../../../../vendor/livewire/flux/stubs/**/*.blade.php'; @custom-variant dark (&:where(.dark, .dark *)); diff --git a/resources/js/passkeys.js b/resources/themes/backend/assets/js/passkeys.js similarity index 100% rename from resources/js/passkeys.js rename to resources/themes/backend/assets/js/passkeys.js diff --git a/resources/themes/backend/css/theme.css b/resources/themes/backend/css/theme.css deleted file mode 100644 index 863c4b2..0000000 --- a/resources/themes/backend/css/theme.css +++ /dev/null @@ -1 +0,0 @@ -/* Backend theme-specific overrides belong here. Core application styles remain Vite-managed. */ diff --git a/resources/themes/backend/js/app.js b/resources/themes/backend/js/app.js deleted file mode 100644 index 7a8c8a2..0000000 --- a/resources/themes/backend/js/app.js +++ /dev/null @@ -1 +0,0 @@ -// Backend theme-specific behaviour belongs here. diff --git a/resources/themes/backend/theme.json b/resources/themes/backend/theme.json index c480134..9e115c5 100644 --- a/resources/themes/backend/theme.json +++ b/resources/themes/backend/theme.json @@ -7,8 +7,6 @@ "description": "Default authenticated application and administration theme.", "type": "backend", "entry_view": "dashboard", - "stylesheet": "css/theme.css", - "script": "js/app.js", "views": true, "variables": {}, "settings": [] diff --git a/resources/themes/backend/views/components/passkey-registration.blade.php b/resources/themes/backend/views/components/passkey-registration.blade.php index 2aaa144..0d14493 100644 --- a/resources/themes/backend/views/components/passkey-registration.blade.php +++ b/resources/themes/backend/views/components/passkey-registration.blade.php @@ -1,5 +1,5 @@ @assets -@vite('resources/js/passkeys.js') +@vite('resources/themes/backend/assets/js/passkeys.js') @endassets
- - diff --git a/resources/views/components/app-logo.blade.php b/resources/views/components/app-logo.blade.php deleted file mode 100644 index 31c2688..0000000 --- a/resources/views/components/app-logo.blade.php +++ /dev/null @@ -1,17 +0,0 @@ -@props([ - 'sidebar' => false, -]) - -@if($sidebar) - - - - - -@else - - - - - -@endif diff --git a/resources/views/components/auth-header.blade.php b/resources/views/components/auth-header.blade.php deleted file mode 100644 index e596a3f..0000000 --- a/resources/views/components/auth-header.blade.php +++ /dev/null @@ -1,9 +0,0 @@ -@props([ - 'title', - 'description', -]) - -
- {{ $title }} - {{ $description }} -
diff --git a/resources/views/components/auth-session-status.blade.php b/resources/views/components/auth-session-status.blade.php deleted file mode 100644 index 98e0011..0000000 --- a/resources/views/components/auth-session-status.blade.php +++ /dev/null @@ -1,9 +0,0 @@ -@props([ - 'status', -]) - -@if ($status) -
merge(['class' => 'font-medium text-sm text-green-600']) }}> - {{ $status }} -
-@endif diff --git a/resources/views/components/desktop-user-menu.blade.php b/resources/views/components/desktop-user-menu.blade.php deleted file mode 100644 index 7fb3706..0000000 --- a/resources/views/components/desktop-user-menu.blade.php +++ /dev/null @@ -1,39 +0,0 @@ - - - - -
- -
- {{ auth()->user()->name }} - {{ auth()->user()->email }} -
-
- - - - {{ __('Settings') }} - -
- @csrf - - {{ __('Log out') }} - -
-
-
-
diff --git a/resources/views/components/passkey-registration.blade.php b/resources/views/components/passkey-registration.blade.php deleted file mode 100644 index 2aaa144..0000000 --- a/resources/views/components/passkey-registration.blade.php +++ /dev/null @@ -1,116 +0,0 @@ -@assets -@vite('resources/js/passkeys.js') -@endassets - -
- - - - - -
diff --git a/resources/views/components/passkey-verify.blade.php b/resources/views/components/passkey-verify.blade.php deleted file mode 100644 index 47dd9a8..0000000 --- a/resources/views/components/passkey-verify.blade.php +++ /dev/null @@ -1,76 +0,0 @@ -@props([ - 'optionsRoute' => 'passkey.login-options', - 'submitRoute' => 'passkey.login', - 'label' => __('Sign in with a passkey'), - 'loadingLabel' => __('Authenticating...'), - 'separator' => __('Or continue with email'), -]) - -@assets -@vite('resources/js/passkeys.js') -@endassets - -
- -
diff --git a/resources/views/components/placeholder-pattern.blade.php b/resources/views/components/placeholder-pattern.blade.php deleted file mode 100644 index 8a434f0..0000000 --- a/resources/views/components/placeholder-pattern.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@props([ - 'id' => uniqid(), -]) - - - - - - - - - diff --git a/resources/views/components/settings/layout.blade.php b/resources/views/components/settings/layout.blade.php deleted file mode 100644 index 3a65247..0000000 --- a/resources/views/components/settings/layout.blade.php +++ /dev/null @@ -1,20 +0,0 @@ -
-
- - {{ __('Profile') }} - {{ __('Security') }} - {{ __('Appearance') }} - -
- - - -
- {{ $heading ?? '' }} - {{ $subheading ?? '' }} - -
- {{ $slot }} -
-
-
diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php deleted file mode 100644 index 8f08c05..0000000 --- a/resources/views/dashboard.blade.php +++ /dev/null @@ -1,18 +0,0 @@ - -
-
-
- -
-
- -
-
- -
-
-
- -
-
-
diff --git a/resources/views/flux/icon/book-open-text.blade.php b/resources/views/flux/icon/book-open-text.blade.php deleted file mode 100644 index bff20a3..0000000 --- a/resources/views/flux/icon/book-open-text.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -{{-- Credit: Lucide (https://lucide.dev) --}} - -@props([ - 'variant' => 'outline', -]) - -@php - if ($variant === 'solid') { - throw new \Exception('The "solid" variant is not supported in Lucide.'); - } - - $classes = Flux::classes('shrink-0')->add( - match ($variant) { - 'outline' => '[:where(&)]:size-6', - 'solid' => '[:where(&)]:size-6', - 'mini' => '[:where(&)]:size-5', - 'micro' => '[:where(&)]:size-4', - }, - ); - - $strokeWidth = match ($variant) { - 'outline' => 2, - 'mini' => 2.25, - 'micro' => 2.5, - }; -@endphp - -class($classes) }} - data-flux-icon - xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 24 24" - fill="none" - stroke="currentColor" - stroke-width="{{ $strokeWidth }}" - stroke-linecap="round" - stroke-linejoin="round" - aria-hidden="true" - data-slot="icon" -> - - - - - - - diff --git a/resources/views/flux/icon/chevrons-up-down.blade.php b/resources/views/flux/icon/chevrons-up-down.blade.php deleted file mode 100644 index bf1ba2b..0000000 --- a/resources/views/flux/icon/chevrons-up-down.blade.php +++ /dev/null @@ -1,43 +0,0 @@ -{{-- Credit: Lucide (https://lucide.dev) --}} - -@props([ - 'variant' => 'outline', -]) - -@php - if ($variant === 'solid') { - throw new \Exception('The "solid" variant is not supported in Lucide.'); - } - - $classes = Flux::classes('shrink-0')->add( - match ($variant) { - 'outline' => '[:where(&)]:size-6', - 'solid' => '[:where(&)]:size-6', - 'mini' => '[:where(&)]:size-5', - 'micro' => '[:where(&)]:size-4', - }, - ); - - $strokeWidth = match ($variant) { - 'outline' => 2, - 'mini' => 2.25, - 'micro' => 2.5, - }; -@endphp - -class($classes) }} - data-flux-icon - xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 24 24" - fill="none" - stroke="currentColor" - stroke-width="{{ $strokeWidth }}" - stroke-linecap="round" - stroke-linejoin="round" - aria-hidden="true" - data-slot="icon" -> - - - diff --git a/resources/views/flux/icon/folder-git-2.blade.php b/resources/views/flux/icon/folder-git-2.blade.php deleted file mode 100644 index 292171b..0000000 --- a/resources/views/flux/icon/folder-git-2.blade.php +++ /dev/null @@ -1,45 +0,0 @@ -{{-- Credit: Lucide (https://lucide.dev) --}} - -@props([ - 'variant' => 'outline', -]) - -@php - if ($variant === 'solid') { - throw new \Exception('The "solid" variant is not supported in Lucide.'); - } - - $classes = Flux::classes('shrink-0')->add( - match ($variant) { - 'outline' => '[:where(&)]:size-6', - 'solid' => '[:where(&)]:size-6', - 'mini' => '[:where(&)]:size-5', - 'micro' => '[:where(&)]:size-4', - }, - ); - - $strokeWidth = match ($variant) { - 'outline' => 2, - 'mini' => 2.25, - 'micro' => 2.5, - }; -@endphp - -class($classes) }} - data-flux-icon - xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 24 24" - fill="none" - stroke="currentColor" - stroke-width="{{ $strokeWidth }}" - stroke-linecap="round" - stroke-linejoin="round" - aria-hidden="true" - data-slot="icon" -> - - - - - diff --git a/resources/views/flux/icon/layout-grid.blade.php b/resources/views/flux/icon/layout-grid.blade.php deleted file mode 100644 index 88c5698..0000000 --- a/resources/views/flux/icon/layout-grid.blade.php +++ /dev/null @@ -1,45 +0,0 @@ -{{-- Credit: Lucide (https://lucide.dev) --}} - -@props([ - 'variant' => 'outline', -]) - -@php - if ($variant === 'solid') { - throw new \Exception('The "solid" variant is not supported in Lucide.'); - } - - $classes = Flux::classes('shrink-0')->add( - match ($variant) { - 'outline' => '[:where(&)]:size-6', - 'solid' => '[:where(&)]:size-6', - 'mini' => '[:where(&)]:size-5', - 'micro' => '[:where(&)]:size-4', - }, - ); - - $strokeWidth = match ($variant) { - 'outline' => 2, - 'mini' => 2.25, - 'micro' => 2.5, - }; -@endphp - -class($classes) }} - data-flux-icon - xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 24 24" - fill="none" - stroke="currentColor" - stroke-width="{{ $strokeWidth }}" - stroke-linecap="round" - stroke-linejoin="round" - aria-hidden="true" - data-slot="icon" -> - - - - - diff --git a/resources/views/flux/navlist/group.blade.php b/resources/views/flux/navlist/group.blade.php deleted file mode 100644 index 5e691a2..0000000 --- a/resources/views/flux/navlist/group.blade.php +++ /dev/null @@ -1,51 +0,0 @@ -@props([ - 'expandable' => false, - 'expanded' => true, - 'heading' => null, -]) - - - -class('group/disclosure') }} - @if ($expanded === true) open @endif - data-flux-navlist-group -> - - - - - - - -
class('block space-y-[2px]') }}> -
-
{{ $heading }}
-
- -
- {{ $slot }} -
-
- - - -
class('block space-y-[2px]') }}> - {{ $slot }} -
- - diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php deleted file mode 100644 index 037dd1b..0000000 --- a/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,5 +0,0 @@ - - - {{ $slot }} - - diff --git a/resources/views/layouts/app/header.blade.php b/resources/views/layouts/app/header.blade.php deleted file mode 100644 index 989b8e4..0000000 --- a/resources/views/layouts/app/header.blade.php +++ /dev/null @@ -1,84 +0,0 @@ - - - - @include('partials.head') - - - - - - - - - - {{ __('Dashboard') }} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{ __('Dashboard') }} - - - - - - - - - {{ __('Repository') }} - - - {{ __('Documentation') }} - - - - - {{ $slot }} - - @persist('toast') - - - - @endpersist - - @fluxScripts - - diff --git a/resources/views/layouts/app/sidebar.blade.php b/resources/views/layouts/app/sidebar.blade.php deleted file mode 100644 index 6db2170..0000000 --- a/resources/views/layouts/app/sidebar.blade.php +++ /dev/null @@ -1,101 +0,0 @@ - - - - @include('partials.head') - - - - - - - - - - - - {{ __('Dashboard') }} - - - - - - - - - {{ __('Repository') }} - - - - {{ __('Documentation') }} - - - - - - - - - - - - - - - - -
-
- - -
- {{ auth()->user()->name }} - {{ auth()->user()->email }} -
-
-
-
- - - - - - {{ __('Settings') }} - - - - - -
- @csrf - - {{ __('Log out') }} - -
-
-
-
- - {{ $slot }} - - @persist('toast') - - - - @endpersist - - @fluxScripts - - diff --git a/resources/views/layouts/auth.blade.php b/resources/views/layouts/auth.blade.php deleted file mode 100644 index 7150091..0000000 --- a/resources/views/layouts/auth.blade.php +++ /dev/null @@ -1,3 +0,0 @@ - - {{ $slot }} - diff --git a/resources/views/layouts/auth/card.blade.php b/resources/views/layouts/auth/card.blade.php deleted file mode 100644 index c5cf75a..0000000 --- a/resources/views/layouts/auth/card.blade.php +++ /dev/null @@ -1,33 +0,0 @@ - - - - @include('partials.head') - - - - - @persist('toast') - - - - @endpersist - - @fluxScripts - - diff --git a/resources/views/layouts/auth/simple.blade.php b/resources/views/layouts/auth/simple.blade.php deleted file mode 100644 index 0a6f894..0000000 --- a/resources/views/layouts/auth/simple.blade.php +++ /dev/null @@ -1,29 +0,0 @@ - - - - @include('partials.head') - - - - - @persist('toast') - - - - @endpersist - - @fluxScripts - - diff --git a/resources/views/layouts/auth/split.blade.php b/resources/views/layouts/auth/split.blade.php deleted file mode 100644 index a25d1d6..0000000 --- a/resources/views/layouts/auth/split.blade.php +++ /dev/null @@ -1,50 +0,0 @@ - - - - @include('partials.head') - - -
- - -
- - @persist('toast') - - - - @endpersist - - @fluxScripts - - diff --git a/resources/views/livewire/auth/confirm-password.blade.php b/resources/views/livewire/auth/confirm-password.blade.php deleted file mode 100644 index dc8748a..0000000 --- a/resources/views/livewire/auth/confirm-password.blade.php +++ /dev/null @@ -1,36 +0,0 @@ - -
- - - - - - -
- @csrf - - - - - {{ __('Confirm') }} - - -
-
diff --git a/resources/views/livewire/auth/forgot-password.blade.php b/resources/views/livewire/auth/forgot-password.blade.php deleted file mode 100644 index 5f1cdad..0000000 --- a/resources/views/livewire/auth/forgot-password.blade.php +++ /dev/null @@ -1,31 +0,0 @@ - -
- - - - - -
- @csrf - - - - - - {{ __('Email password reset link') }} - - - -
- {{ __('Or, return to') }} - {{ __('log in') }} -
-
-
diff --git a/resources/views/livewire/auth/login.blade.php b/resources/views/livewire/auth/login.blade.php deleted file mode 100644 index 9cb91a6..0000000 --- a/resources/views/livewire/auth/login.blade.php +++ /dev/null @@ -1,59 +0,0 @@ - -
- - - - - - - -
- @csrf - - - - - -
- - - @if (Route::has('password.request')) - - {{ __('Forgot your password?') }} - - @endif -
- - - - -
- - {{ __('Log in') }} - -
- - -
- {{ __('Don\'t have an account?') }} - {{ __('Sign up') }} -
-
-
diff --git a/resources/views/livewire/auth/register.blade.php b/resources/views/livewire/auth/register.blade.php deleted file mode 100644 index 30ddb89..0000000 --- a/resources/views/livewire/auth/register.blade.php +++ /dev/null @@ -1,69 +0,0 @@ - -
- - - - - -
- @csrf - - - - - - - - - - - - -
- - {{ __('Create account') }} - -
- - -
- {{ __('Already have an account?') }} - {{ __('Log in') }} -
-
-
diff --git a/resources/views/livewire/auth/reset-password.blade.php b/resources/views/livewire/auth/reset-password.blade.php deleted file mode 100644 index 86001bd..0000000 --- a/resources/views/livewire/auth/reset-password.blade.php +++ /dev/null @@ -1,54 +0,0 @@ - -
- - - - - -
- @csrf - - - - - - - - - - - - -
- - {{ __('Reset password') }} - -
- -
-
diff --git a/resources/views/livewire/auth/two-factor-challenge.blade.php b/resources/views/livewire/auth/two-factor-challenge.blade.php deleted file mode 100644 index febe7d5..0000000 --- a/resources/views/livewire/auth/two-factor-challenge.blade.php +++ /dev/null @@ -1,101 +0,0 @@ - -
-
-
- -
- -
- -
- -
- @csrf - -
-
-
- -
-
- -
-
- -
- - @error('recovery_code') - - {{ $message }} - - @enderror -
- - - {{ __('Continue') }} - -
- -
- {{ __('or you can') }} -
- {{ __('login using a recovery code') }} - {{ __('login using an authentication code') }} -
-
-
-
-
-
diff --git a/resources/views/livewire/auth/verify-email.blade.php b/resources/views/livewire/auth/verify-email.blade.php deleted file mode 100644 index 50e7b44..0000000 --- a/resources/views/livewire/auth/verify-email.blade.php +++ /dev/null @@ -1,29 +0,0 @@ - -
- - {{ __('Please verify your email address by clicking on the link we just emailed to you.') }} - - - @if (session('status') == 'verification-link-sent') - - {{ __('A new verification link has been sent to the email address you provided during registration.') }} - - @endif - -
-
- @csrf - - {{ __('Resend verification email') }} - -
- -
- @csrf - - {{ __('Log out') }} - -
-
-
-
diff --git a/resources/views/livewire/settings/appearance.blade.php b/resources/views/livewire/settings/appearance.blade.php deleted file mode 100644 index 86c7ec7..0000000 --- a/resources/views/livewire/settings/appearance.blade.php +++ /dev/null @@ -1,13 +0,0 @@ -
- @include('partials.settings-heading') - - {{ __('Appearance settings') }} - - - - {{ __('Light') }} - {{ __('Dark') }} - {{ __('System') }} - - -
diff --git a/resources/views/livewire/settings/delete-user-form.blade.php b/resources/views/livewire/settings/delete-user-form.blade.php deleted file mode 100644 index a641407..0000000 --- a/resources/views/livewire/settings/delete-user-form.blade.php +++ /dev/null @@ -1,34 +0,0 @@ -
-
- {{ __('Delete account') }} - {{ __('Delete your account and all of its resources') }} -
- - - - {{ __('Delete account') }} - - - - -
-
- {{ __('Are you sure you want to delete your account?') }} - - - {{ __('Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.') }} - -
- - - -
- - {{ __('Cancel') }} - - - {{ __('Delete account') }} -
- -
-
diff --git a/resources/views/livewire/settings/profile.blade.php b/resources/views/livewire/settings/profile.blade.php deleted file mode 100644 index 6e9da81..0000000 --- a/resources/views/livewire/settings/profile.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -
- @include('partials.settings-heading') - - {{ __('Profile settings') }} - - -
- - -
- - - @if ($this->hasUnverifiedEmail) -
- - {{ __('Your email address is unverified.') }} - - - {{ __('Click here to re-send the verification email.') }} - - - -
- @endif -
- -
- {{ __('Save') }} -
- - - @if ($this->showDeleteUser) - - @endif -
-
diff --git a/resources/views/livewire/settings/security.blade.php b/resources/views/livewire/settings/security.blade.php deleted file mode 100644 index 7144625..0000000 --- a/resources/views/livewire/settings/security.blade.php +++ /dev/null @@ -1,327 +0,0 @@ -
- @include('partials.settings-heading') - - {{ __('Security settings') }} - - -
- - - - -
- {{ __('Save') }} -
- - - @if ($canManageTwoFactor) -
- {{ __('Two-factor authentication') }} - {{ __('Manage your two-factor authentication settings') }} - -
- @if ($twoFactorEnabled) -
- - {{ __('You will be prompted for a secure, random pin during login, which you can retrieve from the TOTP-supported application on your phone.') }} - - -
- - {{ __('Disable 2FA') }} - -
- - -
- @else -
- - {{ __('When you enable two-factor authentication, you will be prompted for a secure pin during login. This pin can be retrieved from a TOTP-supported application on your phone.') }} - - - - {{ __('Enable 2FA') }} - -
- @endif -
-
- @endif - - @if ($canManageTwoFactor) - -
-
-
-
-
- @for ($i = 1; $i <= 5; $i++) -
- @endfor -
- -
- @for ($i = 1; $i <= 5; $i++) -
- @endfor -
- - -
-
- -
- {{ $this->modalConfig['title'] }} - {{ $this->modalConfig['description'] }} -
-
- - @if ($showVerificationStep) -
-
- -
- -
- - {{ __('Back') }} - - - - {{ __('Confirm') }} - -
-
- @else - @error('setupData') - - @enderror - -
-
- @empty($qrCodeSvg) -
- -
- @else -
-
- {!! $qrCodeSvg !!} -
-
- @endempty -
-
- -
- - {{ $this->modalConfig['buttonText'] }} - -
- -
-
-
- - {{ __('or, enter the code manually') }} - -
- -
-
- @empty($manualSetupKey) -
- -
- @else - - - - @endempty -
-
-
- @endif -
-
- @endif - - @if ($canManagePasskeys) -
- {{ __('Passkeys') }} - {{ __('Manage your passkeys for passwordless sign-in') }} - -
-
- @forelse ($passkeys as $passkey) -
-
-
- -
-
-
-

{{ $passkey['name'] }}

- @if ($passkey['authenticator']) - {{ $passkey['authenticator'] }} - @endif -
-

- {{ __('Added :time', ['time' => $passkey['created_at_diff']]) }} - @if ($passkey['last_used_at_diff']) - / - {{ __('Last used :time', ['time' => $passkey['last_used_at_diff']]) }} - @endif -

-
-
- - -
- @empty -
-
- -
-

{{ __('No passkeys yet') }}

- {{ __('Add a passkey to sign in without a password') }} -
- @endforelse -
- - -
-
- @endif -
- - -
-
- {{ __('Remove passkey') }} - - {{ __('Are you sure you want to remove the passkey ":name"? You will no longer be able to use it to sign in.', ['name' => $deletingPasskeyName]) }} - -
- -
- - {{ __('Cancel') }} - - - {{ __('Remove passkey') }} - -
-
-
-
diff --git a/resources/views/livewire/settings/two-factor/recovery-codes.blade.php b/resources/views/livewire/settings/two-factor/recovery-codes.blade.php deleted file mode 100644 index 9ed2674..0000000 --- a/resources/views/livewire/settings/two-factor/recovery-codes.blade.php +++ /dev/null @@ -1,89 +0,0 @@ -
-
-
- - {{ __('2FA recovery codes') }} -
- - {{ __('Recovery codes let you regain access if you lose your 2FA device. Store them in a secure password manager.') }} - -
- -
-
- - - - {{ __('Hide recovery codes') }} - - - @if (filled($recoveryCodes)) - - {{ __('Regenerate codes') }} - - @endif -
- -
-
- @error('recoveryCodes') - - @enderror - - @if (filled($recoveryCodes)) -
- @foreach($recoveryCodes as $code) -
- {{ $code }} -
- @endforeach -
- - {{ __('Each recovery code can be used once to access your account and will be removed after use. If you need more, click Regenerate codes above.') }} - - @endif -
-
-
-
diff --git a/resources/views/partials/head.blade.php b/resources/views/partials/head.blade.php deleted file mode 100644 index 8e9a491..0000000 --- a/resources/views/partials/head.blade.php +++ /dev/null @@ -1,15 +0,0 @@ - - - - - {{ filled($title ?? null) ? $title.' - '.config('app.name', 'Laravel') : config('app.name', 'Laravel') }} - - - - - - -@fonts - -@vite(['resources/css/app.css', 'resources/js/app.js']) -@fluxAppearance diff --git a/resources/views/partials/settings-heading.blade.php b/resources/views/partials/settings-heading.blade.php deleted file mode 100644 index 925ace9..0000000 --- a/resources/views/partials/settings-heading.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -
- {{ __('Settings') }} - {{ __('Manage your profile and account settings') }} - -
diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php deleted file mode 100644 index 13545d0..0000000 --- a/resources/views/welcome.blade.php +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - {{ __('Welcome') }} - {{ config('app.name', 'Laravel') }} - - - - - - @fonts - - - - - -
- @if (Route::has('login')) - - @endif -
-
-
-
-

Let's get started

-

Laravel has an incredibly rich ecosystem.
We suggest starting with the following.

- - -
-
- {{-- Laravel Logo --}} - - - - - - - - - - - {{-- 13 --}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
- - @if (Route::has('login')) - - @endif - - diff --git a/scripts/ensure-directories.php b/scripts/ensure-directories.php new file mode 100755 index 0000000..bdc4984 --- /dev/null +++ b/scripts/ensure-directories.php @@ -0,0 +1,23 @@ +