From 103406de59cbaeee9e0a667d499b1fb3ce1be690 Mon Sep 17 00:00:00 2001 From: DariusIII Date: Fri, 28 Aug 2026 00:59:02 +0200 Subject: [PATCH 1/2] Update site theme look --- resources/css/app.css | 347 +++++++++++++- resources/css/csp-safe.css | 446 ++++++++++++++++-- resources/js/alpine/components/movies-page.js | 4 +- resources/views/admin/anidb/edit.blade.php | 16 +- resources/views/admin/anidb/index.blade.php | 18 +- resources/views/admin/anidb/remove.blade.php | 17 +- .../views/admin/blacklist/edit.blade.php | 17 +- resources/views/admin/books/edit.blade.php | 16 +- resources/views/admin/books/index.blade.php | 18 +- resources/views/admin/console/edit.blade.php | 16 +- resources/views/admin/console/index.blade.php | 18 +- resources/views/admin/content/add.blade.php | 8 +- resources/views/admin/dashboard.blade.php | 16 +- resources/views/admin/games/edit.blade.php | 7 +- resources/views/admin/games/index.blade.php | 10 +- resources/views/admin/gdpr/index.blade.php | 9 +- resources/views/admin/gdpr/show.blade.php | 16 +- resources/views/admin/groups/bulk.blade.php | 17 +- resources/views/admin/groups/edit.blade.php | 17 +- .../views/admin/invitations/show.blade.php | 27 +- resources/views/admin/movies/add.blade.php | 8 +- resources/views/admin/movies/edit.blade.php | 23 +- resources/views/admin/music/edit.blade.php | 7 +- resources/views/admin/music/index.blade.php | 10 +- resources/views/admin/predb/index.blade.php | 19 +- .../views/admin/promotions/create.blade.php | 8 +- .../views/admin/promotions/edit.blade.php | 8 +- .../views/admin/promotions/index.blade.php | 24 +- .../promotions/show-statistics.blade.php | 26 +- .../admin/promotions/statistics.blade.php | 20 +- .../admin/regexes/category-edit.blade.php | 17 +- .../admin/regexes/category-list.blade.php | 16 +- .../admin/regexes/collection-edit.blade.php | 17 +- .../admin/regexes/collection-list.blade.php | 16 +- .../admin/regexes/collection-test.blade.php | 16 +- .../regexes/release-naming-edit.blade.php | 17 +- .../regexes/release-naming-list.blade.php | 16 +- .../regexes/release-naming-test.blade.php | 16 +- resources/views/admin/releases/edit.blade.php | 16 +- .../views/admin/releases/failed.blade.php | 17 +- resources/views/admin/roles/add.blade.php | 8 +- resources/views/admin/roles/edit.blade.php | 8 +- resources/views/admin/shows/add.blade.php | 16 +- resources/views/admin/shows/edit.blade.php | 17 +- resources/views/admin/shows/index.blade.php | 25 +- resources/views/admin/shows/remove.blade.php | 17 +- resources/views/admin/site/edit.blade.php | 7 +- resources/views/admin/site/stats.blade.php | 14 +- .../admin/site/tmux-edit-content.blade.php | 7 +- .../admin/user-role-history/index.blade.php | 10 +- .../admin/user-role-history/show.blade.php | 23 +- resources/views/admin/users/deleted.blade.php | 17 +- resources/views/admin/users/edit.blade.php | 17 +- resources/views/api/apidesc.blade.php | 6 +- resources/views/api/apiv2desc.blade.php | 6 +- resources/views/books/index.blade.php | 20 +- resources/views/browse/index.blade.php | 26 +- resources/views/browsegroup/index.blade.php | 29 +- resources/views/cart/index.blade.php | 15 +- .../components/admin/action-bar.blade.php | 2 +- .../views/components/admin/button.blade.php | 2 +- .../components/admin/data-table.blade.php | 4 +- .../components/admin/empty-state.blade.php | 6 +- .../components/admin/filter-panel.blade.php | 2 +- .../components/admin/info-alert.blade.php | 9 +- .../components/admin/page-header.blade.php | 4 +- .../components/admin/pagination.blade.php | 5 +- .../components/admin/search-bar.blade.php | 3 +- resources/views/components/admin/th.blade.php | 2 +- .../views/components/breadcrumb.blade.php | 9 +- .../views/components/button-group.blade.php | 2 +- .../views/components/button-link.blade.php | 10 +- resources/views/components/button.blade.php | 10 +- .../components/cover-release-list.blade.php | 14 +- .../cover-results-toolbar.blade.php | 12 +- .../views/components/empty-state.blade.php | 15 +- .../views/components/form/group.blade.php | 5 +- .../views/components/inline-search.blade.php | 17 +- resources/views/components/input.blade.php | 2 +- resources/views/components/label.blade.php | 2 +- .../views/components/page-header.blade.php | 45 +- resources/views/components/panel.blade.php | 2 +- .../release-category-link.blade.php | 40 ++ .../components/release-results.blade.php | 16 +- .../components/search-autocomplete.blade.php | 16 +- resources/views/components/select.blade.php | 2 +- .../views/components/sort-dropdown.blade.php | 14 +- resources/views/components/textarea.blade.php | 2 +- .../views/components/view-toggle.blade.php | 21 +- resources/views/console/index.blade.php | 15 +- resources/views/contact/index.blade.php | 12 +- resources/views/content/index.blade.php | 6 +- resources/views/details/index.blade.php | 14 +- resources/views/games/index.blade.php | 20 +- resources/views/home/index.blade.php | 19 +- resources/views/invitations/create.blade.php | 67 +-- resources/views/invitations/index.blade.php | 35 +- resources/views/invitations/show.blade.php | 15 +- resources/views/layouts/admin.blade.php | 2 +- resources/views/layouts/guest.blade.php | 2 +- resources/views/layouts/main.blade.php | 2 +- resources/views/movies/index.blade.php | 264 ++++++----- .../movies/partials/movie-card.blade.php | 322 ++++++------- .../movies/partials/release-item.blade.php | 50 +- resources/views/movies/trending.blade.php | 39 +- .../views/movies/viewmoviefull.blade.php | 18 +- .../views/movies/viewmovietrailer.blade.php | 9 +- resources/views/music/index.blade.php | 20 +- resources/views/mymovies/add.blade.php | 39 +- resources/views/mymovies/index.blade.php | 28 +- resources/views/myshows/add.blade.php | 24 +- resources/views/myshows/index.blade.php | 30 +- resources/views/nfo/view.blade.php | 22 +- .../views/partials/header-menu.blade.php | 8 +- .../views/privacy-center/index.blade.php | 10 +- resources/views/privacy-policy.blade.php | 4 +- resources/views/profile/edit.blade.php | 15 +- resources/views/profile/index.blade.php | 25 +- resources/views/rss/rssdesc.blade.php | 8 +- resources/views/series/trending.blade.php | 38 +- resources/views/series/viewseries.blade.php | 23 +- .../views/series/viewserieslist.blade.php | 28 +- resources/views/status/index.blade.php | 16 +- resources/views/terms.blade.php | 5 +- resources/views/welcome.blade.php | 4 +- resources/views/xxx/index.blade.php | 21 +- tests/Unit/LayoutShellMarkupTest.php | 178 +++++++ tests/Unit/MoviesPageMarkupTest.php | 65 +++ tests/Unit/ReleaseResultsComponentTest.php | 14 + 129 files changed, 1947 insertions(+), 1549 deletions(-) create mode 100644 resources/views/components/release-category-link.blade.php create mode 100644 tests/Unit/MoviesPageMarkupTest.php diff --git a/resources/css/app.css b/resources/css/app.css index 3e6b8424d..280475fc8 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -285,24 +285,161 @@ @apply border-amber-200 bg-amber-50/95 text-amber-950 dark:border-amber-800 dark:bg-amber-950/80 dark:text-amber-100; } -.app-page-header, .admin-page-header { - border-bottom: 1px solid var(--border-default); - background-image: linear-gradient(120deg, color-mix(in srgb, var(--color-primary-50) 72%, white), transparent 62%); + position: relative; + isolation: isolate; + border: 1px solid var(--border-default); + background-image: + radial-gradient(circle at 92% 12%, color-mix(in srgb, var(--color-primary-400) 16%, transparent), transparent 15rem), + linear-gradient(125deg, color-mix(in srgb, var(--color-primary-50) 80%, white), var(--surface-card) 68%); } -.dark .app-page-header, .dark .admin-page-header { - border-bottom-color: var(--border-default-dark); - background-image: linear-gradient(120deg, color-mix(in srgb, var(--color-primary-950) 35%, transparent), transparent 62%); + border-color: var(--border-default-dark); + background-image: + radial-gradient(circle at 92% 12%, color-mix(in srgb, var(--color-primary-500) 18%, transparent), transparent 17rem), + linear-gradient(125deg, color-mix(in srgb, var(--color-primary-950) 42%, var(--surface-card-dark)), var(--surface-card-dark) 68%); } +.app-page-header { + isolation: isolate; + border: 1px solid color-mix(in srgb, var(--color-primary-400) 20%, transparent); + background: linear-gradient(135deg, color-mix(in srgb, var(--color-primary-950) 92%, #020617), var(--color-primary-700)); +} + +.workspace-hero__glow { + position: absolute; + border-radius: 9999px; + background: rgb(255 255 255 / 0.12); + filter: blur(1px); + pointer-events: none; +} + +.workspace-hero__glow--one { + width: 18rem; + height: 18rem; + top: -11rem; + right: 8%; +} + +.workspace-hero__glow--two { + width: 11rem; + height: 11rem; + right: -4rem; + bottom: -6rem; + background: rgb(255 255 255 / 0.08); +} + +.workspace-hero__icon, +.workspace-hero__stat, +.workspace-hero__action { + border: 1px solid rgb(255 255 255 / 0.18); + background: rgb(255 255 255 / 0.12); + color: #fff; + box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.12); +} + +.workspace-hero__icon { + display: inline-flex; + width: 3.25rem; + height: 3.25rem; + flex-shrink: 0; + align-items: center; + justify-content: center; + border-radius: 1rem; + font-size: 1.25rem; +} + +.workspace-hero__stat, +.workspace-hero__action { + display: inline-flex; + align-items: center; + gap: 0.5rem; + border-radius: 9999px; + background: rgb(15 23 42 / 0.24); + color: rgb(255 255 255 / 0.88); + backdrop-filter: blur(8px); +} + +.workspace-hero__stat { + padding: 0.4rem 0.75rem; +} + +.workspace-hero__action { + min-height: 2.75rem; + padding: 0.65rem 1rem; + font-size: 0.875rem; + font-weight: 600; + transition: background-color 160ms ease, border-color 160ms ease, transform 160ms ease; +} + +.workspace-hero__action:hover { + border-color: rgb(255 255 255 / 0.3); + background: rgb(255 255 255 / 0.16); + transform: translateY(-1px); +} + +.workspace-hero__action:focus-visible { + outline: 2px solid rgb(255 255 255 / 0.9); + outline-offset: 2px; +} + +.inline-search-widget { + display: grid; + width: min(100%, 17.5rem); + grid-template-columns: minmax(0, 1fr) 2.5rem; + align-items: center; + gap: 0.5rem; + isolation: isolate; +} + +.inline-search-widget__field, +.inline-search-widget__input { + width: 100%; + min-width: 0; +} + +.inline-search-widget__input { + padding-inline-start: 2.5rem !important; +} + +.inline-search-widget__button { + position: relative; + z-index: 1; +} + +.workspace-page-header::after { + position: absolute; + z-index: -1; + width: 9rem; + height: 9rem; + right: -3rem; + bottom: -5rem; + border-radius: 9999px; + background: color-mix(in srgb, var(--color-primary-500) 10%, transparent); + content: ''; +} + +.workspace-page-header__icon, .admin-page-header__icon { + display: inline-flex; + width: 2.75rem; + height: 2.75rem; + flex-shrink: 0; + align-items: center; + justify-content: center; border: 1px solid color-mix(in srgb, var(--color-primary-500) 24%, transparent); + border-radius: 0.875rem; background-color: color-mix(in srgb, var(--color-primary-500) 11%, transparent); color: var(--color-primary-700); } +.admin-page-header__icon { + width: 2.75rem; + height: 2.75rem; +} + +.dark .workspace-page-header__icon, .dark .admin-page-header__icon { color: var(--color-primary-300); } @@ -329,6 +466,17 @@ .admin-data-table-wrap { border-radius: 0.875rem; + background-color: var(--surface-card); + box-shadow: 0 10px 32px -26px rgb(15 23 42 / 0.55); +} + +.dark .admin-data-table-wrap { + background-color: var(--surface-card-dark); + box-shadow: 0 12px 34px -24px rgb(0 0 0 / 0.8); +} + +.admin-data-table__head th { + background-image: linear-gradient(180deg, color-mix(in srgb, var(--surface-dropdown) 94%, white), var(--surface-dropdown)); } .admin-dashboard-page__hero { @@ -395,6 +543,183 @@ } } +/* Shared treatment for all first-party application views. */ +.app-view-stack > .surface-panel, +.app-view-stack > .bg-white { + border: 1px solid var(--border-default); + border-radius: 1rem; + box-shadow: 0 12px 36px -28px rgb(15 23 42 / 0.55); +} + +.dark .app-view-stack > .surface-panel, +.dark .app-view-stack > .bg-white { + border-color: var(--border-default-dark); + box-shadow: 0 14px 38px -26px rgb(0 0 0 / 0.78); +} + +.app-view-stack :where(a, button, input, select, textarea):focus-visible { + outline: 2px solid var(--color-primary-500); + outline-offset: 2px; +} + +.app-view-stack :where( + input[type='text'], + input[type='search'], + input[type='email'], + input[type='url'], + input[type='tel'], + input[type='number'], + input[type='password'], + input[type='date'], + input[type='datetime-local'], + input[type='time'], + select, + textarea +) { + border-radius: 0.75rem; + transition: border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease; +} + +.app-view-stack :where( + input[type='text'], + input[type='search'], + input[type='email'], + input[type='url'], + input[type='tel'], + input[type='number'], + input[type='password'], + input[type='date'], + input[type='datetime-local'], + input[type='time'], + select +) { + min-height: 2.75rem; +} + +.app-view-stack :where(button, .btn) { + border-radius: 0.75rem; +} + +.app-view-stack nav[aria-label='breadcrumb' i] a, +.breadcrumb-bar a { + border-radius: 0.375rem; + font-weight: 500; +} + +.breadcrumb-bar { + background-image: linear-gradient(90deg, color-mix(in srgb, var(--color-primary-50) 52%, transparent), transparent 65%); +} + +.dark .breadcrumb-bar { + background-image: linear-gradient(90deg, color-mix(in srgb, var(--color-primary-950) 26%, transparent), transparent 65%); +} + +.empty-state__icon { + border: 1px solid color-mix(in srgb, var(--color-primary-500) 18%, transparent); + background: color-mix(in srgb, var(--color-primary-500) 9%, white); + color: var(--color-primary-600); + box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.55); +} + +.dark .empty-state__icon { + background: color-mix(in srgb, var(--color-primary-500) 16%, var(--surface-card-dark)); + color: var(--color-primary-300); + box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.05); +} + +.catalog-results-toolbar, +.catalog-release-row, +.admin-card, +.admin-stat-card { + transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease; +} + +.catalog-release-row:hover, +.admin-card:hover, +.admin-stat-card:hover { + border-color: color-mix(in srgb, var(--color-primary-500) 30%, var(--border-default)); + box-shadow: 0 14px 34px -28px rgb(15 23 42 / 0.55); +} + +.dark .catalog-release-row:hover, +.dark .admin-card:hover, +.dark .admin-stat-card:hover { + border-color: color-mix(in srgb, var(--color-primary-400) 34%, var(--border-default-dark)); + box-shadow: 0 16px 36px -26px rgb(0 0 0 / 0.78); +} + +.guest-view-stack { + min-height: 100vh; + background: + radial-gradient(circle at 12% 8%, color-mix(in srgb, var(--color-primary-500) 12%, transparent), transparent 28rem), + radial-gradient(circle at 92% 88%, color-mix(in srgb, var(--color-primary-400) 8%, transparent), transparent 24rem), + var(--surface-body); +} + +.workspace-brand-mark { + border: 1px solid color-mix(in srgb, var(--color-primary-500) 24%, transparent); + background: color-mix(in srgb, var(--color-primary-500) 11%, white); + color: var(--color-primary-700); + box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.6), 0 12px 30px -20px rgb(15 23 42 / 0.5); +} + +.dark .workspace-brand-mark { + background: color-mix(in srgb, var(--color-primary-500) 18%, var(--surface-card-dark)); + color: var(--color-primary-300); + box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.06), 0 14px 32px -20px rgb(0 0 0 / 0.85); +} + +.workspace-document-header { + background-image: + radial-gradient(circle at 92% 0%, color-mix(in srgb, var(--color-primary-500) 12%, transparent), transparent 12rem), + linear-gradient(120deg, color-mix(in srgb, var(--color-primary-50) 70%, white), transparent 68%); +} + +.dark .workspace-document-header { + background-image: + radial-gradient(circle at 92% 0%, color-mix(in srgb, var(--color-primary-500) 14%, transparent), transparent 14rem), + linear-gradient(120deg, color-mix(in srgb, var(--color-primary-950) 34%, transparent), transparent 68%); +} + +.header-gradient { + border: 1px solid color-mix(in srgb, var(--color-primary-500) 30%, transparent); + background: + radial-gradient(circle at 92% 12%, rgb(255 255 255 / 0.13), transparent 14rem), + linear-gradient(135deg, color-mix(in srgb, var(--color-primary-950) 92%, #020617), var(--color-primary-700)); + color: #fff; +} + +.info-card-gradient { + border-color: color-mix(in srgb, var(--color-primary-500) 32%, var(--border-default)); + background: + linear-gradient(120deg, color-mix(in srgb, var(--color-primary-50) 72%, white), var(--surface-card)); + box-shadow: 0 12px 30px -26px rgb(15 23 42 / 0.48); +} + +.dark .info-card-gradient { + border-color: color-mix(in srgb, var(--color-primary-400) 34%, var(--border-default-dark)); + background: + linear-gradient(120deg, color-mix(in srgb, var(--color-primary-950) 34%, var(--surface-card-dark)), var(--surface-card-dark)); + box-shadow: 0 14px 32px -24px rgb(0 0 0 / 0.78); +} + +.table-header-gradient { + background: + linear-gradient(90deg, color-mix(in srgb, var(--color-primary-50) 64%, white), var(--surface-card)); +} + +.dark .table-header-gradient { + background: + linear-gradient(90deg, color-mix(in srgb, var(--color-primary-950) 30%, var(--surface-card-dark)), var(--surface-card-dark)); +} + +.dark .guest-view-stack { + background: + radial-gradient(circle at 12% 8%, color-mix(in srgb, var(--color-primary-500) 15%, transparent), transparent 30rem), + radial-gradient(circle at 92% 88%, color-mix(in srgb, var(--color-primary-600) 10%, transparent), transparent 26rem), + var(--surface-body-dark); +} + /* Default document flow - public/guest pages need vertical scrolling */ html, body { @@ -514,6 +839,7 @@ footer { .surface-panel { background-color: var(--surface-card) !important; border-color: var(--border-default); + transition: border-color 180ms ease, box-shadow 180ms ease, background-color 180ms ease; } .surface-panel.border { border-width: 1px; @@ -550,10 +876,13 @@ footer { .auth-card { background-color: var(--surface-card) !important; border: 1px solid var(--border-default); + border-radius: 1.25rem; + box-shadow: 0 24px 65px -38px rgb(15 23 42 / 0.55); } .dark .auth-card { background-color: var(--surface-card-dark) !important; border-color: var(--border-default-dark); + box-shadow: 0 26px 70px -38px rgb(0 0 0 / 0.9); } .release-chip { @apply inline-flex items-center rounded px-2 py-0.5 text-xs font-medium; @@ -628,6 +957,11 @@ main table { main thead th { background-color: var(--surface-dropdown) !important; border-bottom-color: var(--border-default) !important; + color: rgb(241 245 249); + font-size: 0.72rem; + font-weight: 700; + letter-spacing: 0.045em; + text-transform: uppercase; } .dark main thead th { background-color: var(--surface-dropdown-dark) !important; @@ -643,6 +977,7 @@ main tbody { main tbody tr { background-color: var(--surface-card) !important; border-bottom-color: var(--border-default); + transition: background-color 140ms ease; } .dark main tbody tr { background-color: var(--surface-card-dark) !important; diff --git a/resources/css/csp-safe.css b/resources/css/csp-safe.css index af37d7478..afb38f76f 100644 --- a/resources/css/csp-safe.css +++ b/resources/css/csp-safe.css @@ -787,73 +787,436 @@ code.api-token::-webkit-scrollbar-thumb:hover { } /* ------------------------------------------------------------------ */ -/* Movies grid: layout toggle (1-column default, 2-column on lg+) */ -/* Driven by [data-layout] attribute set via Alpine.js */ +/* Movies library */ /* ------------------------------------------------------------------ */ +.movies-hero { + background: + linear-gradient(135deg, color-mix(in srgb, var(--color-primary-950) 92%, #020617), var(--color-primary-700)); +} + +.movies-hero__glow { + position: absolute; + border-radius: 9999px; + background: rgb(255 255 255 / 0.12); + filter: blur(1px); + pointer-events: none; +} + +.movies-hero__glow--one { + width: 18rem; + height: 18rem; + top: -11rem; + right: 8%; +} + +.movies-hero__glow--two { + width: 11rem; + height: 11rem; + right: -4rem; + bottom: -6rem; + background: rgb(255 255 255 / 0.08); +} + +.movies-hero__icon { + display: inline-flex; + width: 3.25rem; + height: 3.25rem; + flex-shrink: 0; + align-items: center; + justify-content: center; + border: 1px solid rgb(255 255 255 / 0.18); + border-radius: 1rem; + background: rgb(255 255 255 / 0.12); + box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.12); + font-size: 1.25rem; +} + +.movies-hero__stat, +.movies-hero__action { + display: inline-flex; + align-items: center; + gap: 0.5rem; + border: 1px solid rgb(255 255 255 / 0.16); + border-radius: 9999px; + background: rgb(15 23 42 / 0.24); + color: rgb(255 255 255 / 0.88); + backdrop-filter: blur(8px); +} + +.movies-hero__stat { + padding: 0.4rem 0.75rem; +} + +.movies-hero__action { + min-height: 2.75rem; + padding: 0.65rem 1rem; + font-size: 0.875rem; + font-weight: 600; + transition: background-color 160ms ease, border-color 160ms ease, transform 160ms ease; +} + +.movies-hero__action:hover { + border-color: rgb(255 255 255 / 0.3); + background: rgb(255 255 255 / 0.16); + transform: translateY(-1px); +} + +.movies-hero__action:focus-visible { + outline: 2px solid rgb(255 255 255 / 0.9); + outline-offset: 2px; +} + +.movies-hero__action--accent { + border-color: rgb(251 146 60 / 0.45); + background: linear-gradient(135deg, rgb(249 115 22 / 0.94), rgb(220 38 38 / 0.94)); + color: #fff; +} + +.movie-filter-control { + width: 100%; + min-height: 2.75rem; + border: 1px solid rgb(209 213 219); + border-radius: 0.75rem; + background-color: #fff; + color: rgb(17 24 39); + font-size: 0.875rem; + transition: border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease; +} + +.movie-filter-control:focus { + border-color: var(--color-primary-500); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary-500) 20%, transparent); + outline: none; +} + +.dark .movie-filter-control { + border-color: rgb(75 85 99); + background-color: rgb(31 41 55); + color: rgb(243 244 246); +} + +.movie-filter-chip { + display: inline-flex; + align-items: center; + gap: 0.25rem; + border: 1px solid color-mix(in srgb, var(--color-primary-500) 24%, transparent); + border-radius: 9999px; + background-color: color-mix(in srgb, var(--color-primary-500) 9%, white); + padding: 0.35rem 0.65rem; + color: var(--color-primary-800); + font-size: 0.75rem; +} + +.dark .movie-filter-chip { + background-color: color-mix(in srgb, var(--color-primary-500) 16%, rgb(15 23 42)); + color: var(--color-primary-200); +} + .movies-grid { display: grid; - grid-template-columns: 1fr; - gap: 1.5rem; - transition: gap 0.3s ease; + grid-template-columns: minmax(0, 1fr); + gap: 1rem; } -@media (min-width: 1024px) { - .movies-grid[data-layout="2"] { - grid-template-columns: repeat(2, 1fr); - gap: 1rem; - } +.movie-card { + position: relative; + transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease; +} + +.movie-card:hover { + border-color: color-mix(in srgb, var(--color-primary-500) 38%, var(--border-default)); + box-shadow: 0 16px 36px -24px rgb(15 23 42 / 0.55); + transform: translateY(-2px); +} + +.dark .movie-card:hover { + border-color: color-mix(in srgb, var(--color-primary-400) 45%, var(--border-default-dark)); + box-shadow: 0 18px 42px -24px rgb(0 0 0 / 0.8); +} + +.movie-card__layout { + display: flex; + flex-direction: column; + min-width: 0; +} + +.movie-card__poster-wrap { + position: relative; + flex-shrink: 0; + overflow: hidden; + background: var(--surface-panel-alt); +} + +.dark .movie-card__poster-wrap { + background: var(--surface-panel-alt-dark); +} + +.movie-card__poster-link { + display: block; } -/* Cover image / placeholder sizing */ .movies-grid .movie-cover { - width: 12rem; - height: 18rem; - transition: width 0.3s ease, height 0.3s ease; + display: block; + width: 100%; + height: 15rem; + object-fit: cover; + transition: transform 240ms ease; } -.movies-grid[data-layout="2"] .movie-cover { - width: 8rem; - height: 12rem; +.movie-card:hover .movie-cover { + transform: scale(1.015); +} + +.movie-card__poster-placeholder { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 0.5rem; + color: var(--text-muted); +} + +.dark .movie-card__poster-placeholder { + color: var(--text-muted-dark); +} + +.movie-card__poster-placeholder i { + font-size: 2rem; +} + +.movie-card__poster-placeholder span { + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; +} + +.movie-card__release-count { + position: absolute; + right: 0.75rem; + bottom: 0.75rem; + display: inline-flex; + align-items: center; + gap: 0.35rem; + border: 1px solid rgb(255 255 255 / 0.18); + border-radius: 9999px; + background: rgb(15 23 42 / 0.84); + padding: 0.35rem 0.6rem; + color: #fff; + font-size: 0.7rem; + font-weight: 700; + backdrop-filter: blur(6px); +} + +.movie-card__content { + display: flex; + flex-direction: column; + padding: 1.25rem; +} + +.movie-card__title { + overflow-wrap: anywhere; +} + +.movie-meta-chip { + display: inline-flex; + align-items: center; + gap: 0.35rem; + border-radius: 9999px; + background: var(--surface-panel-alt); + padding: 0.35rem 0.6rem; + color: var(--text-muted); +} + +.dark .movie-meta-chip { + background: var(--surface-panel-alt-dark); + color: var(--text-muted-dark); +} + +.movie-meta-chip--rating { + background: rgb(254 249 195); + color: rgb(161 98 7); +} + +.dark .movie-meta-chip--rating { + background: rgb(113 63 18 / 0.45); + color: rgb(253 224 71); +} + +.movie-card__metadata-row { + display: grid; + grid-template-columns: 5rem minmax(0, 1fr); + gap: 0.65rem; + min-width: 0; +} + +.movie-card__metadata-row dt { + display: flex; + align-items: baseline; + gap: 0.4rem; + color: var(--text-muted); + font-size: 0.75rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.04em; +} + +.dark .movie-card__metadata-row dt { + color: var(--text-muted-dark); +} + +.movie-card__metadata-row dd { + min-width: 0; + color: rgb(55 65 81); +} + +.dark .movie-card__metadata-row dd { + color: rgb(209 213 219); +} + +.movie-card__metadata-row dd a { + color: var(--color-primary-600); +} + +.dark .movie-card__metadata-row dd a { + color: var(--color-primary-400); +} + +.movie-source-link { + display: inline-flex; + min-height: 2rem; + align-items: center; + gap: 0.35rem; + border-radius: 0.5rem; + padding: 0.35rem 0.6rem; + font-size: 0.75rem; + font-weight: 700; + transition: filter 160ms ease, transform 160ms ease; +} + +.movie-source-link:hover { + filter: brightness(0.96); + transform: translateY(-1px); +} + +.movie-source-link:focus-visible { + outline: 2px solid var(--color-primary-500); + outline-offset: 2px; +} + +.movie-source-link--imdb { + background: rgb(254 240 138); + color: rgb(113 63 18); +} + +.movie-source-link--tmdb { + background: color-mix(in srgb, var(--color-primary-500) 13%, white); + color: var(--color-primary-800); +} + +.movie-source-link--trakt { + background: rgb(254 226 226); + color: rgb(153 27 27); +} + +.dark .movie-source-link--imdb { + background: rgb(113 63 18 / 0.6); + color: rgb(254 240 138); +} + +.dark .movie-source-link--tmdb { + background: color-mix(in srgb, var(--color-primary-500) 20%, rgb(15 23 42)); + color: var(--color-primary-200); +} + +.dark .movie-source-link--trakt { + background: rgb(127 29 29 / 0.5); + color: rgb(254 202 202); } -/* Release card: row layout by default (1-col), column in 2-col */ .movies-grid .release-card-container { display: flex; - flex-direction: row; - align-items: flex-start; - justify-content: space-between; - gap: 1rem; - transition: gap 0.2s ease; -} - -.movies-grid[data-layout="2"] .release-card-container { flex-direction: column; gap: 0.75rem; } -.movies-grid .release-info-wrapper { - flex: 1; - min-width: 0; -} - -.movies-grid[data-layout="2"] .release-info-wrapper { - flex: unset; - min-width: unset; -} - -/* Release action buttons */ .movies-grid .release-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; - flex-shrink: 0; } -.movies-grid[data-layout="2"] .release-actions { - flex-shrink: unset; - margin-top: 0.5rem; +.movies-grid .release-actions .release-action-sm { + gap: 0.35rem; + min-height: 2rem; + border-radius: 0.5rem; +} + +.movie-release-row { + transition: border-color 160ms ease, background-color 160ms ease; +} + +.movie-release-row:hover { + border-color: color-mix(in srgb, var(--color-primary-500) 28%, var(--border-default)); +} + +@media (min-width: 640px) { + .movie-card__layout { + flex-direction: row; + } + + .movie-card__poster-wrap, + .movies-grid .movie-cover { + width: 10rem; + } + + .movies-grid .movie-cover { + height: 15rem; + } +} + +@media (min-width: 1024px) { + .movies-grid[data-layout="2"] { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .movies-grid[data-layout="1"] .movie-card__poster-wrap, + .movies-grid[data-layout="1"] .movie-cover { + width: 12rem; + } + + .movies-grid[data-layout="1"] .movie-cover { + height: 18rem; + } + + .movies-grid[data-layout="1"] .release-card-container { + flex-direction: row; + align-items: flex-start; + justify-content: space-between; + } + + .movies-grid[data-layout="1"] .release-actions { + flex-shrink: 0; + justify-content: flex-end; + } +} + +@media (prefers-reduced-motion: reduce) { + .movie-card, + .movie-cover, + .movies-hero__action, + .movie-source-link { + transition: none; + } + + .movie-card:hover, + .movie-card:hover .movie-cover, + .movies-hero__action:hover, + .movie-source-link:hover { + transform: none; + } } /* Sidebar - Useful Links Content Styling */ @@ -1008,4 +1371,3 @@ code.api-token::-webkit-scrollbar-thumb:hover { .series-detail-page .series-detail-poster { @apply rounded-xl shadow-xl transition-shadow duration-300; } - diff --git a/resources/js/alpine/components/movies-page.js b/resources/js/alpine/components/movies-page.js index 0550ef9bb..e866181aa 100644 --- a/resources/js/alpine/components/movies-page.js +++ b/resources/js/alpine/components/movies-page.js @@ -16,11 +16,11 @@ Alpine.data('moviesPage', () => ({ }, get layoutLabel() { - return this.layout === 1 ? '1 Column' : '2 Columns'; + return this.layout === 1 ? 'Comfortable list' : 'Compact grid'; }, get layoutIcon() { - return this.layout === 1 ? 'fas fa-th-list' : 'fas fa-th-large'; + return this.layout === 1 ? 'fas fa-list' : 'fas fa-table-cells-large'; }, toggleLayout() { diff --git a/resources/views/admin/anidb/edit.blade.php b/resources/views/admin/anidb/edit.blade.php index f74a0ffa7..d4cd628f9 100644 --- a/resources/views/admin/anidb/edit.blade.php +++ b/resources/views/admin/anidb/edit.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title }} -

- - Back to List - -
-
+ + + Back to List + +
diff --git a/resources/views/admin/anidb/index.blade.php b/resources/views/admin/anidb/index.blade.php index c7934136e..26142ff79 100644 --- a/resources/views/admin/anidb/index.blade.php +++ b/resources/views/admin/anidb/index.blade.php @@ -3,17 +3,13 @@ @section('content')
- -
-
-

- {{ $title }} -

-
- Total: {{ $anidblist->total() }} anime -
-
-
+ + + + {{ number_format($anidblist->total()) }} anime + + +
diff --git a/resources/views/admin/anidb/remove.blade.php b/resources/views/admin/anidb/remove.blade.php index f507423a9..8d66b131f 100644 --- a/resources/views/admin/anidb/remove.blade.php +++ b/resources/views/admin/anidb/remove.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title }} -

- - Back to List - -
-
+ + + Back to List + +
@@ -114,4 +108,3 @@
@endsection - diff --git a/resources/views/admin/blacklist/edit.blade.php b/resources/views/admin/blacklist/edit.blade.php index 4bedd0712..62f137519 100644 --- a/resources/views/admin/blacklist/edit.blade.php +++ b/resources/views/admin/blacklist/edit.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title ?? 'Binary Black/Whitelist Edit' }} -

- - Back to List - -
-
+ + + Back to List + +
@@ -182,4 +176,3 @@ {{-- Scripts moved to resources/js/csp-safe.js --}} @endsection - diff --git a/resources/views/admin/books/edit.blade.php b/resources/views/admin/books/edit.blade.php index bee816438..aa4dba91b 100644 --- a/resources/views/admin/books/edit.blade.php +++ b/resources/views/admin/books/edit.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title }} -

- - Back to List - -
-
+ + + Back to List + +
diff --git a/resources/views/admin/books/index.blade.php b/resources/views/admin/books/index.blade.php index c0b3c1de9..f28fd7efd 100644 --- a/resources/views/admin/books/index.blade.php +++ b/resources/views/admin/books/index.blade.php @@ -3,17 +3,13 @@ @section('content')
- -
-
-

- {{ $title }} -

-
- Total: {{ $bookList->total() }} books -
-
-
+ + + + {{ number_format($bookList->total()) }} books + + + diff --git a/resources/views/admin/console/edit.blade.php b/resources/views/admin/console/edit.blade.php index 36e9898ec..4978177f0 100644 --- a/resources/views/admin/console/edit.blade.php +++ b/resources/views/admin/console/edit.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title }} -

- - Back to List - -
-
+ + + Back to List + +
diff --git a/resources/views/admin/console/index.blade.php b/resources/views/admin/console/index.blade.php index d2704c6a2..d0a3b3e21 100644 --- a/resources/views/admin/console/index.blade.php +++ b/resources/views/admin/console/index.blade.php @@ -3,17 +3,13 @@ @section('content')
- -
-
-

- {{ $title }} -

-
- Total: {{ $consoleList->total() }} games -
-
-
+ + + + {{ number_format($consoleList->total()) }} games + + + diff --git a/resources/views/admin/content/add.blade.php b/resources/views/admin/content/add.blade.php index cde59daa3..b2c7e0971 100644 --- a/resources/views/admin/content/add.blade.php +++ b/resources/views/admin/content/add.blade.php @@ -7,12 +7,7 @@ @endphp
- -
-

- {{ $title }} -

-
+ @@ -185,4 +180,3 @@
@endsection - diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index f27191bff..edd354ef6 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -18,22 +18,16 @@ data-data-url="{{ route('admin.api.dashboard-data') }}" data-refresh-interval="{{ 60 * 1000 }}">
- - -
-
-

Operations overview

-

Admin Dashboard

-

Monitor index health, users, releases, and site activity from one workspace.

-
-
+ + +

Last dashboard refresh: {{ $dashboardLastRefreshedAt }}

Auto-refreshes every minute

-
- + +
diff --git a/resources/views/admin/games/edit.blade.php b/resources/views/admin/games/edit.blade.php index 3780dc230..38742de61 100644 --- a/resources/views/admin/games/edit.blade.php +++ b/resources/views/admin/games/edit.blade.php @@ -3,12 +3,7 @@ @section('content')
- -
-

- {{ $title }} -

-
+ @if(session('success')) diff --git a/resources/views/admin/games/index.blade.php b/resources/views/admin/games/index.blade.php index e3e741ec5..4128e98e3 100644 --- a/resources/views/admin/games/index.blade.php +++ b/resources/views/admin/games/index.blade.php @@ -3,14 +3,7 @@ @section('content')
- -
-
-

- {{ $title }} -

-
-
+ @if(session('success')) @@ -131,4 +124,3 @@
@endsection - diff --git a/resources/views/admin/gdpr/index.blade.php b/resources/views/admin/gdpr/index.blade.php index a29076ab3..4c25c8d6b 100644 --- a/resources/views/admin/gdpr/index.blade.php +++ b/resources/views/admin/gdpr/index.blade.php @@ -3,13 +3,7 @@ @section('content')
-
-
-

- {{ $title }} -

-
-
+ @if(session('success'))
@@ -103,4 +97,3 @@
@endsection - diff --git a/resources/views/admin/gdpr/show.blade.php b/resources/views/admin/gdpr/show.blade.php index f6e32ee3e..7aad91ba5 100644 --- a/resources/views/admin/gdpr/show.blade.php +++ b/resources/views/admin/gdpr/show.blade.php @@ -3,16 +3,11 @@ @section('content')
-
-
-

- {{ $title }} -

- - Back - -
-
+ + + Back + + @if(session('success'))
@@ -145,4 +140,3 @@
@endsection - diff --git a/resources/views/admin/groups/bulk.blade.php b/resources/views/admin/groups/bulk.blade.php index 1318b2c4f..a75a56cdc 100644 --- a/resources/views/admin/groups/bulk.blade.php +++ b/resources/views/admin/groups/bulk.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title ?? 'Bulk Add Newsgroups' }} -

- - View All Groups - -
-
+ + + View All Groups + +
@if(!empty($groupmsglist)) @@ -179,4 +173,3 @@
@endsection - diff --git a/resources/views/admin/groups/edit.blade.php b/resources/views/admin/groups/edit.blade.php index 70ad4b8e8..a37fef784 100644 --- a/resources/views/admin/groups/edit.blade.php +++ b/resources/views/admin/groups/edit.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title ?? 'Group Edit' }} -

- - Back to Groups - -
-
+ + + Back to Groups + + @if(isset($error) && $error != '') @@ -263,4 +257,3 @@
@endsection - diff --git a/resources/views/admin/invitations/show.blade.php b/resources/views/admin/invitations/show.blade.php index b4f3bf05e..effc9451d 100644 --- a/resources/views/admin/invitations/show.blade.php +++ b/resources/views/admin/invitations/show.blade.php @@ -3,35 +3,25 @@ @section('content')
- -
-
-

- {{ $title }} -

-
+ + +
@if(!$invitation->used_at) @csrf - + Resend
@csrf - + Cancel
@endif - - Back to List - + Back to List
-
-
+ +
@@ -205,4 +195,3 @@ {{-- Scripts moved to resources/js/csp-safe.js --}} @endsection - diff --git a/resources/views/admin/movies/add.blade.php b/resources/views/admin/movies/add.blade.php index ff441c25b..32de24d36 100644 --- a/resources/views/admin/movies/add.blade.php +++ b/resources/views/admin/movies/add.blade.php @@ -3,12 +3,7 @@ @section('content')
- -
-

- {{ $title }} -

-
+ @if(session('success')) @@ -101,4 +96,3 @@
@endsection - diff --git a/resources/views/admin/movies/edit.blade.php b/resources/views/admin/movies/edit.blade.php index 0c6f82456..5ef192492 100644 --- a/resources/views/admin/movies/edit.blade.php +++ b/resources/views/admin/movies/edit.blade.php @@ -3,12 +3,7 @@ @section('content')
- -
-

- {{ $title }} -

-
+ @if(session('success')) @@ -264,17 +259,11 @@ @section('content')
- -
-
-

- {{ $title }} -

- - Add Movie - -
-
+ + + Add Movie + +
diff --git a/resources/views/admin/music/edit.blade.php b/resources/views/admin/music/edit.blade.php index df45e8ad9..ab8041255 100644 --- a/resources/views/admin/music/edit.blade.php +++ b/resources/views/admin/music/edit.blade.php @@ -3,12 +3,7 @@ @section('content')
- -
-

- {{ $title }} -

-
+ @if(session('success')) diff --git a/resources/views/admin/music/index.blade.php b/resources/views/admin/music/index.blade.php index ac5eeeafd..7bcf1b4b5 100644 --- a/resources/views/admin/music/index.blade.php +++ b/resources/views/admin/music/index.blade.php @@ -3,14 +3,7 @@ @section('content')
- -
-
-

- {{ $title }} -

-
-
+ @if(session('success')) @@ -137,4 +130,3 @@
@endsection - diff --git a/resources/views/admin/predb/index.blade.php b/resources/views/admin/predb/index.blade.php index 14b48fe34..e17aab40a 100644 --- a/resources/views/admin/predb/index.blade.php +++ b/resources/views/admin/predb/index.blade.php @@ -3,17 +3,13 @@ @section('content')
- -
-
-

- {{ $title }} -

-
- Total: {{ $results->total() }} entries -
-
-
+ + + + {{ number_format($results->total()) }} entries + + +
@@ -171,4 +167,3 @@ @endif
@endsection - diff --git a/resources/views/admin/promotions/create.blade.php b/resources/views/admin/promotions/create.blade.php index 4dee60870..712d6fbc6 100644 --- a/resources/views/admin/promotions/create.blade.php +++ b/resources/views/admin/promotions/create.blade.php @@ -3,12 +3,7 @@ @section('content')
- -
-

- Create New Promotion -

-
+
@@ -129,4 +124,3 @@
@endsection - diff --git a/resources/views/admin/promotions/edit.blade.php b/resources/views/admin/promotions/edit.blade.php index 71a45ee76..014f19db5 100644 --- a/resources/views/admin/promotions/edit.blade.php +++ b/resources/views/admin/promotions/edit.blade.php @@ -3,12 +3,7 @@ @section('content')
- -
-

- Edit Promotion -

-
+ @@ -135,4 +130,3 @@
@endsection - diff --git a/resources/views/admin/promotions/index.blade.php b/resources/views/admin/promotions/index.blade.php index 373522813..99807929e 100644 --- a/resources/views/admin/promotions/index.blade.php +++ b/resources/views/admin/promotions/index.blade.php @@ -3,23 +3,12 @@ @section('content')
- -
-
-

- Role Promotions -

- -
-
- + + + View Statistics + Add New Promotion + + @if(count($promotions) > 0) @@ -135,4 +124,3 @@
@endsection - diff --git a/resources/views/admin/promotions/show-statistics.blade.php b/resources/views/admin/promotions/show-statistics.blade.php index f0a55555b..3c4b6a614 100644 --- a/resources/views/admin/promotions/show-statistics.blade.php +++ b/resources/views/admin/promotions/show-statistics.blade.php @@ -2,25 +2,12 @@ @section('content')
- -
-
-
-

- {{ $promotion->name }} - Statistics -

-

Detailed statistics for this promotion

-
- -
-
+ + + All Statistics + Back to Promotions + + @@ -294,4 +281,3 @@
@endsection - diff --git a/resources/views/admin/promotions/statistics.blade.php b/resources/views/admin/promotions/statistics.blade.php index 4ba834af4..b8304d72c 100644 --- a/resources/views/admin/promotions/statistics.blade.php +++ b/resources/views/admin/promotions/statistics.blade.php @@ -2,20 +2,11 @@ @section('content')
- -
-
-
-

- Promotion Statistics -

-

Overview of all promotion activities

-
- - Back to Promotions - -
-
+ + + Back to Promotions + + @@ -299,4 +290,3 @@
@endsection - diff --git a/resources/views/admin/regexes/category-edit.blade.php b/resources/views/admin/regexes/category-edit.blade.php index 6f4a1def2..59e268fd2 100644 --- a/resources/views/admin/regexes/category-edit.blade.php +++ b/resources/views/admin/regexes/category-edit.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title ?? 'Category Regex Edit' }} -

- - Back to List - -
-
+ + + Back to List + + @@ -185,4 +179,3 @@ {{-- Scripts moved to resources/js/csp-safe.js --}} @endsection - diff --git a/resources/views/admin/regexes/category-list.blade.php b/resources/views/admin/regexes/category-list.blade.php index 48aa286b6..b3a740758 100644 --- a/resources/views/admin/regexes/category-list.blade.php +++ b/resources/views/admin/regexes/category-list.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title ?? 'Category Regex List' }} -

- - Add New Regex - -
-
+ + + Add New Regex + +
diff --git a/resources/views/admin/regexes/collection-edit.blade.php b/resources/views/admin/regexes/collection-edit.blade.php index 3ceb76f9d..8f5146c93 100644 --- a/resources/views/admin/regexes/collection-edit.blade.php +++ b/resources/views/admin/regexes/collection-edit.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title ?? 'Collection Regex Edit' }} -

- - Back to List - -
-
+ + + Back to List + + @@ -159,4 +153,3 @@ {{-- Scripts moved to resources/js/csp-safe.js --}} @endsection - diff --git a/resources/views/admin/regexes/collection-list.blade.php b/resources/views/admin/regexes/collection-list.blade.php index c6ce2d28b..1cf4fde71 100644 --- a/resources/views/admin/regexes/collection-list.blade.php +++ b/resources/views/admin/regexes/collection-list.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title ?? 'Collection Regex List' }} -

- - Add New Regex - -
-
+ + + Add New Regex + +
diff --git a/resources/views/admin/regexes/collection-test.blade.php b/resources/views/admin/regexes/collection-test.blade.php index 4d668757c..ed4c5f9c1 100644 --- a/resources/views/admin/regexes/collection-test.blade.php +++ b/resources/views/admin/regexes/collection-test.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title ?? 'Collection Regex Test' }} -

- - Back to List - -
-
+ + + Back to List + +
diff --git a/resources/views/admin/regexes/release-naming-edit.blade.php b/resources/views/admin/regexes/release-naming-edit.blade.php index eb84aba1d..332ad53d2 100644 --- a/resources/views/admin/regexes/release-naming-edit.blade.php +++ b/resources/views/admin/regexes/release-naming-edit.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title ?? 'Release Naming Regex Edit' }} -

- - Back to List - -
-
+ + + Back to List + + @@ -159,4 +153,3 @@ {{-- Scripts moved to resources/js/csp-safe.js --}} @endsection - diff --git a/resources/views/admin/regexes/release-naming-list.blade.php b/resources/views/admin/regexes/release-naming-list.blade.php index e65ddc969..7267a3150 100644 --- a/resources/views/admin/regexes/release-naming-list.blade.php +++ b/resources/views/admin/regexes/release-naming-list.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title ?? 'Release Naming Regex List' }} -

- - Add New Regex - -
-
+ + + Add New Regex + +
diff --git a/resources/views/admin/regexes/release-naming-test.blade.php b/resources/views/admin/regexes/release-naming-test.blade.php index 44066b971..b8c5a7bff 100644 --- a/resources/views/admin/regexes/release-naming-test.blade.php +++ b/resources/views/admin/regexes/release-naming-test.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title ?? 'Release Naming Regex Test' }} -

- - Back to List - -
-
+ + + Back to List + +
diff --git a/resources/views/admin/releases/edit.blade.php b/resources/views/admin/releases/edit.blade.php index e6d6425ee..ce91e009c 100644 --- a/resources/views/admin/releases/edit.blade.php +++ b/resources/views/admin/releases/edit.blade.php @@ -4,16 +4,11 @@ @section('content')
-
-

Edit Release

- -
+ + + Back to Releases + + @if(session('success'))
@@ -253,4 +248,3 @@
@endsection - diff --git a/resources/views/admin/releases/failed.blade.php b/resources/views/admin/releases/failed.blade.php index f865b3e2f..ed6a8b1f5 100644 --- a/resources/views/admin/releases/failed.blade.php +++ b/resources/views/admin/releases/failed.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title }} -

- - View All Releases - -
-
+ + + View All Releases + + @if(session('success')) @@ -181,4 +175,3 @@
@endsection - diff --git a/resources/views/admin/roles/add.blade.php b/resources/views/admin/roles/add.blade.php index 6fe26abe1..8232eabe2 100644 --- a/resources/views/admin/roles/add.blade.php +++ b/resources/views/admin/roles/add.blade.php @@ -3,12 +3,7 @@ @section('content')
- -
-

- {{ $title }} -

-
+ @@ -214,4 +209,3 @@
@endsection - diff --git a/resources/views/admin/roles/edit.blade.php b/resources/views/admin/roles/edit.blade.php index c7861587f..167fa0a36 100644 --- a/resources/views/admin/roles/edit.blade.php +++ b/resources/views/admin/roles/edit.blade.php @@ -3,12 +3,7 @@ @section('content')
- -
-

- {{ $title }} -

-
+ @if($role) @@ -254,4 +249,3 @@
@endsection - diff --git a/resources/views/admin/shows/add.blade.php b/resources/views/admin/shows/add.blade.php index a3b9d186d..60beeb692 100644 --- a/resources/views/admin/shows/add.blade.php +++ b/resources/views/admin/shows/add.blade.php @@ -13,16 +13,11 @@ @section('content')
- -
-

- {{ $title }} -

- - Back to TV Shows List - -
+ + + Back to TV Shows List + + @if(session('success')) @@ -162,4 +157,3 @@
@endsection - diff --git a/resources/views/admin/shows/edit.blade.php b/resources/views/admin/shows/edit.blade.php index c99a9c883..e80676a70 100644 --- a/resources/views/admin/shows/edit.blade.php +++ b/resources/views/admin/shows/edit.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title }} -

- - Back to List - -
-
+ + + Back to List + +
@@ -225,4 +219,3 @@
@endsection - diff --git a/resources/views/admin/shows/index.blade.php b/resources/views/admin/shows/index.blade.php index 5afa2c8b8..fdebbdc52 100644 --- a/resources/views/admin/shows/index.blade.php +++ b/resources/views/admin/shows/index.blade.php @@ -3,23 +3,14 @@ @section('content')
- -
-
-

- {{ $title }} -

-
-
- Total: {{ $tvshowlist->total() }} shows -
- - Add TV Show - -
-
-
+ + + + {{ number_format($tvshowlist->total()) }} shows + + Add TV Show + +
diff --git a/resources/views/admin/shows/remove.blade.php b/resources/views/admin/shows/remove.blade.php index 16058e0f2..4efe50867 100644 --- a/resources/views/admin/shows/remove.blade.php +++ b/resources/views/admin/shows/remove.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title }} -

- - Back to List - -
-
+ + + Back to List + +
@@ -114,4 +108,3 @@
@endsection - diff --git a/resources/views/admin/site/edit.blade.php b/resources/views/admin/site/edit.blade.php index c7d231c94..e9c425bc7 100644 --- a/resources/views/admin/site/edit.blade.php +++ b/resources/views/admin/site/edit.blade.php @@ -4,12 +4,7 @@
- -
-

- {{ $title }} -

-
+ @if(!empty($error)) diff --git a/resources/views/admin/site/stats.blade.php b/resources/views/admin/site/stats.blade.php index 24c961343..dca6187ae 100644 --- a/resources/views/admin/site/stats.blade.php +++ b/resources/views/admin/site/stats.blade.php @@ -2,18 +2,7 @@ @section('content')
- -
-
-
- -
-
-

{{ $title }}

-

Overview of your site's performance and activity

-
-
-
+
@@ -159,4 +148,3 @@ @endif
@endsection - diff --git a/resources/views/admin/site/tmux-edit-content.blade.php b/resources/views/admin/site/tmux-edit-content.blade.php index 82b983f44..f9ca058cc 100644 --- a/resources/views/admin/site/tmux-edit-content.blade.php +++ b/resources/views/admin/site/tmux-edit-content.blade.php @@ -1,11 +1,6 @@
- -
-

- {{ $title }} -

-
+ @if(session('success')) diff --git a/resources/views/admin/user-role-history/index.blade.php b/resources/views/admin/user-role-history/index.blade.php index e0cb47a26..4d560c4ea 100644 --- a/resources/views/admin/user-role-history/index.blade.php +++ b/resources/views/admin/user-role-history/index.blade.php @@ -3,14 +3,7 @@ @section('content')
- -
-
-

- {{ $title }} -

-
-
+
@@ -184,4 +177,3 @@
@endsection - diff --git a/resources/views/admin/user-role-history/show.blade.php b/resources/views/admin/user-role-history/show.blade.php index 762070dd7..5afba3111 100644 --- a/resources/views/admin/user-role-history/show.blade.php +++ b/resources/views/admin/user-role-history/show.blade.php @@ -3,22 +3,12 @@ @section('content')
- -
-
-

- {{ $title }} -

- -
-
+ + + Edit User + Back to All + +
@@ -170,4 +160,3 @@
@endsection - diff --git a/resources/views/admin/users/deleted.blade.php b/resources/views/admin/users/deleted.blade.php index b8c084fa4..cade28e03 100644 --- a/resources/views/admin/users/deleted.blade.php +++ b/resources/views/admin/users/deleted.blade.php @@ -3,17 +3,11 @@ @section('content')
- -
-
-

- {{ $title }} -

- - Back to Active Users - -
-
+ + + Back to Active Users + +
@@ -266,4 +260,3 @@ @csrf @endsection - diff --git a/resources/views/admin/users/edit.blade.php b/resources/views/admin/users/edit.blade.php index 3ec15ef60..65aa4f92d 100644 --- a/resources/views/admin/users/edit.blade.php +++ b/resources/views/admin/users/edit.blade.php @@ -3,19 +3,13 @@ @section('content')
- -
-
-

- {{ $title }} -

+ + @if(!empty($user['id'])) - - View Role History - + View Role History @endif -
-
+ + @if(!empty($error)) @@ -173,4 +167,3 @@
@endsection - diff --git a/resources/views/api/apidesc.blade.php b/resources/views/api/apidesc.blade.php index dbc0f6e31..9d7eefedd 100644 --- a/resources/views/api/apidesc.blade.php +++ b/resources/views/api/apidesc.blade.php @@ -1,11 +1,7 @@ @extends('layouts.main') @section('content')
-
-

- {{ $title }} -

-
+

Here lives the documentation for the API for accessing NZB and index data. API functions require your API key diff --git a/resources/views/api/apiv2desc.blade.php b/resources/views/api/apiv2desc.blade.php index 8cc5e471b..7236b3020 100644 --- a/resources/views/api/apiv2desc.blade.php +++ b/resources/views/api/apiv2desc.blade.php @@ -2,11 +2,7 @@ @section('content')

-
-

- {{ $title }} -

-
+

Here lives the documentation for the API v2 for accessing NZB and index data. API functions can be called by providing an API token. diff --git a/resources/views/books/index.blade.php b/resources/views/books/index.blade.php index 8baeb2bca..3ea108659 100644 --- a/resources/views/books/index.blade.php +++ b/resources/views/books/index.blade.php @@ -2,20 +2,12 @@ @section('content')

- -
- -
+ + + {{ number_format($results->total()) }} books + {{ $categorytitle ?: 'All books' }} + +
diff --git a/resources/views/browse/index.blade.php b/resources/views/browse/index.blade.php index d8e797988..170f057c3 100644 --- a/resources/views/browse/index.blade.php +++ b/resources/views/browse/index.blade.php @@ -7,21 +7,19 @@ @section('content')
@php - $crumbs = [['label' => 'Home', 'url' => url($site['home_link'] ?? '/'), 'icon' => 'fas fa-home']]; - $currentCategoryLabel = isset($catname) && is_string($catname) && strtolower($catname) === 'all' - ? 'All' - : ($catname ?? 'All'); - if (isset($parentcat) && $parentcat != '') { - $crumbs[] = ['label' => $parentcat, 'url' => url('/browse/' . ($parentcat == 'music' ? 'Audio' : $parentcat))]; - if (isset($catname) && $catname != '' && $catname != 'all') { - $crumbs[] = ['label' => $catname]; - } - } else { - $crumbs[] = ['label' => 'Browse', 'url' => route('All')]; - $crumbs[] = ['label' => $currentCategoryLabel]; - } + $currentCategoryLabel = match (true) { + is_object($catname ?? null) => $catname->title ?? 'All', + is_string($catname ?? null) && strtolower($catname) !== 'all' => $catname, + default => 'All', + }; + $browseTitle = !empty($parentcat) && $parentcat !== 'All' ? $parentcat : 'Browse releases'; @endphp - + + + {{ number_format($results->total()) }} releases + {{ $currentCategoryLabel }} + + @if($results->count() > 0) @php diff --git a/resources/views/browsegroup/index.blade.php b/resources/views/browsegroup/index.blade.php index 9ce206bf0..642038658 100644 --- a/resources/views/browsegroup/index.blade.php +++ b/resources/views/browsegroup/index.blade.php @@ -1,23 +1,11 @@ - -
- -
+ + + {{ isset($results) ? number_format($results->total()) : 0 }} groups + @if(!empty($search)) + Filtered by {{ $search }} + @endif + + {!! $site['adbrowse'] ?? '' !!} @@ -138,4 +126,3 @@
@endif - diff --git a/resources/views/cart/index.blade.php b/resources/views/cart/index.blade.php index 541487f6a..f24f983ce 100644 --- a/resources/views/cart/index.blade.php +++ b/resources/views/cart/index.blade.php @@ -2,16 +2,11 @@ @section('content')
- -
- -
+ + + {{ number_format(count($results)) }} saved + +
diff --git a/resources/views/components/admin/action-bar.blade.php b/resources/views/components/admin/action-bar.blade.php index ca978285b..776e61194 100644 --- a/resources/views/components/admin/action-bar.blade.php +++ b/resources/views/components/admin/action-bar.blade.php @@ -1,5 +1,5 @@ {{-- Dense action/filter bar for admin list pages --}} -
merge(['class' => 'px-4 sm:px-6 py-3 bg-gray-50 dark:bg-gray-900 border-b border-gray-200 dark:border-gray-700']) }}> +
merge(['class' => 'surface-panel-alt border-b px-4 py-3 sm:px-6']) }}>
{{ $slot }}
diff --git a/resources/views/components/admin/button.blade.php b/resources/views/components/admin/button.blade.php index f2ac61160..985630479 100644 --- a/resources/views/components/admin/button.blade.php +++ b/resources/views/components/admin/button.blade.php @@ -15,7 +15,7 @@ 'warning' => 'bg-yellow-600 text-white hover:bg-yellow-700 focus:ring-yellow-500', ][$tone] ?? 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500'; - $base = 'inline-flex min-h-9 items-center justify-center gap-2 rounded-md px-3 py-2 text-sm font-medium transition focus:outline-none focus:ring-2 focus:ring-offset-2 dark:focus:ring-offset-gray-900 '.$classes; + $base = 'inline-flex min-h-11 items-center justify-center gap-2 rounded-xl px-4 py-2.5 text-sm font-semibold shadow-sm transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-gray-900 '.$classes; @endphp @if($href) diff --git a/resources/views/components/admin/data-table.blade.php b/resources/views/components/admin/data-table.blade.php index 6f63c29f3..b8b64cc26 100644 --- a/resources/views/components/admin/data-table.blade.php +++ b/resources/views/components/admin/data-table.blade.php @@ -5,11 +5,11 @@ 'striped' => false, ]) -
+
merge(['class' => 'min-w-full table-auto divide-y divide-gray-200 dark:divide-gray-700']) }}> @if(isset($head)) $sticky, ])> diff --git a/resources/views/components/admin/empty-state.blade.php b/resources/views/components/admin/empty-state.blade.php index 6b5f00074..063e44a3b 100644 --- a/resources/views/components/admin/empty-state.blade.php +++ b/resources/views/components/admin/empty-state.blade.php @@ -4,9 +4,9 @@ 'message' => null, ]) -
merge(['class' => 'px-6 py-12 text-center']) }}> - -

{{ $title }}

+
merge(['class' => 'empty-state px-6 py-14 text-center']) }}> + +

{{ $title }}

@if($message)

{{ $message }}

@endif diff --git a/resources/views/components/admin/filter-panel.blade.php b/resources/views/components/admin/filter-panel.blade.php index 33697f291..5862ed109 100644 --- a/resources/views/components/admin/filter-panel.blade.php +++ b/resources/views/components/admin/filter-panel.blade.php @@ -1,4 +1,4 @@ {{-- Compact filter panel for admin list pages --}} -
merge(['class' => 'px-4 sm:px-6 py-4 bg-gray-50 dark:bg-gray-900 border-b border-gray-200 dark:border-gray-700']) }}> +
merge(['class' => 'surface-panel-alt border-b px-4 py-4 sm:px-6']) }}> {{ $slot }}
diff --git a/resources/views/components/admin/info-alert.blade.php b/resources/views/components/admin/info-alert.blade.php index 4c30fda2b..e60e6e2a7 100644 --- a/resources/views/components/admin/info-alert.blade.php +++ b/resources/views/components/admin/info-alert.blade.php @@ -1,12 +1,13 @@ {{-- Admin blue info alert box --}} -
+
- + + +
-
+
{{ $slot }}
- diff --git a/resources/views/components/admin/page-header.blade.php b/resources/views/components/admin/page-header.blade.php index ae2f52bfd..c6ea22c71 100644 --- a/resources/views/components/admin/page-header.blade.php +++ b/resources/views/components/admin/page-header.blade.php @@ -5,7 +5,7 @@ 'subtitle' => null, ]) -
merge(['class' => 'admin-page-header px-4 py-5 sm:px-6']) }}> +
merge(['class' => 'admin-page-header workspace-page-header overflow-hidden rounded-2xl px-5 py-6 shadow-sm sm:px-7']) }}>

@@ -26,4 +26,4 @@

@endif
-
+ diff --git a/resources/views/components/admin/pagination.blade.php b/resources/views/components/admin/pagination.blade.php index d75ed3bd9..1bd5165d6 100644 --- a/resources/views/components/admin/pagination.blade.php +++ b/resources/views/components/admin/pagination.blade.php @@ -10,8 +10,7 @@ ? 'border-b border-gray-200 dark:border-gray-700' : 'border-t border-gray-200 dark:border-gray-700'; @endphp -
+
+ @endif - diff --git a/resources/views/components/admin/search-bar.blade.php b/resources/views/components/admin/search-bar.blade.php index a557b08c0..1fd7b8f77 100644 --- a/resources/views/components/admin/search-bar.blade.php +++ b/resources/views/components/admin/search-bar.blade.php @@ -1,5 +1,4 @@ {{-- Admin search/filter bar container --}} -
merge(['class' => 'px-6 py-4 bg-gray-50 dark:bg-gray-900 border-b border-gray-200 dark:border-gray-700']) }}> +
merge(['class' => 'surface-panel-alt border-b px-4 py-4 sm:px-6']) }}> {{ $slot }}
- diff --git a/resources/views/components/admin/th.blade.php b/resources/views/components/admin/th.blade.php index 2a58a46de..5505754ff 100644 --- a/resources/views/components/admin/th.blade.php +++ b/resources/views/components/admin/th.blade.php @@ -13,6 +13,6 @@ $widthClass = $width ? "w-{$width}" : ''; @endphp -
diff --git a/resources/views/components/breadcrumb.blade.php b/resources/views/components/breadcrumb.blade.php index 347b9185c..70a9eaf41 100644 --- a/resources/views/components/breadcrumb.blade.php +++ b/resources/views/components/breadcrumb.blade.php @@ -2,9 +2,9 @@ 'items' => [] ]) -
+ - diff --git a/resources/views/components/button-group.blade.php b/resources/views/components/button-group.blade.php index 5d7ca2819..2a1fb3bad 100644 --- a/resources/views/components/button-group.blade.php +++ b/resources/views/components/button-group.blade.php @@ -1,4 +1,4 @@ @blaze(fold: true) -
+
{{ $slot }}
diff --git a/resources/views/components/button-link.blade.php b/resources/views/components/button-link.blade.php index 6e23cb823..86582f6c1 100644 --- a/resources/views/components/button-link.blade.php +++ b/resources/views/components/button-link.blade.php @@ -6,13 +6,13 @@ ]) @php - $base = 'inline-flex items-center justify-center gap-2 rounded-lg border font-semibold transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 dark:focus:ring-offset-gray-900'; + $base = 'inline-flex items-center justify-center gap-2 rounded-xl border font-semibold shadow-sm transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-gray-900'; $sizes = [ - 'sm' => 'px-3 py-1.5 text-xs', - 'md' => 'px-4 py-2 text-sm', - 'lg' => 'px-6 py-3 text-base', - 'icon' => 'h-9 w-9 p-0 text-sm', + 'sm' => 'min-h-9 px-3 py-1.5 text-xs', + 'md' => 'min-h-11 px-4 py-2 text-sm', + 'lg' => 'min-h-12 px-6 py-3 text-base', + 'icon' => 'h-11 w-11 p-0 text-sm', ]; $variants = [ diff --git a/resources/views/components/button.blade.php b/resources/views/components/button.blade.php index 45388b729..d16222eb3 100644 --- a/resources/views/components/button.blade.php +++ b/resources/views/components/button.blade.php @@ -7,13 +7,13 @@ ]) @php - $base = 'inline-flex items-center justify-center gap-2 rounded-lg border font-semibold transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 dark:focus:ring-offset-gray-900 disabled:cursor-not-allowed disabled:opacity-60'; + $base = 'inline-flex items-center justify-center gap-2 rounded-xl border font-semibold shadow-sm transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 dark:focus-visible:ring-offset-gray-900 disabled:cursor-not-allowed disabled:opacity-60'; $sizes = [ - 'sm' => 'px-3 py-1.5 text-xs', - 'md' => 'px-4 py-2 text-sm', - 'lg' => 'px-6 py-3 text-base', - 'icon' => 'h-9 w-9 p-0 text-sm', + 'sm' => 'min-h-9 px-3 py-1.5 text-xs', + 'md' => 'min-h-11 px-4 py-2 text-sm', + 'lg' => 'min-h-12 px-6 py-3 text-base', + 'icon' => 'h-11 w-11 p-0 text-sm', ]; $variants = [ diff --git a/resources/views/components/cover-release-list.blade.php b/resources/views/components/cover-release-list.blade.php index a8ccd6364..12037d8a2 100644 --- a/resources/views/components/cover-release-list.blade.php +++ b/resources/views/components/cover-release-list.blade.php @@ -20,9 +20,9 @@ @endphp @if(!empty($displayReleases)) -
-

- Available Releases +
+

+ Available releases @if($totalReleaseCount > $maxReleases) (Showing {{ $maxReleases }} of {{ $totalReleaseCount }}) @endif @@ -30,14 +30,14 @@
@foreach($displayReleases as $release) @if(!empty($release->searchname)) -
+
{{ $release->searchname }} @if($shouldShowCheckbox) -

merge(['class' => "px-4 py-2.5 {$alignClass} text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wide {$widthClass}"]) }}> +merge(['class' => "px-4 py-3 {$alignClass} text-xs font-semibold text-gray-600 dark:text-gray-300 uppercase tracking-wider {$widthClass}"]) }}> {{ $slot }} - - {{ $result->category_name ?? 'Other' }} - + {{ $dateValue ? userDateDiffForHumans($dateValue) : 'Unknown' }} @@ -238,9 +240,11 @@ @endif
- - {{ $result->category_name ?? 'Other' }} - + {{ $dateValue ? userDateDiffForHumans($dateValue) : 'Unknown' }} {{ $sizeLabel }} {{ $result->totalpart ?? 0 }} files diff --git a/resources/views/components/search-autocomplete.blade.php b/resources/views/components/search-autocomplete.blade.php index 17966e16c..96f991f1d 100644 --- a/resources/views/components/search-autocomplete.blade.php +++ b/resources/views/components/search-autocomplete.blade.php @@ -23,10 +23,11 @@ @endphp
-
+
@if($categorySelect && !empty($categories)) merge(['class' => 'w-full rounded-lg border border-gray-300 bg-white px-3 py-2 text-gray-900 shadow-sm transition focus:border-primary-500 focus:ring-primary-500 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100']) }}> + diff --git a/resources/views/components/sort-dropdown.blade.php b/resources/views/components/sort-dropdown.blade.php index 9eb83f0db..5ecd42707 100644 --- a/resources/views/components/sort-dropdown.blade.php +++ b/resources/views/components/sort-dropdown.blade.php @@ -2,11 +2,13 @@
+ class="absolute right-0 z-50 mt-2 w-56 origin-top-right overflow-hidden rounded-xl border border-gray-200 bg-white shadow-xl focus:outline-none dark:border-gray-600 dark:bg-gray-800" + role="menu">
@foreach($sortOptions as $sortKey => $sortData) {{ $sortData['label'] }} diff --git a/resources/views/components/textarea.blade.php b/resources/views/components/textarea.blade.php index 9faf6848d..feebf524b 100644 --- a/resources/views/components/textarea.blade.php +++ b/resources/views/components/textarea.blade.php @@ -1,2 +1,2 @@ @blaze(fold: true) - + diff --git a/resources/views/components/view-toggle.blade.php b/resources/views/components/view-toggle.blade.php index 8ed4bfb10..c93a085b0 100644 --- a/resources/views/components/view-toggle.blade.php +++ b/resources/views/components/view-toggle.blade.php @@ -85,31 +85,28 @@ $showThumbnails = request()->query('thumbs', '0') === '1'; @endphp -
- View: +
+ View @if($currentView === 'covers') {{-- Currently in cover view --}} - Covers - | - List + Covers + List @else {{-- Currently in list view --}} @if($covgroup || $shows) - Covers - | + Covers @endif - List + List {{-- Thumbnail toggle in list view - client-side via Alpine --}} @if($covgroup || $shows) - | @endif diff --git a/resources/views/console/index.blade.php b/resources/views/console/index.blade.php index 6ce31761e..190fd517f 100644 --- a/resources/views/console/index.blade.php +++ b/resources/views/console/index.blade.php @@ -7,15 +7,14 @@ @section('content')
@php - $crumbs = [['label' => 'Home', 'url' => url($site['home_link'] ?? '/'), 'icon' => 'fas fa-home']]; - if (!empty($catname) && is_object($catname) && !empty($catname->parent)) { - $crumbs[] = ['label' => $catname->parent->title, 'url' => url('/browse/' . $catname->parent->title)]; - $crumbs[] = ['label' => $catname->title, 'url' => url('/browse/' . $catname->title)]; - } else { - $crumbs[] = ['label' => 'Console / ' . (is_object($catname) ? $catname->title : $catname)]; - } + $consoleCategory = is_object($catname) ? $catname->title : ($catname ?: 'All consoles'); @endphp - + + + {{ number_format($results->total()) }} releases + {{ $consoleCategory }} + + @if($results->count() > 0) diff --git a/resources/views/contact/index.blade.php b/resources/views/contact/index.blade.php index ecc040c4d..d4bd43b1e 100644 --- a/resources/views/contact/index.blade.php +++ b/resources/views/contact/index.blade.php @@ -4,16 +4,7 @@ @section('content')
-
-

Contact Us

- -
+
@if(isset($msg) && $msg != '') @@ -132,4 +123,3 @@ {!! \App\Support\CaptchaHelper::renderJs() !!} @endif @endpush - diff --git a/resources/views/content/index.blade.php b/resources/views/content/index.blade.php index f77d7c91b..e570a8a7b 100644 --- a/resources/views/content/index.blade.php +++ b/resources/views/content/index.blade.php @@ -2,6 +2,8 @@ @section('content')
+ + @if($front)
@@ -11,7 +13,7 @@
@if(filled($item->title)) -

{{ $item->title }}

+

{{ $item->title }}

@endif @if(isset($item->body)) @@ -37,8 +39,6 @@
@else - -
@if(!empty($content) && count($content) > 0)
diff --git a/resources/views/details/index.blade.php b/resources/views/details/index.blade.php index 3accc02b7..4593ccac2 100644 --- a/resources/views/details/index.blade.php +++ b/resources/views/details/index.blade.php @@ -6,14 +6,12 @@ @section('content')
-
-

Release Details

- -
+ + + {{ $release->category_name ?? 'Release' }} + {{ isset($release->size) ? number_format($release->size / 1073741824, 2).' GB' : 'Size unavailable' }} + +
diff --git a/resources/views/games/index.blade.php b/resources/views/games/index.blade.php index f8be22945..4f78fd2c4 100644 --- a/resources/views/games/index.blade.php +++ b/resources/views/games/index.blade.php @@ -6,20 +6,12 @@ @section('content')
- -
- -
+ + + {{ number_format($results->total()) }} games + {{ $catname ?: 'All games' }} + +
diff --git a/resources/views/home/index.blade.php b/resources/views/home/index.blade.php index 3be530fdd..a4936fbd2 100644 --- a/resources/views/home/index.blade.php +++ b/resources/views/home/index.blade.php @@ -1,17 +1,10 @@ @extends('layouts.main') @section('content') - -
-
-

Welcome back

-

Jump back into browsing releases, searching the index, or managing your account.

-
- -
- Search - Browse -
-
-
+ + + Search + Browse + + @endsection diff --git a/resources/views/invitations/create.blade.php b/resources/views/invitations/create.blade.php index d4d82f0d5..c1f6262c4 100644 --- a/resources/views/invitations/create.blade.php +++ b/resources/views/invitations/create.blade.php @@ -1,34 +1,18 @@ @extends('layouts.main') @section('content') + + @if($invite_mode) + + {{ number_format($user_invites_left) }} invites left + + + My invitations + + @endif + + @unless($invite_mode) -
- -
@@ -41,34 +25,6 @@
@else -
- -
-
@@ -231,4 +187,3 @@
@endif @endsection - diff --git a/resources/views/invitations/index.blade.php b/resources/views/invitations/index.blade.php index 057ee2cc6..f9e3875ff 100644 --- a/resources/views/invitations/index.blade.php +++ b/resources/views/invitations/index.blade.php @@ -1,6 +1,18 @@ @extends('layouts.main') @section('content') + + @if($invite_mode) + + {{ number_format($stats['total'] ?? 0) }} sent + {{ number_format($stats['pending'] ?? 0) }} pending + + + Send invitation + + @endif + + @unless($invite_mode)
@@ -11,28 +23,6 @@
@else -
- -
-
@@ -251,4 +241,3 @@
@endunless @endsection - diff --git a/resources/views/invitations/show.blade.php b/resources/views/invitations/show.blade.php index b9f4187f1..624bbfcaa 100644 --- a/resources/views/invitations/show.blade.php +++ b/resources/views/invitations/show.blade.php @@ -2,19 +2,7 @@ @section('content')
- +
@@ -174,4 +162,3 @@
@endsection - diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php index 55267b63d..f0a4ab560 100644 --- a/resources/views/layouts/admin.blade.php +++ b/resources/views/layouts/admin.blade.php @@ -101,7 +101,7 @@ -
+
@unless(trim($__env->yieldContent('suppress_layout_flash'))) @if(session('success'))
diff --git a/resources/views/layouts/guest.blade.php b/resources/views/layouts/guest.blade.php index 4ef7cd5c2..9f31439d1 100644 --- a/resources/views/layouts/guest.blade.php +++ b/resources/views/layouts/guest.blade.php @@ -33,7 +33,7 @@ @endif @endif - + @php $legacyMessage = session('message'); $legacyType = session('message_type'); diff --git a/resources/views/layouts/main.blade.php b/resources/views/layouts/main.blade.php index e933948df..76dd48f3a 100644 --- a/resources/views/layouts/main.blade.php +++ b/resources/views/layouts/main.blade.php @@ -72,7 +72,7 @@
-
+
@if(session('success'))
diff --git a/resources/views/movies/index.blade.php b/resources/views/movies/index.blade.php index 421dcb99e..555b2636a 100644 --- a/resources/views/movies/index.blade.php +++ b/resources/views/movies/index.blade.php @@ -5,24 +5,89 @@ @endpush @section('content') -
- @php - $currentMovieCategory = !empty($categorytitle) ? $categorytitle : 'All'; - $movieCrumbs = [ - ['label' => 'Home', 'url' => url($site['home_link'] ?? '/'), 'icon' => 'fas fa-home'], - ['label' => 'Movies', 'url' => $currentMovieCategory !== 'All' ? route('Movies') : null], - ['label' => $currentMovieCategory], - ]; - @endphp - +@php + $currentMovieCategory = !empty($categorytitle) ? $categorytitle : 'All movies'; + $activeMovieFilters = collect([ + 'Title' => $title ?? '', + 'Genre' => $genre ?? '', + 'Year' => $year ?? '', + 'Rating' => !empty($rating) ? $rating . '+ stars' : '', + ])->filter(static fn ($value): bool => $value !== '' && $value !== null); +@endphp - {{-- Movies Filter Section --}} -
-
-
-

- Filter Movies +
+
+ + + +
+
+ + +
+ +
+

Discover and download

+

Movies

+
+
+ +

+ Browse available movies, compare recent releases, and narrow the catalog by title, genre, year, or rating. +

+ +
+ + + {{ isset($results) ? number_format($results->total()) : 0 }} movies + + + + {{ $currentMovieCategory }} + + @if($activeMovieFilters->isNotEmpty()) + + + {{ $activeMovieFilters->count() }} active {{ Str::plural('filter', $activeMovieFilters->count()) }} + + @endif +
+
+ +
+ + + + + Trending now + +
+
+
+ +
+
+
+

+ Find your next movie

+

Combine filters to quickly narrow the catalog.

+
+ +
-
- -
- {{-- Layout Toggle Button --}} - - - {{-- Trending Movies Button --}} - - View Trending Movies - + @if($activeMovieFilters->isNotEmpty()) + + Clear filters + + @endif
- {{-- Search Form --}} - -
+ +
- - + +
+ + +
- - + + @foreach($genres ?? [] as $gen) + + @endforeach
- - + + @foreach($years ?? [] as $yr) + + @endforeach
- - + + @foreach($ratings ?? [] as $rate) + + @endforeach
-
-
-
+
- {{-- Movies List --}} @if(isset($results) && $results->count() > 0) -
- {{-- Results Summary and Pagination --}} -
-
- {{ $results->total() }} movies found - - (showing {{ $results->firstItem() }}-{{ $results->lastItem() }}) - +
+
+
+

+ {{ number_format($results->total()) }} {{ Str::plural('movie', $results->total()) }} found +

+

+ Showing {{ number_format($results->firstItem()) }}–{{ number_format($results->lastItem()) }} on this page +

-
- - {{ $results->links() }} + +
+ +
{{ $results->links() }}
- {{-- Movies Grid --}} -
+
@foreach($results as $result) @include('movies.partials.movie-card', ['result' => $result, 'site' => $site]) @endforeach
- {{-- Bottom Pagination --}} -
+
{{ $results->links() }}
-
+
@else - +
+

Movie results

+ +
@endif
- -{{-- NFO, preview, and other modals are included globally via layouts.main --}} @endsection - diff --git a/resources/views/movies/partials/movie-card.blade.php b/resources/views/movies/partials/movie-card.blade.php index fce5632b6..b0cd9cf09 100644 --- a/resources/views/movies/partials/movie-card.blade.php +++ b/resources/views/movies/partials/movie-card.blade.php @@ -1,7 +1,3 @@ -{{-- Movie Card Partial --}} -{{-- Props: $result (movie object with ->releases array), $site (site configuration) --}} -{{-- Layout-agnostic: visual differences are driven by CSS via the parent .movies-grid[data-layout] --}} - @props([ 'result', 'site' => [], @@ -9,206 +5,154 @@ @php $releases = $result->releases ?? []; - $totalReleases = $result->total_releases ?? count($releases); - $maxReleases = 2; - $guid = !empty($releases) ? $releases[0]->guid : null; + $totalReleases = (int) ($result->total_releases ?? count($releases)); + $guid = !empty($releases) ? ($releases[0]->guid ?? null) : null; + $movieUrl = !empty($result->imdbid) + ? route('movie.view', ['imdbid' => $result->imdbid]) + : ($guid ? url('/details/' . $guid) : null); @endphp -
-
- {{-- Movie Poster --}} -
- @if($guid) - - @if(isset($result->cover) && $result->cover) - {{ $result->title }} - @else -
- -
- @endif -
- @else - @if(isset($result->cover) && $result->cover) - {{ $result->title }} - @else -
- -
- @endif +
+
+
+ @if($movieUrl) + @endif + + @if(!empty($result->cover)) + {{ $result->title }} poster + @else + + @endif + + @if($movieUrl) + + @endif + + + + {{ $totalReleases }} {{ Str::plural('release', $totalReleases) }} +
- {{-- Movie Details --}} -
- {{-- Title --}} -
-
- @if(isset($result->imdbid) && $result->imdbid) - -

{{ $result->title }}

+
+
+
+
+ @if($movieUrl) + +

+ {{ $result->title }} +

+
+ @else +

{{ $result->title }}

+ @endif + +
+ @if(!empty($result->year)) + + {{ $result->year }} + + @endif + @if(!empty($result->rating)) + + {{ $result->rating }} / 10 + + @endif + @if(!empty($result->latest_postdate)) + + Updated {{ userDateDiffForHumans($result->latest_postdate) }} + + @endif +
+
+
+ + @if(!empty($result->plot)) +

{{ $result->plot }}

+ @endif + + @if(!empty($result->genre) || !empty($result->director) || !empty($result->actors)) + + @endif + +
+ @if(!empty($result->imdbid)) + + IMDb (opens in a new tab) + + @endif + @if(!empty($result->tmdbid)) + + TMDb (opens in a new tab) + + @endif + @if(!empty($result->traktid)) + + Trakt (opens in a new tab) - @else -

{{ $result->title }}

@endif - - {{-- Year and Rating --}} -
- @if(isset($result->year) && $result->year) - {{ $result->year }} - @endif - @if(isset($result->rating) && $result->rating) - - {{ $result->rating }} - - @endif -
- - {{-- External Links --}} -
- @if(isset($result->imdbid) && $result->imdbid) - - IMDb - - @endif - @if(isset($result->tmdbid) && $result->tmdbid) - - TMDb - - @endif - @if(isset($result->traktid) && $result->traktid) - - Trakt - - @endif -
- {{-- Plot --}} - @if(isset($result->plot) && $result->plot) -

{{ $result->plot }}

- @endif - - {{-- Metadata: Genre, Director, Actors --}} -
- @if(isset($result->genre) && $result->genre) -
- Genre: {!! $result->genre !!} -
- @endif - @if(isset($result->director) && $result->director) -
- Director: {!! $result->director !!} -
- @endif - @if(isset($result->actors) && $result->actors) -
- Actors: {!! $result->actors !!} -
- @endif -
- - {{-- Release Information --}} @if($guid && !empty($releases)) -
-

- Available Releases - @if($totalReleases > $maxReleases) - - (Showing {{ $maxReleases }} of {{ $totalReleases }}) - +
+
+

+ Latest releases +

+ @if($totalReleases > count($releases) && !empty($result->imdbid)) + + View all {{ $totalReleases }} + @endif -

-
+
+ +
@foreach($releases as $index => $release) - @if(($release->searchname ?? null) && ($release->guid ?? null)) -
-
-
- {{-- Release Name --}} - - {{ $release->searchname }} - - - {{-- Info Badges --}} -
- @if($release->size) - - {{ number_format($release->size / 1073741824, 2) }} GB - - @endif - - @if($release->postdate) - - {{ userDate($release->postdate, 'M d, Y H:i') }} - - @endif - - @if($release->adddate) - - {{ userDateDiffForHumans($release->adddate) }} - - @endif - - @if(($release->haspreview ?? 0) == 1) - - @endif -
-
- - {{-- Action Buttons --}} -
- - Download - - - - - - Details - - - @if($release->id) - - @endif -
-
-
- @endif + @include('movies.partials.release-item', ['release' => $release, 'index' => $index]) @endforeach
-
+ @endif
-
+
diff --git a/resources/views/movies/partials/release-item.blade.php b/resources/views/movies/partials/release-item.blade.php index 5baab4dd2..178022e0e 100644 --- a/resources/views/movies/partials/release-item.blade.php +++ b/resources/views/movies/partials/release-item.blade.php @@ -1,71 +1,67 @@ -{{-- Release Item Partial --}} -{{-- Props: $release (object with ->id, ->guid, ->searchname, ->size, ->postdate, ->adddate, ->haspreview), $layout, $index --}} - @props([ 'release', - 'layout' => 2, 'index' => 0, ]) @if(($release->searchname ?? null) && ($release->guid ?? null)) -
-
-
- {{-- Release Name --}} +
+
+
{{ $release->searchname }} - {{-- Info Badges --}} -
+
@if($release->size) - {{ number_format($release->size / 1073741824, 2) }} GB + {{ number_format($release->size / 1073741824, 2) }} GB @endif @if($release->postdate) - {{ userDate($release->postdate, 'M d, Y H:i') }} + {{ userDate($release->postdate, 'M j, Y') }} @endif @if($release->adddate) - {{ userDateDiffForHumans($release->adddate) }} + {{ userDateDiffForHumans($release->adddate) }} @endif @if(($release->haspreview ?? 0) == 1) @endif
- {{-- Action Buttons --}} -
+
- Download + class="release-action-sm release-action-download focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-green-500" + aria-label="Download {{ $release->searchname }}"> + Download - Details + class="release-action-sm release-action-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-500" + aria-label="View details for {{ $release->searchname }}"> + Details @if($release->id) @@ -73,5 +69,5 @@ @endif
-
+
@endif diff --git a/resources/views/movies/trending.blade.php b/resources/views/movies/trending.blade.php index 7f4fc07b9..c34bd9130 100644 --- a/resources/views/movies/trending.blade.php +++ b/resources/views/movies/trending.blade.php @@ -2,33 +2,17 @@ @section('content')
- - - -
-
-
-

- Trending Movies -

-

Most downloaded movies in the last 48 hours - Updated every hour

-
-
- @if(auth()->check()) - - RSS Feed - - @endif - - Browse All Movies - -
-
-
+ + + {{ isset($trendingMovies) ? number_format($trendingMovies->count()) : 0 }} trending + + + @if(auth()->check()) + RSS Feed + @endif + Browse all movies + + @if(isset($trendingMovies) && $trendingMovies->count() > 0) @@ -163,4 +147,3 @@
@endsection - diff --git a/resources/views/movies/viewmoviefull.blade.php b/resources/views/movies/viewmoviefull.blade.php index 3744192db..0ae43ed78 100644 --- a/resources/views/movies/viewmoviefull.blade.php +++ b/resources/views/movies/viewmoviefull.blade.php @@ -2,11 +2,16 @@ @section('content')
- + + + @if(!empty($movie['year'] ?? null)) + {{ $movie['year'] }} + @endif + @if(!empty($movie['rating'] ?? null)) + {{ $movie['rating'] }}/10 + @endif + + @if(isset($movie))
@@ -24,8 +29,6 @@
-

{{ $movie['title'] ?? 'Unknown Title' }}

- @if(!empty($movie['tagline'] ?? null))

"{{ $movie['tagline'] }}"

@endif @@ -243,4 +246,3 @@
@endsection - diff --git a/resources/views/movies/viewmovietrailer.blade.php b/resources/views/movies/viewmovietrailer.blade.php index f1b2c22aa..971c633eb 100644 --- a/resources/views/movies/viewmovietrailer.blade.php +++ b/resources/views/movies/viewmovietrailer.blade.php @@ -2,16 +2,10 @@ @section('content')
- +
@if(isset($movie)) -

{{ $movie['title'] ?? 'Movie Trailer' }}

- @if(isset($movie['trailer']) && $movie['trailer'])