From 726bc6e6b9ce459fb6a7beb4d028fcfc3fd7c647 Mon Sep 17 00:00:00 2001 From: nicollassilva Date: Tue, 9 Apr 2024 21:22:56 -0300 Subject: [PATCH] WIP: Multi theme support --- app/Http/Kernel.php | 1 + app/Http/Middleware/HandleTheme.php | 27 ++++ composer.json | 1 + composer.lock | 125 +++++++++++++++- config/theme.php | 34 +++++ database/seeders/CmsSettingsSeeder.php | 5 + package.json | 13 +- public/default/assets/app-83c52b49.js | 139 ++++++++++++++++++ public/default/assets/app-87dd26cc.css | 1 + public/default/assets/app-a0ffcb37.css | 1 + public/default/assets/lg-22b72ba5.ttf | Bin 0 -> 4756 bytes public/default/assets/lg-965a0e5f.woff2 | Bin 0 -> 2332 bytes public/default/assets/lg-f2fe1c00.svg | 54 +++++++ public/default/assets/lg-fefc5c0d.woff | Bin 0 -> 4832 bytes public/default/assets/loading-298ad3ff.gif | Bin 0 -> 4178 bytes public/default/manifest.json | 46 ++++++ {resources => themes/default}/css/app.css | 0 {resources => themes/default}/js/app.js | 0 {resources => themes/default}/js/bootstrap.js | 0 {resources => themes/default}/js/client.js | 0 .../default}/js/components/Authentication.js | 0 .../default}/js/components/DiscordWidget.js | 0 .../js/components/Helpers/AlpineHelpers.js | 0 .../default}/js/components/Navigation.js | 0 .../default}/js/components/Notification.js | 0 .../default}/js/components/OnlineFriends.js | 0 .../default}/js/components/Orion.js | 0 .../Pages/Articles/ArticleNotification.js | 0 .../Pages/Articles/ArticleReaction.js | 0 .../default}/js/components/Pages/Client.js | 0 .../default}/js/components/Pages/Footer.js | 0 .../default}/js/components/Pages/Photos.js | 0 .../js/components/Pages/Shop/ShopComponent.js | 0 .../default}/js/components/Pages/Staff.js | 0 .../components/Pages/Users/AccountSettings.js | 0 .../components/Pages/Users/ChangeUsername.js | 0 .../components/Pages/Users/FriendStories.js | 0 .../components/Pages/Users/IngameSettings.js | 0 .../Pages/Users/PasswordSettings.js | 0 .../Users/UserProfile/UserProfileManager.js | 0 .../store/ProfileInventoryStore.js | 0 .../UserProfile/store/ProfileItemsStore.js | 0 .../UserProfile/store/ProfileShopStore.js | 0 .../store/widgets/GuestbookStore.js | 0 .../UserProfile/store/widgets/RatingStore.js | 0 .../js/components/Ui/AutomaticSearch.js | 0 .../js/components/Ui/SelectLanguage.js | 0 .../js/components/Ui/TextareaEditor.js | 0 .../js/external/ImageVisualizationWrapper.js | 0 .../default}/js/external/NotyfWrapper.js | 0 .../default}/js/external/SwiperWrapper.js | 0 .../default}/js/external/TippyWrapper.js | 0 .../default}/js/external/XssWrapper.js | 0 .../default}/js/orion/WebManager.js | 0 {resources => themes/default}/scss/app.scss | 0 .../default}/scss/home/items/notes.scss | 0 .../default}/scss/home/items/widgets.scss | 0 .../default}/scss/home/themes.scss | 0 .../default}/scss/home/themes/default.scss | 0 .../scss/home/themes/goldenframe.scss | 0 .../default}/scss/home/themes/hcmachine.scss | 0 .../default}/scss/home/themes/hcpillow.scss | 0 .../default}/scss/home/themes/metal.scss | 0 .../default}/scss/home/themes/note.scss | 0 .../default}/scss/home/themes/notepad.scss | 0 .../default}/scss/includes/external.scss | 0 .../default}/scss/includes/reset.scss | 0 .../default}/scss/partials/icons.scss | 0 .../default}/scss/partials/icons/big.scss | 0 .../default}/scss/partials/icons/small.scss | 0 .../default}/scss/partials/loader.scss | 0 .../default/tailwind.config.js | 9 +- .../views/components/container.blade.php | 0 .../views/components/forms/login.blade.php | 0 .../views/components/forms/register.blade.php | 0 .../components/header/auth-nav.blade.php | 0 .../fragments/user-notifications.blade.php | 0 .../components/header/main-nav.blade.php | 0 .../components/header/user-box.blade.php | 0 .../views/components/home/bag.blade.php | 0 .../components/home/items/item.blade.php | 0 .../components/home/items/note.blade.php | 0 .../items/partials/default-actions.blade.php | 0 .../components/home/items/sticker.blade.php | 0 .../components/home/items/widget.blade.php | 0 .../home/items/widgets/my-badges.blade.php | 0 .../home/items/widgets/my-friends.blade.php | 0 .../home/items/widgets/my-groups.blade.php | 0 .../home/items/widgets/my-guestbook.blade.php | 0 .../home/items/widgets/my-profile.blade.php | 0 .../home/items/widgets/my-rating.blade.php | 0 .../home/items/widgets/my-rooms.blade.php | 0 .../home/layouts/inventory-menu.blade.php | 0 .../layouts/modals/message-modal.blade.php | 0 .../home/layouts/modals/note-modal.blade.php | 0 .../pages/inventory/active-item.blade.php | 0 .../pages/inventory/category-items.blade.php | 0 .../layouts/pages/shop/active-item.blade.php | 0 .../pages/shop/category-items.blade.php | 0 .../layouts/pages/shop/homepage.blade.php | 0 .../home/layouts/shop-menu.blade.php | 0 .../select-language-modal.blade.php | 0 .../components/shop/product-card.blade.php | 0 .../views/components/title-box.blade.php | 0 .../ui/buttons/confirmable.blade.php | 0 .../components/ui/buttons/default.blade.php | 0 .../components/ui/buttons/editor.blade.php | 0 .../components/ui/buttons/loadable.blade.php | 0 .../ui/buttons/redirectable.blade.php | 0 .../views/components/ui/input-radio.blade.php | 0 .../views/components/ui/input.blade.php | 0 .../modal-templates/change-username.blade.php | 0 .../modal-templates/select-language.blade.php | 0 .../ui/modal-templates/stories.blade.php | 0 .../view-shop-product.blade.php | 0 .../views/components/ui/modal.blade.php | 0 .../views/components/ui/recaptcha.blade.php | 0 .../views/components/ui/story-modal.blade.php | 0 .../views/components/ui/textarea.blade.php | 0 .../views/components/ui/toggle.blade.php | 0 .../views/components/ui/turnstile.blade.php | 0 .../forms/components/ck-editor.blade.php | 0 .../views/filament/pages/badge-page.blade.php | 0 .../filament/pages/logs-manager.blade.php | 0 .../columns/habbo-badge-column.blade.php | 0 .../tables/columns/user-avatar.blade.php | 0 .../default}/views/index.blade.php | 0 .../default}/views/layouts/app.blade.php | 4 +- .../default}/views/layouts/footer.blade.php | 0 .../default}/views/layouts/header.blade.php | 0 .../views/pages/about/safety.blade.php | 0 .../fragments/active-content.blade.php | 0 .../fragments/article-comments.blade.php | 0 .../fragments/article-reactions.blade.php | 0 .../views/pages/articles/index.blade.php | 0 .../pages/auth/confirm-password.blade.php | 0 .../views/pages/auth/register.blade.php | 0 .../pages/auth/two-factor-challenge.blade.php | 0 .../views/pages/client/flash.blade.php | 0 .../views/pages/client/nitro.blade.php | 0 .../pages/community/photos/index.blade.php | 0 .../rankings/_partials/ranking-box.blade.php | 0 .../pages/community/rankings/index.blade.php | 0 .../pages/community/staff/index.blade.php | 0 .../pages/community/teams/index.blade.php | 0 .../views/pages/guest/index.blade.php | 0 .../default}/views/pages/jail.blade.php | 0 .../views/pages/maintenance.blade.php | 0 .../default}/views/pages/shop/index.blade.php | 0 .../questions/categories/show.blade.php | 0 .../pages/support/questions/index.blade.php | 0 .../questions/partials/back-button.blade.php | 0 .../partials/default-content.blade.php | 0 .../partials/researched-content.blade.php | 0 .../pages/support/questions/show.blade.php | 0 .../users/fragments/change-username.blade.php | 0 .../users/fragments/discord-widget.blade.php | 0 .../users/fragments/latest-articles.blade.php | 0 .../users/fragments/user/balances.blade.php | 0 .../fragments/user/client-buttons.blade.php | 0 .../fragments/user/online-friends.blade.php | 0 .../users/fragments/user/referrals.blade.php | 0 .../users/fragments/user/stories.blade.php | 0 .../views/pages/users/index.blade.php | 0 .../profile/partials/user-not-found.blade.php | 0 .../views/pages/users/profile/show.blade.php | 0 .../views/pages/users/purchases.blade.php | 0 .../users/settings/fragments/2fa.blade.php | 0 .../settings/fragments/2fa/confirm.blade.php | 0 .../settings/fragments/2fa/disable.blade.php | 0 .../settings/fragments/2fa/enable.blade.php | 0 .../settings/fragments/account.blade.php | 0 .../users/settings/fragments/ingame.blade.php | 0 .../settings/fragments/password.blade.php | 0 .../pages/users/settings/index.blade.php | 0 .../views/partials/js-parities.blade.php | 0 .../vendor/pagination/home-widget.blade.php | 0 .../vendor/pagination/tailwind.blade.php | 0 themes/default/vite.config.js | 36 +++++ vite.config.js | 26 ---- 180 files changed, 483 insertions(+), 39 deletions(-) create mode 100644 app/Http/Middleware/HandleTheme.php create mode 100644 config/theme.php create mode 100644 public/default/assets/app-83c52b49.js create mode 100644 public/default/assets/app-87dd26cc.css create mode 100644 public/default/assets/app-a0ffcb37.css create mode 100644 public/default/assets/lg-22b72ba5.ttf create mode 100644 public/default/assets/lg-965a0e5f.woff2 create mode 100644 public/default/assets/lg-f2fe1c00.svg create mode 100644 public/default/assets/lg-fefc5c0d.woff create mode 100644 public/default/assets/loading-298ad3ff.gif create mode 100644 public/default/manifest.json rename {resources => themes/default}/css/app.css (100%) rename {resources => themes/default}/js/app.js (100%) rename {resources => themes/default}/js/bootstrap.js (100%) rename {resources => themes/default}/js/client.js (100%) rename {resources => themes/default}/js/components/Authentication.js (100%) rename {resources => themes/default}/js/components/DiscordWidget.js (100%) rename {resources => themes/default}/js/components/Helpers/AlpineHelpers.js (100%) rename {resources => themes/default}/js/components/Navigation.js (100%) rename {resources => themes/default}/js/components/Notification.js (100%) rename {resources => themes/default}/js/components/OnlineFriends.js (100%) rename {resources => themes/default}/js/components/Orion.js (100%) rename {resources => themes/default}/js/components/Pages/Articles/ArticleNotification.js (100%) rename {resources => themes/default}/js/components/Pages/Articles/ArticleReaction.js (100%) rename {resources => themes/default}/js/components/Pages/Client.js (100%) rename {resources => themes/default}/js/components/Pages/Footer.js (100%) rename {resources => themes/default}/js/components/Pages/Photos.js (100%) rename {resources => themes/default}/js/components/Pages/Shop/ShopComponent.js (100%) rename {resources => themes/default}/js/components/Pages/Staff.js (100%) rename {resources => themes/default}/js/components/Pages/Users/AccountSettings.js (100%) rename {resources => themes/default}/js/components/Pages/Users/ChangeUsername.js (100%) rename {resources => themes/default}/js/components/Pages/Users/FriendStories.js (100%) rename {resources => themes/default}/js/components/Pages/Users/IngameSettings.js (100%) rename {resources => themes/default}/js/components/Pages/Users/PasswordSettings.js (100%) rename {resources => themes/default}/js/components/Pages/Users/UserProfile/UserProfileManager.js (100%) rename {resources => themes/default}/js/components/Pages/Users/UserProfile/store/ProfileInventoryStore.js (100%) rename {resources => themes/default}/js/components/Pages/Users/UserProfile/store/ProfileItemsStore.js (100%) rename {resources => themes/default}/js/components/Pages/Users/UserProfile/store/ProfileShopStore.js (100%) rename {resources => themes/default}/js/components/Pages/Users/UserProfile/store/widgets/GuestbookStore.js (100%) rename {resources => themes/default}/js/components/Pages/Users/UserProfile/store/widgets/RatingStore.js (100%) rename {resources => themes/default}/js/components/Ui/AutomaticSearch.js (100%) rename {resources => themes/default}/js/components/Ui/SelectLanguage.js (100%) rename {resources => themes/default}/js/components/Ui/TextareaEditor.js (100%) rename {resources => themes/default}/js/external/ImageVisualizationWrapper.js (100%) rename {resources => themes/default}/js/external/NotyfWrapper.js (100%) rename {resources => themes/default}/js/external/SwiperWrapper.js (100%) rename {resources => themes/default}/js/external/TippyWrapper.js (100%) rename {resources => themes/default}/js/external/XssWrapper.js (100%) rename {resources => themes/default}/js/orion/WebManager.js (100%) rename {resources => themes/default}/scss/app.scss (100%) rename {resources => themes/default}/scss/home/items/notes.scss (100%) rename {resources => themes/default}/scss/home/items/widgets.scss (100%) rename {resources => themes/default}/scss/home/themes.scss (100%) rename {resources => themes/default}/scss/home/themes/default.scss (100%) rename {resources => themes/default}/scss/home/themes/goldenframe.scss (100%) rename {resources => themes/default}/scss/home/themes/hcmachine.scss (100%) rename {resources => themes/default}/scss/home/themes/hcpillow.scss (100%) rename {resources => themes/default}/scss/home/themes/metal.scss (100%) rename {resources => themes/default}/scss/home/themes/note.scss (100%) rename {resources => themes/default}/scss/home/themes/notepad.scss (100%) rename {resources => themes/default}/scss/includes/external.scss (100%) rename {resources => themes/default}/scss/includes/reset.scss (100%) rename {resources => themes/default}/scss/partials/icons.scss (100%) rename {resources => themes/default}/scss/partials/icons/big.scss (100%) rename {resources => themes/default}/scss/partials/icons/small.scss (100%) rename {resources => themes/default}/scss/partials/loader.scss (100%) rename tailwind.config.js => themes/default/tailwind.config.js (79%) rename {resources => themes/default}/views/components/container.blade.php (100%) rename {resources => themes/default}/views/components/forms/login.blade.php (100%) rename {resources => themes/default}/views/components/forms/register.blade.php (100%) rename {resources => themes/default}/views/components/header/auth-nav.blade.php (100%) rename {resources => themes/default}/views/components/header/fragments/user-notifications.blade.php (100%) rename {resources => themes/default}/views/components/header/main-nav.blade.php (100%) rename {resources => themes/default}/views/components/header/user-box.blade.php (100%) rename {resources => themes/default}/views/components/home/bag.blade.php (100%) rename {resources => themes/default}/views/components/home/items/item.blade.php (100%) rename {resources => themes/default}/views/components/home/items/note.blade.php (100%) rename {resources => themes/default}/views/components/home/items/partials/default-actions.blade.php (100%) rename {resources => themes/default}/views/components/home/items/sticker.blade.php (100%) rename {resources => themes/default}/views/components/home/items/widget.blade.php (100%) rename {resources => themes/default}/views/components/home/items/widgets/my-badges.blade.php (100%) rename {resources => themes/default}/views/components/home/items/widgets/my-friends.blade.php (100%) rename {resources => themes/default}/views/components/home/items/widgets/my-groups.blade.php (100%) rename {resources => themes/default}/views/components/home/items/widgets/my-guestbook.blade.php (100%) rename {resources => themes/default}/views/components/home/items/widgets/my-profile.blade.php (100%) rename {resources => themes/default}/views/components/home/items/widgets/my-rating.blade.php (100%) rename {resources => themes/default}/views/components/home/items/widgets/my-rooms.blade.php (100%) rename {resources => themes/default}/views/components/home/layouts/inventory-menu.blade.php (100%) rename {resources => themes/default}/views/components/home/layouts/modals/message-modal.blade.php (100%) rename {resources => themes/default}/views/components/home/layouts/modals/note-modal.blade.php (100%) rename {resources => themes/default}/views/components/home/layouts/pages/inventory/active-item.blade.php (100%) rename {resources => themes/default}/views/components/home/layouts/pages/inventory/category-items.blade.php (100%) rename {resources => themes/default}/views/components/home/layouts/pages/shop/active-item.blade.php (100%) rename {resources => themes/default}/views/components/home/layouts/pages/shop/category-items.blade.php (100%) rename {resources => themes/default}/views/components/home/layouts/pages/shop/homepage.blade.php (100%) rename {resources => themes/default}/views/components/home/layouts/shop-menu.blade.php (100%) rename {resources => themes/default}/views/components/select-language-modal.blade.php (100%) rename {resources => themes/default}/views/components/shop/product-card.blade.php (100%) rename {resources => themes/default}/views/components/title-box.blade.php (100%) rename {resources => themes/default}/views/components/ui/buttons/confirmable.blade.php (100%) rename {resources => themes/default}/views/components/ui/buttons/default.blade.php (100%) rename {resources => themes/default}/views/components/ui/buttons/editor.blade.php (100%) rename {resources => themes/default}/views/components/ui/buttons/loadable.blade.php (100%) rename {resources => themes/default}/views/components/ui/buttons/redirectable.blade.php (100%) rename {resources => themes/default}/views/components/ui/input-radio.blade.php (100%) rename {resources => themes/default}/views/components/ui/input.blade.php (100%) rename {resources => themes/default}/views/components/ui/modal-templates/change-username.blade.php (100%) rename {resources => themes/default}/views/components/ui/modal-templates/select-language.blade.php (100%) rename {resources => themes/default}/views/components/ui/modal-templates/stories.blade.php (100%) rename {resources => themes/default}/views/components/ui/modal-templates/view-shop-product.blade.php (100%) rename {resources => themes/default}/views/components/ui/modal.blade.php (100%) rename {resources => themes/default}/views/components/ui/recaptcha.blade.php (100%) rename {resources => themes/default}/views/components/ui/story-modal.blade.php (100%) rename {resources => themes/default}/views/components/ui/textarea.blade.php (100%) rename {resources => themes/default}/views/components/ui/toggle.blade.php (100%) rename {resources => themes/default}/views/components/ui/turnstile.blade.php (100%) rename {resources => themes/default}/views/filament/forms/components/ck-editor.blade.php (100%) rename {resources => themes/default}/views/filament/pages/badge-page.blade.php (100%) rename {resources => themes/default}/views/filament/pages/logs-manager.blade.php (100%) rename {resources => themes/default}/views/filament/tables/columns/habbo-badge-column.blade.php (100%) rename {resources => themes/default}/views/filament/tables/columns/user-avatar.blade.php (100%) rename {resources => themes/default}/views/index.blade.php (100%) rename {resources => themes/default}/views/layouts/app.blade.php (96%) rename {resources => themes/default}/views/layouts/footer.blade.php (100%) rename {resources => themes/default}/views/layouts/header.blade.php (100%) rename {resources => themes/default}/views/pages/about/safety.blade.php (100%) rename {resources => themes/default}/views/pages/articles/fragments/active-content.blade.php (100%) rename {resources => themes/default}/views/pages/articles/fragments/article-comments.blade.php (100%) rename {resources => themes/default}/views/pages/articles/fragments/article-reactions.blade.php (100%) rename {resources => themes/default}/views/pages/articles/index.blade.php (100%) rename {resources => themes/default}/views/pages/auth/confirm-password.blade.php (100%) rename {resources => themes/default}/views/pages/auth/register.blade.php (100%) rename {resources => themes/default}/views/pages/auth/two-factor-challenge.blade.php (100%) rename {resources => themes/default}/views/pages/client/flash.blade.php (100%) rename {resources => themes/default}/views/pages/client/nitro.blade.php (100%) rename {resources => themes/default}/views/pages/community/photos/index.blade.php (100%) rename {resources => themes/default}/views/pages/community/rankings/_partials/ranking-box.blade.php (100%) rename {resources => themes/default}/views/pages/community/rankings/index.blade.php (100%) rename {resources => themes/default}/views/pages/community/staff/index.blade.php (100%) rename {resources => themes/default}/views/pages/community/teams/index.blade.php (100%) rename {resources => themes/default}/views/pages/guest/index.blade.php (100%) rename {resources => themes/default}/views/pages/jail.blade.php (100%) rename {resources => themes/default}/views/pages/maintenance.blade.php (100%) rename {resources => themes/default}/views/pages/shop/index.blade.php (100%) rename {resources => themes/default}/views/pages/support/questions/categories/show.blade.php (100%) rename {resources => themes/default}/views/pages/support/questions/index.blade.php (100%) rename {resources => themes/default}/views/pages/support/questions/partials/back-button.blade.php (100%) rename {resources => themes/default}/views/pages/support/questions/partials/default-content.blade.php (100%) rename {resources => themes/default}/views/pages/support/questions/partials/researched-content.blade.php (100%) rename {resources => themes/default}/views/pages/support/questions/show.blade.php (100%) rename {resources => themes/default}/views/pages/users/fragments/change-username.blade.php (100%) rename {resources => themes/default}/views/pages/users/fragments/discord-widget.blade.php (100%) rename {resources => themes/default}/views/pages/users/fragments/latest-articles.blade.php (100%) rename {resources => themes/default}/views/pages/users/fragments/user/balances.blade.php (100%) rename {resources => themes/default}/views/pages/users/fragments/user/client-buttons.blade.php (100%) rename {resources => themes/default}/views/pages/users/fragments/user/online-friends.blade.php (100%) rename {resources => themes/default}/views/pages/users/fragments/user/referrals.blade.php (100%) rename {resources => themes/default}/views/pages/users/fragments/user/stories.blade.php (100%) rename {resources => themes/default}/views/pages/users/index.blade.php (100%) rename {resources => themes/default}/views/pages/users/profile/partials/user-not-found.blade.php (100%) rename {resources => themes/default}/views/pages/users/profile/show.blade.php (100%) rename {resources => themes/default}/views/pages/users/purchases.blade.php (100%) rename {resources => themes/default}/views/pages/users/settings/fragments/2fa.blade.php (100%) rename {resources => themes/default}/views/pages/users/settings/fragments/2fa/confirm.blade.php (100%) rename {resources => themes/default}/views/pages/users/settings/fragments/2fa/disable.blade.php (100%) rename {resources => themes/default}/views/pages/users/settings/fragments/2fa/enable.blade.php (100%) rename {resources => themes/default}/views/pages/users/settings/fragments/account.blade.php (100%) rename {resources => themes/default}/views/pages/users/settings/fragments/ingame.blade.php (100%) rename {resources => themes/default}/views/pages/users/settings/fragments/password.blade.php (100%) rename {resources => themes/default}/views/pages/users/settings/index.blade.php (100%) rename {resources => themes/default}/views/partials/js-parities.blade.php (100%) rename {resources => themes/default}/views/vendor/pagination/home-widget.blade.php (100%) rename {resources => themes/default}/views/vendor/pagination/tailwind.blade.php (100%) create mode 100644 themes/default/vite.config.js delete mode 100644 vite.config.js diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 43dbbf34..0d4d8a6f 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -21,6 +21,7 @@ class Kernel extends HttpKernel \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + \App\Http\Middleware\HandleTheme::class, ]; /** diff --git a/app/Http/Middleware/HandleTheme.php b/app/Http/Middleware/HandleTheme.php new file mode 100644 index 00000000..b4d2459b --- /dev/null +++ b/app/Http/Middleware/HandleTheme.php @@ -0,0 +1,27 @@ +=7.1.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpunit/phpunit": "^8.3|^9.0|^10.5", + "vimeo/psalm": "^4.0|^5.22" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Qirolab\\Theme\\ThemeServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Qirolab\\Theme\\": "src", + "Qirolab\\Theme\\Database\\Factories\\": "database/factories" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Harish Kumar", + "email": "harish@qirolab.com", + "homepage": "https://qirolab.com", + "role": "Developer" + } + ], + "description": "A Laravel theme manager, that will help you organize and maintain your themes inside Laravel projects.", + "homepage": "https://qirolab.com", + "keywords": [ + "laravel", + "laravel-theme", + "qirolab", + "theme" + ], + "support": { + "issues": "https://github.com/qirolab/laravel-themer/issues", + "source": "https://github.com/qirolab/laravel-themer/tree/2.2.1" + }, + "funding": [ + { + "url": "https://www.buymeacoffee.com/qirolab", + "type": "other" + } + ], + "time": "2024-03-07T15:48:52+00:00" + }, { "name": "ralouphie/getallheaders", "version": "3.0.3", diff --git a/config/theme.php b/config/theme.php new file mode 100644 index 00000000..59f059e5 --- /dev/null +++ b/config/theme.php @@ -0,0 +1,34 @@ + 'default', + + /* + |-------------------------------------------------------------------------- + | Parent Theme + |-------------------------------------------------------------------------- + | + | This is a parent theme for the theme specified in the active config + | option. It works like the WordPress style theme hierarchy, if the blade + | file is not found in the currently active theme, then it will look for it + | in the parent theme. + */ + 'parent' => null, + + /* + |-------------------------------------------------------------------------- + | Base Path + |-------------------------------------------------------------------------- + | + | The base path where all the themes are located. + */ + 'base_path' => base_path('themes') +]; diff --git a/database/seeders/CmsSettingsSeeder.php b/database/seeders/CmsSettingsSeeder.php index 81b9795c..7615d0d9 100644 --- a/database/seeders/CmsSettingsSeeder.php +++ b/database/seeders/CmsSettingsSeeder.php @@ -250,6 +250,11 @@ public function getDefaultSettings(): array 'staff_notification_image', 'https://i.imgur.com/8IcBBTF.gif', 'The staff notification image to show on the CMS' + ], + [ + 'active_cms_theme', + 'default', + 'The active theme on the CMS' ] ]; } diff --git a/package.json b/package.json index 6f7b4b64..3a03c407 100644 --- a/package.json +++ b/package.json @@ -2,19 +2,22 @@ "private": true, "scripts": { "dev": "vite", - "build": "vite build" + "build": "vite build", + "dev:default": "vite --config themes/default/vite.config.js", + "build:default": "vite build --config themes/default/vite.config.js" }, "devDependencies": { - "@tailwindcss/forms": "^0.5.3", + "@tailwindcss/forms": "^0.5.2", "@tailwindcss/typography": "^0.5.9", "alpine-turbo-drive-adapter": "^2.0.0", "alpinejs": "^3.12.0", - "autoprefixer": "^10.4.14", + "autoprefixer": "^10.4.7", "axios": "^1.1.2", "laravel-vite-plugin": "^0.7.2", - "postcss": "^8.4.23", + "postcss": "^8.4.14", + "postcss-import": "^14.1.0", "sass": "^1.62.0", - "tailwindcss": "^3.3.1", + "tailwindcss": "^3.1.6", "turbolinks": "^5.2.0", "vite": "^4.0.0" }, diff --git a/public/default/assets/app-83c52b49.js b/public/default/assets/app-83c52b49.js new file mode 100644 index 00000000..c06003ec --- /dev/null +++ b/public/default/assets/app-83c52b49.js @@ -0,0 +1,139 @@ +var Nf=Object.defineProperty;var jf=(t,e,n)=>e in t?Nf(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var sr=(t,e,n)=>(jf(t,typeof e!="symbol"?e+"":e,n),n);function gu(t,e){return function(){return t.apply(e,arguments)}}const{toString:Ff}=Object.prototype,{getPrototypeOf:Ks}=Object,po=(t=>e=>{const n=Ff.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),sn=t=>(t=t.toLowerCase(),e=>po(e)===t),ho=t=>e=>typeof e===t,{isArray:br}=Array,Zr=ho("undefined");function Bf(t){return t!==null&&!Zr(t)&&t.constructor!==null&&!Zr(t.constructor)&&Dt(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const mu=sn("ArrayBuffer");function zf(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&mu(t.buffer),e}const $f=ho("string"),Dt=ho("function"),vu=ho("number"),go=t=>t!==null&&typeof t=="object",Hf=t=>t===!0||t===!1,Ki=t=>{if(po(t)!=="object")return!1;const e=Ks(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)},Uf=sn("Date"),Wf=sn("File"),qf=sn("Blob"),Vf=sn("FileList"),Gf=t=>go(t)&&Dt(t.pipe),Xf=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||Dt(t.append)&&((e=po(t))==="formdata"||e==="object"&&Dt(t.toString)&&t.toString()==="[object FormData]"))},Yf=sn("URLSearchParams"),Kf=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function oi(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let r,o;if(typeof t!="object"&&(t=[t]),br(t))for(r=0,o=t.length;r0;)if(o=n[r],e===o.toLowerCase())return o;return null}const bu=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global)(),wu=t=>!Zr(t)&&t!==bu;function Es(){const{caseless:t}=wu(this)&&this||{},e={},n=(r,o)=>{const a=t&&yu(e,o)||o;Ki(e[a])&&Ki(r)?e[a]=Es(e[a],r):Ki(r)?e[a]=Es({},r):br(r)?e[a]=r.slice():e[a]=r};for(let r=0,o=arguments.length;r(oi(e,(o,a)=>{n&&Dt(o)?t[a]=gu(o,n):t[a]=o},{allOwnKeys:r}),t),Qf=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),Zf=(t,e,n,r)=>{t.prototype=Object.create(e.prototype,r),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),n&&Object.assign(t.prototype,n)},ep=(t,e,n,r)=>{let o,a,c;const d={};if(e=e||{},t==null)return e;do{for(o=Object.getOwnPropertyNames(t),a=o.length;a-- >0;)c=o[a],(!r||r(c,t,e))&&!d[c]&&(e[c]=t[c],d[c]=!0);t=n!==!1&&Ks(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},tp=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const r=t.indexOf(e,n);return r!==-1&&r===n},np=t=>{if(!t)return null;if(br(t))return t;let e=t.length;if(!vu(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},rp=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Ks(Uint8Array)),ip=(t,e)=>{const r=(t&&t[Symbol.iterator]).call(t);let o;for(;(o=r.next())&&!o.done;){const a=o.value;e.call(t,a[0],a[1])}},op=(t,e)=>{let n;const r=[];for(;(n=t.exec(e))!==null;)r.push(n);return r},sp=sn("HTMLFormElement"),ap=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,o){return r.toUpperCase()+o}),yl=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),lp=sn("RegExp"),_u=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),r={};oi(n,(o,a)=>{e(o,a,t)!==!1&&(r[a]=o)}),Object.defineProperties(t,r)},up=t=>{_u(t,(e,n)=>{if(Dt(t)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=t[n];if(Dt(r)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},cp=(t,e)=>{const n={},r=o=>{o.forEach(a=>{n[a]=!0})};return br(t)?r(t):r(String(t).split(e)),n},dp=()=>{},fp=(t,e)=>(t=+t,Number.isFinite(t)?t:e),is="abcdefghijklmnopqrstuvwxyz",bl="0123456789",Eu={DIGIT:bl,ALPHA:is,ALPHA_DIGIT:is+is.toUpperCase()+bl},pp=(t=16,e=Eu.ALPHA_DIGIT)=>{let n="";const{length:r}=e;for(;t--;)n+=e[Math.random()*r|0];return n};function hp(t){return!!(t&&Dt(t.append)&&t[Symbol.toStringTag]==="FormData"&&t[Symbol.iterator])}const gp=t=>{const e=new Array(10),n=(r,o)=>{if(go(r)){if(e.indexOf(r)>=0)return;if(!("toJSON"in r)){e[o]=r;const a=br(r)?[]:{};return oi(r,(c,d)=>{const p=n(c,o+1);!Zr(p)&&(a[d]=p)}),e[o]=void 0,a}}return r};return n(t,0)},mp=sn("AsyncFunction"),vp=t=>t&&(go(t)||Dt(t))&&Dt(t.then)&&Dt(t.catch),N={isArray:br,isArrayBuffer:mu,isBuffer:Bf,isFormData:Xf,isArrayBufferView:zf,isString:$f,isNumber:vu,isBoolean:Hf,isObject:go,isPlainObject:Ki,isUndefined:Zr,isDate:Uf,isFile:Wf,isBlob:qf,isRegExp:lp,isFunction:Dt,isStream:Gf,isURLSearchParams:Yf,isTypedArray:rp,isFileList:Vf,forEach:oi,merge:Es,extend:Jf,trim:Kf,stripBOM:Qf,inherits:Zf,toFlatObject:ep,kindOf:po,kindOfTest:sn,endsWith:tp,toArray:np,forEachEntry:ip,matchAll:op,isHTMLForm:sp,hasOwnProperty:yl,hasOwnProp:yl,reduceDescriptors:_u,freezeMethods:up,toObjectSet:cp,toCamelCase:ap,noop:dp,toFiniteNumber:fp,findKey:yu,global:bu,isContextDefined:wu,ALPHABET:Eu,generateString:pp,isSpecCompliantForm:hp,toJSONObject:gp,isAsyncFn:mp,isThenable:vp};function me(t,e,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}N.inherits(me,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:N.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Su=me.prototype,Tu={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{Tu[t]={value:t}});Object.defineProperties(me,Tu);Object.defineProperty(Su,"isAxiosError",{value:!0});me.from=(t,e,n,r,o,a)=>{const c=Object.create(Su);return N.toFlatObject(t,c,function(p){return p!==Error.prototype},d=>d!=="isAxiosError"),me.call(c,t.message,e,n,r,o),c.cause=t,c.name=t.name,a&&Object.assign(c,a),c};const yp=null;function Ss(t){return N.isPlainObject(t)||N.isArray(t)}function xu(t){return N.endsWith(t,"[]")?t.slice(0,-2):t}function wl(t,e,n){return t?t.concat(e).map(function(o,a){return o=xu(o),!n&&a?"["+o+"]":o}).join(n?".":""):e}function bp(t){return N.isArray(t)&&!t.some(Ss)}const wp=N.toFlatObject(N,{},null,function(e){return/^is[A-Z]/.test(e)});function mo(t,e,n){if(!N.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,n=N.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(M,L){return!N.isUndefined(L[M])});const r=n.metaTokens,o=n.visitor||b,a=n.dots,c=n.indexes,p=(n.Blob||typeof Blob<"u"&&Blob)&&N.isSpecCompliantForm(e);if(!N.isFunction(o))throw new TypeError("visitor must be a function");function m(I){if(I===null)return"";if(N.isDate(I))return I.toISOString();if(!p&&N.isBlob(I))throw new me("Blob is not supported. Use a Buffer instead.");return N.isArrayBuffer(I)||N.isTypedArray(I)?p&&typeof Blob=="function"?new Blob([I]):Buffer.from(I):I}function b(I,M,L){let R=I;if(I&&!L&&typeof I=="object"){if(N.endsWith(M,"{}"))M=r?M:M.slice(0,-2),I=JSON.stringify(I);else if(N.isArray(I)&&bp(I)||(N.isFileList(I)||N.endsWith(M,"[]"))&&(R=N.toArray(I)))return M=xu(M),R.forEach(function(q,S){!(N.isUndefined(q)||q===null)&&e.append(c===!0?wl([M],S,a):c===null?M:M+"[]",m(q))}),!1}return Ss(I)?!0:(e.append(wl(L,M,a),m(I)),!1)}const E=[],T=Object.assign(wp,{defaultVisitor:b,convertValue:m,isVisitable:Ss});function A(I,M){if(!N.isUndefined(I)){if(E.indexOf(I)!==-1)throw Error("Circular reference detected in "+M.join("."));E.push(I),N.forEach(I,function(R,H){(!(N.isUndefined(R)||R===null)&&o.call(e,R,N.isString(H)?H.trim():H,M,T))===!0&&A(R,M?M.concat(H):[H])}),E.pop()}}if(!N.isObject(t))throw new TypeError("data must be an object");return A(t),e}function _l(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(r){return e[r]})}function Js(t,e){this._pairs=[],t&&mo(t,this,e)}const Ou=Js.prototype;Ou.append=function(e,n){this._pairs.push([e,n])};Ou.toString=function(e){const n=e?function(r){return e.call(this,r,_l)}:_l;return this._pairs.map(function(o){return n(o[0])+"="+n(o[1])},"").join("&")};function _p(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Au(t,e,n){if(!e)return t;const r=n&&n.encode||_p,o=n&&n.serialize;let a;if(o?a=o(e,n):a=N.isURLSearchParams(e)?e.toString():new Js(e,n).toString(r),a){const c=t.indexOf("#");c!==-1&&(t=t.slice(0,c)),t+=(t.indexOf("?")===-1?"?":"&")+a}return t}class Ep{constructor(){this.handlers=[]}use(e,n,r){return this.handlers.push({fulfilled:e,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){N.forEach(this.handlers,function(r){r!==null&&e(r)})}}const El=Ep,Cu={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Sp=typeof URLSearchParams<"u"?URLSearchParams:Js,Tp=typeof FormData<"u"?FormData:null,xp=typeof Blob<"u"?Blob:null,Op=(()=>{let t;return typeof navigator<"u"&&((t=navigator.product)==="ReactNative"||t==="NativeScript"||t==="NS")?!1:typeof window<"u"&&typeof document<"u"})(),Ap=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),nn={isBrowser:!0,classes:{URLSearchParams:Sp,FormData:Tp,Blob:xp},isStandardBrowserEnv:Op,isStandardBrowserWebWorkerEnv:Ap,protocols:["http","https","file","blob","url","data"]};function Cp(t,e){return mo(t,new nn.classes.URLSearchParams,Object.assign({visitor:function(n,r,o,a){return nn.isNode&&N.isBuffer(n)?(this.append(r,n.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)}},e))}function Ip(t){return N.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function Pp(t){const e={},n=Object.keys(t);let r;const o=n.length;let a;for(r=0;r=n.length;return c=!c&&N.isArray(o)?o.length:c,p?(N.hasOwnProp(o,c)?o[c]=[o[c],r]:o[c]=r,!d):((!o[c]||!N.isObject(o[c]))&&(o[c]=[]),e(n,r,o[c],a)&&N.isArray(o[c])&&(o[c]=Pp(o[c])),!d)}if(N.isFormData(t)&&N.isFunction(t.entries)){const n={};return N.forEachEntry(t,(r,o)=>{e(Ip(r),o,n,0)}),n}return null}const Mp={"Content-Type":void 0};function kp(t,e,n){if(N.isString(t))try{return(e||JSON.parse)(t),N.trim(t)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(t)}const vo={transitional:Cu,adapter:["xhr","http"],transformRequest:[function(e,n){const r=n.getContentType()||"",o=r.indexOf("application/json")>-1,a=N.isObject(e);if(a&&N.isHTMLForm(e)&&(e=new FormData(e)),N.isFormData(e))return o&&o?JSON.stringify(Iu(e)):e;if(N.isArrayBuffer(e)||N.isBuffer(e)||N.isStream(e)||N.isFile(e)||N.isBlob(e))return e;if(N.isArrayBufferView(e))return e.buffer;if(N.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let d;if(a){if(r.indexOf("application/x-www-form-urlencoded")>-1)return Cp(e,this.formSerializer).toString();if((d=N.isFileList(e))||r.indexOf("multipart/form-data")>-1){const p=this.env&&this.env.FormData;return mo(d?{"files[]":e}:e,p&&new p,this.formSerializer)}}return a||o?(n.setContentType("application/json",!1),kp(e)):e}],transformResponse:[function(e){const n=this.transitional||vo.transitional,r=n&&n.forcedJSONParsing,o=this.responseType==="json";if(e&&N.isString(e)&&(r&&!this.responseType||o)){const c=!(n&&n.silentJSONParsing)&&o;try{return JSON.parse(e)}catch(d){if(c)throw d.name==="SyntaxError"?me.from(d,me.ERR_BAD_RESPONSE,this,null,this.response):d}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:nn.classes.FormData,Blob:nn.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};N.forEach(["delete","get","head"],function(e){vo.headers[e]={}});N.forEach(["post","put","patch"],function(e){vo.headers[e]=N.merge(Mp)});const Qs=vo,Rp=N.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Dp=t=>{const e={};let n,r,o;return t&&t.split(` +`).forEach(function(c){o=c.indexOf(":"),n=c.substring(0,o).trim().toLowerCase(),r=c.substring(o+1).trim(),!(!n||e[n]&&Rp[n])&&(n==="set-cookie"?e[n]?e[n].push(r):e[n]=[r]:e[n]=e[n]?e[n]+", "+r:r)}),e},Sl=Symbol("internals");function $r(t){return t&&String(t).trim().toLowerCase()}function Ji(t){return t===!1||t==null?t:N.isArray(t)?t.map(Ji):String(t)}function Lp(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(t);)e[r[1]]=r[2];return e}const Np=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function os(t,e,n,r,o){if(N.isFunction(r))return r.call(this,e,n);if(o&&(e=n),!!N.isString(e)){if(N.isString(r))return e.indexOf(r)!==-1;if(N.isRegExp(r))return r.test(e)}}function jp(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,r)=>n.toUpperCase()+r)}function Fp(t,e){const n=N.toCamelCase(" "+e);["get","set","has"].forEach(r=>{Object.defineProperty(t,r+n,{value:function(o,a,c){return this[r].call(this,e,o,a,c)},configurable:!0})})}class yo{constructor(e){e&&this.set(e)}set(e,n,r){const o=this;function a(d,p,m){const b=$r(p);if(!b)throw new Error("header name must be a non-empty string");const E=N.findKey(o,b);(!E||o[E]===void 0||m===!0||m===void 0&&o[E]!==!1)&&(o[E||p]=Ji(d))}const c=(d,p)=>N.forEach(d,(m,b)=>a(m,b,p));return N.isPlainObject(e)||e instanceof this.constructor?c(e,n):N.isString(e)&&(e=e.trim())&&!Np(e)?c(Dp(e),n):e!=null&&a(n,e,r),this}get(e,n){if(e=$r(e),e){const r=N.findKey(this,e);if(r){const o=this[r];if(!n)return o;if(n===!0)return Lp(o);if(N.isFunction(n))return n.call(this,o,r);if(N.isRegExp(n))return n.exec(o);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=$r(e),e){const r=N.findKey(this,e);return!!(r&&this[r]!==void 0&&(!n||os(this,this[r],r,n)))}return!1}delete(e,n){const r=this;let o=!1;function a(c){if(c=$r(c),c){const d=N.findKey(r,c);d&&(!n||os(r,r[d],d,n))&&(delete r[d],o=!0)}}return N.isArray(e)?e.forEach(a):a(e),o}clear(e){const n=Object.keys(this);let r=n.length,o=!1;for(;r--;){const a=n[r];(!e||os(this,this[a],a,e,!0))&&(delete this[a],o=!0)}return o}normalize(e){const n=this,r={};return N.forEach(this,(o,a)=>{const c=N.findKey(r,a);if(c){n[c]=Ji(o),delete n[a];return}const d=e?jp(a):String(a).trim();d!==a&&delete n[a],n[d]=Ji(o),r[d]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return N.forEach(this,(r,o)=>{r!=null&&r!==!1&&(n[o]=e&&N.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(` +`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const r=new this(e);return n.forEach(o=>r.set(o)),r}static accessor(e){const r=(this[Sl]=this[Sl]={accessors:{}}).accessors,o=this.prototype;function a(c){const d=$r(c);r[d]||(Fp(o,c),r[d]=!0)}return N.isArray(e)?e.forEach(a):a(e),this}}yo.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);N.freezeMethods(yo.prototype);N.freezeMethods(yo);const pn=yo;function ss(t,e){const n=this||Qs,r=e||n,o=pn.from(r.headers);let a=r.data;return N.forEach(t,function(d){a=d.call(n,a,o.normalize(),e?e.status:void 0)}),o.normalize(),a}function Pu(t){return!!(t&&t.__CANCEL__)}function si(t,e,n){me.call(this,t??"canceled",me.ERR_CANCELED,e,n),this.name="CanceledError"}N.inherits(si,me,{__CANCEL__:!0});function Bp(t,e,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?t(n):e(new me("Request failed with status code "+n.status,[me.ERR_BAD_REQUEST,me.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}const zp=nn.isStandardBrowserEnv?function(){return{write:function(n,r,o,a,c,d){const p=[];p.push(n+"="+encodeURIComponent(r)),N.isNumber(o)&&p.push("expires="+new Date(o).toGMTString()),N.isString(a)&&p.push("path="+a),N.isString(c)&&p.push("domain="+c),d===!0&&p.push("secure"),document.cookie=p.join("; ")},read:function(n){const r=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return r?decodeURIComponent(r[3]):null},remove:function(n){this.write(n,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}();function $p(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Hp(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}function Mu(t,e){return t&&!$p(e)?Hp(t,e):e}const Up=nn.isStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let r;function o(a){let c=a;return e&&(n.setAttribute("href",c),c=n.href),n.setAttribute("href",c),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=o(window.location.href),function(c){const d=N.isString(c)?o(c):c;return d.protocol===r.protocol&&d.host===r.host}}():function(){return function(){return!0}}();function Wp(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function qp(t,e){t=t||10;const n=new Array(t),r=new Array(t);let o=0,a=0,c;return e=e!==void 0?e:1e3,function(p){const m=Date.now(),b=r[a];c||(c=m),n[o]=p,r[o]=m;let E=a,T=0;for(;E!==o;)T+=n[E++],E=E%t;if(o=(o+1)%t,o===a&&(a=(a+1)%t),m-c{const a=o.loaded,c=o.lengthComputable?o.total:void 0,d=a-n,p=r(d),m=a<=c;n=a;const b={loaded:a,total:c,progress:c?a/c:void 0,bytes:d,rate:p||void 0,estimated:p&&c&&m?(c-a)/p:void 0,event:o};b[e?"download":"upload"]=!0,t(b)}}const Vp=typeof XMLHttpRequest<"u",Gp=Vp&&function(t){return new Promise(function(n,r){let o=t.data;const a=pn.from(t.headers).normalize(),c=t.responseType;let d;function p(){t.cancelToken&&t.cancelToken.unsubscribe(d),t.signal&&t.signal.removeEventListener("abort",d)}N.isFormData(o)&&(nn.isStandardBrowserEnv||nn.isStandardBrowserWebWorkerEnv?a.setContentType(!1):a.setContentType("multipart/form-data;",!1));let m=new XMLHttpRequest;if(t.auth){const A=t.auth.username||"",I=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";a.set("Authorization","Basic "+btoa(A+":"+I))}const b=Mu(t.baseURL,t.url);m.open(t.method.toUpperCase(),Au(b,t.params,t.paramsSerializer),!0),m.timeout=t.timeout;function E(){if(!m)return;const A=pn.from("getAllResponseHeaders"in m&&m.getAllResponseHeaders()),M={data:!c||c==="text"||c==="json"?m.responseText:m.response,status:m.status,statusText:m.statusText,headers:A,config:t,request:m};Bp(function(R){n(R),p()},function(R){r(R),p()},M),m=null}if("onloadend"in m?m.onloadend=E:m.onreadystatechange=function(){!m||m.readyState!==4||m.status===0&&!(m.responseURL&&m.responseURL.indexOf("file:")===0)||setTimeout(E)},m.onabort=function(){m&&(r(new me("Request aborted",me.ECONNABORTED,t,m)),m=null)},m.onerror=function(){r(new me("Network Error",me.ERR_NETWORK,t,m)),m=null},m.ontimeout=function(){let I=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded";const M=t.transitional||Cu;t.timeoutErrorMessage&&(I=t.timeoutErrorMessage),r(new me(I,M.clarifyTimeoutError?me.ETIMEDOUT:me.ECONNABORTED,t,m)),m=null},nn.isStandardBrowserEnv){const A=(t.withCredentials||Up(b))&&t.xsrfCookieName&&zp.read(t.xsrfCookieName);A&&a.set(t.xsrfHeaderName,A)}o===void 0&&a.setContentType(null),"setRequestHeader"in m&&N.forEach(a.toJSON(),function(I,M){m.setRequestHeader(M,I)}),N.isUndefined(t.withCredentials)||(m.withCredentials=!!t.withCredentials),c&&c!=="json"&&(m.responseType=t.responseType),typeof t.onDownloadProgress=="function"&&m.addEventListener("progress",Tl(t.onDownloadProgress,!0)),typeof t.onUploadProgress=="function"&&m.upload&&m.upload.addEventListener("progress",Tl(t.onUploadProgress)),(t.cancelToken||t.signal)&&(d=A=>{m&&(r(!A||A.type?new si(null,t,m):A),m.abort(),m=null)},t.cancelToken&&t.cancelToken.subscribe(d),t.signal&&(t.signal.aborted?d():t.signal.addEventListener("abort",d)));const T=Wp(b);if(T&&nn.protocols.indexOf(T)===-1){r(new me("Unsupported protocol "+T+":",me.ERR_BAD_REQUEST,t));return}m.send(o||null)})},Qi={http:yp,xhr:Gp};N.forEach(Qi,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const Xp={getAdapter:t=>{t=N.isArray(t)?t:[t];const{length:e}=t;let n,r;for(let o=0;ot instanceof pn?t.toJSON():t;function dr(t,e){e=e||{};const n={};function r(m,b,E){return N.isPlainObject(m)&&N.isPlainObject(b)?N.merge.call({caseless:E},m,b):N.isPlainObject(b)?N.merge({},b):N.isArray(b)?b.slice():b}function o(m,b,E){if(N.isUndefined(b)){if(!N.isUndefined(m))return r(void 0,m,E)}else return r(m,b,E)}function a(m,b){if(!N.isUndefined(b))return r(void 0,b)}function c(m,b){if(N.isUndefined(b)){if(!N.isUndefined(m))return r(void 0,m)}else return r(void 0,b)}function d(m,b,E){if(E in e)return r(m,b);if(E in t)return r(void 0,m)}const p={url:a,method:a,data:a,baseURL:c,transformRequest:c,transformResponse:c,paramsSerializer:c,timeout:c,timeoutMessage:c,withCredentials:c,adapter:c,responseType:c,xsrfCookieName:c,xsrfHeaderName:c,onUploadProgress:c,onDownloadProgress:c,decompress:c,maxContentLength:c,maxBodyLength:c,beforeRedirect:c,transport:c,httpAgent:c,httpsAgent:c,cancelToken:c,socketPath:c,responseEncoding:c,validateStatus:d,headers:(m,b)=>o(Ol(m),Ol(b),!0)};return N.forEach(Object.keys(Object.assign({},t,e)),function(b){const E=p[b]||o,T=E(t[b],e[b],b);N.isUndefined(T)&&E!==d||(n[b]=T)}),n}const ku="1.4.0",Zs={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{Zs[t]=function(r){return typeof r===t||"a"+(e<1?"n ":" ")+t}});const Al={};Zs.transitional=function(e,n,r){function o(a,c){return"[Axios v"+ku+"] Transitional option '"+a+"'"+c+(r?". "+r:"")}return(a,c,d)=>{if(e===!1)throw new me(o(c," has been removed"+(n?" in "+n:"")),me.ERR_DEPRECATED);return n&&!Al[c]&&(Al[c]=!0,console.warn(o(c," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(a,c,d):!0}};function Yp(t,e,n){if(typeof t!="object")throw new me("options must be an object",me.ERR_BAD_OPTION_VALUE);const r=Object.keys(t);let o=r.length;for(;o-- >0;){const a=r[o],c=e[a];if(c){const d=t[a],p=d===void 0||c(d,a,t);if(p!==!0)throw new me("option "+a+" must be "+p,me.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new me("Unknown option "+a,me.ERR_BAD_OPTION)}}const Ts={assertOptions:Yp,validators:Zs},Sn=Ts.validators;class io{constructor(e){this.defaults=e,this.interceptors={request:new El,response:new El}}request(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=dr(this.defaults,n);const{transitional:r,paramsSerializer:o,headers:a}=n;r!==void 0&&Ts.assertOptions(r,{silentJSONParsing:Sn.transitional(Sn.boolean),forcedJSONParsing:Sn.transitional(Sn.boolean),clarifyTimeoutError:Sn.transitional(Sn.boolean)},!1),o!=null&&(N.isFunction(o)?n.paramsSerializer={serialize:o}:Ts.assertOptions(o,{encode:Sn.function,serialize:Sn.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let c;c=a&&N.merge(a.common,a[n.method]),c&&N.forEach(["delete","get","head","post","put","patch","common"],I=>{delete a[I]}),n.headers=pn.concat(c,a);const d=[];let p=!0;this.interceptors.request.forEach(function(M){typeof M.runWhen=="function"&&M.runWhen(n)===!1||(p=p&&M.synchronous,d.unshift(M.fulfilled,M.rejected))});const m=[];this.interceptors.response.forEach(function(M){m.push(M.fulfilled,M.rejected)});let b,E=0,T;if(!p){const I=[xl.bind(this),void 0];for(I.unshift.apply(I,d),I.push.apply(I,m),T=I.length,b=Promise.resolve(n);E{if(!r._listeners)return;let a=r._listeners.length;for(;a-- >0;)r._listeners[a](o);r._listeners=null}),this.promise.then=o=>{let a;const c=new Promise(d=>{r.subscribe(d),a=d}).then(o);return c.cancel=function(){r.unsubscribe(a)},c},e(function(a,c,d){r.reason||(r.reason=new si(a,c,d),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}static source(){let e;return{token:new ea(function(o){e=o}),cancel:e}}}const Kp=ea;function Jp(t){return function(n){return t.apply(null,n)}}function Qp(t){return N.isObject(t)&&t.isAxiosError===!0}const xs={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(xs).forEach(([t,e])=>{xs[e]=t});const Zp=xs;function Ru(t){const e=new Zi(t),n=gu(Zi.prototype.request,e);return N.extend(n,Zi.prototype,e,{allOwnKeys:!0}),N.extend(n,e,null,{allOwnKeys:!0}),n.create=function(o){return Ru(dr(t,o))},n}const Ue=Ru(Qs);Ue.Axios=Zi;Ue.CanceledError=si;Ue.CancelToken=Kp;Ue.isCancel=Pu;Ue.VERSION=ku;Ue.toFormData=mo;Ue.AxiosError=me;Ue.Cancel=Ue.CanceledError;Ue.all=function(e){return Promise.all(e)};Ue.spread=Jp;Ue.isAxiosError=Qp;Ue.mergeConfig=dr;Ue.AxiosHeaders=pn;Ue.formToJSON=t=>Iu(N.isHTMLForm(t)?new FormData(t):t);Ue.HttpStatusCode=Zp;Ue.default=Ue;const it=Ue;function eh(t,e){for(var n=t.split("."),r=e.split("."),o=0;on[o])return!0;return r[n.length-1]===n[n.length-1]}function ls(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};t.dispatchEvent(new CustomEvent(e,{detail:n,bubbles:!0,composed:!0,cancelable:!0}))}class th{init(){if(!window.Alpine.version||!eh("3.0.0",window.Alpine.version))throw new Error("Invalid Alpine version. Please use Alpine 3.0.0 or above");window.Alpine.mutateDom(()=>{document.body.querySelectorAll("[x-cloak]").forEach(e=>{var n;e.setAttribute("data-alpine-was-cloaked",(n=e.getAttribute("x-cloak"))!==null&&n!==void 0?n:"")})}),this.configureEventHandlers()}configureEventHandlers(){var e=o=>{document.documentElement.hasAttribute("data-turbo-preview")||(ls(document,"alpine:init"),ls(document,"alpine:initializing"),window.Alpine.flushAndStopDeferringMutations(),ls(document,"alpine:initialised"),window.Alpine.mutateDom(()=>{document.querySelectorAll("[data-alpine-ignored]").forEach(a=>{a.removeAttribute("x-ignore"),a.removeAttribute("data-alpine-ignored")})}))},n=o=>{window.Alpine.mutateDom(()=>{document.documentElement.hasAttribute("data-turbo-preview")||o.detail.newBody.querySelectorAll("[data-alpine-generated-me],[x-cloak]").forEach(a=>{if(a.hasAttribute("x-cloak")){var c;a.setAttribute("data-alpine-was-cloaked",(c=a.getAttribute("x-cloak"))!==null&&c!==void 0?c:"")}a.hasAttribute("data-alpine-generated-me")&&(a.removeAttribute("data-alpine-generated-me"),a.remove())})}),window.Alpine.deferMutations()},r=o=>{window.Alpine.mutateDom(()=>{document.body.querySelectorAll("[x-for],[x-if],[data-alpine-was-cloaked]").forEach(a=>{if(a.hasAttribute("data-alpine-was-cloaked")){var c;a.setAttribute("x-cloak",(c=a.getAttribute("data-alpine-was-cloaked"))!==null&&c!==void 0?c:""),a.removeAttribute("data-alpine-was-cloaked")}a.hasAttribute("x-for")&&a._x_lookup&&Object.values(a._x_lookup).forEach(d=>d.setAttribute("data-alpine-generated-me",!0)),a.hasAttribute("x-if")&&a._x_currentIfEl&&a._x_currentIfEl.setAttribute("data-alpine-generated-me",!0)})}),document.querySelectorAll("[data-turbo-permanent]").forEach(a=>{window.Alpine.mutateDom(()=>{a.hasAttribute("x-ignore")||(a.setAttribute("x-ignore",!0),a.setAttribute("data-alpine-ignored",!0)),a.querySelectorAll("[data-alpine-generated-me]").forEach(c=>{c.removeAttribute("data-alpine-generated-me")})})})};document.addEventListener("turbo:render",e),document.addEventListener("turbo:before-render",n),document.addEventListener("turbo:before-cache",r)}}window.Alpine&&console.error("Alpine-turbo-drive-adapter must be included before AlpineJs");Object.getOwnPropertyDescriptor(NodeList.prototype,"forEach")||Object.defineProperty(NodeList.prototype,"forEach",Object.getOwnPropertyDescriptor(Array.prototype,"forEach"));document.addEventListener("alpine:init",()=>{var t=new th;t.init()},{once:!0});var nh=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Du(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Lu={exports:{}};(function(t){(function(){var e=this;(function(){(function(){this.Turbolinks={supported:function(){return window.history.pushState!=null&&window.requestAnimationFrame!=null&&window.addEventListener!=null}(),visit:function(r,o){return n.controller.visit(r,o)},clearCache:function(){return n.controller.clearCache()},setProgressBarDelay:function(r){return n.controller.setProgressBarDelay(r)}}}).call(this)}).call(e);var n=e.Turbolinks;(function(){(function(){var r,o,a,c=[].slice;n.copyObject=function(d){var p,m,b;m={};for(p in d)b=d[p],m[p]=b;return m},n.closest=function(d,p){return r.call(d,p)},r=function(){var d,p;return d=document.documentElement,(p=d.closest)!=null?p:function(m){var b;for(b=this;b;){if(b.nodeType===Node.ELEMENT_NODE&&o.call(b,m))return b;b=b.parentNode}}}(),n.defer=function(d){return setTimeout(d,1)},n.throttle=function(d){var p;return p=null,function(){var m;return m=1<=arguments.length?c.call(arguments,0):[],p??(p=requestAnimationFrame(function(b){return function(){return p=null,d.apply(b,m)}}(this)))}},n.dispatch=function(d,p){var m,b,E,T,A,I;return A=p??{},I=A.target,m=A.cancelable,b=A.data,E=document.createEvent("Events"),E.initEvent(d,!0,m===!0),E.data=b??{},E.cancelable&&!a&&(T=E.preventDefault,E.preventDefault=function(){return this.defaultPrevented||Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}}),T.call(this)}),(I??document).dispatchEvent(E),E},a=function(){var d;return d=document.createEvent("Events"),d.initEvent("test",!0,!0),d.preventDefault(),d.defaultPrevented}(),n.match=function(d,p){return o.call(d,p)},o=function(){var d,p,m,b;return d=document.documentElement,(p=(m=(b=d.matchesSelector)!=null?b:d.webkitMatchesSelector)!=null?m:d.msMatchesSelector)!=null?p:d.mozMatchesSelector}(),n.uuid=function(){var d,p,m;for(m="",d=p=1;36>=p;d=++p)m+=d===9||d===14||d===19||d===24?"-":d===15?"4":d===20?(Math.floor(4*Math.random())+8).toString(16):Math.floor(15*Math.random()).toString(16);return m}}).call(this),function(){n.Location=function(){function r(p){var m,b;p==null&&(p=""),b=document.createElement("a"),b.href=p.toString(),this.absoluteURL=b.href,m=b.hash.length,2>m?this.requestURL=this.absoluteURL:(this.requestURL=this.absoluteURL.slice(0,-m),this.anchor=b.hash.slice(1))}var o,a,c,d;return r.wrap=function(p){return p instanceof this?p:new this(p)},r.prototype.getOrigin=function(){return this.absoluteURL.split("/",3).join("/")},r.prototype.getPath=function(){var p,m;return(p=(m=this.requestURL.match(/\/\/[^\/]*(\/[^?;]*)/))!=null?m[1]:void 0)!=null?p:"/"},r.prototype.getPathComponents=function(){return this.getPath().split("/").slice(1)},r.prototype.getLastPathComponent=function(){return this.getPathComponents().slice(-1)[0]},r.prototype.getExtension=function(){var p,m;return(p=(m=this.getLastPathComponent().match(/\.[^.]*$/))!=null?m[0]:void 0)!=null?p:""},r.prototype.isHTML=function(){return this.getExtension().match(/^(?:|\.(?:htm|html|xhtml))$/)},r.prototype.isPrefixedBy=function(p){var m;return m=a(p),this.isEqualTo(p)||d(this.absoluteURL,m)},r.prototype.isEqualTo=function(p){return this.absoluteURL===(p!=null?p.absoluteURL:void 0)},r.prototype.toCacheKey=function(){return this.requestURL},r.prototype.toJSON=function(){return this.absoluteURL},r.prototype.toString=function(){return this.absoluteURL},r.prototype.valueOf=function(){return this.absoluteURL},a=function(p){return o(p.getOrigin()+p.getPath())},o=function(p){return c(p,"/")?p:p+"/"},d=function(p,m){return p.slice(0,m.length)===m},c=function(p,m){return p.slice(-m.length)===m},r}()}.call(this),function(){var r=function(o,a){return function(){return o.apply(a,arguments)}};n.HttpRequest=function(){function o(a,c,d){this.delegate=a,this.requestCanceled=r(this.requestCanceled,this),this.requestTimedOut=r(this.requestTimedOut,this),this.requestFailed=r(this.requestFailed,this),this.requestLoaded=r(this.requestLoaded,this),this.requestProgressed=r(this.requestProgressed,this),this.url=n.Location.wrap(c).requestURL,this.referrer=n.Location.wrap(d).absoluteURL,this.createXHR()}return o.NETWORK_FAILURE=0,o.TIMEOUT_FAILURE=-1,o.timeout=60,o.prototype.send=function(){var a;return this.xhr&&!this.sent?(this.notifyApplicationBeforeRequestStart(),this.setProgress(0),this.xhr.send(),this.sent=!0,typeof(a=this.delegate).requestStarted=="function"?a.requestStarted():void 0):void 0},o.prototype.cancel=function(){return this.xhr&&this.sent?this.xhr.abort():void 0},o.prototype.requestProgressed=function(a){return a.lengthComputable?this.setProgress(a.loaded/a.total):void 0},o.prototype.requestLoaded=function(){return this.endRequest(function(a){return function(){var c;return 200<=(c=a.xhr.status)&&300>c?a.delegate.requestCompletedWithResponse(a.xhr.responseText,a.xhr.getResponseHeader("Turbolinks-Location")):(a.failed=!0,a.delegate.requestFailedWithStatusCode(a.xhr.status,a.xhr.responseText))}}(this))},o.prototype.requestFailed=function(){return this.endRequest(function(a){return function(){return a.failed=!0,a.delegate.requestFailedWithStatusCode(a.constructor.NETWORK_FAILURE)}}(this))},o.prototype.requestTimedOut=function(){return this.endRequest(function(a){return function(){return a.failed=!0,a.delegate.requestFailedWithStatusCode(a.constructor.TIMEOUT_FAILURE)}}(this))},o.prototype.requestCanceled=function(){return this.endRequest()},o.prototype.notifyApplicationBeforeRequestStart=function(){return n.dispatch("turbolinks:request-start",{data:{url:this.url,xhr:this.xhr}})},o.prototype.notifyApplicationAfterRequestEnd=function(){return n.dispatch("turbolinks:request-end",{data:{url:this.url,xhr:this.xhr}})},o.prototype.createXHR=function(){return this.xhr=new XMLHttpRequest,this.xhr.open("GET",this.url,!0),this.xhr.timeout=1e3*this.constructor.timeout,this.xhr.setRequestHeader("Accept","text/html, application/xhtml+xml"),this.xhr.setRequestHeader("Turbolinks-Referrer",this.referrer),this.xhr.onprogress=this.requestProgressed,this.xhr.onload=this.requestLoaded,this.xhr.onerror=this.requestFailed,this.xhr.ontimeout=this.requestTimedOut,this.xhr.onabort=this.requestCanceled},o.prototype.endRequest=function(a){return this.xhr?(this.notifyApplicationAfterRequestEnd(),a!=null&&a.call(this),this.destroy()):void 0},o.prototype.setProgress=function(a){var c;return this.progress=a,typeof(c=this.delegate).requestProgressed=="function"?c.requestProgressed(this.progress):void 0},o.prototype.destroy=function(){var a;return this.setProgress(1),typeof(a=this.delegate).requestFinished=="function"&&a.requestFinished(),this.delegate=null,this.xhr=null},o}()}.call(this),function(){var r=function(o,a){return function(){return o.apply(a,arguments)}};n.ProgressBar=function(){function o(){this.trickle=r(this.trickle,this),this.stylesheetElement=this.createStylesheetElement(),this.progressElement=this.createProgressElement()}var a;return a=300,o.defaultCSS=`.turbolinks-progress-bar { + position: fixed; + display: block; + top: 0; + left: 0; + height: 3px; + background: #0076ff; + z-index: 9999; + transition: width `+a+"ms ease-out, opacity "+a/2+"ms "+a/2+`ms ease-in; + transform: translate3d(0, 0, 0); +}`,o.prototype.show=function(){return this.visible?void 0:(this.visible=!0,this.installStylesheetElement(),this.installProgressElement(),this.startTrickling())},o.prototype.hide=function(){return this.visible&&!this.hiding?(this.hiding=!0,this.fadeProgressElement(function(c){return function(){return c.uninstallProgressElement(),c.stopTrickling(),c.visible=!1,c.hiding=!1}}(this))):void 0},o.prototype.setValue=function(c){return this.value=c,this.refresh()},o.prototype.installStylesheetElement=function(){return document.head.insertBefore(this.stylesheetElement,document.head.firstChild)},o.prototype.installProgressElement=function(){return this.progressElement.style.width=0,this.progressElement.style.opacity=1,document.documentElement.insertBefore(this.progressElement,document.body),this.refresh()},o.prototype.fadeProgressElement=function(c){return this.progressElement.style.opacity=0,setTimeout(c,1.5*a)},o.prototype.uninstallProgressElement=function(){return this.progressElement.parentNode?document.documentElement.removeChild(this.progressElement):void 0},o.prototype.startTrickling=function(){return this.trickleInterval!=null?this.trickleInterval:this.trickleInterval=setInterval(this.trickle,a)},o.prototype.stopTrickling=function(){return clearInterval(this.trickleInterval),this.trickleInterval=null},o.prototype.trickle=function(){return this.setValue(this.value+Math.random()/100)},o.prototype.refresh=function(){return requestAnimationFrame(function(c){return function(){return c.progressElement.style.width=10+90*c.value+"%"}}(this))},o.prototype.createStylesheetElement=function(){var c;return c=document.createElement("style"),c.type="text/css",c.textContent=this.constructor.defaultCSS,c},o.prototype.createProgressElement=function(){var c;return c=document.createElement("div"),c.className="turbolinks-progress-bar",c},o}()}.call(this),function(){var r=function(o,a){return function(){return o.apply(a,arguments)}};n.BrowserAdapter=function(){function o(p){this.controller=p,this.showProgressBar=r(this.showProgressBar,this),this.progressBar=new n.ProgressBar}var a,c,d;return d=n.HttpRequest,a=d.NETWORK_FAILURE,c=d.TIMEOUT_FAILURE,o.prototype.visitProposedToLocationWithAction=function(p,m){return this.controller.startVisitToLocationWithAction(p,m)},o.prototype.visitStarted=function(p){return p.issueRequest(),p.changeHistory(),p.loadCachedSnapshot()},o.prototype.visitRequestStarted=function(p){return this.progressBar.setValue(0),p.hasCachedSnapshot()||p.action!=="restore"?this.showProgressBarAfterDelay():this.showProgressBar()},o.prototype.visitRequestProgressed=function(p){return this.progressBar.setValue(p.progress)},o.prototype.visitRequestCompleted=function(p){return p.loadResponse()},o.prototype.visitRequestFailedWithStatusCode=function(p,m){switch(m){case a:case c:return this.reload();default:return p.loadResponse()}},o.prototype.visitRequestFinished=function(p){return this.hideProgressBar()},o.prototype.visitCompleted=function(p){return p.followRedirect()},o.prototype.pageInvalidated=function(){return this.reload()},o.prototype.showProgressBarAfterDelay=function(){return this.progressBarTimeout=setTimeout(this.showProgressBar,this.controller.progressBarDelay)},o.prototype.showProgressBar=function(){return this.progressBar.show()},o.prototype.hideProgressBar=function(){return this.progressBar.hide(),clearTimeout(this.progressBarTimeout)},o.prototype.reload=function(){return window.location.reload()},o}()}.call(this),function(){var r=function(o,a){return function(){return o.apply(a,arguments)}};n.History=function(){function o(a){this.delegate=a,this.onPageLoad=r(this.onPageLoad,this),this.onPopState=r(this.onPopState,this)}return o.prototype.start=function(){return this.started?void 0:(addEventListener("popstate",this.onPopState,!1),addEventListener("load",this.onPageLoad,!1),this.started=!0)},o.prototype.stop=function(){return this.started?(removeEventListener("popstate",this.onPopState,!1),removeEventListener("load",this.onPageLoad,!1),this.started=!1):void 0},o.prototype.push=function(a,c){return a=n.Location.wrap(a),this.update("push",a,c)},o.prototype.replace=function(a,c){return a=n.Location.wrap(a),this.update("replace",a,c)},o.prototype.onPopState=function(a){var c,d,p,m;return this.shouldHandlePopState()&&(m=(d=a.state)!=null?d.turbolinks:void 0)?(c=n.Location.wrap(window.location),p=m.restorationIdentifier,this.delegate.historyPoppedToLocationWithRestorationIdentifier(c,p)):void 0},o.prototype.onPageLoad=function(a){return n.defer(function(c){return function(){return c.pageLoaded=!0}}(this))},o.prototype.shouldHandlePopState=function(){return this.pageIsLoaded()},o.prototype.pageIsLoaded=function(){return this.pageLoaded||document.readyState==="complete"},o.prototype.update=function(a,c,d){var p;return p={turbolinks:{restorationIdentifier:d}},history[a+"State"](p,null,c)},o}()}.call(this),function(){n.HeadDetails=function(){function r(m){var b,E,T,A,I,M;for(this.elements={},T=0,I=m.length;I>T;T++)M=m[T],M.nodeType===Node.ELEMENT_NODE&&(A=M.outerHTML,E=(b=this.elements)[A]!=null?b[A]:b[A]={type:p(M),tracked:d(M),elements:[]},E.elements.push(M))}var o,a,c,d,p;return r.fromHeadElement=function(m){var b;return new this((b=m!=null?m.childNodes:void 0)!=null?b:[])},r.prototype.hasElementWithKey=function(m){return m in this.elements},r.prototype.getTrackedElementSignature=function(){var m,b;return function(){var E,T;E=this.elements,T=[];for(m in E)b=E[m].tracked,b&&T.push(m);return T}.call(this).join("")},r.prototype.getScriptElementsNotInDetails=function(m){return this.getElementsMatchingTypeNotInDetails("script",m)},r.prototype.getStylesheetElementsNotInDetails=function(m){return this.getElementsMatchingTypeNotInDetails("stylesheet",m)},r.prototype.getElementsMatchingTypeNotInDetails=function(m,b){var E,T,A,I,M,L;A=this.elements,M=[];for(T in A)I=A[T],L=I.type,E=I.elements,L!==m||b.hasElementWithKey(T)||M.push(E[0]);return M},r.prototype.getProvisionalElements=function(){var m,b,E,T,A,I,M;E=[],T=this.elements;for(b in T)A=T[b],M=A.type,I=A.tracked,m=A.elements,M!=null||I?m.length>1&&E.push.apply(E,m.slice(1)):E.push.apply(E,m);return E},r.prototype.getMetaValue=function(m){var b;return(b=this.findMetaElementByName(m))!=null?b.getAttribute("content"):void 0},r.prototype.findMetaElementByName=function(m){var b,E,T,A;b=void 0,A=this.elements;for(T in A)E=A[T].elements,o(E[0],m)&&(b=E[0]);return b},p=function(m){return a(m)?"script":c(m)?"stylesheet":void 0},d=function(m){return m.getAttribute("data-turbolinks-track")==="reload"},a=function(m){var b;return b=m.tagName.toLowerCase(),b==="script"},c=function(m){var b;return b=m.tagName.toLowerCase(),b==="style"||b==="link"&&m.getAttribute("rel")==="stylesheet"},o=function(m,b){var E;return E=m.tagName.toLowerCase(),E==="meta"&&m.getAttribute("name")===b},r}()}.call(this),function(){n.Snapshot=function(){function r(o,a){this.headDetails=o,this.bodyElement=a}return r.wrap=function(o){return o instanceof this?o:typeof o=="string"?this.fromHTMLString(o):this.fromHTMLElement(o)},r.fromHTMLString=function(o){var a;return a=document.createElement("html"),a.innerHTML=o,this.fromHTMLElement(a)},r.fromHTMLElement=function(o){var a,c,d,p;return d=o.querySelector("head"),a=(p=o.querySelector("body"))!=null?p:document.createElement("body"),c=n.HeadDetails.fromHeadElement(d),new this(c,a)},r.prototype.clone=function(){return new this.constructor(this.headDetails,this.bodyElement.cloneNode(!0))},r.prototype.getRootLocation=function(){var o,a;return a=(o=this.getSetting("root"))!=null?o:"/",new n.Location(a)},r.prototype.getCacheControlValue=function(){return this.getSetting("cache-control")},r.prototype.getElementForAnchor=function(o){try{return this.bodyElement.querySelector("[id='"+o+"'], a[name='"+o+"']")}catch{}},r.prototype.getPermanentElements=function(){return this.bodyElement.querySelectorAll("[id][data-turbolinks-permanent]")},r.prototype.getPermanentElementById=function(o){return this.bodyElement.querySelector("#"+o+"[data-turbolinks-permanent]")},r.prototype.getPermanentElementsPresentInSnapshot=function(o){var a,c,d,p,m;for(p=this.getPermanentElements(),m=[],c=0,d=p.length;d>c;c++)a=p[c],o.getPermanentElementById(a.id)&&m.push(a);return m},r.prototype.findFirstAutofocusableElement=function(){return this.bodyElement.querySelector("[autofocus]")},r.prototype.hasAnchor=function(o){return this.getElementForAnchor(o)!=null},r.prototype.isPreviewable=function(){return this.getCacheControlValue()!=="no-preview"},r.prototype.isCacheable=function(){return this.getCacheControlValue()!=="no-cache"},r.prototype.isVisitable=function(){return this.getSetting("visit-control")!=="reload"},r.prototype.getSetting=function(o){return this.headDetails.getMetaValue("turbolinks-"+o)},r}()}.call(this),function(){var r=[].slice;n.Renderer=function(){function o(){}var a;return o.render=function(){var c,d,p,m;return p=arguments[0],d=arguments[1],c=3<=arguments.length?r.call(arguments,2):[],m=function(b,E,T){T.prototype=b.prototype;var A=new T,I=b.apply(A,E);return Object(I)===I?I:A}(this,c,function(){}),m.delegate=p,m.render(d),m},o.prototype.renderView=function(c){return this.delegate.viewWillRender(this.newBody),c(),this.delegate.viewRendered(this.newBody)},o.prototype.invalidateView=function(){return this.delegate.viewInvalidated()},o.prototype.createScriptElement=function(c){var d;return c.getAttribute("data-turbolinks-eval")==="false"?c:(d=document.createElement("script"),d.textContent=c.textContent,d.async=!1,a(d,c),d)},a=function(c,d){var p,m,b,E,T,A,I;for(E=d.attributes,A=[],p=0,m=E.length;m>p;p++)T=E[p],b=T.name,I=T.value,A.push(c.setAttribute(b,I));return A},o}()}.call(this),function(){var r,o,a=function(d,p){function m(){this.constructor=d}for(var b in p)c.call(p,b)&&(d[b]=p[b]);return m.prototype=p.prototype,d.prototype=new m,d.__super__=p.prototype,d},c={}.hasOwnProperty;n.SnapshotRenderer=function(d){function p(m,b,E){this.currentSnapshot=m,this.newSnapshot=b,this.isPreview=E,this.currentHeadDetails=this.currentSnapshot.headDetails,this.newHeadDetails=this.newSnapshot.headDetails,this.currentBody=this.currentSnapshot.bodyElement,this.newBody=this.newSnapshot.bodyElement}return a(p,d),p.prototype.render=function(m){return this.shouldRender()?(this.mergeHead(),this.renderView(function(b){return function(){return b.replaceBody(),b.isPreview||b.focusFirstAutofocusableElement(),m()}}(this))):this.invalidateView()},p.prototype.mergeHead=function(){return this.copyNewHeadStylesheetElements(),this.copyNewHeadScriptElements(),this.removeCurrentHeadProvisionalElements(),this.copyNewHeadProvisionalElements()},p.prototype.replaceBody=function(){var m;return m=this.relocateCurrentBodyPermanentElements(),this.activateNewBodyScriptElements(),this.assignNewBody(),this.replacePlaceholderElementsWithClonedPermanentElements(m)},p.prototype.shouldRender=function(){return this.newSnapshot.isVisitable()&&this.trackedElementsAreIdentical()},p.prototype.trackedElementsAreIdentical=function(){return this.currentHeadDetails.getTrackedElementSignature()===this.newHeadDetails.getTrackedElementSignature()},p.prototype.copyNewHeadStylesheetElements=function(){var m,b,E,T,A;for(T=this.getNewHeadStylesheetElements(),A=[],b=0,E=T.length;E>b;b++)m=T[b],A.push(document.head.appendChild(m));return A},p.prototype.copyNewHeadScriptElements=function(){var m,b,E,T,A;for(T=this.getNewHeadScriptElements(),A=[],b=0,E=T.length;E>b;b++)m=T[b],A.push(document.head.appendChild(this.createScriptElement(m)));return A},p.prototype.removeCurrentHeadProvisionalElements=function(){var m,b,E,T,A;for(T=this.getCurrentHeadProvisionalElements(),A=[],b=0,E=T.length;E>b;b++)m=T[b],A.push(document.head.removeChild(m));return A},p.prototype.copyNewHeadProvisionalElements=function(){var m,b,E,T,A;for(T=this.getNewHeadProvisionalElements(),A=[],b=0,E=T.length;E>b;b++)m=T[b],A.push(document.head.appendChild(m));return A},p.prototype.relocateCurrentBodyPermanentElements=function(){var m,b,E,T,A,I,M;for(I=this.getCurrentBodyPermanentElements(),M=[],m=0,b=I.length;b>m;m++)T=I[m],A=r(T),E=this.newSnapshot.getPermanentElementById(T.id),o(T,A.element),o(E,T),M.push(A);return M},p.prototype.replacePlaceholderElementsWithClonedPermanentElements=function(m){var b,E,T,A,I,M,L;for(L=[],T=0,A=m.length;A>T;T++)M=m[T],E=M.element,I=M.permanentElement,b=I.cloneNode(!0),L.push(o(E,b));return L},p.prototype.activateNewBodyScriptElements=function(){var m,b,E,T,A,I;for(A=this.getNewBodyScriptElements(),I=[],b=0,T=A.length;T>b;b++)E=A[b],m=this.createScriptElement(E),I.push(o(E,m));return I},p.prototype.assignNewBody=function(){return document.body=this.newBody},p.prototype.focusFirstAutofocusableElement=function(){var m;return(m=this.newSnapshot.findFirstAutofocusableElement())!=null?m.focus():void 0},p.prototype.getNewHeadStylesheetElements=function(){return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails)},p.prototype.getNewHeadScriptElements=function(){return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails)},p.prototype.getCurrentHeadProvisionalElements=function(){return this.currentHeadDetails.getProvisionalElements()},p.prototype.getNewHeadProvisionalElements=function(){return this.newHeadDetails.getProvisionalElements()},p.prototype.getCurrentBodyPermanentElements=function(){return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot)},p.prototype.getNewBodyScriptElements=function(){return this.newBody.querySelectorAll("script")},p}(n.Renderer),r=function(d){var p;return p=document.createElement("meta"),p.setAttribute("name","turbolinks-permanent-placeholder"),p.setAttribute("content",d.id),{element:p,permanentElement:d}},o=function(d,p){var m;return(m=d.parentNode)?m.replaceChild(p,d):void 0}}.call(this),function(){var r=function(a,c){function d(){this.constructor=a}for(var p in c)o.call(c,p)&&(a[p]=c[p]);return d.prototype=c.prototype,a.prototype=new d,a.__super__=c.prototype,a},o={}.hasOwnProperty;n.ErrorRenderer=function(a){function c(d){var p;p=document.createElement("html"),p.innerHTML=d,this.newHead=p.querySelector("head"),this.newBody=p.querySelector("body")}return r(c,a),c.prototype.render=function(d){return this.renderView(function(p){return function(){return p.replaceHeadAndBody(),p.activateBodyScriptElements(),d()}}(this))},c.prototype.replaceHeadAndBody=function(){var d,p;return p=document.head,d=document.body,p.parentNode.replaceChild(this.newHead,p),d.parentNode.replaceChild(this.newBody,d)},c.prototype.activateBodyScriptElements=function(){var d,p,m,b,E,T;for(b=this.getScriptElements(),T=[],p=0,m=b.length;m>p;p++)E=b[p],d=this.createScriptElement(E),T.push(E.parentNode.replaceChild(d,E));return T},c.prototype.getScriptElements=function(){return document.documentElement.querySelectorAll("script")},c}(n.Renderer)}.call(this),function(){n.View=function(){function r(o){this.delegate=o,this.htmlElement=document.documentElement}return r.prototype.getRootLocation=function(){return this.getSnapshot().getRootLocation()},r.prototype.getElementForAnchor=function(o){return this.getSnapshot().getElementForAnchor(o)},r.prototype.getSnapshot=function(){return n.Snapshot.fromHTMLElement(this.htmlElement)},r.prototype.render=function(o,a){var c,d,p;return p=o.snapshot,c=o.error,d=o.isPreview,this.markAsPreview(d),p!=null?this.renderSnapshot(p,d,a):this.renderError(c,a)},r.prototype.markAsPreview=function(o){return o?this.htmlElement.setAttribute("data-turbolinks-preview",""):this.htmlElement.removeAttribute("data-turbolinks-preview")},r.prototype.renderSnapshot=function(o,a,c){return n.SnapshotRenderer.render(this.delegate,c,this.getSnapshot(),n.Snapshot.wrap(o),a)},r.prototype.renderError=function(o,a){return n.ErrorRenderer.render(this.delegate,a,o)},r}()}.call(this),function(){var r=function(o,a){return function(){return o.apply(a,arguments)}};n.ScrollManager=function(){function o(a){this.delegate=a,this.onScroll=r(this.onScroll,this),this.onScroll=n.throttle(this.onScroll)}return o.prototype.start=function(){return this.started?void 0:(addEventListener("scroll",this.onScroll,!1),this.onScroll(),this.started=!0)},o.prototype.stop=function(){return this.started?(removeEventListener("scroll",this.onScroll,!1),this.started=!1):void 0},o.prototype.scrollToElement=function(a){return a.scrollIntoView()},o.prototype.scrollToPosition=function(a){var c,d;return c=a.x,d=a.y,window.scrollTo(c,d)},o.prototype.onScroll=function(a){return this.updatePosition({x:window.pageXOffset,y:window.pageYOffset})},o.prototype.updatePosition=function(a){var c;return this.position=a,(c=this.delegate)!=null?c.scrollPositionChanged(this.position):void 0},o}()}.call(this),function(){n.SnapshotCache=function(){function r(a){this.size=a,this.keys=[],this.snapshots={}}var o;return r.prototype.has=function(a){var c;return c=o(a),c in this.snapshots},r.prototype.get=function(a){var c;if(this.has(a))return c=this.read(a),this.touch(a),c},r.prototype.put=function(a,c){return this.write(a,c),this.touch(a),c},r.prototype.read=function(a){var c;return c=o(a),this.snapshots[c]},r.prototype.write=function(a,c){var d;return d=o(a),this.snapshots[d]=c},r.prototype.touch=function(a){var c,d;return d=o(a),c=this.keys.indexOf(d),c>-1&&this.keys.splice(c,1),this.keys.unshift(d),this.trim()},r.prototype.trim=function(){var a,c,d,p,m;for(p=this.keys.splice(this.size),m=[],a=0,d=p.length;d>a;a++)c=p[a],m.push(delete this.snapshots[c]);return m},o=function(a){return n.Location.wrap(a).toCacheKey()},r}()}.call(this),function(){var r=function(o,a){return function(){return o.apply(a,arguments)}};n.Visit=function(){function o(c,d,p){this.controller=c,this.action=p,this.performScroll=r(this.performScroll,this),this.identifier=n.uuid(),this.location=n.Location.wrap(d),this.adapter=this.controller.adapter,this.state="initialized",this.timingMetrics={}}var a;return o.prototype.start=function(){return this.state==="initialized"?(this.recordTimingMetric("visitStart"),this.state="started",this.adapter.visitStarted(this)):void 0},o.prototype.cancel=function(){var c;return this.state==="started"?((c=this.request)!=null&&c.cancel(),this.cancelRender(),this.state="canceled"):void 0},o.prototype.complete=function(){var c;return this.state==="started"?(this.recordTimingMetric("visitEnd"),this.state="completed",typeof(c=this.adapter).visitCompleted=="function"&&c.visitCompleted(this),this.controller.visitCompleted(this)):void 0},o.prototype.fail=function(){var c;return this.state==="started"?(this.state="failed",typeof(c=this.adapter).visitFailed=="function"?c.visitFailed(this):void 0):void 0},o.prototype.changeHistory=function(){var c,d;return this.historyChanged?void 0:(c=this.location.isEqualTo(this.referrer)?"replace":this.action,d=a(c),this.controller[d](this.location,this.restorationIdentifier),this.historyChanged=!0)},o.prototype.issueRequest=function(){return this.shouldIssueRequest()&&this.request==null?(this.progress=0,this.request=new n.HttpRequest(this,this.location,this.referrer),this.request.send()):void 0},o.prototype.getCachedSnapshot=function(){var c;return!(c=this.controller.getCachedSnapshotForLocation(this.location))||this.location.anchor!=null&&!c.hasAnchor(this.location.anchor)||this.action!=="restore"&&!c.isPreviewable()?void 0:c},o.prototype.hasCachedSnapshot=function(){return this.getCachedSnapshot()!=null},o.prototype.loadCachedSnapshot=function(){var c,d;return(d=this.getCachedSnapshot())?(c=this.shouldIssueRequest(),this.render(function(){var p;return this.cacheSnapshot(),this.controller.render({snapshot:d,isPreview:c},this.performScroll),typeof(p=this.adapter).visitRendered=="function"&&p.visitRendered(this),c?void 0:this.complete()})):void 0},o.prototype.loadResponse=function(){return this.response!=null?this.render(function(){var c,d;return this.cacheSnapshot(),this.request.failed?(this.controller.render({error:this.response},this.performScroll),typeof(c=this.adapter).visitRendered=="function"&&c.visitRendered(this),this.fail()):(this.controller.render({snapshot:this.response},this.performScroll),typeof(d=this.adapter).visitRendered=="function"&&d.visitRendered(this),this.complete())}):void 0},o.prototype.followRedirect=function(){return this.redirectedToLocation&&!this.followedRedirect?(this.location=this.redirectedToLocation,this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation,this.restorationIdentifier),this.followedRedirect=!0):void 0},o.prototype.requestStarted=function(){var c;return this.recordTimingMetric("requestStart"),typeof(c=this.adapter).visitRequestStarted=="function"?c.visitRequestStarted(this):void 0},o.prototype.requestProgressed=function(c){var d;return this.progress=c,typeof(d=this.adapter).visitRequestProgressed=="function"?d.visitRequestProgressed(this):void 0},o.prototype.requestCompletedWithResponse=function(c,d){return this.response=c,d!=null&&(this.redirectedToLocation=n.Location.wrap(d)),this.adapter.visitRequestCompleted(this)},o.prototype.requestFailedWithStatusCode=function(c,d){return this.response=d,this.adapter.visitRequestFailedWithStatusCode(this,c)},o.prototype.requestFinished=function(){var c;return this.recordTimingMetric("requestEnd"),typeof(c=this.adapter).visitRequestFinished=="function"?c.visitRequestFinished(this):void 0},o.prototype.performScroll=function(){return this.scrolled?void 0:(this.action==="restore"?this.scrollToRestoredPosition()||this.scrollToTop():this.scrollToAnchor()||this.scrollToTop(),this.scrolled=!0)},o.prototype.scrollToRestoredPosition=function(){var c,d;return c=(d=this.restorationData)!=null?d.scrollPosition:void 0,c!=null?(this.controller.scrollToPosition(c),!0):void 0},o.prototype.scrollToAnchor=function(){return this.location.anchor!=null?(this.controller.scrollToAnchor(this.location.anchor),!0):void 0},o.prototype.scrollToTop=function(){return this.controller.scrollToPosition({x:0,y:0})},o.prototype.recordTimingMetric=function(c){var d;return(d=this.timingMetrics)[c]!=null?d[c]:d[c]=new Date().getTime()},o.prototype.getTimingMetrics=function(){return n.copyObject(this.timingMetrics)},a=function(c){switch(c){case"replace":return"replaceHistoryWithLocationAndRestorationIdentifier";case"advance":case"restore":return"pushHistoryWithLocationAndRestorationIdentifier"}},o.prototype.shouldIssueRequest=function(){return this.action==="restore"?!this.hasCachedSnapshot():!0},o.prototype.cacheSnapshot=function(){return this.snapshotCached?void 0:(this.controller.cacheSnapshot(),this.snapshotCached=!0)},o.prototype.render=function(c){return this.cancelRender(),this.frame=requestAnimationFrame(function(d){return function(){return d.frame=null,c.call(d)}}(this))},o.prototype.cancelRender=function(){return this.frame?cancelAnimationFrame(this.frame):void 0},o}()}.call(this),function(){var r=function(o,a){return function(){return o.apply(a,arguments)}};n.Controller=function(){function o(){this.clickBubbled=r(this.clickBubbled,this),this.clickCaptured=r(this.clickCaptured,this),this.pageLoaded=r(this.pageLoaded,this),this.history=new n.History(this),this.view=new n.View(this),this.scrollManager=new n.ScrollManager(this),this.restorationData={},this.clearCache(),this.setProgressBarDelay(500)}return o.prototype.start=function(){return n.supported&&!this.started?(addEventListener("click",this.clickCaptured,!0),addEventListener("DOMContentLoaded",this.pageLoaded,!1),this.scrollManager.start(),this.startHistory(),this.started=!0,this.enabled=!0):void 0},o.prototype.disable=function(){return this.enabled=!1},o.prototype.stop=function(){return this.started?(removeEventListener("click",this.clickCaptured,!0),removeEventListener("DOMContentLoaded",this.pageLoaded,!1),this.scrollManager.stop(),this.stopHistory(),this.started=!1):void 0},o.prototype.clearCache=function(){return this.cache=new n.SnapshotCache(10)},o.prototype.visit=function(a,c){var d,p;return c==null&&(c={}),a=n.Location.wrap(a),this.applicationAllowsVisitingLocation(a)?this.locationIsVisitable(a)?(d=(p=c.action)!=null?p:"advance",this.adapter.visitProposedToLocationWithAction(a,d)):window.location=a:void 0},o.prototype.startVisitToLocationWithAction=function(a,c,d){var p;return n.supported?(p=this.getRestorationDataForIdentifier(d),this.startVisit(a,c,{restorationData:p})):window.location=a},o.prototype.setProgressBarDelay=function(a){return this.progressBarDelay=a},o.prototype.startHistory=function(){return this.location=n.Location.wrap(window.location),this.restorationIdentifier=n.uuid(),this.history.start(),this.history.replace(this.location,this.restorationIdentifier)},o.prototype.stopHistory=function(){return this.history.stop()},o.prototype.pushHistoryWithLocationAndRestorationIdentifier=function(a,c){return this.restorationIdentifier=c,this.location=n.Location.wrap(a),this.history.push(this.location,this.restorationIdentifier)},o.prototype.replaceHistoryWithLocationAndRestorationIdentifier=function(a,c){return this.restorationIdentifier=c,this.location=n.Location.wrap(a),this.history.replace(this.location,this.restorationIdentifier)},o.prototype.historyPoppedToLocationWithRestorationIdentifier=function(a,c){var d;return this.restorationIdentifier=c,this.enabled?(d=this.getRestorationDataForIdentifier(this.restorationIdentifier),this.startVisit(a,"restore",{restorationIdentifier:this.restorationIdentifier,restorationData:d,historyChanged:!0}),this.location=n.Location.wrap(a)):this.adapter.pageInvalidated()},o.prototype.getCachedSnapshotForLocation=function(a){var c;return(c=this.cache.get(a))!=null?c.clone():void 0},o.prototype.shouldCacheSnapshot=function(){return this.view.getSnapshot().isCacheable()},o.prototype.cacheSnapshot=function(){var a,c;return this.shouldCacheSnapshot()?(this.notifyApplicationBeforeCachingSnapshot(),c=this.view.getSnapshot(),a=this.lastRenderedLocation,n.defer(function(d){return function(){return d.cache.put(a,c.clone())}}(this))):void 0},o.prototype.scrollToAnchor=function(a){var c;return(c=this.view.getElementForAnchor(a))?this.scrollToElement(c):this.scrollToPosition({x:0,y:0})},o.prototype.scrollToElement=function(a){return this.scrollManager.scrollToElement(a)},o.prototype.scrollToPosition=function(a){return this.scrollManager.scrollToPosition(a)},o.prototype.scrollPositionChanged=function(a){var c;return c=this.getCurrentRestorationData(),c.scrollPosition=a},o.prototype.render=function(a,c){return this.view.render(a,c)},o.prototype.viewInvalidated=function(){return this.adapter.pageInvalidated()},o.prototype.viewWillRender=function(a){return this.notifyApplicationBeforeRender(a)},o.prototype.viewRendered=function(){return this.lastRenderedLocation=this.currentVisit.location,this.notifyApplicationAfterRender()},o.prototype.pageLoaded=function(){return this.lastRenderedLocation=this.location,this.notifyApplicationAfterPageLoad()},o.prototype.clickCaptured=function(){return removeEventListener("click",this.clickBubbled,!1),addEventListener("click",this.clickBubbled,!1)},o.prototype.clickBubbled=function(a){var c,d,p;return this.enabled&&this.clickEventIsSignificant(a)&&(d=this.getVisitableLinkForNode(a.target))&&(p=this.getVisitableLocationForLink(d))&&this.applicationAllowsFollowingLinkToLocation(d,p)?(a.preventDefault(),c=this.getActionForLink(d),this.visit(p,{action:c})):void 0},o.prototype.applicationAllowsFollowingLinkToLocation=function(a,c){var d;return d=this.notifyApplicationAfterClickingLinkToLocation(a,c),!d.defaultPrevented},o.prototype.applicationAllowsVisitingLocation=function(a){var c;return c=this.notifyApplicationBeforeVisitingLocation(a),!c.defaultPrevented},o.prototype.notifyApplicationAfterClickingLinkToLocation=function(a,c){return n.dispatch("turbolinks:click",{target:a,data:{url:c.absoluteURL},cancelable:!0})},o.prototype.notifyApplicationBeforeVisitingLocation=function(a){return n.dispatch("turbolinks:before-visit",{data:{url:a.absoluteURL},cancelable:!0})},o.prototype.notifyApplicationAfterVisitingLocation=function(a){return n.dispatch("turbolinks:visit",{data:{url:a.absoluteURL}})},o.prototype.notifyApplicationBeforeCachingSnapshot=function(){return n.dispatch("turbolinks:before-cache")},o.prototype.notifyApplicationBeforeRender=function(a){return n.dispatch("turbolinks:before-render",{data:{newBody:a}})},o.prototype.notifyApplicationAfterRender=function(){return n.dispatch("turbolinks:render")},o.prototype.notifyApplicationAfterPageLoad=function(a){return a==null&&(a={}),n.dispatch("turbolinks:load",{data:{url:this.location.absoluteURL,timing:a}})},o.prototype.startVisit=function(a,c,d){var p;return(p=this.currentVisit)!=null&&p.cancel(),this.currentVisit=this.createVisit(a,c,d),this.currentVisit.start(),this.notifyApplicationAfterVisitingLocation(a)},o.prototype.createVisit=function(a,c,d){var p,m,b,E,T;return m=d??{},E=m.restorationIdentifier,b=m.restorationData,p=m.historyChanged,T=new n.Visit(this,a,c),T.restorationIdentifier=E??n.uuid(),T.restorationData=n.copyObject(b),T.historyChanged=p,T.referrer=this.location,T},o.prototype.visitCompleted=function(a){return this.notifyApplicationAfterPageLoad(a.getTimingMetrics())},o.prototype.clickEventIsSignificant=function(a){return!(a.defaultPrevented||a.target.isContentEditable||a.which>1||a.altKey||a.ctrlKey||a.metaKey||a.shiftKey)},o.prototype.getVisitableLinkForNode=function(a){return this.nodeIsVisitable(a)?n.closest(a,"a[href]:not([target]):not([download])"):void 0},o.prototype.getVisitableLocationForLink=function(a){var c;return c=new n.Location(a.getAttribute("href")),this.locationIsVisitable(c)?c:void 0},o.prototype.getActionForLink=function(a){var c;return(c=a.getAttribute("data-turbolinks-action"))!=null?c:"advance"},o.prototype.nodeIsVisitable=function(a){var c;return(c=n.closest(a,"[data-turbolinks]"))?c.getAttribute("data-turbolinks")!=="false":!0},o.prototype.locationIsVisitable=function(a){return a.isPrefixedBy(this.view.getRootLocation())&&a.isHTML()},o.prototype.getCurrentRestorationData=function(){return this.getRestorationDataForIdentifier(this.restorationIdentifier)},o.prototype.getRestorationDataForIdentifier=function(a){var c;return(c=this.restorationData)[a]!=null?c[a]:c[a]={}},o}()}.call(this),function(){(function(){var r,o;if((r=o=document.currentScript)&&!o.hasAttribute("data-turbolinks-suppress-warning")){for(;r=r.parentNode;)if(r===document.body)return console.warn(`You are loading Turbolinks from a - @vite(['resources/js/app.js']) + @vite(['themes/default/js/app.js'], 'default') @stack('scripts') diff --git a/resources/views/layouts/footer.blade.php b/themes/default/views/layouts/footer.blade.php similarity index 100% rename from resources/views/layouts/footer.blade.php rename to themes/default/views/layouts/footer.blade.php diff --git a/resources/views/layouts/header.blade.php b/themes/default/views/layouts/header.blade.php similarity index 100% rename from resources/views/layouts/header.blade.php rename to themes/default/views/layouts/header.blade.php diff --git a/resources/views/pages/about/safety.blade.php b/themes/default/views/pages/about/safety.blade.php similarity index 100% rename from resources/views/pages/about/safety.blade.php rename to themes/default/views/pages/about/safety.blade.php diff --git a/resources/views/pages/articles/fragments/active-content.blade.php b/themes/default/views/pages/articles/fragments/active-content.blade.php similarity index 100% rename from resources/views/pages/articles/fragments/active-content.blade.php rename to themes/default/views/pages/articles/fragments/active-content.blade.php diff --git a/resources/views/pages/articles/fragments/article-comments.blade.php b/themes/default/views/pages/articles/fragments/article-comments.blade.php similarity index 100% rename from resources/views/pages/articles/fragments/article-comments.blade.php rename to themes/default/views/pages/articles/fragments/article-comments.blade.php diff --git a/resources/views/pages/articles/fragments/article-reactions.blade.php b/themes/default/views/pages/articles/fragments/article-reactions.blade.php similarity index 100% rename from resources/views/pages/articles/fragments/article-reactions.blade.php rename to themes/default/views/pages/articles/fragments/article-reactions.blade.php diff --git a/resources/views/pages/articles/index.blade.php b/themes/default/views/pages/articles/index.blade.php similarity index 100% rename from resources/views/pages/articles/index.blade.php rename to themes/default/views/pages/articles/index.blade.php diff --git a/resources/views/pages/auth/confirm-password.blade.php b/themes/default/views/pages/auth/confirm-password.blade.php similarity index 100% rename from resources/views/pages/auth/confirm-password.blade.php rename to themes/default/views/pages/auth/confirm-password.blade.php diff --git a/resources/views/pages/auth/register.blade.php b/themes/default/views/pages/auth/register.blade.php similarity index 100% rename from resources/views/pages/auth/register.blade.php rename to themes/default/views/pages/auth/register.blade.php diff --git a/resources/views/pages/auth/two-factor-challenge.blade.php b/themes/default/views/pages/auth/two-factor-challenge.blade.php similarity index 100% rename from resources/views/pages/auth/two-factor-challenge.blade.php rename to themes/default/views/pages/auth/two-factor-challenge.blade.php diff --git a/resources/views/pages/client/flash.blade.php b/themes/default/views/pages/client/flash.blade.php similarity index 100% rename from resources/views/pages/client/flash.blade.php rename to themes/default/views/pages/client/flash.blade.php diff --git a/resources/views/pages/client/nitro.blade.php b/themes/default/views/pages/client/nitro.blade.php similarity index 100% rename from resources/views/pages/client/nitro.blade.php rename to themes/default/views/pages/client/nitro.blade.php diff --git a/resources/views/pages/community/photos/index.blade.php b/themes/default/views/pages/community/photos/index.blade.php similarity index 100% rename from resources/views/pages/community/photos/index.blade.php rename to themes/default/views/pages/community/photos/index.blade.php diff --git a/resources/views/pages/community/rankings/_partials/ranking-box.blade.php b/themes/default/views/pages/community/rankings/_partials/ranking-box.blade.php similarity index 100% rename from resources/views/pages/community/rankings/_partials/ranking-box.blade.php rename to themes/default/views/pages/community/rankings/_partials/ranking-box.blade.php diff --git a/resources/views/pages/community/rankings/index.blade.php b/themes/default/views/pages/community/rankings/index.blade.php similarity index 100% rename from resources/views/pages/community/rankings/index.blade.php rename to themes/default/views/pages/community/rankings/index.blade.php diff --git a/resources/views/pages/community/staff/index.blade.php b/themes/default/views/pages/community/staff/index.blade.php similarity index 100% rename from resources/views/pages/community/staff/index.blade.php rename to themes/default/views/pages/community/staff/index.blade.php diff --git a/resources/views/pages/community/teams/index.blade.php b/themes/default/views/pages/community/teams/index.blade.php similarity index 100% rename from resources/views/pages/community/teams/index.blade.php rename to themes/default/views/pages/community/teams/index.blade.php diff --git a/resources/views/pages/guest/index.blade.php b/themes/default/views/pages/guest/index.blade.php similarity index 100% rename from resources/views/pages/guest/index.blade.php rename to themes/default/views/pages/guest/index.blade.php diff --git a/resources/views/pages/jail.blade.php b/themes/default/views/pages/jail.blade.php similarity index 100% rename from resources/views/pages/jail.blade.php rename to themes/default/views/pages/jail.blade.php diff --git a/resources/views/pages/maintenance.blade.php b/themes/default/views/pages/maintenance.blade.php similarity index 100% rename from resources/views/pages/maintenance.blade.php rename to themes/default/views/pages/maintenance.blade.php diff --git a/resources/views/pages/shop/index.blade.php b/themes/default/views/pages/shop/index.blade.php similarity index 100% rename from resources/views/pages/shop/index.blade.php rename to themes/default/views/pages/shop/index.blade.php diff --git a/resources/views/pages/support/questions/categories/show.blade.php b/themes/default/views/pages/support/questions/categories/show.blade.php similarity index 100% rename from resources/views/pages/support/questions/categories/show.blade.php rename to themes/default/views/pages/support/questions/categories/show.blade.php diff --git a/resources/views/pages/support/questions/index.blade.php b/themes/default/views/pages/support/questions/index.blade.php similarity index 100% rename from resources/views/pages/support/questions/index.blade.php rename to themes/default/views/pages/support/questions/index.blade.php diff --git a/resources/views/pages/support/questions/partials/back-button.blade.php b/themes/default/views/pages/support/questions/partials/back-button.blade.php similarity index 100% rename from resources/views/pages/support/questions/partials/back-button.blade.php rename to themes/default/views/pages/support/questions/partials/back-button.blade.php diff --git a/resources/views/pages/support/questions/partials/default-content.blade.php b/themes/default/views/pages/support/questions/partials/default-content.blade.php similarity index 100% rename from resources/views/pages/support/questions/partials/default-content.blade.php rename to themes/default/views/pages/support/questions/partials/default-content.blade.php diff --git a/resources/views/pages/support/questions/partials/researched-content.blade.php b/themes/default/views/pages/support/questions/partials/researched-content.blade.php similarity index 100% rename from resources/views/pages/support/questions/partials/researched-content.blade.php rename to themes/default/views/pages/support/questions/partials/researched-content.blade.php diff --git a/resources/views/pages/support/questions/show.blade.php b/themes/default/views/pages/support/questions/show.blade.php similarity index 100% rename from resources/views/pages/support/questions/show.blade.php rename to themes/default/views/pages/support/questions/show.blade.php diff --git a/resources/views/pages/users/fragments/change-username.blade.php b/themes/default/views/pages/users/fragments/change-username.blade.php similarity index 100% rename from resources/views/pages/users/fragments/change-username.blade.php rename to themes/default/views/pages/users/fragments/change-username.blade.php diff --git a/resources/views/pages/users/fragments/discord-widget.blade.php b/themes/default/views/pages/users/fragments/discord-widget.blade.php similarity index 100% rename from resources/views/pages/users/fragments/discord-widget.blade.php rename to themes/default/views/pages/users/fragments/discord-widget.blade.php diff --git a/resources/views/pages/users/fragments/latest-articles.blade.php b/themes/default/views/pages/users/fragments/latest-articles.blade.php similarity index 100% rename from resources/views/pages/users/fragments/latest-articles.blade.php rename to themes/default/views/pages/users/fragments/latest-articles.blade.php diff --git a/resources/views/pages/users/fragments/user/balances.blade.php b/themes/default/views/pages/users/fragments/user/balances.blade.php similarity index 100% rename from resources/views/pages/users/fragments/user/balances.blade.php rename to themes/default/views/pages/users/fragments/user/balances.blade.php diff --git a/resources/views/pages/users/fragments/user/client-buttons.blade.php b/themes/default/views/pages/users/fragments/user/client-buttons.blade.php similarity index 100% rename from resources/views/pages/users/fragments/user/client-buttons.blade.php rename to themes/default/views/pages/users/fragments/user/client-buttons.blade.php diff --git a/resources/views/pages/users/fragments/user/online-friends.blade.php b/themes/default/views/pages/users/fragments/user/online-friends.blade.php similarity index 100% rename from resources/views/pages/users/fragments/user/online-friends.blade.php rename to themes/default/views/pages/users/fragments/user/online-friends.blade.php diff --git a/resources/views/pages/users/fragments/user/referrals.blade.php b/themes/default/views/pages/users/fragments/user/referrals.blade.php similarity index 100% rename from resources/views/pages/users/fragments/user/referrals.blade.php rename to themes/default/views/pages/users/fragments/user/referrals.blade.php diff --git a/resources/views/pages/users/fragments/user/stories.blade.php b/themes/default/views/pages/users/fragments/user/stories.blade.php similarity index 100% rename from resources/views/pages/users/fragments/user/stories.blade.php rename to themes/default/views/pages/users/fragments/user/stories.blade.php diff --git a/resources/views/pages/users/index.blade.php b/themes/default/views/pages/users/index.blade.php similarity index 100% rename from resources/views/pages/users/index.blade.php rename to themes/default/views/pages/users/index.blade.php diff --git a/resources/views/pages/users/profile/partials/user-not-found.blade.php b/themes/default/views/pages/users/profile/partials/user-not-found.blade.php similarity index 100% rename from resources/views/pages/users/profile/partials/user-not-found.blade.php rename to themes/default/views/pages/users/profile/partials/user-not-found.blade.php diff --git a/resources/views/pages/users/profile/show.blade.php b/themes/default/views/pages/users/profile/show.blade.php similarity index 100% rename from resources/views/pages/users/profile/show.blade.php rename to themes/default/views/pages/users/profile/show.blade.php diff --git a/resources/views/pages/users/purchases.blade.php b/themes/default/views/pages/users/purchases.blade.php similarity index 100% rename from resources/views/pages/users/purchases.blade.php rename to themes/default/views/pages/users/purchases.blade.php diff --git a/resources/views/pages/users/settings/fragments/2fa.blade.php b/themes/default/views/pages/users/settings/fragments/2fa.blade.php similarity index 100% rename from resources/views/pages/users/settings/fragments/2fa.blade.php rename to themes/default/views/pages/users/settings/fragments/2fa.blade.php diff --git a/resources/views/pages/users/settings/fragments/2fa/confirm.blade.php b/themes/default/views/pages/users/settings/fragments/2fa/confirm.blade.php similarity index 100% rename from resources/views/pages/users/settings/fragments/2fa/confirm.blade.php rename to themes/default/views/pages/users/settings/fragments/2fa/confirm.blade.php diff --git a/resources/views/pages/users/settings/fragments/2fa/disable.blade.php b/themes/default/views/pages/users/settings/fragments/2fa/disable.blade.php similarity index 100% rename from resources/views/pages/users/settings/fragments/2fa/disable.blade.php rename to themes/default/views/pages/users/settings/fragments/2fa/disable.blade.php diff --git a/resources/views/pages/users/settings/fragments/2fa/enable.blade.php b/themes/default/views/pages/users/settings/fragments/2fa/enable.blade.php similarity index 100% rename from resources/views/pages/users/settings/fragments/2fa/enable.blade.php rename to themes/default/views/pages/users/settings/fragments/2fa/enable.blade.php diff --git a/resources/views/pages/users/settings/fragments/account.blade.php b/themes/default/views/pages/users/settings/fragments/account.blade.php similarity index 100% rename from resources/views/pages/users/settings/fragments/account.blade.php rename to themes/default/views/pages/users/settings/fragments/account.blade.php diff --git a/resources/views/pages/users/settings/fragments/ingame.blade.php b/themes/default/views/pages/users/settings/fragments/ingame.blade.php similarity index 100% rename from resources/views/pages/users/settings/fragments/ingame.blade.php rename to themes/default/views/pages/users/settings/fragments/ingame.blade.php diff --git a/resources/views/pages/users/settings/fragments/password.blade.php b/themes/default/views/pages/users/settings/fragments/password.blade.php similarity index 100% rename from resources/views/pages/users/settings/fragments/password.blade.php rename to themes/default/views/pages/users/settings/fragments/password.blade.php diff --git a/resources/views/pages/users/settings/index.blade.php b/themes/default/views/pages/users/settings/index.blade.php similarity index 100% rename from resources/views/pages/users/settings/index.blade.php rename to themes/default/views/pages/users/settings/index.blade.php diff --git a/resources/views/partials/js-parities.blade.php b/themes/default/views/partials/js-parities.blade.php similarity index 100% rename from resources/views/partials/js-parities.blade.php rename to themes/default/views/partials/js-parities.blade.php diff --git a/resources/views/vendor/pagination/home-widget.blade.php b/themes/default/views/vendor/pagination/home-widget.blade.php similarity index 100% rename from resources/views/vendor/pagination/home-widget.blade.php rename to themes/default/views/vendor/pagination/home-widget.blade.php diff --git a/resources/views/vendor/pagination/tailwind.blade.php b/themes/default/views/vendor/pagination/tailwind.blade.php similarity index 100% rename from resources/views/vendor/pagination/tailwind.blade.php rename to themes/default/views/vendor/pagination/tailwind.blade.php diff --git a/themes/default/vite.config.js b/themes/default/vite.config.js new file mode 100644 index 00000000..0b18ee6a --- /dev/null +++ b/themes/default/vite.config.js @@ -0,0 +1,36 @@ +import { defineConfig } from "vite"; +import laravel from "laravel-vite-plugin"; +import path from "path"; + +export default defineConfig({ + build: { + outDir: path.join(__dirname, '..', '..', 'public', 'build'), + emptyOutDir: true, + }, + plugins: [ + laravel({ + input: [ + "themes/default/css/app.css", + "themes/default/js/app.js" + ], + buildDirectory: "default", + transformOnServe: (code) => code.replaceAll('/assets/', '/public/assets/'), + }), + ], + resolve: { + alias: { + '@': '/themes/default/js', + '@public': '/public', + '@packages': '/node_modules' + } + }, + css: { + postcss: { + plugins: [ + require("tailwindcss")({ + config: path.resolve(__dirname, "tailwind.config.js"), + }), + ], + }, + }, +}); diff --git a/vite.config.js b/vite.config.js deleted file mode 100644 index e1966a51..00000000 --- a/vite.config.js +++ /dev/null @@ -1,26 +0,0 @@ -import { defineConfig } from 'vite' -import laravel from 'laravel-vite-plugin' -import Path from 'path' - -export default defineConfig({ - build: { - outDir: Path.join(__dirname, 'public', 'build'), - emptyOutDir: true, - }, - server: { - host: 'localhost' - }, - plugins: [ - laravel({ - input: ['resources/scss/app.scss', 'resources/js/app.js', 'resources/js/client.js'], - refresh: true, - transformOnServe: (code) => code.replaceAll('/assets/', '/public/assets/'), - }), - ], - resolve: { - alias: { - '@public': '/public', - '@packages': '/node_modules' - } - } -})