feat: enhance team store page layout and styling for improved user experience

This commit is contained in:
Frank John Begornia
2026-04-17 18:00:36 +08:00
parent a29bca1931
commit 391df3bb41
3 changed files with 694 additions and 212 deletions

View File

@@ -2,108 +2,237 @@
@section('content')
<style>
a.thumbnail>img {
/* height: 250px; */
body {
background: #f4f6f8;
}
.hide-bullets {
list-style:none;
margin-left: -40px;
margin-top:20px;
position: relative;
.store-page {
padding-top: 14px;
padding-bottom: 26px;
}
.thumbnail{
border: none;
display: unset;
background-color: transparent;
.store-header {
margin-bottom: 14px;
}
.li-custom{
padding:10px;
.store-title {
margin: 0;
font-size: 24px;
font-weight: 700;
color: #111827;
}
.store-logo{
/* height: 250px;
width: 250px;
.store-subtitle {
margin: 6px 0 0;
font-size: 13px;
color: #6b7280;
}
.store-toolbar {
background: #fff;
border: 1px solid #e5e7eb;
border-radius: 12px;
box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
padding: 14px;
margin-bottom: 18px;
}
.store-toolbar label {
font-size: 12px;
color: #4b5563;
font-weight: 600;
margin-bottom: 6px;
text-transform: uppercase;
letter-spacing: 0.4px;
}
.store-toolbar .form-control,
.store-toolbar .btn {
height: 40px;
border-radius: 8px;
}
.store-toolbar .form-control {
border-color: #d1d5db;
box-shadow: none;
}
.store-toolbar .form-control:focus {
border-color: #9ca3af;
box-shadow: 0 0 0 3px rgba(156, 163, 175, 0.18);
}
.store-grid {
list-style: none;
padding-left: 0;
margin: 0 -10px;
}
.store-grid > li {
padding: 10px;
}
.store-card {
background: #fff;
border: 1px solid #e5e7eb;
border-radius: 12px;
box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
overflow: hidden;
object-fit: contain; */
/* cursor: pointer; */
height: 100%;
transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s;
}
a.thumbnail>img{
height: 150px
.store-card:hover {
transform: translateY(-2px);
border-color: #d1d5db;
box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);
}
.store-link {
display: block;
text-decoration: none;
}
.store-link:hover,
.store-link:focus {
text-decoration: none;
}
.store-logo-wrap {
height: 170px;
background: #f8fafc;
border-bottom: 1px solid #e5e7eb;
display: flex;
align-items: center;
justify-content: center;
padding: 14px;
}
.store-logo {
max-width: 100%;
max-height: 100%;
width: auto;
height: auto;
object-fit: contain;
}
.store-meta {
padding: 12px;
min-height: 72px;
display: flex;
align-items: center;
justify-content: center;
}
.store-name {
margin: 0;
font-size: 15px;
line-height: 1.35;
font-weight: 700;
color: #111827;
text-align: center;
text-transform: uppercase;
word-break: break-word;
}
.store-lock {
color: #6b7280;
margin-left: 4px;
}
.store-pagination {
margin-top: 18px;
}
.store-pagination .pagination {
margin: 0;
}
@media (max-width: 767px) {
.store-title {
font-size: 21px;
}
.store-toolbar {
padding: 12px;
}
.store-logo-wrap {
height: 155px;
}
}
</style>
<div class="container">
<div class="row">
<div class="container store-page">
<div class="row store-header">
<div class="col-lg-12">
<h2 style="font-size: 20px; font-weight: bold; ">TEAM STORES</h2>
<hr>
<h2 class="store-title">Team Stores</h2>
<p class="store-subtitle">Browse and open your team store.</p>
</div>
</div><!-- /row -->
<div class="row">
<!-- <div class="col-sm-12"> -->
<!-- <div class="well"> -->
<form class="form-horizontal" role="search" id="frm_search_store">
<div class="col-lg-7">
<div class="form-group">
<div class="col-sm-12">
<label>Seach Store</label>
<div class="input-group">
<input type="text" class="form-control" placeholder="Search Store" value="{{ $keyword }}" name="q">
<div class="input-group-btn">
<button class="btn btn-default" type="submit"><i class="fa fa-search"></i></button>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-5">
<div class="form-group">
<label class="col-sm-7 control-label hidden-xs">&nbsp;</label>
<div class="col-sm-5">
<label>Sort by:</label>
<select class="form-control" name="s" id="select_sort_stores">
<option @if($filter == "al-asc") selected @endif value="al-asc">Store Name A &rarr; Z</option>
<option @if($filter == "al-desc") selected @endif value="al-desc">Store Name Z &rarr; A</option>
<option @if($filter == "latest") selected @endif value="latest">Newest &rarr; Oldest</option>
<option @if($filter == "oldest") selected @endif value="oldest">Oldest &rarr; Newest</option>
</select>
</div>
</div>
</div>
</form>
<div class="clearfix"></div>
<!-- </div> -->
<!-- </div> -->
</div>
<div class="row" id="slider-thumbs">
<!-- Bottom switcher of slider -->
<ul class="hide-bullets">
@foreach ($stores_array as $store)
<li class="li-custom col-lg-3 col-md-3 col-sm-4 col-xs-12">
<div style="border: 1px solid #dddddd; padding: 5px;">
@if($store->Password != null )
<a class="thumbnail password-protected" href="#" data-store-id="{{ $store->Id }}" data-store-url="{{ $store->StoreUrl }}">
<img class="store-logo" src="{{ minio_url('uploads/images/teamstore/' . $store->ImageFolder . '/' . $store->StoreLogo) }}">
</a>
<h4 style="border-top: 1px solid #dddddd; padding: 10px; font-size: 16px; font-weight: bold; text-transform: uppercase;" class="text-center">{{ $store->StoreName }} <i class="fa fa-lock" title="This store is password protected."></i></h4>
@else
<a class="thumbnail" href="{{ url('teamstore') . '/' . $store->StoreUrl }}">
<img class="store-logo" src="{{ minio_url('uploads/images/teamstore/' . $store->ImageFolder . '/' . $store->StoreLogo) }}">
</a>
<h4 style="border-top: 1px solid #dddddd; padding: 10px; font-size: 16px; font-weight: bold; text-transform: uppercase;" class="text-center">{{ $store->StoreName }}</h4>
@endif
<div class="store-toolbar">
<form role="search" id="frm_search_store">
<div class="row">
<div class="col-md-8 col-sm-7">
<label>Search Store</label>
<div class="input-group">
<input type="text" class="form-control" placeholder="Search store" value="{{ $keyword }}" name="q">
<div class="input-group-btn">
<button class="btn btn-default" type="submit"><i class="fa fa-search"></i></button>
</div>
</div>
</div>
</li>
@endforeach
</ul>
<div class="col-md-4 col-sm-5">
<label>Sort by</label>
<select class="form-control" name="s" id="select_sort_stores">
<option @if($filter == "al-asc") selected @endif value="al-asc">Store Name A &rarr; Z</option>
<option @if($filter == "al-desc") selected @endif value="al-desc">Store Name Z &rarr; A</option>
<option @if($filter == "latest") selected @endif value="latest">Newest &rarr; Oldest</option>
<option @if($filter == "oldest") selected @endif value="oldest">Oldest &rarr; Newest</option>
</select>
</div>
</div>
</form>
</div>
<div class="row">
<div id="slider-thumbs">
<ul class="store-grid row">
@foreach ($stores_array as $store)
<li class="col-lg-3 col-md-4 col-sm-6 col-xs-12">
<div class="store-card">
@if($store->Password != null)
<a class="store-link password-protected" href="#" data-store-id="{{ $store->Id }}" data-store-url="{{ $store->StoreUrl }}">
<div class="store-logo-wrap">
<img class="store-logo" src="{{ minio_url('uploads/images/teamstore/' . $store->ImageFolder . '/' . $store->StoreLogo) }}">
</div>
</a>
<div class="store-meta">
<h4 class="store-name">{{ $store->StoreName }} <i class="fa fa-lock store-lock" title="This store is password protected."></i></h4>
</div>
@else
<a class="store-link" href="{{ url('teamstore') . '/' . $store->StoreUrl }}">
<div class="store-logo-wrap">
<img class="store-logo" src="{{ minio_url('uploads/images/teamstore/' . $store->ImageFolder . '/' . $store->StoreLogo) }}">
</div>
<div class="store-meta">
<h4 class="store-name">{{ $store->StoreName }}</h4>
</div>
</a>
@endif
</div>
</li>
@endforeach
</ul>
</div>
<div class="row store-pagination">
<div class="col-sm-12">
<div class="text-center">
{!! $stores_array->render() !!}
</div>
</div>
</div>
</div><!-- /container -->
</div>
<div id="team-store-login" class="modal fade" role="dialog">