diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ab7d958c..b10a5b9b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -83,6 +83,7 @@ lint-js: - pnpm run format - pnpm run typecheck - pnpm run lint + - pnpm run lint:css dependencies: - js-dependencies rules: diff --git a/.rsync-filter b/.rsync-filter index 576403e0..683ffa60 100644 --- a/.rsync-filter +++ b/.rsync-filter @@ -1,7 +1,7 @@ # rsync filter rules to copy required files for Castopod's bundle -+ app/Resources/icons/*** -- app/Resources/** ++ resources/icons/*** +- resources/** + app/*** + modules/*** + public/*** diff --git a/app/Config/Images.php b/app/Config/Images.php index 7d3ca529..6e872a0b 100644 --- a/app/Config/Images.php +++ b/app/Config/Images.php @@ -130,7 +130,7 @@ class Images extends BaseConfig ], ]; - public string $avatarDefaultPath = 'castopod-avatar.jpg'; + public string $avatarDefaultPath = 'assets/images/castopod-avatar.jpg'; public string $avatarDefaultMimeType = 'image/jpg'; @@ -139,31 +139,31 @@ class Images extends BaseConfig */ public array $podcastBannerDefaultPaths = [ 'default' => [ - 'path' => 'castopod-banner-pine.jpg', + 'path' => 'assets/images/castopod-banner-pine.jpg', 'mimetype' => 'image/jpeg', ], 'pine' => [ - 'path' => 'castopod-banner-pine.jpg', + 'path' => 'assets/images/castopod-banner-pine.jpg', 'mimetype' => 'image/jpeg', ], 'crimson' => [ - 'path' => 'castopod-banner-crimson.jpg', + 'path' => 'assets/images/castopod-banner-crimson.jpg', 'mimetype' => 'image/jpeg', ], 'amber' => [ - 'path' => 'castopod-banner-amber.jpg', + 'path' => 'assets/images/castopod-banner-amber.jpg', 'mimetype' => 'image/jpeg', ], 'lake' => [ - 'path' => 'castopod-banner-lake.jpg', + 'path' => 'assets/images/castopod-banner-lake.jpg', 'mimetype' => 'image/jpeg', ], 'jacaranda' => [ - 'path' => 'castopod-banner-jacaranda.jpg', + 'path' => 'assets/images/castopod-banner-jacaranda.jpg', 'mimetype' => 'image/jpeg', ], 'onyx' => [ - 'path' => 'castopod-banner-onyx.jpg', + 'path' => 'assets/images/castopod-banner-onyx.jpg', 'mimetype' => 'image/jpeg', ], ]; diff --git a/app/Config/Vite.php b/app/Config/Vite.php new file mode 100644 index 00000000..c0d42da4 --- /dev/null +++ b/app/Config/Vite.php @@ -0,0 +1,27 @@ +,exclude?:list,assets:list}> + */ + public array $routesAssets = []; +} diff --git a/app/Helpers/components_helper.php b/app/Helpers/components_helper.php index 4c81c21a..81265862 100644 --- a/app/Helpers/components_helper.php +++ b/app/Helpers/components_helper.php @@ -382,13 +382,14 @@ if (! function_exists('audio_player')) { theme="light" language="{$language}" class="{$class} relative z-0" + icons="castopod-vm-player-icons" style="--vm-player-box-shadow:0; --vm-player-theme: hsl(var(--color-accent-base)); --vm-control-focus-color: hsl(var(--color-accent-contrast)); --vm-control-spacing: 4px; --vm-menu-item-focus-bg: hsl(var(--color-background-highlight));" > - + diff --git a/app/Libraries/Vite/Config/Services.php b/app/Libraries/Vite/Config/Services.php deleted file mode 100644 index 97364dc0..00000000 --- a/app/Libraries/Vite/Config/Services.php +++ /dev/null @@ -1,31 +0,0 @@ -|null - */ - protected ?array $manifestData = null; - - /** - * @var array|null - */ - protected ?array $manifestCSSData = null; - - public function asset(string $path, string $type): string - { - if (config('Vite')->environment !== 'production') { - return $this->loadDev($path, $type); - } - - return $this->loadProd($path, $type); - } - - private function loadDev(string $path, string $type): string - { - return $this->getHtmlTag(config('Vite') ->baseUrl . config('Vite')->assetsRoot . "/{$path}", $type); - } - - private function loadProd(string $path, string $type): string - { - if ($this->manifestData === null) { - $cacheName = 'vite-manifest'; - if (! ($cachedManifest = cache($cacheName))) { - $manifestPath = config('Vite') - ->assetsRoot . '/' . config('Vite') - ->manifestFile; - try { - if (($manifestContents = file_get_contents($manifestPath)) !== false) { - $cachedManifest = json_decode($manifestContents, true); - cache() - ->save($cacheName, $cachedManifest, DECADE); - } - } catch (ErrorException) { - // ERROR when retrieving the manifest file - die("Could not load manifest: {$manifestPath} file not found!"); - } - } - - $this->manifestData = $cachedManifest; - } - - $html = ''; - if (array_key_exists($path, $this->manifestData)) { - $manifestElement = $this->manifestData[$path]; - - // import css dependencies if any - if (array_key_exists('css', $manifestElement)) { - foreach ($manifestElement['css'] as $cssFile) { - $html .= $this->getHtmlTag('/' . config('Vite')->assetsRoot . '/' . $cssFile, 'css'); - } - } - - // import dependencies first for faster js loading - if (array_key_exists('imports', $manifestElement)) { - foreach ($manifestElement['imports'] as $importPath) { - if (array_key_exists($importPath, $this->manifestData)) { - // import css dependencies if any - if (array_key_exists('css', $this->manifestData[$importPath])) { - foreach ($this->manifestData[$importPath]['css'] as $cssFile) { - $html .= $this->getHtmlTag( - '/' . config('Vite')->assetsRoot . '/' . $cssFile, - 'css' - ); - } - } - - $html .= $this->getHtmlTag( - '/' . config('Vite')->assetsRoot . '/' . $this->manifestData[$importPath]['file'], - 'js' - ); - } - } - } - - $html .= $this->getHtmlTag('/' . config('Vite')->assetsRoot . '/' . $manifestElement['file'], $type); - } - - return $html; - } - - private function getHtmlTag(string $assetUrl, string $type): string - { - return match ($type) { - 'css' => << - HTML - , - 'js' => << - HTML - , - default => '', - }; - } -} diff --git a/app/Resources/images/castopod-logo-base.svg b/app/Resources/images/castopod-logo-base.svg deleted file mode 100644 index 482eebfe..00000000 --- a/app/Resources/images/castopod-logo-base.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/Resources/images/castopod-logo.svg b/app/Resources/images/castopod-logo.svg deleted file mode 100644 index 039deb74..00000000 --- a/app/Resources/images/castopod-logo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/app/Resources/images/castopod-mascot_confused.svg b/app/Resources/images/castopod-mascot_confused.svg deleted file mode 100644 index ab32c445..00000000 --- a/app/Resources/images/castopod-mascot_confused.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/Resources/js/admin.ts b/app/Resources/js/admin.ts deleted file mode 100644 index c4fe7dea..00000000 --- a/app/Resources/js/admin.ts +++ /dev/null @@ -1,40 +0,0 @@ -import "@github/markdown-toolbar-element"; -import "@github/relative-time-element"; -import "./modules/audio-clipper"; -import ClientTimezone from "./modules/ClientTimezone"; -import Clipboard from "./modules/Clipboard"; -import DateTimePicker from "./modules/DateTimePicker"; -import Dropdown from "./modules/Dropdown"; -import HotKeys from "./modules/HotKeys"; -import "./modules/markdown-preview"; -import "./modules/markdown-write-preview"; -import MultiSelect from "./modules/MultiSelect"; -import "./modules/permalink-edit"; -import "./modules/play-soundbite"; -import PublishMessageWarning from "./modules/PublishMessageWarning"; -import Select from "./modules/Select"; -import SidebarToggler from "./modules/SidebarToggler"; -import Slugify from "./modules/Slugify"; -import ThemePicker from "./modules/ThemePicker"; -import Time from "./modules/Time"; -import Tooltip from "./modules/Tooltip"; -import ValidateFileSize from "./modules/ValidateFileSize"; -import "./modules/video-clip-previewer"; -import VideoClipBuilder from "./modules/VideoClipBuilder"; -import "./modules/xml-editor"; - -Dropdown(); -Tooltip(); -Select(); -MultiSelect(); -Slugify(); -SidebarToggler(); -ClientTimezone(); -DateTimePicker(); -Time(); -Clipboard(); -ThemePicker(); -PublishMessageWarning(); -HotKeys(); -ValidateFileSize(); -VideoClipBuilder(); diff --git a/app/Resources/js/app.ts b/app/Resources/js/app.ts deleted file mode 100644 index 7b944f47..00000000 --- a/app/Resources/js/app.ts +++ /dev/null @@ -1,5 +0,0 @@ -import Dropdown from "./modules/Dropdown"; -import Tooltip from "./modules/Tooltip"; - -Dropdown(); -Tooltip(); diff --git a/app/Resources/js/charts.ts b/app/Resources/js/charts.ts deleted file mode 100644 index 97b2c4d9..00000000 --- a/app/Resources/js/charts.ts +++ /dev/null @@ -1,3 +0,0 @@ -import DrawCharts from "./modules/Charts"; - -DrawCharts(); diff --git a/app/Resources/js/install.ts b/app/Resources/js/install.ts deleted file mode 100644 index e3bb9d53..00000000 --- a/app/Resources/js/install.ts +++ /dev/null @@ -1,3 +0,0 @@ -import Tooltip from "./modules/Tooltip"; - -Tooltip(); diff --git a/app/Resources/js/map.ts b/app/Resources/js/map.ts deleted file mode 100644 index 195a97d0..00000000 --- a/app/Resources/js/map.ts +++ /dev/null @@ -1,3 +0,0 @@ -import DrawEpisodesMaps from "./modules/EpisodesMap"; - -DrawEpisodesMaps(); diff --git a/app/Resources/js/podcast.ts b/app/Resources/js/podcast.ts deleted file mode 100644 index 1d53a99f..00000000 --- a/app/Resources/js/podcast.ts +++ /dev/null @@ -1,10 +0,0 @@ -import "@github/relative-time-element"; -import SidebarToggler from "./modules/SidebarToggler"; -import Time from "./modules/Time"; -import Toggler from "./modules/Toggler"; -import Tooltip from "./modules/Tooltip"; - -Time(); -Toggler(); -Tooltip(); -SidebarToggler(); diff --git a/app/Resources/styles/index.css b/app/Resources/styles/index.css deleted file mode 100644 index b894e7a3..00000000 --- a/app/Resources/styles/index.css +++ /dev/null @@ -1,15 +0,0 @@ -@import url("./tailwind.css"); -@import url("./custom.css"); -@import url("./fonts.css"); -@import url("./colors.css"); -@import url("./breadcrumb.css"); -@import url("./dropdown.css"); -@import url("./choices.css"); -@import url("./radioBtn.css"); -@import url("./colorRadioBtn.css"); -@import url("./switch.css"); -@import url("./radioToggler.css"); -@import url("./formInputTabs.css"); -@import url("./stickyHeader.css"); -@import url("./readMore.css"); -@import url("./seeMore.css"); diff --git a/app/Views/errors/html/error_400.php b/app/Views/errors/html/error_400.php index 7c4d37a8..ae25b5c0 100644 --- a/app/Views/errors/html/error_400.php +++ b/app/Views/errors/html/error_400.php @@ -8,7 +8,7 @@ <?= lang('Errors.pageNotFound') ?> ' /> - asset('styles/index.css', 'css') ?> + asset('styles/index.css') ?> ' /> - asset('styles/index.css', 'css') ?> + asset('styles/index.css') ?> =8.1" + }, + "require-dev": { + "codeigniter/phpstan-codeigniter": "^1.5.4", + "codeigniter4/framework": "^v4.6.0", + "pestphp/pest": "^3.8.4", + "pestphp/pest-plugin-type-coverage": "^3.6.1", + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.22", + "rector/rector": "^2.1.4", + "symplify/coding-standard": "^12.4.3", + "symplify/easy-coding-standard": "^12.5.24" + }, + "type": "library", + "autoload": { + "psr-4": { + "CodeIgniterVite\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Yassine Doghri", + "homepage": "https://yassinedoghri.com/" + } + ], + "description": "An opinionated Vite integration for CodeIgniter4 projects.", + "keywords": [ + "codeigniter", + "codeigniter4", + "iconify", + "icons", + "php-icons" + ], + "support": { + "issues": "https://github.com/yassinedoghri/codeigniter-vite/issues", + "source": "https://github.com/yassinedoghri/codeigniter-vite/tree/v2.1.0" + }, + "time": "2025-09-09T18:36:45+00:00" + }, { "name": "yassinedoghri/php-icons", "version": "v1.3.0", @@ -3783,16 +3841,16 @@ "packages-dev": [ { "name": "captainhook/captainhook", - "version": "5.28.2", + "version": "5.28.3", "source": { "type": "git", "url": "https://github.com/captainhook-git/captainhook.git", - "reference": "2adbc8fea26823ecf52578998de5daf57846872f" + "reference": "5d35b249f3843ef36ead119f4347e649278ad6d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/captainhook-git/captainhook/zipball/2adbc8fea26823ecf52578998de5daf57846872f", - "reference": "2adbc8fea26823ecf52578998de5daf57846872f", + "url": "https://api.github.com/repos/captainhook-git/captainhook/zipball/5d35b249f3843ef36ead119f4347e649278ad6d8", + "reference": "5d35b249f3843ef36ead119f4347e649278ad6d8", "shasum": "" }, "require": { @@ -3855,7 +3913,7 @@ ], "support": { "issues": "https://github.com/captainhook-git/captainhook/issues", - "source": "https://github.com/captainhook-git/captainhook/tree/5.28.2" + "source": "https://github.com/captainhook-git/captainhook/tree/5.28.3" }, "funding": [ { @@ -3863,7 +3921,7 @@ "type": "github" } ], - "time": "2026-02-15T14:36:43+00:00" + "time": "2026-02-16T14:08:58+00:00" }, { "name": "captainhook/secrets", @@ -4389,16 +4447,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.94.0", + "version": "v3.94.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "883b20fb38c7866de9844ab6d0a205c423bde2d4" + "reference": "d1a3634e29916367b885250e1fc4dfd5ffe3b091" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/883b20fb38c7866de9844ab6d0a205c423bde2d4", - "reference": "883b20fb38c7866de9844ab6d0a205c423bde2d4", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d1a3634e29916367b885250e1fc4dfd5ffe3b091", + "reference": "d1a3634e29916367b885250e1fc4dfd5ffe3b091", "shasum": "" }, "require": { @@ -4481,7 +4539,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.94.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.94.1" }, "funding": [ { @@ -4489,7 +4547,7 @@ "type": "github" } ], - "time": "2026-02-11T16:44:33+00:00" + "time": "2026-02-18T12:24:42+00:00" }, { "name": "mikey179/vfsstream", diff --git a/package.json b/package.json index 2ec7772e..ae813795 100644 --- a/package.json +++ b/package.json @@ -11,15 +11,17 @@ }, "scripts": { "dev": "vite", - "build": "tsc && vite build && pnpm run build:static", + "build": "tsc && pnpm run build:static && vite build", "serve": "vite preview", "build:static": "pnpm run build:icons && pnpm run build:svg", - "build:icons": "svgo -f app/Resources/icons -o app/Resources/icons -r --config=./.svgo.icons.cjs", - "build:svg": "svgo -f app/Resources/images -o public/assets/images -r --config=./.svgo.cjs", - "lint": "stylelint -f verbose --fix \"app/Resources/**/*.css\" && eslint", - "lint:fix": "stylelint -f verbose --fix \"app/Resources/**/*.css\" && eslint --fix", - "format": "prettier --check .", - "format:fix": "prettier --write .", + "build:icons": "svgo -f resources/icons -o resources/icons -r --config=./.svgo.icons.cjs", + "build:svg": "svgo -f resources/static/images -o resources/static/images -r --config=./.svgo.cjs", + "lint": "eslint", + "lint:fix": "eslint --fix", + "lint:css": "stylelint -f verbose \"resources/**/*.css\"", + "lint:css:fix": "stylelint -f verbose --fix \"resources/**/*.css\"", + "prettier": "prettier --check . --ignore-path ./.gitignore --ignore-path ./docs/.gitignore", + "format": "prettier --write . --ignore-path ./.gitignore --ignore-path ./docs/.gitignore", "typecheck": "tsc", "commit": "cz", "release": "semantic-release", @@ -46,7 +48,7 @@ "leaflet": "^1.9.4", "leaflet.markercluster": "^1.5.3", "lit": "^3.3.2", - "marked": "^17.0.2", + "marked": "^17.0.3", "wavesurfer.js": "^7.12.1", "xml-formatter": "^3.6.7" }, @@ -62,8 +64,8 @@ "@tailwindcss/forms": "^0.5.11", "@tailwindcss/typography": "^0.5.19", "@types/leaflet": "^1.9.21", - "@typescript-eslint/eslint-plugin": "^8.55.0", - "@typescript-eslint/parser": "^8.55.0", + "@typescript-eslint/eslint-plugin": "^8.56.0", + "@typescript-eslint/parser": "^8.56.0", "all-contributors-cli": "^6.26.1", "commitizen": "^4.3.1", "cross-env": "^10.1.0", @@ -89,8 +91,9 @@ "svgo": "^4.0.0", "tailwindcss": "^3.4.19", "typescript": "~5.9.3", - "typescript-eslint": "^8.55.0", + "typescript-eslint": "^8.56.0", "vite": "^7.3.1", + "vite-plugin-codeigniter": "^2.0.0", "vite-plugin-pwa": "^1.2.0", "workbox-build": "^7.4.0", "workbox-core": "^7.4.0", diff --git a/php-icons.php b/php-icons.php index ac499d60..afcb4588 100644 --- a/php-icons.php +++ b/php-icons.php @@ -5,12 +5,12 @@ declare(strict_types=1); use PHPIcons\Config\PHPIconsConfig; return PHPIconsConfig::configure() - ->withPaths([__DIR__ . '/app', __DIR__ . '/themes']) + ->withPaths([__DIR__ . '/app', __DIR__ . '/themes', __DIR__ . '/resources']) ->withLocalIconSets([ - 'funding' => __DIR__ . '/app/Resources/icons/funding', - 'podcasting' => __DIR__ . '/app/Resources/icons/podcasting', - 'social' => __DIR__ . '/app/Resources/icons/social', - 'custom' => __DIR__ . '/app/Resources/icons/custom', + 'funding' => __DIR__ . '/resources/icons/funding', + 'podcasting' => __DIR__ . '/resources/icons/podcasting', + 'social' => __DIR__ . '/resources/icons/social', + 'custom' => __DIR__ . '/resources/icons/custom', ]) ->withDefaultIconPerSet([ 'funding' => 'funding:default', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7ed8ffb3..5b4b4fd4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,8 +68,8 @@ importers: specifier: ^3.3.2 version: 3.3.2 marked: - specifier: ^17.0.2 - version: 17.0.2 + specifier: ^17.0.3 + version: 17.0.3 wavesurfer.js: specifier: ^7.12.1 version: 7.12.1 @@ -111,11 +111,11 @@ importers: specifier: ^1.9.21 version: 1.9.21 "@typescript-eslint/eslint-plugin": - specifier: ^8.55.0 - version: 8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + specifier: ^8.56.0 + version: 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) "@typescript-eslint/parser": - specifier: ^8.55.0 - version: 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + specifier: ^8.56.0 + version: 8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) all-contributors-cli: specifier: ^6.26.1 version: 6.26.1 @@ -192,11 +192,14 @@ importers: specifier: ~5.9.3 version: 5.9.3 typescript-eslint: - specifier: ^8.55.0 - version: 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + specifier: ^8.56.0 + version: 8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) vite: specifier: ^7.3.1 version: 7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) + vite-plugin-codeigniter: + specifier: ^2.0.0 + version: 2.0.0(vite@7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)) vite-plugin-pwa: specifier: ^1.2.0 version: 1.2.0(vite@7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1))(workbox-build@7.4.0)(workbox-window@7.4.0) @@ -1735,6 +1738,12 @@ packages: peerDependencies: postcss: ^8.4 + "@emnapi/runtime@1.8.1": + resolution: + { + integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==, + } + "@epic-web/invariant@1.0.0": resolution: { @@ -2155,6 +2164,234 @@ packages: } engines: { node: ">=18.18" } + "@img/colour@1.0.0": + resolution: + { + integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==, + } + engines: { node: ">=18" } + + "@img/sharp-darwin-arm64@0.34.5": + resolution: + { + integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [darwin] + + "@img/sharp-darwin-x64@0.34.5": + resolution: + { + integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [darwin] + + "@img/sharp-libvips-darwin-arm64@1.2.4": + resolution: + { + integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==, + } + cpu: [arm64] + os: [darwin] + + "@img/sharp-libvips-darwin-x64@1.2.4": + resolution: + { + integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==, + } + cpu: [x64] + os: [darwin] + + "@img/sharp-libvips-linux-arm64@1.2.4": + resolution: + { + integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==, + } + cpu: [arm64] + os: [linux] + libc: [glibc] + + "@img/sharp-libvips-linux-arm@1.2.4": + resolution: + { + integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==, + } + cpu: [arm] + os: [linux] + libc: [glibc] + + "@img/sharp-libvips-linux-ppc64@1.2.4": + resolution: + { + integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==, + } + cpu: [ppc64] + os: [linux] + libc: [glibc] + + "@img/sharp-libvips-linux-riscv64@1.2.4": + resolution: + { + integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==, + } + cpu: [riscv64] + os: [linux] + libc: [glibc] + + "@img/sharp-libvips-linux-s390x@1.2.4": + resolution: + { + integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==, + } + cpu: [s390x] + os: [linux] + libc: [glibc] + + "@img/sharp-libvips-linux-x64@1.2.4": + resolution: + { + integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==, + } + cpu: [x64] + os: [linux] + libc: [glibc] + + "@img/sharp-libvips-linuxmusl-arm64@1.2.4": + resolution: + { + integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==, + } + cpu: [arm64] + os: [linux] + libc: [musl] + + "@img/sharp-libvips-linuxmusl-x64@1.2.4": + resolution: + { + integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==, + } + cpu: [x64] + os: [linux] + libc: [musl] + + "@img/sharp-linux-arm64@0.34.5": + resolution: + { + integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [linux] + libc: [glibc] + + "@img/sharp-linux-arm@0.34.5": + resolution: + { + integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm] + os: [linux] + libc: [glibc] + + "@img/sharp-linux-ppc64@0.34.5": + resolution: + { + integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [ppc64] + os: [linux] + libc: [glibc] + + "@img/sharp-linux-riscv64@0.34.5": + resolution: + { + integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [riscv64] + os: [linux] + libc: [glibc] + + "@img/sharp-linux-s390x@0.34.5": + resolution: + { + integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [s390x] + os: [linux] + libc: [glibc] + + "@img/sharp-linux-x64@0.34.5": + resolution: + { + integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [linux] + libc: [glibc] + + "@img/sharp-linuxmusl-arm64@0.34.5": + resolution: + { + integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [linux] + libc: [musl] + + "@img/sharp-linuxmusl-x64@0.34.5": + resolution: + { + integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [linux] + libc: [musl] + + "@img/sharp-wasm32@0.34.5": + resolution: + { + integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [wasm32] + + "@img/sharp-win32-arm64@0.34.5": + resolution: + { + integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [arm64] + os: [win32] + + "@img/sharp-win32-ia32@0.34.5": + resolution: + { + integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [ia32] + os: [win32] + + "@img/sharp-win32-x64@0.34.5": + resolution: + { + integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + cpu: [x64] + os: [win32] + "@isaacs/balanced-match@4.0.1": resolution: { @@ -2900,92 +3137,92 @@ packages: integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, } - "@typescript-eslint/eslint-plugin@8.55.0": + "@typescript-eslint/eslint-plugin@8.56.0": resolution: { - integrity: sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==, + integrity: sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - "@typescript-eslint/parser": ^8.55.0 - eslint: ^8.57.0 || ^9.0.0 + "@typescript-eslint/parser": ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/parser@8.55.0": + "@typescript-eslint/parser@8.56.0": resolution: { - integrity: sha512-4z2nCSBfVIMnbuu8uinj+f0o4qOeggYJLbjpPHka3KH1om7e+H9yLKTYgksTaHcGco+NClhhY2vyO3HsMH1RGw==, + integrity: sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/project-service@8.55.0": + "@typescript-eslint/project-service@8.56.0": resolution: { - integrity: sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==, + integrity: sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/scope-manager@8.55.0": + "@typescript-eslint/scope-manager@8.56.0": resolution: { - integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==, + integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/tsconfig-utils@8.55.0": + "@typescript-eslint/tsconfig-utils@8.56.0": resolution: { - integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==, + integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/type-utils@8.55.0": + "@typescript-eslint/type-utils@8.56.0": resolution: { - integrity: sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==, + integrity: sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/types@8.55.0": + "@typescript-eslint/types@8.56.0": resolution: { - integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==, + integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@typescript-eslint/typescript-estree@8.55.0": + "@typescript-eslint/typescript-estree@8.56.0": resolution: { - integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==, + integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/utils@8.55.0": + "@typescript-eslint/utils@8.56.0": resolution: { - integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==, + integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" - "@typescript-eslint/visitor-keys@8.55.0": + "@typescript-eslint/visitor-keys@8.56.0": resolution: { - integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==, + integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -4189,6 +4426,13 @@ packages: } engines: { node: ">=8" } + detect-libc@2.1.2: + resolution: + { + integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, + } + engines: { node: ">=8" } + dfa@1.2.0: resolution: { @@ -4461,13 +4705,6 @@ packages: } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - eslint-visitor-keys@4.2.1: - resolution: - { - integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - eslint-visitor-keys@5.0.0: resolution: { @@ -4986,6 +5223,7 @@ packages: { integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==, } + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@11.1.0: @@ -4994,6 +5232,7 @@ packages: integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==, } engines: { node: 20 || >=22 } + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@7.2.3: @@ -6248,10 +6487,10 @@ packages: engines: { node: ">= 18" } hasBin: true - marked@17.0.2: + marked@17.0.3: resolution: { - integrity: sha512-s5HZGFQea7Huv5zZcAGhJLT3qLpAfnY7v7GWkICUr0+Wd5TFEtdlRR2XUL5Gg+RH7u2Df595ifrxR03mBaw7gA==, + integrity: sha512-jt1v2ObpyOKR8p4XaUJVk3YWRJ5n+i4+rjQopxvV32rSndTJXvIzuUdWWIy/1pFQMkQmvTXawzDNqOH/CUmx6A==, } engines: { node: ">= 20" } hasBin: true @@ -6816,6 +7055,13 @@ packages: } engines: { node: ">=18" } + p-map@7.0.4: + resolution: + { + integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==, + } + engines: { node: ">=18" } + p-reduce@2.1.0: resolution: { @@ -8190,6 +8436,13 @@ packages: } engines: { node: ">= 0.4" } + sharp@0.34.5: + resolution: + { + integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==, + } + engines: { node: ^18.17.0 || ^20.3.0 || >=21.0.0 } + shebang-command@2.0.0: resolution: { @@ -8940,14 +9193,14 @@ packages: } engines: { node: ">= 0.4" } - typescript-eslint@8.55.0: + typescript-eslint@8.56.0: resolution: { - integrity: sha512-HE4wj+r5lmDVS9gdaN0/+iqNvPZwGfnJ5lZuz7s5vLlg9ODw0bIiiETaios9LvFI1U94/VBXGm3CB2Y5cNFMpw==, + integrity: sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: ">=4.8.4 <6.0.0" typescript@5.9.3: @@ -9144,6 +9397,14 @@ packages: integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, } + vite-plugin-codeigniter@2.0.0: + resolution: + { + integrity: sha512-F4S23BlXu1Yhb2k/cHeB3DV8q1BN+GNFf63jDFRqL4vwdv12/RWK+hBhNSsUUQguklogluza6GL+U1W8t/ba0w==, + } + peerDependencies: + vite: ^7.0.0 + vite-plugin-pwa@1.2.0: resolution: { @@ -9159,6 +9420,15 @@ packages: "@vite-pwa/assets-generator": optional: true + vite-plugin-static-copy@3.2.0: + resolution: + { + integrity: sha512-g2k9z8B/1Bx7D4wnFjPLx9dyYGrqWMLTpwTtPHhcU+ElNZP2O4+4OsyaficiDClus0dzVhdGvoGFYMJxoXZ12Q==, + } + engines: { node: ^18.0.0 || >=20.0.0 } + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + vite@7.3.1: resolution: { @@ -9569,6 +9839,12 @@ packages: } engines: { node: ">=18" } + zod@4.3.6: + resolution: + { + integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==, + } + snapshots: "@actions/core@2.0.1": dependencies: @@ -10816,6 +11092,11 @@ snapshots: dependencies: postcss: 8.5.6 + "@emnapi/runtime@1.8.1": + dependencies: + tslib: 2.8.1 + optional: true + "@epic-web/invariant@1.0.0": {} "@esbuild/aix-ppc64@0.27.2": @@ -10995,6 +11276,102 @@ snapshots: "@humanwhocodes/retry@0.4.3": {} + "@img/colour@1.0.0": {} + + "@img/sharp-darwin-arm64@0.34.5": + optionalDependencies: + "@img/sharp-libvips-darwin-arm64": 1.2.4 + optional: true + + "@img/sharp-darwin-x64@0.34.5": + optionalDependencies: + "@img/sharp-libvips-darwin-x64": 1.2.4 + optional: true + + "@img/sharp-libvips-darwin-arm64@1.2.4": + optional: true + + "@img/sharp-libvips-darwin-x64@1.2.4": + optional: true + + "@img/sharp-libvips-linux-arm64@1.2.4": + optional: true + + "@img/sharp-libvips-linux-arm@1.2.4": + optional: true + + "@img/sharp-libvips-linux-ppc64@1.2.4": + optional: true + + "@img/sharp-libvips-linux-riscv64@1.2.4": + optional: true + + "@img/sharp-libvips-linux-s390x@1.2.4": + optional: true + + "@img/sharp-libvips-linux-x64@1.2.4": + optional: true + + "@img/sharp-libvips-linuxmusl-arm64@1.2.4": + optional: true + + "@img/sharp-libvips-linuxmusl-x64@1.2.4": + optional: true + + "@img/sharp-linux-arm64@0.34.5": + optionalDependencies: + "@img/sharp-libvips-linux-arm64": 1.2.4 + optional: true + + "@img/sharp-linux-arm@0.34.5": + optionalDependencies: + "@img/sharp-libvips-linux-arm": 1.2.4 + optional: true + + "@img/sharp-linux-ppc64@0.34.5": + optionalDependencies: + "@img/sharp-libvips-linux-ppc64": 1.2.4 + optional: true + + "@img/sharp-linux-riscv64@0.34.5": + optionalDependencies: + "@img/sharp-libvips-linux-riscv64": 1.2.4 + optional: true + + "@img/sharp-linux-s390x@0.34.5": + optionalDependencies: + "@img/sharp-libvips-linux-s390x": 1.2.4 + optional: true + + "@img/sharp-linux-x64@0.34.5": + optionalDependencies: + "@img/sharp-libvips-linux-x64": 1.2.4 + optional: true + + "@img/sharp-linuxmusl-arm64@0.34.5": + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64": 1.2.4 + optional: true + + "@img/sharp-linuxmusl-x64@0.34.5": + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64": 1.2.4 + optional: true + + "@img/sharp-wasm32@0.34.5": + dependencies: + "@emnapi/runtime": 1.8.1 + optional: true + + "@img/sharp-win32-arm64@0.34.5": + optional: true + + "@img/sharp-win32-ia32@0.34.5": + optional: true + + "@img/sharp-win32-x64@0.34.5": + optional: true + "@isaacs/balanced-match@4.0.1": {} "@isaacs/brace-expansion@5.0.0": @@ -11465,14 +11842,14 @@ snapshots: "@types/trusted-types@2.0.7": {} - "@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3)": + "@typescript-eslint/eslint-plugin@8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3)": dependencies: "@eslint-community/regexpp": 4.12.2 - "@typescript-eslint/parser": 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) - "@typescript-eslint/scope-manager": 8.55.0 - "@typescript-eslint/type-utils": 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) - "@typescript-eslint/utils": 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) - "@typescript-eslint/visitor-keys": 8.55.0 + "@typescript-eslint/parser": 8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/scope-manager": 8.56.0 + "@typescript-eslint/type-utils": 8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/utils": 8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.56.0 eslint: 10.0.0(jiti@2.5.1) ignore: 7.0.5 natural-compare: 1.4.0 @@ -11481,41 +11858,41 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/parser@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3)": + "@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3)": dependencies: - "@typescript-eslint/scope-manager": 8.55.0 - "@typescript-eslint/types": 8.55.0 - "@typescript-eslint/typescript-estree": 8.55.0(typescript@5.9.3) - "@typescript-eslint/visitor-keys": 8.55.0 + "@typescript-eslint/scope-manager": 8.56.0 + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/typescript-estree": 8.56.0(typescript@5.9.3) + "@typescript-eslint/visitor-keys": 8.56.0 debug: 4.4.3 eslint: 10.0.0(jiti@2.5.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/project-service@8.55.0(typescript@5.9.3)": + "@typescript-eslint/project-service@8.56.0(typescript@5.9.3)": dependencies: - "@typescript-eslint/tsconfig-utils": 8.55.0(typescript@5.9.3) - "@typescript-eslint/types": 8.55.0 + "@typescript-eslint/tsconfig-utils": 8.56.0(typescript@5.9.3) + "@typescript-eslint/types": 8.56.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/scope-manager@8.55.0": + "@typescript-eslint/scope-manager@8.56.0": dependencies: - "@typescript-eslint/types": 8.55.0 - "@typescript-eslint/visitor-keys": 8.55.0 + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/visitor-keys": 8.56.0 - "@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.9.3)": + "@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.9.3)": dependencies: typescript: 5.9.3 - "@typescript-eslint/type-utils@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3)": + "@typescript-eslint/type-utils@8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3)": dependencies: - "@typescript-eslint/types": 8.55.0 - "@typescript-eslint/typescript-estree": 8.55.0(typescript@5.9.3) - "@typescript-eslint/utils": 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/typescript-estree": 8.56.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) debug: 4.4.3 eslint: 10.0.0(jiti@2.5.1) ts-api-utils: 2.4.0(typescript@5.9.3) @@ -11523,14 +11900,14 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/types@8.55.0": {} + "@typescript-eslint/types@8.56.0": {} - "@typescript-eslint/typescript-estree@8.55.0(typescript@5.9.3)": + "@typescript-eslint/typescript-estree@8.56.0(typescript@5.9.3)": dependencies: - "@typescript-eslint/project-service": 8.55.0(typescript@5.9.3) - "@typescript-eslint/tsconfig-utils": 8.55.0(typescript@5.9.3) - "@typescript-eslint/types": 8.55.0 - "@typescript-eslint/visitor-keys": 8.55.0 + "@typescript-eslint/project-service": 8.56.0(typescript@5.9.3) + "@typescript-eslint/tsconfig-utils": 8.56.0(typescript@5.9.3) + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/visitor-keys": 8.56.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.4 @@ -11540,21 +11917,21 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/utils@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3)": + "@typescript-eslint/utils@8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3)": dependencies: "@eslint-community/eslint-utils": 4.9.1(eslint@10.0.0(jiti@2.5.1)) - "@typescript-eslint/scope-manager": 8.55.0 - "@typescript-eslint/types": 8.55.0 - "@typescript-eslint/typescript-estree": 8.55.0(typescript@5.9.3) + "@typescript-eslint/scope-manager": 8.56.0 + "@typescript-eslint/types": 8.56.0 + "@typescript-eslint/typescript-estree": 8.56.0(typescript@5.9.3) eslint: 10.0.0(jiti@2.5.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/visitor-keys@8.55.0": + "@typescript-eslint/visitor-keys@8.56.0": dependencies: - "@typescript-eslint/types": 8.55.0 - eslint-visitor-keys: 4.2.1 + "@typescript-eslint/types": 8.56.0 + eslint-visitor-keys: 5.0.0 "@vime/core@5.4.1": dependencies: @@ -12304,6 +12681,8 @@ snapshots: detect-indent@6.1.0: {} + detect-libc@2.1.2: {} + dfa@1.2.0: {} didyoumean@1.2.2: {} @@ -12516,8 +12895,6 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.1: {} - eslint-visitor-keys@5.0.0: {} eslint@10.0.0(jiti@2.5.1): @@ -13554,7 +13931,7 @@ snapshots: marked@15.0.12: {} - marked@17.0.2: {} + marked@17.0.3: {} math-intrinsics@1.1.0: {} @@ -13657,7 +14034,7 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.2 + semver: 7.7.4 validate-npm-package-license: 3.0.4 normalize-package-data@8.0.0: @@ -13792,6 +14169,8 @@ snapshots: p-map@7.0.3: {} + p-map@7.0.4: {} + p-reduce@2.1.0: {} p-reduce@3.0.0: {} @@ -14694,6 +15073,37 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 + sharp@0.34.5: + dependencies: + "@img/colour": 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.4 + optionalDependencies: + "@img/sharp-darwin-arm64": 0.34.5 + "@img/sharp-darwin-x64": 0.34.5 + "@img/sharp-libvips-darwin-arm64": 1.2.4 + "@img/sharp-libvips-darwin-x64": 1.2.4 + "@img/sharp-libvips-linux-arm": 1.2.4 + "@img/sharp-libvips-linux-arm64": 1.2.4 + "@img/sharp-libvips-linux-ppc64": 1.2.4 + "@img/sharp-libvips-linux-riscv64": 1.2.4 + "@img/sharp-libvips-linux-s390x": 1.2.4 + "@img/sharp-libvips-linux-x64": 1.2.4 + "@img/sharp-libvips-linuxmusl-arm64": 1.2.4 + "@img/sharp-libvips-linuxmusl-x64": 1.2.4 + "@img/sharp-linux-arm": 0.34.5 + "@img/sharp-linux-arm64": 0.34.5 + "@img/sharp-linux-ppc64": 0.34.5 + "@img/sharp-linux-riscv64": 0.34.5 + "@img/sharp-linux-s390x": 0.34.5 + "@img/sharp-linux-x64": 0.34.5 + "@img/sharp-linuxmusl-arm64": 0.34.5 + "@img/sharp-linuxmusl-x64": 0.34.5 + "@img/sharp-wasm32": 0.34.5 + "@img/sharp-win32-arm64": 0.34.5 + "@img/sharp-win32-ia32": 0.34.5 + "@img/sharp-win32-x64": 0.34.5 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -15208,12 +15618,12 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3): + typescript-eslint@8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3): dependencies: - "@typescript-eslint/eslint-plugin": 8.55.0(@typescript-eslint/parser@8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) - "@typescript-eslint/parser": 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) - "@typescript-eslint/typescript-estree": 8.55.0(typescript@5.9.3) - "@typescript-eslint/utils": 8.55.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/eslint-plugin": 8.56.0(@typescript-eslint/parser@8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3))(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/parser": 8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) + "@typescript-eslint/typescript-estree": 8.56.0(typescript@5.9.3) + "@typescript-eslint/utils": 8.56.0(eslint@10.0.0(jiti@2.5.1))(typescript@5.9.3) eslint: 10.0.0(jiti@2.5.1) typescript: 5.9.3 transitivePeerDependencies: @@ -15309,6 +15719,15 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + vite-plugin-codeigniter@2.0.0(vite@7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)): + dependencies: + glob: 11.1.0 + picocolors: 1.1.1 + sharp: 0.34.5 + vite: 7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) + vite-plugin-static-copy: 3.2.0(vite@7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)) + zod: 4.3.6 + vite-plugin-pwa@1.2.0(vite@7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1))(workbox-build@7.4.0)(workbox-window@7.4.0): dependencies: debug: 4.4.1 @@ -15320,6 +15739,14 @@ snapshots: transitivePeerDependencies: - supports-color + vite-plugin-static-copy@3.2.0(vite@7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1)): + dependencies: + chokidar: 3.6.0 + p-map: 7.0.4 + picocolors: 1.1.1 + tinyglobby: 0.2.15 + vite: 7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1) + vite@7.3.1(@types/node@24.3.0)(jiti@2.5.1)(terser@5.43.1)(yaml@2.8.1): dependencies: esbuild: 0.27.2 @@ -15634,3 +16061,5 @@ snapshots: yocto-queue@0.1.0: {} yoctocolors@2.1.2: {} + + zod@4.3.6: {} diff --git a/public/castopod-avatar_medium.webp b/public/castopod-avatar_medium.webp deleted file mode 100644 index 910a2b35..00000000 Binary files a/public/castopod-avatar_medium.webp and /dev/null differ diff --git a/public/castopod-avatar_thumbnail.webp b/public/castopod-avatar_thumbnail.webp deleted file mode 100644 index b0625dc0..00000000 Binary files a/public/castopod-avatar_thumbnail.webp and /dev/null differ diff --git a/public/castopod-avatar_tiny.webp b/public/castopod-avatar_tiny.webp deleted file mode 100644 index 21cc75d8..00000000 Binary files a/public/castopod-avatar_tiny.webp and /dev/null differ diff --git a/public/castopod-banner-amber_federation.jpg b/public/castopod-banner-amber_federation.jpg deleted file mode 100644 index 425305f3..00000000 Binary files a/public/castopod-banner-amber_federation.jpg and /dev/null differ diff --git a/public/castopod-banner-amber_medium.webp b/public/castopod-banner-amber_medium.webp deleted file mode 100644 index 234ec532..00000000 Binary files a/public/castopod-banner-amber_medium.webp and /dev/null differ diff --git a/public/castopod-banner-amber_small.webp b/public/castopod-banner-amber_small.webp deleted file mode 100644 index 8c9ec454..00000000 Binary files a/public/castopod-banner-amber_small.webp and /dev/null differ diff --git a/public/castopod-banner-crimson_federation.jpg b/public/castopod-banner-crimson_federation.jpg deleted file mode 100644 index a016c399..00000000 Binary files a/public/castopod-banner-crimson_federation.jpg and /dev/null differ diff --git a/public/castopod-banner-crimson_medium.webp b/public/castopod-banner-crimson_medium.webp deleted file mode 100644 index 48589283..00000000 Binary files a/public/castopod-banner-crimson_medium.webp and /dev/null differ diff --git a/public/castopod-banner-crimson_small.webp b/public/castopod-banner-crimson_small.webp deleted file mode 100644 index 1291f73b..00000000 Binary files a/public/castopod-banner-crimson_small.webp and /dev/null differ diff --git a/public/castopod-banner-jacaranda_federation.jpg b/public/castopod-banner-jacaranda_federation.jpg deleted file mode 100644 index 33eada3c..00000000 Binary files a/public/castopod-banner-jacaranda_federation.jpg and /dev/null differ diff --git a/public/castopod-banner-jacaranda_medium.webp b/public/castopod-banner-jacaranda_medium.webp deleted file mode 100644 index ffca50ee..00000000 Binary files a/public/castopod-banner-jacaranda_medium.webp and /dev/null differ diff --git a/public/castopod-banner-jacaranda_small.webp b/public/castopod-banner-jacaranda_small.webp deleted file mode 100644 index b1154d22..00000000 Binary files a/public/castopod-banner-jacaranda_small.webp and /dev/null differ diff --git a/public/castopod-banner-lake_federation.jpg b/public/castopod-banner-lake_federation.jpg deleted file mode 100644 index f7527948..00000000 Binary files a/public/castopod-banner-lake_federation.jpg and /dev/null differ diff --git a/public/castopod-banner-lake_medium.webp b/public/castopod-banner-lake_medium.webp deleted file mode 100644 index 4dcd70df..00000000 Binary files a/public/castopod-banner-lake_medium.webp and /dev/null differ diff --git a/public/castopod-banner-lake_small.webp b/public/castopod-banner-lake_small.webp deleted file mode 100644 index b3e5c539..00000000 Binary files a/public/castopod-banner-lake_small.webp and /dev/null differ diff --git a/public/castopod-banner-onyx_federation.jpg b/public/castopod-banner-onyx_federation.jpg deleted file mode 100644 index 73e4423a..00000000 Binary files a/public/castopod-banner-onyx_federation.jpg and /dev/null differ diff --git a/public/castopod-banner-onyx_medium.webp b/public/castopod-banner-onyx_medium.webp deleted file mode 100644 index 189f77f5..00000000 Binary files a/public/castopod-banner-onyx_medium.webp and /dev/null differ diff --git a/public/castopod-banner-onyx_small.webp b/public/castopod-banner-onyx_small.webp deleted file mode 100644 index 81bd7fff..00000000 Binary files a/public/castopod-banner-onyx_small.webp and /dev/null differ diff --git a/public/castopod-banner-pine_federation.jpg b/public/castopod-banner-pine_federation.jpg deleted file mode 100644 index 9e9df5cb..00000000 Binary files a/public/castopod-banner-pine_federation.jpg and /dev/null differ diff --git a/public/castopod-banner-pine_medium.webp b/public/castopod-banner-pine_medium.webp deleted file mode 100644 index 6371a5e5..00000000 Binary files a/public/castopod-banner-pine_medium.webp and /dev/null differ diff --git a/public/castopod-banner-pine_small.webp b/public/castopod-banner-pine_small.webp deleted file mode 100644 index ac43b616..00000000 Binary files a/public/castopod-banner-pine_small.webp and /dev/null differ diff --git a/app/Resources/icons/custom/_index.php b/resources/icons/custom/_index.php similarity index 100% rename from app/Resources/icons/custom/_index.php rename to resources/icons/custom/_index.php diff --git a/app/Resources/icons/custom/repeat-off.svg b/resources/icons/custom/repeat-off.svg similarity index 100% rename from app/Resources/icons/custom/repeat-off.svg rename to resources/icons/custom/repeat-off.svg diff --git a/app/Resources/icons/funding/_index.php b/resources/icons/funding/_index.php similarity index 100% rename from app/Resources/icons/funding/_index.php rename to resources/icons/funding/_index.php diff --git a/app/Resources/icons/funding/buymeacoffee.svg b/resources/icons/funding/buymeacoffee.svg similarity index 100% rename from app/Resources/icons/funding/buymeacoffee.svg rename to resources/icons/funding/buymeacoffee.svg diff --git a/app/Resources/icons/funding/default.svg b/resources/icons/funding/default.svg similarity index 100% rename from app/Resources/icons/funding/default.svg rename to resources/icons/funding/default.svg diff --git a/app/Resources/icons/funding/donorbox.svg b/resources/icons/funding/donorbox.svg similarity index 100% rename from app/Resources/icons/funding/donorbox.svg rename to resources/icons/funding/donorbox.svg diff --git a/app/Resources/icons/funding/gofundme.svg b/resources/icons/funding/gofundme.svg similarity index 100% rename from app/Resources/icons/funding/gofundme.svg rename to resources/icons/funding/gofundme.svg diff --git a/app/Resources/icons/funding/helloasso.svg b/resources/icons/funding/helloasso.svg similarity index 100% rename from app/Resources/icons/funding/helloasso.svg rename to resources/icons/funding/helloasso.svg diff --git a/app/Resources/icons/funding/indiegogo.svg b/resources/icons/funding/indiegogo.svg similarity index 100% rename from app/Resources/icons/funding/indiegogo.svg rename to resources/icons/funding/indiegogo.svg diff --git a/app/Resources/icons/funding/kickstarter.svg b/resources/icons/funding/kickstarter.svg similarity index 100% rename from app/Resources/icons/funding/kickstarter.svg rename to resources/icons/funding/kickstarter.svg diff --git a/app/Resources/icons/funding/kisskissbankbank.svg b/resources/icons/funding/kisskissbankbank.svg similarity index 100% rename from app/Resources/icons/funding/kisskissbankbank.svg rename to resources/icons/funding/kisskissbankbank.svg diff --git a/app/Resources/icons/funding/kofi.svg b/resources/icons/funding/kofi.svg similarity index 100% rename from app/Resources/icons/funding/kofi.svg rename to resources/icons/funding/kofi.svg diff --git a/app/Resources/icons/funding/liberapay.svg b/resources/icons/funding/liberapay.svg similarity index 100% rename from app/Resources/icons/funding/liberapay.svg rename to resources/icons/funding/liberapay.svg diff --git a/app/Resources/icons/funding/patreon.svg b/resources/icons/funding/patreon.svg similarity index 100% rename from app/Resources/icons/funding/patreon.svg rename to resources/icons/funding/patreon.svg diff --git a/app/Resources/icons/funding/paypal.svg b/resources/icons/funding/paypal.svg similarity index 100% rename from app/Resources/icons/funding/paypal.svg rename to resources/icons/funding/paypal.svg diff --git a/app/Resources/icons/funding/tipeee.svg b/resources/icons/funding/tipeee.svg similarity index 100% rename from app/Resources/icons/funding/tipeee.svg rename to resources/icons/funding/tipeee.svg diff --git a/app/Resources/icons/funding/ulule.svg b/resources/icons/funding/ulule.svg similarity index 100% rename from app/Resources/icons/funding/ulule.svg rename to resources/icons/funding/ulule.svg diff --git a/app/Resources/icons/podcasting/_index.php b/resources/icons/podcasting/_index.php similarity index 100% rename from app/Resources/icons/podcasting/_index.php rename to resources/icons/podcasting/_index.php diff --git a/app/Resources/icons/podcasting/amazon.svg b/resources/icons/podcasting/amazon.svg similarity index 100% rename from app/Resources/icons/podcasting/amazon.svg rename to resources/icons/podcasting/amazon.svg diff --git a/app/Resources/icons/podcasting/antennapod.svg b/resources/icons/podcasting/antennapod.svg similarity index 100% rename from app/Resources/icons/podcasting/antennapod.svg rename to resources/icons/podcasting/antennapod.svg diff --git a/app/Resources/icons/podcasting/anytime.svg b/resources/icons/podcasting/anytime.svg similarity index 100% rename from app/Resources/icons/podcasting/anytime.svg rename to resources/icons/podcasting/anytime.svg diff --git a/app/Resources/icons/podcasting/apple.svg b/resources/icons/podcasting/apple.svg similarity index 100% rename from app/Resources/icons/podcasting/apple.svg rename to resources/icons/podcasting/apple.svg diff --git a/app/Resources/icons/podcasting/blubrry.svg b/resources/icons/podcasting/blubrry.svg similarity index 100% rename from app/Resources/icons/podcasting/blubrry.svg rename to resources/icons/podcasting/blubrry.svg diff --git a/app/Resources/icons/podcasting/breaker.svg b/resources/icons/podcasting/breaker.svg similarity index 100% rename from app/Resources/icons/podcasting/breaker.svg rename to resources/icons/podcasting/breaker.svg diff --git a/app/Resources/icons/podcasting/breez.svg b/resources/icons/podcasting/breez.svg similarity index 100% rename from app/Resources/icons/podcasting/breez.svg rename to resources/icons/podcasting/breez.svg diff --git a/app/Resources/icons/podcasting/castamatic.svg b/resources/icons/podcasting/castamatic.svg similarity index 100% rename from app/Resources/icons/podcasting/castamatic.svg rename to resources/icons/podcasting/castamatic.svg diff --git a/app/Resources/icons/podcasting/castbox.svg b/resources/icons/podcasting/castbox.svg similarity index 100% rename from app/Resources/icons/podcasting/castbox.svg rename to resources/icons/podcasting/castbox.svg diff --git a/app/Resources/icons/podcasting/castopod.svg b/resources/icons/podcasting/castopod.svg similarity index 100% rename from app/Resources/icons/podcasting/castopod.svg rename to resources/icons/podcasting/castopod.svg diff --git a/app/Resources/icons/podcasting/castro.svg b/resources/icons/podcasting/castro.svg similarity index 100% rename from app/Resources/icons/podcasting/castro.svg rename to resources/icons/podcasting/castro.svg diff --git a/app/Resources/icons/podcasting/deezer.svg b/resources/icons/podcasting/deezer.svg similarity index 100% rename from app/Resources/icons/podcasting/deezer.svg rename to resources/icons/podcasting/deezer.svg diff --git a/app/Resources/icons/podcasting/default.svg b/resources/icons/podcasting/default.svg similarity index 100% rename from app/Resources/icons/podcasting/default.svg rename to resources/icons/podcasting/default.svg diff --git a/app/Resources/icons/podcasting/episodes-fm.svg b/resources/icons/podcasting/episodes-fm.svg similarity index 100% rename from app/Resources/icons/podcasting/episodes-fm.svg rename to resources/icons/podcasting/episodes-fm.svg diff --git a/app/Resources/icons/podcasting/fountain.svg b/resources/icons/podcasting/fountain.svg similarity index 100% rename from app/Resources/icons/podcasting/fountain.svg rename to resources/icons/podcasting/fountain.svg diff --git a/app/Resources/icons/podcasting/fyyd.svg b/resources/icons/podcasting/fyyd.svg similarity index 100% rename from app/Resources/icons/podcasting/fyyd.svg rename to resources/icons/podcasting/fyyd.svg diff --git a/app/Resources/icons/podcasting/google.svg b/resources/icons/podcasting/google.svg similarity index 100% rename from app/Resources/icons/podcasting/google.svg rename to resources/icons/podcasting/google.svg diff --git a/app/Resources/icons/podcasting/gpodder.svg b/resources/icons/podcasting/gpodder.svg similarity index 100% rename from app/Resources/icons/podcasting/gpodder.svg rename to resources/icons/podcasting/gpodder.svg diff --git a/app/Resources/icons/podcasting/ivoox.svg b/resources/icons/podcasting/ivoox.svg similarity index 100% rename from app/Resources/icons/podcasting/ivoox.svg rename to resources/icons/podcasting/ivoox.svg diff --git a/app/Resources/icons/podcasting/listennotes.svg b/resources/icons/podcasting/listennotes.svg similarity index 100% rename from app/Resources/icons/podcasting/listennotes.svg rename to resources/icons/podcasting/listennotes.svg diff --git a/app/Resources/icons/podcasting/overcast.svg b/resources/icons/podcasting/overcast.svg similarity index 100% rename from app/Resources/icons/podcasting/overcast.svg rename to resources/icons/podcasting/overcast.svg diff --git a/app/Resources/icons/podcasting/playerfm.svg b/resources/icons/podcasting/playerfm.svg similarity index 100% rename from app/Resources/icons/podcasting/playerfm.svg rename to resources/icons/podcasting/playerfm.svg diff --git a/app/Resources/icons/podcasting/plink.svg b/resources/icons/podcasting/plink.svg similarity index 100% rename from app/Resources/icons/podcasting/plink.svg rename to resources/icons/podcasting/plink.svg diff --git a/app/Resources/icons/podcasting/pocketcasts.svg b/resources/icons/podcasting/pocketcasts.svg similarity index 100% rename from app/Resources/icons/podcasting/pocketcasts.svg rename to resources/icons/podcasting/pocketcasts.svg diff --git a/app/Resources/icons/podcasting/podbean.svg b/resources/icons/podcasting/podbean.svg similarity index 100% rename from app/Resources/icons/podcasting/podbean.svg rename to resources/icons/podcasting/podbean.svg diff --git a/app/Resources/icons/podcasting/podcastaddict.svg b/resources/icons/podcasting/podcastaddict.svg similarity index 100% rename from app/Resources/icons/podcasting/podcastaddict.svg rename to resources/icons/podcasting/podcastaddict.svg diff --git a/app/Resources/icons/podcasting/podcastguru.svg b/resources/icons/podcasting/podcastguru.svg similarity index 100% rename from app/Resources/icons/podcasting/podcastguru.svg rename to resources/icons/podcasting/podcastguru.svg diff --git a/app/Resources/icons/podcasting/podcastindex.svg b/resources/icons/podcasting/podcastindex.svg similarity index 100% rename from app/Resources/icons/podcasting/podcastindex.svg rename to resources/icons/podcasting/podcastindex.svg diff --git a/app/Resources/icons/podcasting/podchaser.svg b/resources/icons/podcasting/podchaser.svg similarity index 100% rename from app/Resources/icons/podcasting/podchaser.svg rename to resources/icons/podcasting/podchaser.svg diff --git a/app/Resources/icons/podcasting/podcloud.svg b/resources/icons/podcasting/podcloud.svg similarity index 100% rename from app/Resources/icons/podcasting/podcloud.svg rename to resources/icons/podcasting/podcloud.svg diff --git a/app/Resources/icons/podcasting/podfriend.svg b/resources/icons/podcasting/podfriend.svg similarity index 100% rename from app/Resources/icons/podcasting/podfriend.svg rename to resources/icons/podcasting/podfriend.svg diff --git a/app/Resources/icons/podcasting/podinstall.svg b/resources/icons/podcasting/podinstall.svg similarity index 100% rename from app/Resources/icons/podcasting/podinstall.svg rename to resources/icons/podcasting/podinstall.svg diff --git a/app/Resources/icons/podcasting/podlink.svg b/resources/icons/podcasting/podlink.svg similarity index 100% rename from app/Resources/icons/podcasting/podlink.svg rename to resources/icons/podcasting/podlink.svg diff --git a/app/Resources/icons/podcasting/podlp.svg b/resources/icons/podcasting/podlp.svg similarity index 100% rename from app/Resources/icons/podcasting/podlp.svg rename to resources/icons/podcasting/podlp.svg diff --git a/app/Resources/icons/podcasting/podnews.svg b/resources/icons/podcasting/podnews.svg similarity index 100% rename from app/Resources/icons/podcasting/podnews.svg rename to resources/icons/podcasting/podnews.svg diff --git a/app/Resources/icons/podcasting/podtail.svg b/resources/icons/podcasting/podtail.svg similarity index 100% rename from app/Resources/icons/podcasting/podtail.svg rename to resources/icons/podcasting/podtail.svg diff --git a/app/Resources/icons/podcasting/podverse.svg b/resources/icons/podcasting/podverse.svg similarity index 100% rename from app/Resources/icons/podcasting/podverse.svg rename to resources/icons/podcasting/podverse.svg diff --git a/app/Resources/icons/podcasting/radiopublic.svg b/resources/icons/podcasting/radiopublic.svg similarity index 100% rename from app/Resources/icons/podcasting/radiopublic.svg rename to resources/icons/podcasting/radiopublic.svg diff --git a/app/Resources/icons/podcasting/sphinxchat.svg b/resources/icons/podcasting/sphinxchat.svg similarity index 100% rename from app/Resources/icons/podcasting/sphinxchat.svg rename to resources/icons/podcasting/sphinxchat.svg diff --git a/app/Resources/icons/podcasting/spotify.svg b/resources/icons/podcasting/spotify.svg similarity index 100% rename from app/Resources/icons/podcasting/spotify.svg rename to resources/icons/podcasting/spotify.svg diff --git a/app/Resources/icons/podcasting/spreaker.svg b/resources/icons/podcasting/spreaker.svg similarity index 100% rename from app/Resources/icons/podcasting/spreaker.svg rename to resources/icons/podcasting/spreaker.svg diff --git a/app/Resources/icons/podcasting/stitcher.svg b/resources/icons/podcasting/stitcher.svg similarity index 100% rename from app/Resources/icons/podcasting/stitcher.svg rename to resources/icons/podcasting/stitcher.svg diff --git a/app/Resources/icons/podcasting/truefans.svg b/resources/icons/podcasting/truefans.svg similarity index 100% rename from app/Resources/icons/podcasting/truefans.svg rename to resources/icons/podcasting/truefans.svg diff --git a/app/Resources/icons/podcasting/tsacdop.svg b/resources/icons/podcasting/tsacdop.svg similarity index 100% rename from app/Resources/icons/podcasting/tsacdop.svg rename to resources/icons/podcasting/tsacdop.svg diff --git a/app/Resources/icons/podcasting/tunein.svg b/resources/icons/podcasting/tunein.svg similarity index 100% rename from app/Resources/icons/podcasting/tunein.svg rename to resources/icons/podcasting/tunein.svg diff --git a/app/Resources/icons/podcasting/youtube-music.svg b/resources/icons/podcasting/youtube-music.svg similarity index 100% rename from app/Resources/icons/podcasting/youtube-music.svg rename to resources/icons/podcasting/youtube-music.svg diff --git a/app/Resources/icons/social/_index.php b/resources/icons/social/_index.php similarity index 100% rename from app/Resources/icons/social/_index.php rename to resources/icons/social/_index.php diff --git a/app/Resources/icons/social/bluesky.svg b/resources/icons/social/bluesky.svg similarity index 100% rename from app/Resources/icons/social/bluesky.svg rename to resources/icons/social/bluesky.svg diff --git a/app/Resources/icons/social/castopod.svg b/resources/icons/social/castopod.svg similarity index 100% rename from app/Resources/icons/social/castopod.svg rename to resources/icons/social/castopod.svg diff --git a/app/Resources/icons/social/default.svg b/resources/icons/social/default.svg similarity index 100% rename from app/Resources/icons/social/default.svg rename to resources/icons/social/default.svg diff --git a/app/Resources/icons/social/discord.svg b/resources/icons/social/discord.svg similarity index 100% rename from app/Resources/icons/social/discord.svg rename to resources/icons/social/discord.svg diff --git a/app/Resources/icons/social/discourse.svg b/resources/icons/social/discourse.svg similarity index 100% rename from app/Resources/icons/social/discourse.svg rename to resources/icons/social/discourse.svg diff --git a/app/Resources/icons/social/facebook.svg b/resources/icons/social/facebook.svg similarity index 100% rename from app/Resources/icons/social/facebook.svg rename to resources/icons/social/facebook.svg diff --git a/app/Resources/icons/social/funkwhale.svg b/resources/icons/social/funkwhale.svg similarity index 100% rename from app/Resources/icons/social/funkwhale.svg rename to resources/icons/social/funkwhale.svg diff --git a/app/Resources/icons/social/instagram.svg b/resources/icons/social/instagram.svg similarity index 100% rename from app/Resources/icons/social/instagram.svg rename to resources/icons/social/instagram.svg diff --git a/app/Resources/icons/social/linkedin.svg b/resources/icons/social/linkedin.svg similarity index 100% rename from app/Resources/icons/social/linkedin.svg rename to resources/icons/social/linkedin.svg diff --git a/app/Resources/icons/social/mastodon.svg b/resources/icons/social/mastodon.svg similarity index 100% rename from app/Resources/icons/social/mastodon.svg rename to resources/icons/social/mastodon.svg diff --git a/app/Resources/icons/social/matrix.svg b/resources/icons/social/matrix.svg similarity index 100% rename from app/Resources/icons/social/matrix.svg rename to resources/icons/social/matrix.svg diff --git a/app/Resources/icons/social/misskey.svg b/resources/icons/social/misskey.svg similarity index 100% rename from app/Resources/icons/social/misskey.svg rename to resources/icons/social/misskey.svg diff --git a/app/Resources/icons/social/mobilizon.svg b/resources/icons/social/mobilizon.svg similarity index 100% rename from app/Resources/icons/social/mobilizon.svg rename to resources/icons/social/mobilizon.svg diff --git a/app/Resources/icons/social/peertube.svg b/resources/icons/social/peertube.svg similarity index 100% rename from app/Resources/icons/social/peertube.svg rename to resources/icons/social/peertube.svg diff --git a/app/Resources/icons/social/pixelfed.svg b/resources/icons/social/pixelfed.svg similarity index 100% rename from app/Resources/icons/social/pixelfed.svg rename to resources/icons/social/pixelfed.svg diff --git a/app/Resources/icons/social/pleroma.svg b/resources/icons/social/pleroma.svg similarity index 100% rename from app/Resources/icons/social/pleroma.svg rename to resources/icons/social/pleroma.svg diff --git a/app/Resources/icons/social/plume.svg b/resources/icons/social/plume.svg similarity index 100% rename from app/Resources/icons/social/plume.svg rename to resources/icons/social/plume.svg diff --git a/app/Resources/icons/social/reddit.svg b/resources/icons/social/reddit.svg similarity index 100% rename from app/Resources/icons/social/reddit.svg rename to resources/icons/social/reddit.svg diff --git a/app/Resources/icons/social/slack.svg b/resources/icons/social/slack.svg similarity index 100% rename from app/Resources/icons/social/slack.svg rename to resources/icons/social/slack.svg diff --git a/app/Resources/icons/social/telegram.svg b/resources/icons/social/telegram.svg similarity index 100% rename from app/Resources/icons/social/telegram.svg rename to resources/icons/social/telegram.svg diff --git a/app/Resources/icons/social/threads.svg b/resources/icons/social/threads.svg similarity index 100% rename from app/Resources/icons/social/threads.svg rename to resources/icons/social/threads.svg diff --git a/app/Resources/icons/social/tiktok.svg b/resources/icons/social/tiktok.svg similarity index 100% rename from app/Resources/icons/social/tiktok.svg rename to resources/icons/social/tiktok.svg diff --git a/app/Resources/icons/social/twitch.svg b/resources/icons/social/twitch.svg similarity index 100% rename from app/Resources/icons/social/twitch.svg rename to resources/icons/social/twitch.svg diff --git a/app/Resources/icons/social/twitter.svg b/resources/icons/social/twitter.svg similarity index 100% rename from app/Resources/icons/social/twitter.svg rename to resources/icons/social/twitter.svg diff --git a/app/Resources/icons/social/writefreely.svg b/resources/icons/social/writefreely.svg similarity index 100% rename from app/Resources/icons/social/writefreely.svg rename to resources/icons/social/writefreely.svg diff --git a/app/Resources/icons/social/x.svg b/resources/icons/social/x.svg similarity index 100% rename from app/Resources/icons/social/x.svg rename to resources/icons/social/x.svg diff --git a/app/Resources/icons/social/youtube.svg b/resources/icons/social/youtube.svg similarity index 100% rename from app/Resources/icons/social/youtube.svg rename to resources/icons/social/youtube.svg diff --git a/app/Resources/js/modules/Charts.ts b/resources/js/_modules/Charts.ts similarity index 100% rename from app/Resources/js/modules/Charts.ts rename to resources/js/_modules/Charts.ts diff --git a/app/Resources/js/modules/ClientTimezone.ts b/resources/js/_modules/ClientTimezone.ts similarity index 100% rename from app/Resources/js/modules/ClientTimezone.ts rename to resources/js/_modules/ClientTimezone.ts diff --git a/app/Resources/js/modules/Clipboard.ts b/resources/js/_modules/Clipboard.ts similarity index 100% rename from app/Resources/js/modules/Clipboard.ts rename to resources/js/_modules/Clipboard.ts diff --git a/app/Resources/js/modules/DateTimePicker.ts b/resources/js/_modules/DateTimePicker.ts similarity index 100% rename from app/Resources/js/modules/DateTimePicker.ts rename to resources/js/_modules/DateTimePicker.ts diff --git a/app/Resources/js/modules/Dropdown.ts b/resources/js/_modules/Dropdown.ts similarity index 100% rename from app/Resources/js/modules/Dropdown.ts rename to resources/js/_modules/Dropdown.ts diff --git a/app/Resources/js/modules/EpisodesMap.ts b/resources/js/_modules/EpisodesMap.ts similarity index 91% rename from app/Resources/js/modules/EpisodesMap.ts rename to resources/js/_modules/EpisodesMap.ts index 390564f9..bc0b2ed5 100644 --- a/app/Resources/js/modules/EpisodesMap.ts +++ b/resources/js/_modules/EpisodesMap.ts @@ -11,14 +11,11 @@ import { MarkerClusterGroup } from "leaflet.markercluster"; import "leaflet.markercluster/dist/MarkerCluster.css"; import "leaflet.markercluster/dist/MarkerCluster.Default.css"; import "leaflet/dist/leaflet.css"; -import markerIconRetina from "../../images/marker/marker-icon-2x.png"; -import markerIcon from "../../images/marker/marker-icon.png"; -import markerShadow from "../../images/marker/marker-shadow.png"; Marker.prototype.options.icon = icon({ - iconRetinaUrl: markerIconRetina, - iconUrl: markerIcon, - shadowUrl: markerShadow, + iconRetinaUrl: "/assets/images/marker/marker-icon-2x.png", + iconUrl: "/assets/images/marker/marker-icon.png", + shadowUrl: "/assets/images/marker/marker-shadow.png", iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], diff --git a/app/Resources/js/modules/HotKeys.ts b/resources/js/_modules/HotKeys.ts similarity index 100% rename from app/Resources/js/modules/HotKeys.ts rename to resources/js/_modules/HotKeys.ts diff --git a/app/Resources/js/modules/Modal.ts b/resources/js/_modules/Modal.ts similarity index 100% rename from app/Resources/js/modules/Modal.ts rename to resources/js/_modules/Modal.ts diff --git a/app/Resources/js/modules/MultiSelect.ts b/resources/js/_modules/MultiSelect.ts similarity index 100% rename from app/Resources/js/modules/MultiSelect.ts rename to resources/js/_modules/MultiSelect.ts diff --git a/app/Resources/js/modules/PublishMessageWarning.ts b/resources/js/_modules/PublishMessageWarning.ts similarity index 100% rename from app/Resources/js/modules/PublishMessageWarning.ts rename to resources/js/_modules/PublishMessageWarning.ts diff --git a/app/Resources/js/modules/Select.ts b/resources/js/_modules/Select.ts similarity index 100% rename from app/Resources/js/modules/Select.ts rename to resources/js/_modules/Select.ts diff --git a/app/Resources/js/modules/SidebarToggler.ts b/resources/js/_modules/SidebarToggler.ts similarity index 100% rename from app/Resources/js/modules/SidebarToggler.ts rename to resources/js/_modules/SidebarToggler.ts diff --git a/app/Resources/js/modules/Slugify.ts b/resources/js/_modules/Slugify.ts similarity index 100% rename from app/Resources/js/modules/Slugify.ts rename to resources/js/_modules/Slugify.ts diff --git a/app/Resources/js/modules/ThemePicker.ts b/resources/js/_modules/ThemePicker.ts similarity index 100% rename from app/Resources/js/modules/ThemePicker.ts rename to resources/js/_modules/ThemePicker.ts diff --git a/app/Resources/js/modules/Time.ts b/resources/js/_modules/Time.ts similarity index 100% rename from app/Resources/js/modules/Time.ts rename to resources/js/_modules/Time.ts diff --git a/app/Resources/js/modules/Toggler.ts b/resources/js/_modules/Toggler.ts similarity index 100% rename from app/Resources/js/modules/Toggler.ts rename to resources/js/_modules/Toggler.ts diff --git a/app/Resources/js/modules/Tooltip.ts b/resources/js/_modules/Tooltip.ts similarity index 100% rename from app/Resources/js/modules/Tooltip.ts rename to resources/js/_modules/Tooltip.ts diff --git a/app/Resources/js/modules/ValidateFileSize.ts b/resources/js/_modules/ValidateFileSize.ts similarity index 100% rename from app/Resources/js/modules/ValidateFileSize.ts rename to resources/js/_modules/ValidateFileSize.ts diff --git a/app/Resources/js/modules/VideoClipBuilder.ts b/resources/js/_modules/VideoClipBuilder.ts similarity index 100% rename from app/Resources/js/modules/VideoClipBuilder.ts rename to resources/js/_modules/VideoClipBuilder.ts diff --git a/app/Resources/js/modules/audio-clipper.ts b/resources/js/_modules/audio-clipper.ts similarity index 100% rename from app/Resources/js/modules/audio-clipper.ts rename to resources/js/_modules/audio-clipper.ts diff --git a/app/Resources/js/modules/markdown-preview.ts b/resources/js/_modules/markdown-preview.ts similarity index 100% rename from app/Resources/js/modules/markdown-preview.ts rename to resources/js/_modules/markdown-preview.ts diff --git a/app/Resources/js/modules/markdown-write-preview.ts b/resources/js/_modules/markdown-write-preview.ts similarity index 100% rename from app/Resources/js/modules/markdown-write-preview.ts rename to resources/js/_modules/markdown-write-preview.ts diff --git a/app/Resources/js/modules/permalink-edit.ts b/resources/js/_modules/permalink-edit.ts similarity index 100% rename from app/Resources/js/modules/permalink-edit.ts rename to resources/js/_modules/permalink-edit.ts diff --git a/app/Resources/js/modules/play-episode-button.ts b/resources/js/_modules/play-episode-button.ts similarity index 100% rename from app/Resources/js/modules/play-episode-button.ts rename to resources/js/_modules/play-episode-button.ts diff --git a/app/Resources/js/modules/play-soundbite.ts b/resources/js/_modules/play-soundbite.ts similarity index 100% rename from app/Resources/js/modules/play-soundbite.ts rename to resources/js/_modules/play-soundbite.ts diff --git a/app/Resources/js/modules/video-clip-previewer.ts b/resources/js/_modules/video-clip-previewer.ts similarity index 100% rename from app/Resources/js/modules/video-clip-previewer.ts rename to resources/js/_modules/video-clip-previewer.ts diff --git a/app/Resources/js/modules/xml-editor.ts b/resources/js/_modules/xml-editor.ts similarity index 100% rename from app/Resources/js/modules/xml-editor.ts rename to resources/js/_modules/xml-editor.ts diff --git a/app/Resources/js/admin-audio-player.ts b/resources/js/admin-audio-player.ts similarity index 88% rename from app/Resources/js/admin-audio-player.ts rename to resources/js/admin-audio-player.ts index 994803a7..7fa61b86 100644 --- a/app/Resources/js/admin-audio-player.ts +++ b/resources/js/admin-audio-player.ts @@ -34,7 +34,15 @@ import { } from "@vime/core"; import "@vime/core/themes/default.css"; import "@vime/core/themes/light.css"; -import "./modules/play-episode-button"; +import "./_modules/play-episode-button"; + +// Register Castopod's vm player icons library +const library: HTMLVmIconLibraryElement | null = document.querySelector( + 'vm-icon-library[name="castopod-vm-player-icons"]' +); +if (library) { + library.resolver = (iconName) => `/assets/vm-player-icons/${iconName}.svg`; +} // Vime elements for audio player customElements.define("vm-player", VmPlayer); diff --git a/resources/js/admin.ts b/resources/js/admin.ts new file mode 100644 index 00000000..d3917328 --- /dev/null +++ b/resources/js/admin.ts @@ -0,0 +1,40 @@ +import "@github/markdown-toolbar-element"; +import "@github/relative-time-element"; +import "./_modules/audio-clipper"; +import ClientTimezone from "./_modules/ClientTimezone"; +import Clipboard from "./_modules/Clipboard"; +import DateTimePicker from "./_modules/DateTimePicker"; +import Dropdown from "./_modules/Dropdown"; +import HotKeys from "./_modules/HotKeys"; +import "./_modules/markdown-preview"; +import "./_modules/markdown-write-preview"; +import MultiSelect from "./_modules/MultiSelect"; +import "./_modules/permalink-edit"; +import "./_modules/play-soundbite"; +import PublishMessageWarning from "./_modules/PublishMessageWarning"; +import Select from "./_modules/Select"; +import SidebarToggler from "./_modules/SidebarToggler"; +import Slugify from "./_modules/Slugify"; +import ThemePicker from "./_modules/ThemePicker"; +import Time from "./_modules/Time"; +import Tooltip from "./_modules/Tooltip"; +import ValidateFileSize from "./_modules/ValidateFileSize"; +import "./_modules/video-clip-previewer"; +import VideoClipBuilder from "./_modules/VideoClipBuilder"; +import "./_modules/xml-editor"; + +Dropdown(); +Tooltip(); +Select(); +MultiSelect(); +Slugify(); +SidebarToggler(); +ClientTimezone(); +DateTimePicker(); +Time(); +Clipboard(); +ThemePicker(); +PublishMessageWarning(); +HotKeys(); +ValidateFileSize(); +VideoClipBuilder(); diff --git a/resources/js/app.ts b/resources/js/app.ts new file mode 100644 index 00000000..65bf64d4 --- /dev/null +++ b/resources/js/app.ts @@ -0,0 +1,5 @@ +import Dropdown from "./_modules/Dropdown"; +import Tooltip from "./_modules/Tooltip"; + +Dropdown(); +Tooltip(); diff --git a/app/Resources/js/audio-player.ts b/resources/js/audio-player.ts similarity index 90% rename from app/Resources/js/audio-player.ts rename to resources/js/audio-player.ts index 01e27470..7c15480f 100644 --- a/app/Resources/js/audio-player.ts +++ b/resources/js/audio-player.ts @@ -35,7 +35,7 @@ import { import "@vime/core/themes/default.css"; import "@vime/core/themes/light.css"; import { html, render } from "lit"; -import "./modules/play-episode-button"; +import "./_modules/play-episode-button"; const player = html`
- + @@ -85,6 +86,14 @@ const player = html`
`/assets/vm-player-icons/${iconName}.svg`; +} + // Vime elements for audio player customElements.define("vm-player", VmPlayer); customElements.define("vm-file", VmFile); diff --git a/resources/js/charts.ts b/resources/js/charts.ts new file mode 100644 index 00000000..9b09ccaa --- /dev/null +++ b/resources/js/charts.ts @@ -0,0 +1,3 @@ +import DrawCharts from "./_modules/Charts"; + +DrawCharts(); diff --git a/app/Resources/js/embed.ts b/resources/js/embed.ts similarity index 89% rename from app/Resources/js/embed.ts rename to resources/js/embed.ts index c0da411d..d587cb7b 100644 --- a/app/Resources/js/embed.ts +++ b/resources/js/embed.ts @@ -35,6 +35,14 @@ import { import "@vime/core/themes/default.css"; import "@vime/core/themes/light.css"; +// Register Castopod's vm player icons library +const library: HTMLVmIconLibraryElement | null = document.querySelector( + 'vm-icon-library[name="castopod-vm-player-icons"]' +); +if (library) { + library.resolver = (iconName) => `/assets/vm-player-icons/${iconName}.svg`; +} + // Vime elements for audio player customElements.define("vm-player", VmPlayer); customElements.define("vm-file", VmFile); diff --git a/app/Resources/js/error.ts b/resources/js/error.ts similarity index 100% rename from app/Resources/js/error.ts rename to resources/js/error.ts diff --git a/resources/js/install.ts b/resources/js/install.ts new file mode 100644 index 00000000..5f57a192 --- /dev/null +++ b/resources/js/install.ts @@ -0,0 +1,3 @@ +import Tooltip from "./_modules/Tooltip"; + +Tooltip(); diff --git a/resources/js/map.ts b/resources/js/map.ts new file mode 100644 index 00000000..2f3785e7 --- /dev/null +++ b/resources/js/map.ts @@ -0,0 +1,3 @@ +import DrawEpisodesMaps from "./_modules/EpisodesMap"; + +DrawEpisodesMaps(); diff --git a/resources/js/podcast.ts b/resources/js/podcast.ts new file mode 100644 index 00000000..f16c5618 --- /dev/null +++ b/resources/js/podcast.ts @@ -0,0 +1,10 @@ +import "@github/relative-time-element"; +import SidebarToggler from "./_modules/SidebarToggler"; +import Time from "./_modules/Time"; +import Toggler from "./_modules/Toggler"; +import Tooltip from "./_modules/Tooltip"; + +Time(); +Toggler(); +Tooltip(); +SidebarToggler(); diff --git a/app/Resources/js/typings.d.ts b/resources/js/typings.d.ts similarity index 100% rename from app/Resources/js/typings.d.ts rename to resources/js/typings.d.ts diff --git a/app/Resources/js/vite-env.d.ts b/resources/js/vite-env.d.ts similarity index 100% rename from app/Resources/js/vite-env.d.ts rename to resources/js/vite-env.d.ts diff --git a/app/Resources/fonts/inter-600.woff2 b/resources/static/fonts/inter-600.woff2 similarity index 100% rename from app/Resources/fonts/inter-600.woff2 rename to resources/static/fonts/inter-600.woff2 diff --git a/app/Resources/fonts/inter-regular.woff2 b/resources/static/fonts/inter-regular.woff2 similarity index 100% rename from app/Resources/fonts/inter-regular.woff2 rename to resources/static/fonts/inter-regular.woff2 diff --git a/app/Resources/fonts/kumbh-sans-700.woff2 b/resources/static/fonts/kumbh-sans-700.woff2 similarity index 100% rename from app/Resources/fonts/kumbh-sans-700.woff2 rename to resources/static/fonts/kumbh-sans-700.woff2 diff --git a/app/Resources/fonts/kumbh-sans-regular.woff2 b/resources/static/fonts/kumbh-sans-regular.woff2 similarity index 100% rename from app/Resources/fonts/kumbh-sans-regular.woff2 rename to resources/static/fonts/kumbh-sans-regular.woff2 diff --git a/app/Resources/fonts/noto-sans-mono-regular.woff2 b/resources/static/fonts/noto-sans-mono-regular.woff2 similarity index 100% rename from app/Resources/fonts/noto-sans-mono-regular.woff2 rename to resources/static/fonts/noto-sans-mono-regular.woff2 diff --git a/public/castopod-avatar.jpg b/resources/static/images/castopod-avatar.jpg similarity index 100% rename from public/castopod-avatar.jpg rename to resources/static/images/castopod-avatar.jpg diff --git a/public/castopod-banner-amber.jpg b/resources/static/images/castopod-banner-amber.jpg similarity index 100% rename from public/castopod-banner-amber.jpg rename to resources/static/images/castopod-banner-amber.jpg diff --git a/public/castopod-banner-crimson.jpg b/resources/static/images/castopod-banner-crimson.jpg similarity index 100% rename from public/castopod-banner-crimson.jpg rename to resources/static/images/castopod-banner-crimson.jpg diff --git a/public/castopod-banner-jacaranda.jpg b/resources/static/images/castopod-banner-jacaranda.jpg similarity index 100% rename from public/castopod-banner-jacaranda.jpg rename to resources/static/images/castopod-banner-jacaranda.jpg diff --git a/public/castopod-banner-lake.jpg b/resources/static/images/castopod-banner-lake.jpg similarity index 100% rename from public/castopod-banner-lake.jpg rename to resources/static/images/castopod-banner-lake.jpg diff --git a/public/castopod-banner-onyx.jpg b/resources/static/images/castopod-banner-onyx.jpg similarity index 100% rename from public/castopod-banner-onyx.jpg rename to resources/static/images/castopod-banner-onyx.jpg diff --git a/public/castopod-banner-pine.jpg b/resources/static/images/castopod-banner-pine.jpg similarity index 100% rename from public/castopod-banner-pine.jpg rename to resources/static/images/castopod-banner-pine.jpg diff --git a/resources/static/images/castopod-logo-base.svg b/resources/static/images/castopod-logo-base.svg new file mode 100644 index 00000000..72221cfa --- /dev/null +++ b/resources/static/images/castopod-logo-base.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/static/images/castopod-logo.svg b/resources/static/images/castopod-logo.svg new file mode 100644 index 00000000..55f4b22b --- /dev/null +++ b/resources/static/images/castopod-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/static/images/castopod-mascot_confused.svg b/resources/static/images/castopod-mascot_confused.svg new file mode 100644 index 00000000..89d51627 --- /dev/null +++ b/resources/static/images/castopod-mascot_confused.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/Resources/images/marker/marker-icon-2x.png b/resources/static/images/marker/marker-icon-2x.png similarity index 100% rename from app/Resources/images/marker/marker-icon-2x.png rename to resources/static/images/marker/marker-icon-2x.png diff --git a/app/Resources/images/marker/marker-icon.png b/resources/static/images/marker/marker-icon.png similarity index 100% rename from app/Resources/images/marker/marker-icon.png rename to resources/static/images/marker/marker-icon.png diff --git a/app/Resources/images/marker/marker-shadow.png b/resources/static/images/marker/marker-shadow.png similarity index 100% rename from app/Resources/images/marker/marker-shadow.png rename to resources/static/images/marker/marker-shadow.png diff --git a/resources/static/vm-player-icons/check.svg b/resources/static/vm-player-icons/check.svg new file mode 100644 index 00000000..bf36197d --- /dev/null +++ b/resources/static/vm-player-icons/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/static/vm-player-icons/pause.svg b/resources/static/vm-player-icons/pause.svg new file mode 100644 index 00000000..ea2847b9 --- /dev/null +++ b/resources/static/vm-player-icons/pause.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/static/vm-player-icons/play.svg b/resources/static/vm-player-icons/play.svg new file mode 100644 index 00000000..75ad8b10 --- /dev/null +++ b/resources/static/vm-player-icons/play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/static/vm-player-icons/settings.svg b/resources/static/vm-player-icons/settings.svg new file mode 100644 index 00000000..a8cd5895 --- /dev/null +++ b/resources/static/vm-player-icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/static/vm-player-icons/volume-high.svg b/resources/static/vm-player-icons/volume-high.svg new file mode 100644 index 00000000..f352c50a --- /dev/null +++ b/resources/static/vm-player-icons/volume-high.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/static/vm-player-icons/volume-low.svg b/resources/static/vm-player-icons/volume-low.svg new file mode 100644 index 00000000..999e6126 --- /dev/null +++ b/resources/static/vm-player-icons/volume-low.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/static/vm-player-icons/volume-mute.svg b/resources/static/vm-player-icons/volume-mute.svg new file mode 100644 index 00000000..44f6c50c --- /dev/null +++ b/resources/static/vm-player-icons/volume-mute.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/Resources/styles/breadcrumb.css b/resources/styles/_modules/breadcrumb.css similarity index 100% rename from app/Resources/styles/breadcrumb.css rename to resources/styles/_modules/breadcrumb.css diff --git a/app/Resources/styles/choices.css b/resources/styles/_modules/choices.css similarity index 100% rename from app/Resources/styles/choices.css rename to resources/styles/_modules/choices.css diff --git a/app/Resources/styles/colorRadioBtn.css b/resources/styles/_modules/colorRadioBtn.css similarity index 100% rename from app/Resources/styles/colorRadioBtn.css rename to resources/styles/_modules/colorRadioBtn.css diff --git a/app/Resources/styles/colors.css b/resources/styles/_modules/colors.css similarity index 100% rename from app/Resources/styles/colors.css rename to resources/styles/_modules/colors.css diff --git a/app/Resources/styles/custom.css b/resources/styles/_modules/custom.css similarity index 100% rename from app/Resources/styles/custom.css rename to resources/styles/_modules/custom.css diff --git a/app/Resources/styles/dropdown.css b/resources/styles/_modules/dropdown.css similarity index 100% rename from app/Resources/styles/dropdown.css rename to resources/styles/_modules/dropdown.css diff --git a/app/Resources/styles/fonts.css b/resources/styles/_modules/fonts.css similarity index 67% rename from app/Resources/styles/fonts.css rename to resources/styles/_modules/fonts.css index 68695229..f2d9aa00 100644 --- a/app/Resources/styles/fonts.css +++ b/resources/styles/_modules/fonts.css @@ -5,7 +5,7 @@ font-style: normal; font-weight: 400; font-display: swap; - src: url("/fonts/kumbh-sans-regular.woff2") format("woff2"); + src: url("/assets/fonts/kumbh-sans-regular.woff2") format("woff2"); } /* kumbh-sans-700 */ @@ -14,7 +14,7 @@ font-style: normal; font-weight: 700; font-display: swap; - src: url("/fonts/kumbh-sans-700.woff2") format("woff2"); + src: url("/assets/fonts/kumbh-sans-700.woff2") format("woff2"); } /* inter-regular */ @@ -23,7 +23,7 @@ font-style: normal; font-weight: 400; font-display: swap; - src: url("/fonts/inter-regular.woff2") format("woff2"); + src: url("/assets/fonts/inter-regular.woff2") format("woff2"); } /* inter-600 */ @@ -32,7 +32,7 @@ font-style: normal; font-weight: 600; font-display: swap; - src: url("/fonts/inter-600.woff2") format("woff2"); + src: url("/assets/fonts/inter-600.woff2") format("woff2"); } /* noto-sans-mono-regular */ @@ -41,6 +41,6 @@ font-style: normal; font-weight: 400; font-display: swap; - src: url("/fonts/noto-sans-mono-regular.woff2") format("woff2"); + src: url("/assets/fonts/noto-sans-mono-regular.woff2") format("woff2"); } } diff --git a/app/Resources/styles/formInputTabs.css b/resources/styles/_modules/formInputTabs.css similarity index 100% rename from app/Resources/styles/formInputTabs.css rename to resources/styles/_modules/formInputTabs.css diff --git a/app/Resources/styles/inputRange.css b/resources/styles/_modules/inputRange.css similarity index 100% rename from app/Resources/styles/inputRange.css rename to resources/styles/_modules/inputRange.css diff --git a/app/Resources/styles/radioBtn.css b/resources/styles/_modules/radioBtn.css similarity index 100% rename from app/Resources/styles/radioBtn.css rename to resources/styles/_modules/radioBtn.css diff --git a/app/Resources/styles/radioToggler.css b/resources/styles/_modules/radioToggler.css similarity index 100% rename from app/Resources/styles/radioToggler.css rename to resources/styles/_modules/radioToggler.css diff --git a/app/Resources/styles/readMore.css b/resources/styles/_modules/readMore.css similarity index 100% rename from app/Resources/styles/readMore.css rename to resources/styles/_modules/readMore.css diff --git a/app/Resources/styles/seeMore.css b/resources/styles/_modules/seeMore.css similarity index 100% rename from app/Resources/styles/seeMore.css rename to resources/styles/_modules/seeMore.css diff --git a/app/Resources/styles/stickyHeader.css b/resources/styles/_modules/stickyHeader.css similarity index 100% rename from app/Resources/styles/stickyHeader.css rename to resources/styles/_modules/stickyHeader.css diff --git a/app/Resources/styles/switch.css b/resources/styles/_modules/switch.css similarity index 100% rename from app/Resources/styles/switch.css rename to resources/styles/_modules/switch.css diff --git a/app/Resources/styles/tailwind.css b/resources/styles/_modules/tailwind.css similarity index 100% rename from app/Resources/styles/tailwind.css rename to resources/styles/_modules/tailwind.css diff --git a/resources/styles/index.css b/resources/styles/index.css new file mode 100644 index 00000000..1837cd21 --- /dev/null +++ b/resources/styles/index.css @@ -0,0 +1,15 @@ +@import url("./_modules/tailwind.css"); +@import url("./_modules/custom.css"); +@import url("./_modules/fonts.css"); +@import url("./_modules/colors.css"); +@import url("./_modules/breadcrumb.css"); +@import url("./_modules/dropdown.css"); +@import url("./_modules/choices.css"); +@import url("./_modules/radioBtn.css"); +@import url("./_modules/colorRadioBtn.css"); +@import url("./_modules/switch.css"); +@import url("./_modules/radioToggler.css"); +@import url("./_modules/formInputTabs.css"); +@import url("./_modules/stickyHeader.css"); +@import url("./_modules/readMore.css"); +@import url("./_modules/seeMore.css"); diff --git a/tailwind.config.cjs b/tailwind.config.cjs index 717a152c..6c401d7a 100644 --- a/tailwind.config.cjs +++ b/tailwind.config.cjs @@ -8,7 +8,7 @@ module.exports = { "./modules/**/Views/**/*.php", "./themes/**/*.php", "./app/Helpers/*.php", - "./app/Resources/**/*.ts", + "./resources/**/*.ts", ], theme: { extend: { diff --git a/themes/cp_admin/_layout.php b/themes/cp_admin/_layout.php index 783bd9d1..5a3ebb54 100644 --- a/themes/cp_admin/_layout.php +++ b/themes/cp_admin/_layout.php @@ -21,11 +21,11 @@ $isEpisodeArea = isset($podcast) && isset($episode); ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/admin.ts', 'js') ?> + ->asset('js/admin.ts') ?> asset('js/admin-audio-player.ts', 'js') ?> + ->asset('js/admin-audio-player.ts') ?> diff --git a/themes/cp_admin/dashboard.php b/themes/cp_admin/dashboard.php index 2b03d522..27b8e966 100644 --- a/themes/cp_admin/dashboard.php +++ b/themes/cp_admin/dashboard.php @@ -44,5 +44,5 @@ asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endsection() ?> diff --git a/themes/cp_admin/episode/view.php b/themes/cp_admin/episode/view.php index 8579b20e..c637f9e0 100644 --- a/themes/cp_admin/episode/view.php +++ b/themes/cp_admin/episode/view.php @@ -60,5 +60,5 @@ asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/index.php b/themes/cp_admin/podcast/analytics/index.php index c625586d..12ac9a4c 100644 --- a/themes/cp_admin/podcast/analytics/index.php +++ b/themes/cp_admin/podcast/analytics/index.php @@ -34,5 +34,5 @@
asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/listening_time.php b/themes/cp_admin/podcast/analytics/listening_time.php index 488ad464..3b429701 100644 --- a/themes/cp_admin/podcast/analytics/listening_time.php +++ b/themes/cp_admin/podcast/analytics/listening_time.php @@ -27,5 +27,5 @@
asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/locations.php b/themes/cp_admin/podcast/analytics/locations.php index b5544184..4f5493a8 100644 --- a/themes/cp_admin/podcast/analytics/locations.php +++ b/themes/cp_admin/podcast/analytics/locations.php @@ -32,5 +32,5 @@ asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/players.php b/themes/cp_admin/podcast/analytics/players.php index f728ca78..ec8fce09 100644 --- a/themes/cp_admin/podcast/analytics/players.php +++ b/themes/cp_admin/podcast/analytics/players.php @@ -44,5 +44,5 @@ asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/time_periods.php b/themes/cp_admin/podcast/analytics/time_periods.php index bd656741..6d8a1e45 100644 --- a/themes/cp_admin/podcast/analytics/time_periods.php +++ b/themes/cp_admin/podcast/analytics/time_periods.php @@ -25,5 +25,5 @@ asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/unique_listeners.php b/themes/cp_admin/podcast/analytics/unique_listeners.php index 29b40cab..6cc31aeb 100644 --- a/themes/cp_admin/podcast/analytics/unique_listeners.php +++ b/themes/cp_admin/podcast/analytics/unique_listeners.php @@ -27,5 +27,5 @@ asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_admin/podcast/analytics/webpages.php b/themes/cp_admin/podcast/analytics/webpages.php index 82acfd5c..a2379079 100644 --- a/themes/cp_admin/podcast/analytics/webpages.php +++ b/themes/cp_admin/podcast/analytics/webpages.php @@ -38,5 +38,5 @@ asset('js/charts.ts', 'js') ?> + ->asset('js/charts.ts') ?> endSection() ?> diff --git a/themes/cp_app/embed.php b/themes/cp_app/embed.php index 31ad1557..40b448af 100644 --- a/themes/cp_app/embed.php +++ b/themes/cp_app/embed.php @@ -13,9 +13,9 @@ ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/embed.ts', 'js') ?> + ->asset('js/embed.ts') ?> " language="getLocale() ?>" class="w-full mt-auto" + icons="castopod-vm-player-icons" style="--vm-player-box-shadow:0; --vm-player-theme: hsl(var(--color-accent-base)); --vm-control-focus-color: hsl(var(--color-accent-contrast)); --vm-control-spacing: 4px; --vm-menu-item-focus-bg: hsl(var(--color-background-highlight)); --vm-control-icon-size: 24px; " > @@ -54,7 +55,7 @@ - + diff --git a/themes/cp_app/episode/_layout-preview.php b/themes/cp_app/episode/_layout-preview.php index 48676f24..d4661aa1 100644 --- a/themes/cp_app/episode/_layout-preview.php +++ b/themes/cp_app/episode/_layout-preview.php @@ -28,13 +28,13 @@ ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/app.ts', 'js') ?> + ->asset('js/app.ts') ?> asset('js/podcast.ts', 'js') ?> + ->asset('js/podcast.ts') ?> asset('js/audio-player.ts', 'js') ?> + ->asset('js/audio-player.ts') ?> ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/app.ts', 'js') ?> + ->asset('js/app.ts') ?> diff --git a/themes/cp_app/pages/_layout.php b/themes/cp_app/pages/_layout.php index ed496c03..d2dbff4e 100644 --- a/themes/cp_app/pages/_layout.php +++ b/themes/cp_app/pages/_layout.php @@ -24,11 +24,11 @@ ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/app.ts', 'js') ?> + ->asset('js/app.ts') ?> asset('js/audio-player.ts', 'js') ?> + ->asset('js/audio-player.ts') ?> ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/app.ts', 'js') ?> + ->asset('js/app.ts') ?> asset('js/podcast.ts', 'js') ?> + ->asset('js/podcast.ts') ?> asset('js/audio-player.ts', 'js') ?> + ->asset('js/audio-player.ts') ?> ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/app.ts', 'js') ?> + ->asset('js/app.ts') ?> asset('js/podcast.ts', 'js') ?> + ->asset('js/podcast.ts') ?> ' /> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/podcast.ts', 'js') ?> + ->asset('js/podcast.ts') ?> asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> diff --git a/themes/cp_install/_layout.php b/themes/cp_install/_layout.php index 7e15d0d9..2bc42bfb 100644 --- a/themes/cp_install/_layout.php +++ b/themes/cp_install/_layout.php @@ -12,9 +12,9 @@ asset('styles/index.css', 'css') ?> + ->asset('styles/index.css') ?> asset('js/install.ts', 'js') ?> + ->asset('js/install.ts') ?> diff --git a/tsconfig.json b/tsconfig.json index b56093e0..1929331b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,8 +19,8 @@ /* Module Resolution Options */ "moduleResolution": "node", - "baseUrl": "app/Resources/js" /* Base directory to resolve non-absolute module names. */ + "baseUrl": "resources/js" /* Base directory to resolve non-absolute module names. */ }, - "include": ["app/Resources/js/**/*.ts"], + "include": ["resources/js/**/*.ts"], "exclude": [] } diff --git a/vite.config.ts b/vite.config.ts index e7dc9856..e5af5de4 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,38 +1,40 @@ +import path from "path"; import { defineConfig } from "vite"; +import codeigniter from "vite-plugin-codeigniter"; import { VitePWA } from "vite-plugin-pwa"; // https://vitejs.dev/config/ export default defineConfig({ - root: "./app/Resources", - base: "/assets/", - build: { - outDir: "../../public/assets", - assetsDir: "", - manifest: true, - sourcemap: true, - rollupOptions: { - input: { - "admin-audio-player.ts": "app/Resources/js/admin-audio-player.ts", - "admin.ts": "app/Resources/js/admin.ts", - "app.ts": "app/Resources/js/app.ts", - "audio-player.ts": "app/Resources/js/audio-player.ts", - "charts.ts": "app/Resources/js/charts.ts", - "embed.ts": "app/Resources/js/embed.ts", - "error.ts": "app/Resources/js/error.ts", - "install.ts": "app/Resources/js/install.ts", - "map.ts": "app/Resources/js/map.ts", - "podcast.ts": "app/Resources/js/podcast.ts", - "styles/index.css": "app/Resources/styles/index.css", - }, - }, - }, - plugins: [ - VitePWA({ - manifest: false, - outDir: "../../public", - }), - ], server: { host: true, + port: 5173, + strictPort: true, }, + plugins: [ + codeigniter({ + imageVariants: [ + { + src: "images/castopod-banner-*.jpg", + sizes: { + "%NAME%_small.webp": 320, + "%NAME%_medium.webp": 960, + "%NAME%_federation.jpg": 1500, + }, + }, + { + src: "images/castopod-avatar.jpg", + sizes: { + "%NAME%_tiny.webp": 40, + "%NAME%_thumbnail.webp": 150, + "%NAME%_medium.webp": 320, + "%NAME%_federation.jpg": 400, + }, + }, + ], + }), + VitePWA({ + manifest: false, + outDir: path.resolve(__dirname, "public/assets"), + }), + ], });