diff --git a/resources/js/alpine/components/inline-search.js b/resources/js/alpine/components/inline-search.js new file mode 100644 index 000000000..76a5b3e69 --- /dev/null +++ b/resources/js/alpine/components/inline-search.js @@ -0,0 +1,34 @@ +/** + * Inline search – plain DOM listeners (no Alpine x-data needed). + * + * Each .inline-search-widget has a pre-built data-base-url including category + * param (e.g. "/search?t=6041"). This script just appends "&search=". + * + * Supports multiple instances on the same page. + * Works safely inside nested forms / x-data scopes. + */ +document.addEventListener('DOMContentLoaded', () => { + document.querySelectorAll('.inline-search-widget').forEach((widget) => { + const input = widget.querySelector('[data-role="inline-search-input"]'); + const btn = widget.querySelector('[data-role="inline-search-btn"]'); + if (!input || !btn) return; + + function doSearch() { + const q = input.value.trim(); + if (!q) return; + + const baseUrl = widget.dataset.baseUrl || '/search'; + const sep = baseUrl.includes('?') ? '&' : '?'; + window.location.href = baseUrl + sep + 'search=' + encodeURIComponent(q); + } + + btn.addEventListener('click', doSearch); + input.addEventListener('keydown', (e) => { + if (e.key === 'Enter') { + e.preventDefault(); + doSearch(); + } + }); + }); +}); + diff --git a/resources/js/alpine/index.js b/resources/js/alpine/index.js index c9b1f0620..5d02abae7 100644 --- a/resources/js/alpine/index.js +++ b/resources/js/alpine/index.js @@ -27,6 +27,7 @@ import './components/confirm-link.js'; import './components/toast-notification.js'; import './components/tab-switcher.js'; import './components/cart-button.js'; +import './components/inline-search.js'; import './components/search-autocomplete.js'; import './components/dismissible.js'; diff --git a/resources/views/books/index.blade.php b/resources/views/books/index.blade.php index 1437cea6b..1e474e3da 100644 --- a/resources/views/books/index.blade.php +++ b/resources/views/books/index.blade.php @@ -73,7 +73,7 @@ @if(count($results) > 0) -
+

@@ -87,9 +87,12 @@ :shows="false" />

- - {{ $results->total() }} results found - +
+ + + {{ $results->total() }} results found + +
diff --git a/resources/views/browse/index.blade.php b/resources/views/browse/index.blade.php index 5eee1bf0d..5d4376c94 100644 --- a/resources/views/browse/index.blade.php +++ b/resources/views/browse/index.blade.php @@ -6,41 +6,18 @@ @section('content')
- -
- -
+ @php + $crumbs = [['label' => 'Home', 'url' => url($site['home_link'] ?? '/'), 'icon' => 'fas fa-home']]; + 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 / ' . ($catname ?? 'All')]; + } + @endphp + @if($results->count() > 0)
@@ -95,8 +72,19 @@
- -
+ +
+ @php + $searchPlaceholder = 'Search'; + if (!empty($parentcat) && $parentcat !== 'All') { + $searchPlaceholder .= ' in ' . $parentcat; + if (!empty($catname) && $catname !== 'All' && $catname !== 'all') { + $searchPlaceholder .= ' ' . $catname; + } + } + $searchPlaceholder .= '...'; + @endphp +
@@ -217,7 +205,7 @@ - + {{ $result->category_name ?? 'Other' }} @@ -292,7 +280,7 @@ {{ $result->searchname }}
- + {{ $result->category_name ?? 'Other' }} {{ userDateDiffForHumans($result->adddate) }} @@ -324,11 +312,11 @@
@else -
- -

No releases found

-

Try adjusting your search criteria or browse other categories.

-
+ @endif {{-- All modals (preview, mediainfo, filelist, NFO) are included globally via layouts.main --}} diff --git a/resources/views/components/breadcrumb.blade.php b/resources/views/components/breadcrumb.blade.php new file mode 100644 index 000000000..347b9185c --- /dev/null +++ b/resources/views/components/breadcrumb.blade.php @@ -0,0 +1,35 @@ +@props([ + 'items' => [] +]) + +
+ +
+ diff --git a/resources/views/components/empty-state.blade.php b/resources/views/components/empty-state.blade.php new file mode 100644 index 000000000..e35f1d979 --- /dev/null +++ b/resources/views/components/empty-state.blade.php @@ -0,0 +1,25 @@ +@props([ + 'icon' => 'fas fa-search', + 'title' => 'No results found', + 'message' => 'Try adjusting your search criteria or browse other categories.', + 'actionUrl' => null, + 'actionLabel' => null, + 'actionIcon' => null, +]) + +
+
+ +
+

{{ $title }}

+

{{ $message }}

+ @if($actionUrl && $actionLabel) + + @if($actionIcon) + + @endif + {{ $actionLabel }} + + @endif +
+ diff --git a/resources/views/components/inline-search.blade.php b/resources/views/components/inline-search.blade.php new file mode 100644 index 000000000..76df33726 --- /dev/null +++ b/resources/views/components/inline-search.blade.php @@ -0,0 +1,31 @@ +@props([ + 'action' => null, + 'placeholder' => 'Quick search...', + 'category' => null, +]) + +@php + $baseUrl = $action ?? route('search'); + if ($category !== null && (int) $category > 0) { + $baseUrl .= (str_contains($baseUrl, '?') ? '&' : '?') . 't=' . (int) $category; + } +@endphp + +
+
+
+ +
+ +
+ +
+ diff --git a/resources/views/console/index.blade.php b/resources/views/console/index.blade.php index 5db33b034..9269a24ab 100644 --- a/resources/views/console/index.blade.php +++ b/resources/views/console/index.blade.php @@ -6,39 +6,16 @@ @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)]; + } + @endphp + @if($results->count() > 0)
@@ -71,6 +48,10 @@
+ +
+ +
@@ -250,12 +231,11 @@ @else -
-
- - No console releases with covers available! -
-
+ @endif diff --git a/resources/views/games/index.blade.php b/resources/views/games/index.blade.php index 2d1100584..6990da32e 100644 --- a/resources/views/games/index.blade.php +++ b/resources/views/games/index.blade.php @@ -96,7 +96,7 @@ @if(count($results) > 0) -
+

@@ -110,9 +110,12 @@ :shows="false" />

- - {{ $results->total() }} results found - +
+ + + {{ $results->total() }} results found + +
@@ -234,7 +237,7 @@ Details diff --git a/resources/views/movies/index.blade.php b/resources/views/movies/index.blade.php index 2131cd659..04da67b58 100644 --- a/resources/views/movies/index.blade.php +++ b/resources/views/movies/index.blade.php @@ -6,25 +6,10 @@ @section('content')
- {{-- Breadcrumb --}} -
- -
+ {{-- Movies Filter Section --}}
@@ -129,14 +114,15 @@ @if(isset($results) && $results->count() > 0)
{{-- Results Summary and Pagination --}} -
-
+
+
{{ $results->total() }} movies found (showing {{ $results->firstItem() }}-{{ $results->lastItem() }})
-
+
+ {{ $results->links() }}
@@ -156,16 +142,11 @@
@else - {{-- Empty State --}} -
-
- -
-

No Movies Found

-

- Try adjusting your search filters or check back later for new releases. -

-
+ @endif
diff --git a/resources/views/movies/trending.blade.php b/resources/views/movies/trending.blade.php index 4a8514e99..66d87ccca 100644 --- a/resources/views/movies/trending.blade.php +++ b/resources/views/movies/trending.blade.php @@ -2,30 +2,11 @@ @section('content')
- -
- -
+
@@ -159,11 +140,14 @@
@else -
- -

No trending movies found.

-

Check back soon for the most popular downloads!

-
+ @endif diff --git a/resources/views/movies/viewmoviefull.blade.php b/resources/views/movies/viewmoviefull.blade.php index 4d4aa96f4..4f2451121 100644 --- a/resources/views/movies/viewmoviefull.blade.php +++ b/resources/views/movies/viewmoviefull.blade.php @@ -2,30 +2,11 @@ @section('content')
- -
- -
+ @if(isset($movie))
@@ -232,7 +213,7 @@ Download - diff --git a/resources/views/movies/viewmovietrailer.blade.php b/resources/views/movies/viewmovietrailer.blade.php index 85fa726e3..e552b3550 100644 --- a/resources/views/movies/viewmovietrailer.blade.php +++ b/resources/views/movies/viewmovietrailer.blade.php @@ -2,30 +2,11 @@ @section('content')
- -
- -
+
@if(isset($movie)) diff --git a/resources/views/music/index.blade.php b/resources/views/music/index.blade.php index 4c51b2c45..255646e7e 100644 --- a/resources/views/music/index.blade.php +++ b/resources/views/music/index.blade.php @@ -93,7 +93,7 @@ @if(count($results) > 0) -
+

@@ -107,9 +107,12 @@ :shows="false" />

- - {{ $results->total() }} results found - +
+ + + {{ $results->total() }} results found + +
diff --git a/resources/views/search/index.blade.php b/resources/views/search/index.blade.php index ff5da0ed3..dd4c7ed19 100644 --- a/resources/views/search/index.blade.php +++ b/resources/views/search/index.blade.php @@ -5,14 +5,19 @@ @endpush @section('content') -
-
+
+ + +

Search Releases

-

Find exactly what you're looking for

+

Find exactly what you're looking for

-
+
@@ -150,8 +155,8 @@ @if(isset($results) && ((is_array($results) && count($results) > 0) || (is_object($results) && $results->count() > 0))) -
-
+
+
With Selected:
@@ -168,25 +173,20 @@ @endif
-
-

- Search Results ({{ is_object($results) ? $results->total() : count($results) }} found) -

- @if(is_object($results)) -
- Page {{ $results->currentPage() }} of {{ $results->lastPage() }} -
- @endif +
+
+ {{ is_object($results) ? $results->total() : count($results) }} results found + @if(is_object($results)) + — Page {{ $results->currentPage() }} of {{ $results->lastPage() }} + @endif +
+
+
+
- -
- Sort results: - -
-