@o2vend/theme-cli 1.0.36 → 1.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/lib/lib/dev-server.js +344 -48
- package/lib/lib/liquid-engine.js +3 -1
- package/lib/lib/mock-data.js +473 -119
- package/lib/lib/widget-service.js +12 -4
- package/package.json +2 -2
- package/test-theme/assets/async-sections.js +32 -24
- package/test-theme/assets/cart-drawer.js +20 -22
- package/test-theme/assets/cart-manager.js +1 -15
- package/test-theme/assets/checkout-price-handler.js +12 -11
- package/test-theme/assets/checkout.css +1415 -0
- package/test-theme/assets/checkout.js +3174 -0
- package/test-theme/assets/components.css +178 -29
- package/test-theme/assets/delivery-zone.js +1 -1
- package/test-theme/assets/product-detail.css +1050 -0
- package/test-theme/assets/product-detail.js +2940 -0
- package/test-theme/assets/theme.css +95 -120
- package/test-theme/assets/theme.js +781 -186
- package/test-theme/layout/theme.liquid +91 -17
- package/test-theme/sections/content.liquid +64 -57
- package/test-theme/sections/footer-fallback.liquid +57 -7
- package/test-theme/sections/footer.liquid +63 -12
- package/test-theme/sections/header-fallback.liquid +41 -41
- package/test-theme/sections/header.liquid +41 -51
- package/test-theme/sections/hero-fallback.liquid +1 -1
- package/test-theme/sections/hero.liquid +159 -136
- package/test-theme/snippets/account-sidebar.liquid +121 -29
- package/test-theme/snippets/add-to-cart-modal.liquid +258 -206
- package/test-theme/snippets/breadcrumbs.liquid +98 -11
- package/test-theme/snippets/cart-drawer.liquid +93 -0
- package/test-theme/snippets/delivery-zone-city-selector.liquid +101 -15
- package/test-theme/snippets/delivery-zone-modal.liquid +529 -84
- package/test-theme/snippets/delivery-zone-search.liquid +104 -18
- package/test-theme/snippets/login-modal.liquid +269 -82
- package/test-theme/snippets/mega-menu.liquid +130 -43
- package/test-theme/snippets/news-thumbnail.liquid +120 -28
- package/test-theme/snippets/pagination.liquid +1 -1
- package/test-theme/snippets/price.liquid +100 -9
- package/test-theme/snippets/product-card-related.liquid +22 -4
- package/test-theme/snippets/product-card-simple.liquid +521 -25
- package/test-theme/snippets/product-card.liquid +145 -232
- package/test-theme/snippets/rating.liquid +100 -9
- package/test-theme/snippets/skeleton-collection-grid.liquid +94 -8
- package/test-theme/snippets/skeleton-product-card.liquid +102 -16
- package/test-theme/snippets/skeleton-product-grid.liquid +87 -1
- package/test-theme/snippets/social-sharing.liquid +133 -32
- package/test-theme/templates/account/dashboard.liquid +30 -0
- package/test-theme/templates/account/loyalty-redemption.liquid +29 -28
- package/test-theme/templates/account/loyalty.liquid +45 -43
- package/test-theme/templates/account/order-detail.liquid +15 -8
- package/test-theme/templates/account/orders.liquid +189 -35
- package/test-theme/templates/account/profile.liquid +509 -114
- package/test-theme/templates/account/register.liquid +18 -8
- package/test-theme/templates/account/return-orders.liquid +31 -30
- package/test-theme/templates/account/store-credit.liquid +27 -26
- package/test-theme/templates/account/subscriptions.liquid +22 -5
- package/test-theme/templates/account/wishlist.liquid +88 -19
- package/test-theme/templates/address-book.liquid +166 -69
- package/test-theme/templates/categories.liquid +90 -30
- package/test-theme/templates/checkout.liquid +137 -3834
- package/test-theme/templates/error.liquid +23 -21
- package/test-theme/templates/index.liquid +29 -0
- package/test-theme/templates/login.liquid +33 -6
- package/test-theme/templates/order-confirmation.liquid +67 -9
- package/test-theme/templates/page.liquid +418 -206
- package/test-theme/templates/product-detail.liquid +124 -3878
- package/test-theme/templates/products.liquid +155 -30
- package/test-theme/templates/search.liquid +739 -225
- package/test-theme/widgets/brand-carousel.liquid +102 -82
- package/test-theme/widgets/brand.liquid +78 -50
- package/test-theme/widgets/carousel.liquid +253 -121
- package/test-theme/widgets/category-list-carousel.liquid +32 -8
- package/test-theme/widgets/category-list.liquid +21 -6
- package/test-theme/widgets/category.liquid +104 -37
- package/test-theme/widgets/discount-time.liquid +326 -119
- package/test-theme/widgets/footer-menu.liquid +115 -23
- package/test-theme/widgets/footer.liquid +118 -5
- package/test-theme/widgets/gallery.liquid +29 -5
- package/test-theme/widgets/header-menu.liquid +25 -13
- package/test-theme/widgets/header.liquid +64 -26
- package/test-theme/widgets/html.liquid +29 -6
- package/test-theme/widgets/news.liquid +6 -0
- package/test-theme/widgets/product-canvas.liquid +20 -12
- package/test-theme/widgets/product-carousel.liquid +118 -56
- package/test-theme/widgets/shared/product-grid.liquid +12 -0
- package/test-theme/widgets/single-product.liquid +688 -250
- package/test-theme/widgets/spacebar-carousel.liquid +39 -10
- package/test-theme/widgets/spacebar.liquid +77 -6
- package/test-theme/widgets/splash.liquid +40 -30
- package/test-theme/widgets/testimonial-carousel.liquid +111 -67
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
{% layout 'layout/theme' %}
|
|
2
2
|
|
|
3
|
+
<style>
|
|
4
|
+
:root {
|
|
5
|
+
--color-primary: {{ settings.color_primary | default: '#000000' }};
|
|
6
|
+
--color-primary-hover: {{ settings.color_primary_dark | default: '#333333' }};
|
|
7
|
+
--color-primary-light: {{ settings.color_primary_light | default: '#666666' }};
|
|
8
|
+
--color-success: {{ settings.color_success | default: '#22c55e' }};
|
|
9
|
+
--color-success-light: {{ settings.color_success | default: '#22c55e' }};
|
|
10
|
+
--color-danger: {{ settings.color_error | default: '#ef4444' }};
|
|
11
|
+
--color-danger-light: {{ settings.color_error | default: '#ef4444' }};
|
|
12
|
+
--color-text: {{ settings.color_text | default: '#000000' }};
|
|
13
|
+
--color-text-light: {{ settings.color_text_muted | default: '#666666' }};
|
|
14
|
+
--color-background: {{ settings.color_background | default: '#ffffff' }};
|
|
15
|
+
--color-card-bg: {{ settings.color_surface | default: '#f5f5f5' }};
|
|
16
|
+
--color-border: {{ settings.color_border | default: '#cccccc' }};
|
|
17
|
+
--color-border-light: {{ settings.color_surface | default: '#f5f5f5' }};
|
|
18
|
+
--shadow-sm: var(--shadow-sm);
|
|
19
|
+
--shadow-md: var(--shadow-md);
|
|
20
|
+
--shadow-lg: var(--shadow-lg);
|
|
21
|
+
--radius-md: var(--radius-md);
|
|
22
|
+
--radius-lg: var(--radius-lg);
|
|
23
|
+
--spacing-xs: var(--space-3);
|
|
24
|
+
--spacing-sm: var(--space-4);
|
|
25
|
+
--spacing-md: var(--space-6);
|
|
26
|
+
--spacing-lg: var(--space-8);
|
|
27
|
+
--spacing-xl: var(--space-12);
|
|
28
|
+
}
|
|
29
|
+
</style>
|
|
30
|
+
|
|
3
31
|
<!-- Search Page -->
|
|
4
32
|
{% hook 'search_before' %}
|
|
5
33
|
<div class="search-page">
|
|
@@ -33,7 +61,7 @@
|
|
|
33
61
|
<circle cx="11" cy="11" r="8"></circle>
|
|
34
62
|
<path d="m21 21-4.35-4.35"></path>
|
|
35
63
|
</svg>
|
|
36
|
-
Search
|
|
64
|
+
<span class="search-button-text">Search</span>
|
|
37
65
|
</button>
|
|
38
66
|
</div>
|
|
39
67
|
</form>
|
|
@@ -46,7 +74,7 @@
|
|
|
46
74
|
<div class="search-meta">
|
|
47
75
|
<p class="results-count">
|
|
48
76
|
{% if search.results_count > 0 %}
|
|
49
|
-
Found {{ search.results_count }} result{{ search.results_count | pluralize }} for "{{ search.query }}"
|
|
77
|
+
Found <strong>{{ search.results_count }}</strong> result{{ search.results_count | pluralize }} for "{{ search.query }}"
|
|
50
78
|
{% else %}
|
|
51
79
|
No results found for "{{ search.query }}"
|
|
52
80
|
{% endif %}
|
|
@@ -55,33 +83,49 @@
|
|
|
55
83
|
{% if search.results_count > 0 %}
|
|
56
84
|
<div class="search-filters">
|
|
57
85
|
<div class="filter-group">
|
|
58
|
-
<label for="
|
|
86
|
+
<label for="price-min" class="filter-label">Min Price</label>
|
|
87
|
+
<input id="price-min" type="number" min="0" class="filter-select" value="{{ search.filters.price_min | default: '' }}" placeholder="0">
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
<div class="filter-group">
|
|
91
|
+
<label for="price-max" class="filter-label">Max Price</label>
|
|
92
|
+
<input id="price-max" type="number" min="0" class="filter-select" value="{{ search.filters.price_max | default: '' }}" placeholder="No limit">
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
<div class="filter-group">
|
|
96
|
+
<label for="results-sort" class="filter-label">Sort by</label>
|
|
59
97
|
<div class="filter-select-wrapper">
|
|
60
|
-
<select id="
|
|
61
|
-
<option value="
|
|
62
|
-
<option value="
|
|
63
|
-
<option value="
|
|
64
|
-
<option value="
|
|
98
|
+
<select id="results-sort" class="filter-select">
|
|
99
|
+
<option value="featured" {% if search.sort == 'featured' %}selected{% endif %}>Featured</option>
|
|
100
|
+
<option value="price-asc" {% if search.sort == 'price' and search.order == 'asc' %}selected{% endif %}>Price: Low to High</option>
|
|
101
|
+
<option value="price-desc" {% if search.sort == 'price' and search.order == 'desc' %}selected{% endif %}>Price: High to Low</option>
|
|
102
|
+
<option value="name-asc" {% if search.sort == 'name' and search.order == 'asc' %}selected{% endif %}>Name: A to Z</option>
|
|
103
|
+
<option value="name-desc" {% if search.sort == 'name' and search.order == 'desc' %}selected{% endif %}>Name: Z to A</option>
|
|
104
|
+
<option value="newest" {% if search.sort == 'created' and search.order == 'desc' %}selected{% endif %}>Date: New to Old</option>
|
|
65
105
|
</select>
|
|
66
106
|
<svg class="filter-arrow" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
67
107
|
<polyline points="6,9 12,15 18,9"></polyline>
|
|
68
108
|
</svg>
|
|
69
109
|
</div>
|
|
70
110
|
</div>
|
|
71
|
-
|
|
111
|
+
|
|
72
112
|
<div class="filter-group">
|
|
73
|
-
<label
|
|
74
|
-
<
|
|
75
|
-
<
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
113
|
+
<label class="filter-label">Availability</label>
|
|
114
|
+
<label class="filter-option">
|
|
115
|
+
<input id="filter-in-stock" type="checkbox" {% if search.filters.in_stock %}checked{% endif %}>
|
|
116
|
+
<span class="filter-option-text">In Stock</span>
|
|
117
|
+
</label>
|
|
118
|
+
<label class="filter-option">
|
|
119
|
+
<input id="filter-on-sale" type="checkbox" {% if search.filters.on_sale %}checked{% endif %}>
|
|
120
|
+
<span class="filter-option-text">On Sale</span>
|
|
121
|
+
</label>
|
|
122
|
+
</div>
|
|
123
|
+
|
|
124
|
+
<div class="filter-group">
|
|
125
|
+
<label class="filter-label">Actions</label>
|
|
126
|
+
<div style="display:flex; gap:8px; flex-wrap:wrap;">
|
|
127
|
+
<button type="button" class="btn btn-primary btn-sm" id="apply-filters">Apply</button>
|
|
128
|
+
<button type="button" class="btn btn-outline btn-sm" id="clear-filters">Clear</button>
|
|
85
129
|
</div>
|
|
86
130
|
</div>
|
|
87
131
|
</div>
|
|
@@ -97,7 +141,7 @@
|
|
|
97
141
|
<h2 class="section-title">Products</h2>
|
|
98
142
|
<div class="products-grid">
|
|
99
143
|
{% for product in search.results.products %}
|
|
100
|
-
{%
|
|
144
|
+
{% render 'snippets/product-card', product: product %}
|
|
101
145
|
{% endfor %}
|
|
102
146
|
</div>
|
|
103
147
|
</section>
|
|
@@ -275,15 +319,16 @@
|
|
|
275
319
|
<style>
|
|
276
320
|
/* Search Page Layout */
|
|
277
321
|
.search-page {
|
|
278
|
-
padding: var(--space-
|
|
322
|
+
padding: var(--space-2) 0;
|
|
279
323
|
min-height: 60vh;
|
|
324
|
+
background: linear-gradient(to bottom, var(--color-background) 0%, var(--color-card-bg) 100%);
|
|
280
325
|
}
|
|
281
326
|
|
|
282
327
|
/* Search Header */
|
|
283
328
|
.search-header {
|
|
284
|
-
background: linear-gradient(135deg, var(--color-
|
|
285
|
-
padding: var(--space-
|
|
286
|
-
margin-bottom: var(--space-
|
|
329
|
+
background: linear-gradient(135deg, var(--color-card-bg) 0%, var(--color-background) 100%);
|
|
330
|
+
padding: var(--space-8) 0;
|
|
331
|
+
margin-bottom: var(--space-8);
|
|
287
332
|
position: relative;
|
|
288
333
|
overflow: hidden;
|
|
289
334
|
}
|
|
@@ -296,7 +341,19 @@
|
|
|
296
341
|
right: 0;
|
|
297
342
|
bottom: 0;
|
|
298
343
|
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grain" width="100" height="100" patternUnits="userSpaceOnUse"><circle cx="50" cy="50" r="1" fill="%23000" opacity="0.02"/></pattern></defs><rect width="100" height="100" fill="url(%23grain)"/></svg>');
|
|
299
|
-
opacity: 0.
|
|
344
|
+
opacity: 0.5;
|
|
345
|
+
pointer-events: none;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.search-header::after {
|
|
349
|
+
content: '';
|
|
350
|
+
position: absolute;
|
|
351
|
+
bottom: -2px;
|
|
352
|
+
left: 0;
|
|
353
|
+
right: 0;
|
|
354
|
+
height: 100px;
|
|
355
|
+
background: linear-gradient(to top, var(--color-background), transparent);
|
|
356
|
+
pointer-events: none;
|
|
300
357
|
}
|
|
301
358
|
|
|
302
359
|
.search-header-content {
|
|
@@ -306,33 +363,50 @@
|
|
|
306
363
|
max-width: 800px;
|
|
307
364
|
margin: 0 auto;
|
|
308
365
|
padding: 0 var(--space-6);
|
|
366
|
+
display: flex;
|
|
309
367
|
}
|
|
310
368
|
|
|
311
369
|
.page-title {
|
|
312
|
-
margin: 0 0 var(--space-
|
|
313
|
-
color: var(--color-
|
|
370
|
+
margin: 0 0 clamp(var(--space-6), 4vw, var(--space-10)) 0;
|
|
371
|
+
color: var(--color-text);
|
|
314
372
|
line-height: 1.1;
|
|
315
|
-
letter-spacing: -0.
|
|
373
|
+
letter-spacing: -0.02em;
|
|
374
|
+
font-size: clamp(2rem, 5vw, 3.5rem);
|
|
375
|
+
font-weight: 700;
|
|
376
|
+
animation: fadeInUp 0.6s ease-out;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
@keyframes fadeInUp {
|
|
380
|
+
from {
|
|
381
|
+
opacity: 0;
|
|
382
|
+
transform: translateY(20px);
|
|
383
|
+
}
|
|
384
|
+
to {
|
|
385
|
+
opacity: 1;
|
|
386
|
+
transform: translateY(0);
|
|
387
|
+
}
|
|
316
388
|
}
|
|
317
389
|
|
|
318
390
|
.search-form-container {
|
|
319
|
-
max-width:
|
|
391
|
+
max-width: 700px;
|
|
320
392
|
margin: 0 auto;
|
|
393
|
+
animation: fadeInUp 0.6s ease-out 0.1s both;
|
|
321
394
|
}
|
|
322
395
|
|
|
323
396
|
.search-input-group {
|
|
324
397
|
display: flex;
|
|
325
|
-
background: var(--color-
|
|
326
|
-
border-radius: var(--radius-
|
|
398
|
+
background: var(--color-background);
|
|
399
|
+
border-radius: var(--radius-lg);
|
|
327
400
|
overflow: hidden;
|
|
328
|
-
box-shadow:
|
|
401
|
+
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.06);
|
|
329
402
|
border: 2px solid transparent;
|
|
330
|
-
transition: all
|
|
403
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
331
404
|
}
|
|
332
405
|
|
|
333
406
|
.search-input-group:focus-within {
|
|
334
|
-
border-color: var(--color-
|
|
335
|
-
box-shadow: var(--
|
|
407
|
+
border-color: var(--color-primary);
|
|
408
|
+
box-shadow: 0 15px 50px rgba(0, 0, 0, 0.12), 0 0 0 4px var(--color-border-light);
|
|
409
|
+
transform: translateY(-2px);
|
|
336
410
|
}
|
|
337
411
|
|
|
338
412
|
.search-input-wrapper {
|
|
@@ -345,45 +419,75 @@
|
|
|
345
419
|
.search-input-icon {
|
|
346
420
|
position: absolute;
|
|
347
421
|
left: var(--space-4);
|
|
348
|
-
color: var(--color-
|
|
422
|
+
color: var(--color-text-light);
|
|
349
423
|
pointer-events: none;
|
|
350
424
|
z-index: 1;
|
|
425
|
+
transition: all 0.3s ease;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.search-input-group:focus-within .search-input-icon {
|
|
429
|
+
color: var(--color-primary);
|
|
430
|
+
transform: scale(1.1);
|
|
351
431
|
}
|
|
352
432
|
|
|
353
433
|
.search-input {
|
|
354
434
|
width: 100%;
|
|
355
435
|
border: none;
|
|
356
|
-
padding: var(--space-
|
|
357
|
-
font-size:
|
|
436
|
+
padding: clamp(var(--space-3), 2vw, var(--space-5)) var(--space-4) clamp(var(--space-3), 2vw, var(--space-5)) var(--space-12);
|
|
437
|
+
font-size: clamp(0.95rem, 2vw, 1.125rem);
|
|
358
438
|
outline: none;
|
|
359
439
|
background: transparent;
|
|
360
|
-
color: var(--color-
|
|
440
|
+
color: var(--color-text);
|
|
441
|
+
font-weight: 500;
|
|
361
442
|
}
|
|
362
443
|
|
|
363
444
|
.search-input::placeholder {
|
|
364
|
-
color: var(--color-
|
|
445
|
+
color: var(--color-text-light);
|
|
446
|
+
font-weight: 400;
|
|
365
447
|
}
|
|
366
448
|
|
|
367
449
|
.search-button {
|
|
368
|
-
background: var(--color-
|
|
369
|
-
color: var(--color-
|
|
450
|
+
background: var(--color-primary);
|
|
451
|
+
color: var(--color-background);
|
|
370
452
|
border: none;
|
|
371
|
-
padding: var(--space-4) var(--space-
|
|
453
|
+
padding: var(--space-4) clamp(var(--space-4), 3vw, var(--space-8));
|
|
372
454
|
cursor: pointer;
|
|
373
|
-
font-size:
|
|
374
|
-
font-weight:
|
|
455
|
+
font-size: clamp(0.875rem, 1.5vw, 1rem);
|
|
456
|
+
font-weight: 700;
|
|
375
457
|
display: flex;
|
|
376
458
|
align-items: center;
|
|
377
459
|
gap: var(--space-2);
|
|
378
|
-
transition: all
|
|
460
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
379
461
|
text-transform: uppercase;
|
|
380
|
-
letter-spacing:
|
|
462
|
+
letter-spacing: 0.05em;
|
|
463
|
+
white-space: nowrap;
|
|
464
|
+
position: relative;
|
|
465
|
+
overflow: hidden;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
.search-button::before {
|
|
469
|
+
content: '';
|
|
470
|
+
position: absolute;
|
|
471
|
+
top: 0;
|
|
472
|
+
left: -100%;
|
|
473
|
+
width: 100%;
|
|
474
|
+
height: 100%;
|
|
475
|
+
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
|
|
476
|
+
transition: left 0.5s ease;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
.search-button:hover::before {
|
|
480
|
+
left: 100%;
|
|
381
481
|
}
|
|
382
482
|
|
|
383
483
|
.search-button:hover {
|
|
384
|
-
background: var(--color-
|
|
385
|
-
transform:
|
|
386
|
-
box-shadow:
|
|
484
|
+
background: var(--color-primary-hover);
|
|
485
|
+
transform: translateX(-2px);
|
|
486
|
+
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
.search-button:active {
|
|
490
|
+
transform: translateX(-2px) scale(0.98);
|
|
387
491
|
}
|
|
388
492
|
|
|
389
493
|
/* Search Results */
|
|
@@ -391,27 +495,29 @@
|
|
|
391
495
|
max-width: 1200px;
|
|
392
496
|
margin: 0 auto;
|
|
393
497
|
padding: 0 var(--space-6);
|
|
498
|
+
animation: fadeInUp 0.6s ease-out;
|
|
394
499
|
}
|
|
395
500
|
|
|
396
501
|
.search-meta {
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
background: var(--color-white);
|
|
400
|
-
border-radius: var(--radius-xl);
|
|
401
|
-
box-shadow: var(--shadow-sm);
|
|
402
|
-
border: 1px solid var(--color-gray-200);
|
|
502
|
+
|
|
503
|
+
backdrop-filter: blur(10px);
|
|
403
504
|
}
|
|
404
505
|
|
|
405
506
|
.results-count {
|
|
406
|
-
font-size:
|
|
407
|
-
color: var(--color-
|
|
507
|
+
font-size: clamp(1rem, 2vw, 1.125rem);
|
|
508
|
+
color: var(--color-text);
|
|
408
509
|
margin-bottom: var(--space-6);
|
|
409
510
|
font-weight: 500;
|
|
410
511
|
}
|
|
411
512
|
|
|
513
|
+
.results-count strong {
|
|
514
|
+
color: var(--color-primary);
|
|
515
|
+
font-weight: 700;
|
|
516
|
+
}
|
|
517
|
+
|
|
412
518
|
.search-filters {
|
|
413
519
|
display: flex;
|
|
414
|
-
gap: var(--space-8);
|
|
520
|
+
gap: clamp(var(--space-4), 3vw, var(--space-8));
|
|
415
521
|
flex-wrap: wrap;
|
|
416
522
|
}
|
|
417
523
|
|
|
@@ -419,14 +525,16 @@
|
|
|
419
525
|
display: flex;
|
|
420
526
|
flex-direction: column;
|
|
421
527
|
gap: var(--space-2);
|
|
528
|
+
flex: 1;
|
|
529
|
+
min-width: 200px;
|
|
422
530
|
}
|
|
423
531
|
|
|
424
532
|
.filter-label {
|
|
425
533
|
font-size: var(--text-sm);
|
|
426
534
|
font-weight: 600;
|
|
427
|
-
color: var(--color-
|
|
535
|
+
color: var(--color-text);
|
|
428
536
|
text-transform: uppercase;
|
|
429
|
-
letter-spacing:
|
|
537
|
+
letter-spacing: 0.05em;
|
|
430
538
|
}
|
|
431
539
|
|
|
432
540
|
.filter-select-wrapper {
|
|
@@ -437,35 +545,41 @@
|
|
|
437
545
|
|
|
438
546
|
.filter-select {
|
|
439
547
|
appearance: none;
|
|
440
|
-
background-color: var(--color-
|
|
441
|
-
border:
|
|
442
|
-
border-radius: var(--radius-
|
|
548
|
+
background-color: var(--color-background);
|
|
549
|
+
border: 2px solid var(--color-border);
|
|
550
|
+
border-radius: var(--radius-md);
|
|
443
551
|
padding: var(--space-3) var(--space-4);
|
|
444
552
|
padding-right: var(--space-10);
|
|
445
553
|
font-size: var(--text-sm);
|
|
446
|
-
font-weight:
|
|
447
|
-
color: var(--color-
|
|
554
|
+
font-weight: 600;
|
|
555
|
+
color: var(--color-text);
|
|
448
556
|
cursor: pointer;
|
|
449
|
-
transition: all
|
|
450
|
-
|
|
557
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
558
|
+
width: 100%;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
.filter-select:hover {
|
|
562
|
+
border-color: var(--color-primary-light);
|
|
563
|
+
background: var(--color-card-bg);
|
|
451
564
|
}
|
|
452
565
|
|
|
453
566
|
.filter-select:focus {
|
|
454
567
|
outline: none;
|
|
455
|
-
border-color: var(--color-
|
|
456
|
-
box-shadow: 0 0 0 3px
|
|
568
|
+
border-color: var(--color-primary);
|
|
569
|
+
box-shadow: 0 0 0 3px var(--color-border-light);
|
|
457
570
|
}
|
|
458
571
|
|
|
459
572
|
.filter-arrow {
|
|
460
573
|
position: absolute;
|
|
461
574
|
right: var(--space-3);
|
|
462
575
|
pointer-events: none;
|
|
463
|
-
color: var(--color-
|
|
464
|
-
transition: transform
|
|
576
|
+
color: var(--color-text-light);
|
|
577
|
+
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
465
578
|
}
|
|
466
579
|
|
|
467
|
-
.filter-select:focus
|
|
580
|
+
.filter-select:focus ~ .filter-arrow {
|
|
468
581
|
transform: rotate(180deg);
|
|
582
|
+
color: var(--color-primary);
|
|
469
583
|
}
|
|
470
584
|
|
|
471
585
|
/* Search Results Content */
|
|
@@ -476,20 +590,100 @@
|
|
|
476
590
|
}
|
|
477
591
|
|
|
478
592
|
.search-section {
|
|
479
|
-
background: var(--color-
|
|
480
|
-
border-radius: var(--radius-
|
|
481
|
-
padding: var(--space-
|
|
482
|
-
box-shadow:
|
|
483
|
-
border: 1px solid var(--color-
|
|
593
|
+
background: var(--color-background);
|
|
594
|
+
border-radius: var(--radius-lg);
|
|
595
|
+
padding: clamp(var(--space-6), 3vw, var(--space-10));
|
|
596
|
+
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04);
|
|
597
|
+
border: 1px solid var(--color-border-light);
|
|
598
|
+
transition: all 0.3s ease;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
.search-section:hover {
|
|
602
|
+
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
|
|
484
603
|
}
|
|
485
604
|
|
|
486
605
|
.section-title {
|
|
487
|
-
font-size:
|
|
606
|
+
font-size: clamp(1.5rem, 3vw, 2rem);
|
|
488
607
|
margin-bottom: var(--space-8);
|
|
489
|
-
color: var(--color-
|
|
490
|
-
font-weight:
|
|
491
|
-
border-bottom:
|
|
608
|
+
color: var(--color-text);
|
|
609
|
+
font-weight: 700;
|
|
610
|
+
border-bottom: 3px solid var(--color-primary);
|
|
492
611
|
padding-bottom: var(--space-4);
|
|
612
|
+
display: inline-block;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
/* Collections Grid */
|
|
616
|
+
.collections-grid {
|
|
617
|
+
display: grid;
|
|
618
|
+
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
|
619
|
+
gap: clamp(var(--space-6), 3vw, var(--space-8));
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
.collection-card {
|
|
623
|
+
background: var(--color-card-bg);
|
|
624
|
+
border-radius: var(--radius-md);
|
|
625
|
+
overflow: hidden;
|
|
626
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
627
|
+
border: 2px solid transparent;
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
.collection-card:hover {
|
|
631
|
+
transform: translateY(-6px);
|
|
632
|
+
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
|
|
633
|
+
border-color: var(--color-primary);
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
.collection-card a {
|
|
637
|
+
text-decoration: none;
|
|
638
|
+
color: inherit;
|
|
639
|
+
display: block;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
.collection-image {
|
|
643
|
+
width: 100%;
|
|
644
|
+
aspect-ratio: 16 / 9;
|
|
645
|
+
overflow: hidden;
|
|
646
|
+
background: var(--color-border-light);
|
|
647
|
+
position: relative;
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
.collection-image img {
|
|
651
|
+
width: 100%;
|
|
652
|
+
height: 100%;
|
|
653
|
+
object-fit: cover;
|
|
654
|
+
transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
.collection-card:hover .collection-image img {
|
|
658
|
+
transform: scale(1.08);
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
.collection-image-placeholder {
|
|
662
|
+
width: 100%;
|
|
663
|
+
height: 100%;
|
|
664
|
+
display: flex;
|
|
665
|
+
align-items: center;
|
|
666
|
+
justify-content: center;
|
|
667
|
+
color: var(--color-text-light);
|
|
668
|
+
background: linear-gradient(135deg, var(--color-card-bg), var(--color-border-light));
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
.collection-info {
|
|
672
|
+
padding: var(--space-6);
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
.collection-info h3 {
|
|
676
|
+
font-size: clamp(1.125rem, 2vw, 1.25rem);
|
|
677
|
+
margin: 0 0 var(--space-2) 0;
|
|
678
|
+
color: var(--color-text);
|
|
679
|
+
font-weight: 700;
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
.collection-info p {
|
|
683
|
+
color: var(--color-text-light);
|
|
684
|
+
margin: 0;
|
|
685
|
+
font-size: var(--text-sm);
|
|
686
|
+
font-weight: 500;
|
|
493
687
|
}
|
|
494
688
|
|
|
495
689
|
/* Pages List */
|
|
@@ -500,17 +694,35 @@
|
|
|
500
694
|
}
|
|
501
695
|
|
|
502
696
|
.page-result {
|
|
503
|
-
border:
|
|
504
|
-
border-radius: var(--radius-
|
|
505
|
-
padding: var(--space-6);
|
|
506
|
-
transition: all
|
|
507
|
-
background: var(--color-
|
|
697
|
+
border: 2px solid var(--color-border-light);
|
|
698
|
+
border-radius: var(--radius-md);
|
|
699
|
+
padding: clamp(var(--space-4), 3vw, var(--space-6));
|
|
700
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
701
|
+
background: var(--color-background);
|
|
702
|
+
position: relative;
|
|
703
|
+
overflow: hidden;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
.page-result::before {
|
|
707
|
+
content: '';
|
|
708
|
+
position: absolute;
|
|
709
|
+
left: 0;
|
|
710
|
+
top: 0;
|
|
711
|
+
bottom: 0;
|
|
712
|
+
width: 4px;
|
|
713
|
+
background: var(--color-primary);
|
|
714
|
+
transform: scaleY(0);
|
|
715
|
+
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
.page-result:hover::before {
|
|
719
|
+
transform: scaleY(1);
|
|
508
720
|
}
|
|
509
721
|
|
|
510
722
|
.page-result:hover {
|
|
511
|
-
border-color: var(--color-
|
|
512
|
-
box-shadow:
|
|
513
|
-
transform:
|
|
723
|
+
border-color: var(--color-primary);
|
|
724
|
+
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
|
|
725
|
+
transform: translateX(4px);
|
|
514
726
|
}
|
|
515
727
|
|
|
516
728
|
.page-link {
|
|
@@ -519,18 +731,23 @@
|
|
|
519
731
|
}
|
|
520
732
|
|
|
521
733
|
.page-result .page-title {
|
|
522
|
-
font-size:
|
|
734
|
+
font-size: clamp(1.125rem, 2.5vw, 1.375rem);
|
|
523
735
|
margin-bottom: var(--space-3);
|
|
524
|
-
color: var(--color-
|
|
525
|
-
font-weight:
|
|
736
|
+
color: var(--color-text);
|
|
737
|
+
font-weight: 700;
|
|
526
738
|
line-height: 1.3;
|
|
739
|
+
transition: color 0.3s ease;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
.page-result:hover .page-title {
|
|
743
|
+
color: var(--color-primary);
|
|
527
744
|
}
|
|
528
745
|
|
|
529
746
|
.page-excerpt {
|
|
530
|
-
color: var(--color-
|
|
531
|
-
line-height: 1.
|
|
747
|
+
color: var(--color-text-light);
|
|
748
|
+
line-height: 1.7;
|
|
532
749
|
margin: 0;
|
|
533
|
-
font-size:
|
|
750
|
+
font-size: clamp(0.875rem, 1.5vw, 1rem);
|
|
534
751
|
}
|
|
535
752
|
|
|
536
753
|
/* No Results */
|
|
@@ -538,48 +755,66 @@
|
|
|
538
755
|
display: flex;
|
|
539
756
|
justify-content: center;
|
|
540
757
|
align-items: center;
|
|
541
|
-
min-height:
|
|
758
|
+
min-height: 500px;
|
|
542
759
|
text-align: center;
|
|
760
|
+
padding: var(--space-12) var(--space-6);
|
|
543
761
|
}
|
|
544
762
|
|
|
545
763
|
.no-results-content {
|
|
546
764
|
display: flex;
|
|
547
765
|
flex-direction: column;
|
|
548
766
|
align-items: center;
|
|
549
|
-
gap: var(--space-8);
|
|
550
|
-
max-width:
|
|
767
|
+
gap: clamp(var(--space-6), 3vw, var(--space-8));
|
|
768
|
+
max-width: 600px;
|
|
769
|
+
animation: fadeInUp 0.6s ease-out;
|
|
551
770
|
}
|
|
552
771
|
|
|
553
772
|
.no-results-icon {
|
|
554
|
-
color: var(--color-
|
|
773
|
+
color: var(--color-text-light);
|
|
774
|
+
opacity: 0.4;
|
|
775
|
+
animation: pulse 2s ease-in-out infinite;
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
@keyframes pulse {
|
|
779
|
+
0%, 100% {
|
|
780
|
+
opacity: 0.4;
|
|
781
|
+
transform: scale(1);
|
|
782
|
+
}
|
|
783
|
+
50% {
|
|
784
|
+
opacity: 0.6;
|
|
785
|
+
transform: scale(1.05);
|
|
786
|
+
}
|
|
555
787
|
}
|
|
556
788
|
|
|
557
789
|
.no-results-title {
|
|
558
790
|
margin: 0;
|
|
559
|
-
color: var(--color-
|
|
560
|
-
font-weight:
|
|
791
|
+
color: var(--color-text);
|
|
792
|
+
font-weight: 700;
|
|
793
|
+
font-size: clamp(1.75rem, 4vw, 2.5rem);
|
|
561
794
|
}
|
|
562
795
|
|
|
563
796
|
.no-results-description {
|
|
564
797
|
margin: 0;
|
|
565
|
-
color: var(--color-
|
|
566
|
-
line-height: 1.
|
|
798
|
+
color: var(--color-text-light);
|
|
799
|
+
line-height: 1.7;
|
|
800
|
+
font-size: clamp(1rem, 2vw, 1.125rem);
|
|
567
801
|
}
|
|
568
802
|
|
|
569
803
|
.search-suggestions {
|
|
570
804
|
text-align: left;
|
|
805
|
+
width: 100%;
|
|
571
806
|
margin-bottom: var(--space-8);
|
|
572
|
-
padding: var(--space-6);
|
|
573
|
-
background: var(--color-
|
|
574
|
-
border-radius: var(--radius-
|
|
575
|
-
border:
|
|
807
|
+
padding: clamp(var(--space-4), 3vw, var(--space-6));
|
|
808
|
+
background: var(--color-card-bg);
|
|
809
|
+
border-radius: var(--radius-md);
|
|
810
|
+
border: 2px solid var(--color-border-light);
|
|
576
811
|
}
|
|
577
812
|
|
|
578
813
|
.suggestions-title {
|
|
579
|
-
font-size:
|
|
814
|
+
font-size: clamp(1rem, 2vw, 1.125rem);
|
|
580
815
|
margin-bottom: var(--space-4);
|
|
581
|
-
color: var(--color-
|
|
582
|
-
font-weight:
|
|
816
|
+
color: var(--color-text);
|
|
817
|
+
font-weight: 700;
|
|
583
818
|
}
|
|
584
819
|
|
|
585
820
|
.suggestions-list {
|
|
@@ -590,16 +825,18 @@
|
|
|
590
825
|
|
|
591
826
|
.suggestions-list li {
|
|
592
827
|
padding: var(--space-2) 0;
|
|
593
|
-
color: var(--color-
|
|
828
|
+
color: var(--color-text-light);
|
|
594
829
|
position: relative;
|
|
595
830
|
padding-left: var(--space-6);
|
|
831
|
+
line-height: 1.6;
|
|
832
|
+
font-size: clamp(0.875rem, 1.5vw, 1rem);
|
|
596
833
|
}
|
|
597
834
|
|
|
598
835
|
.suggestions-list li::before {
|
|
599
|
-
content: '
|
|
836
|
+
content: '→';
|
|
600
837
|
position: absolute;
|
|
601
838
|
left: 0;
|
|
602
|
-
color: var(--color-
|
|
839
|
+
color: var(--color-primary);
|
|
603
840
|
font-weight: bold;
|
|
604
841
|
font-size: var(--text-lg);
|
|
605
842
|
}
|
|
@@ -609,40 +846,69 @@
|
|
|
609
846
|
gap: var(--space-4);
|
|
610
847
|
justify-content: center;
|
|
611
848
|
flex-wrap: wrap;
|
|
849
|
+
width: 100%;
|
|
612
850
|
}
|
|
613
851
|
|
|
614
852
|
.no-results-actions .btn {
|
|
615
853
|
display: flex;
|
|
616
854
|
align-items: center;
|
|
855
|
+
justify-content: center;
|
|
617
856
|
gap: var(--space-2);
|
|
618
|
-
padding: var(--space-4) var(--space-
|
|
619
|
-
font-weight:
|
|
857
|
+
padding: clamp(var(--space-3), 2vw, var(--space-4)) clamp(var(--space-5), 3vw, var(--space-8));
|
|
858
|
+
font-weight: 700;
|
|
620
859
|
text-decoration: none;
|
|
621
|
-
transition: all
|
|
860
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
861
|
+
border-radius: var(--radius-md);
|
|
862
|
+
font-size: clamp(0.875rem, 1.5vw, 1rem);
|
|
863
|
+
letter-spacing: 0.03em;
|
|
864
|
+
position: relative;
|
|
865
|
+
overflow: hidden;
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
.no-results-actions .btn::before {
|
|
869
|
+
content: '';
|
|
870
|
+
position: absolute;
|
|
871
|
+
top: 50%;
|
|
872
|
+
left: 50%;
|
|
873
|
+
width: 0;
|
|
874
|
+
height: 0;
|
|
875
|
+
border-radius: 50%;
|
|
876
|
+
background: rgba(255, 255, 255, 0.2);
|
|
877
|
+
transform: translate(-50%, -50%);
|
|
878
|
+
transition: width 0.6s ease, height 0.6s ease;
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
.no-results-actions .btn:hover::before {
|
|
882
|
+
width: 300px;
|
|
883
|
+
height: 300px;
|
|
622
884
|
}
|
|
623
885
|
|
|
624
886
|
.no-results-actions .btn-primary {
|
|
625
|
-
background-color: var(--color-
|
|
626
|
-
color: var(--color-
|
|
627
|
-
border:
|
|
628
|
-
box-shadow:
|
|
887
|
+
background-color: var(--color-primary);
|
|
888
|
+
color: var(--color-background);
|
|
889
|
+
border: 2px solid var(--color-primary);
|
|
890
|
+
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
|
|
629
891
|
}
|
|
630
892
|
|
|
631
893
|
.no-results-actions .btn-primary:hover {
|
|
632
|
-
background-color: var(--color-
|
|
633
|
-
|
|
634
|
-
|
|
894
|
+
background-color: var(--color-primary-hover);
|
|
895
|
+
border-color: var(--color-primary-hover);
|
|
896
|
+
transform: translateY(-3px);
|
|
897
|
+
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.2);
|
|
635
898
|
}
|
|
636
899
|
|
|
637
900
|
.no-results-actions .btn-outline {
|
|
638
901
|
background-color: transparent;
|
|
639
|
-
color: var(--color-
|
|
640
|
-
border:
|
|
902
|
+
color: var(--color-text);
|
|
903
|
+
border: 2px solid var(--color-border);
|
|
641
904
|
}
|
|
642
905
|
|
|
643
906
|
.no-results-actions .btn-outline:hover {
|
|
644
|
-
background-color: var(--color-
|
|
645
|
-
border-color: var(--color-
|
|
907
|
+
background-color: var(--color-card-bg);
|
|
908
|
+
border-color: var(--color-primary);
|
|
909
|
+
color: var(--color-primary);
|
|
910
|
+
transform: translateY(-3px);
|
|
911
|
+
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
|
|
646
912
|
}
|
|
647
913
|
|
|
648
914
|
/* Search Landing */
|
|
@@ -650,49 +916,82 @@
|
|
|
650
916
|
display: flex;
|
|
651
917
|
justify-content: center;
|
|
652
918
|
align-items: center;
|
|
653
|
-
min-height:
|
|
654
|
-
padding: var(--space-
|
|
919
|
+
min-height: 600px;
|
|
920
|
+
padding: clamp(var(--space-12), 6vw, var(--space-20)) 0;
|
|
655
921
|
}
|
|
656
922
|
|
|
657
923
|
.search-landing-content {
|
|
658
924
|
text-align: center;
|
|
659
|
-
max-width:
|
|
925
|
+
max-width: 900px;
|
|
660
926
|
padding: 0 var(--space-6);
|
|
927
|
+
animation: fadeInUp 0.6s ease-out;
|
|
661
928
|
}
|
|
662
929
|
|
|
663
930
|
.landing-title {
|
|
664
|
-
margin: 0 0 var(--space-6) 0;
|
|
665
|
-
color: var(--color-
|
|
931
|
+
margin: 0 0 clamp(var(--space-4), 3vw, var(--space-6)) 0;
|
|
932
|
+
color: var(--color-text);
|
|
666
933
|
line-height: 1.1;
|
|
667
|
-
letter-spacing: -0.
|
|
934
|
+
letter-spacing: -0.02em;
|
|
935
|
+
font-size: clamp(2rem, 5vw, 3rem);
|
|
936
|
+
font-weight: 800;
|
|
668
937
|
}
|
|
669
938
|
|
|
670
939
|
.landing-description {
|
|
671
|
-
margin: 0 0 var(--space-
|
|
672
|
-
color: var(--color-
|
|
673
|
-
line-height: 1.
|
|
940
|
+
margin: 0 0 clamp(var(--space-10), 5vw, var(--space-16)) 0;
|
|
941
|
+
color: var(--color-text-light);
|
|
942
|
+
line-height: 1.7;
|
|
943
|
+
font-size: clamp(1rem, 2vw, 1.25rem);
|
|
674
944
|
}
|
|
675
945
|
|
|
676
946
|
.search-categories {
|
|
677
947
|
display: grid;
|
|
678
|
-
grid-template-columns: repeat(auto-fit, minmax(
|
|
679
|
-
gap: var(--space-8);
|
|
680
|
-
margin-bottom: var(--space-
|
|
948
|
+
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
|
949
|
+
gap: clamp(var(--space-6), 3vw, var(--space-8));
|
|
950
|
+
margin-bottom: clamp(var(--space-10), 5vw, var(--space-16));
|
|
681
951
|
}
|
|
682
952
|
|
|
683
953
|
.category-card {
|
|
684
|
-
background: var(--color-
|
|
685
|
-
border-radius: var(--radius-
|
|
686
|
-
padding: var(--space-8);
|
|
687
|
-
box-shadow:
|
|
688
|
-
border:
|
|
689
|
-
transition: all
|
|
954
|
+
background: var(--color-background);
|
|
955
|
+
border-radius: var(--radius-lg);
|
|
956
|
+
padding: clamp(var(--space-6), 3vw, var(--space-8));
|
|
957
|
+
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);
|
|
958
|
+
border: 2px solid var(--color-border-light);
|
|
959
|
+
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
|
|
960
|
+
position: relative;
|
|
961
|
+
overflow: hidden;
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
.category-card::before {
|
|
965
|
+
content: '';
|
|
966
|
+
position: absolute;
|
|
967
|
+
top: -50%;
|
|
968
|
+
left: -50%;
|
|
969
|
+
width: 200%;
|
|
970
|
+
height: 200%;
|
|
971
|
+
background: linear-gradient(45deg, transparent, var(--color-border-light), transparent);
|
|
972
|
+
transform: rotate(45deg);
|
|
973
|
+
transition: all 0.6s ease;
|
|
974
|
+
opacity: 0;
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
.category-card:hover::before {
|
|
978
|
+
opacity: 1;
|
|
979
|
+
animation: shimmer 1.5s ease-in-out;
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
@keyframes shimmer {
|
|
983
|
+
0% {
|
|
984
|
+
transform: translateX(-100%) translateY(-100%) rotate(45deg);
|
|
985
|
+
}
|
|
986
|
+
100% {
|
|
987
|
+
transform: translateX(100%) translateY(100%) rotate(45deg);
|
|
988
|
+
}
|
|
690
989
|
}
|
|
691
990
|
|
|
692
991
|
.category-card:hover {
|
|
693
|
-
transform: translateY(-
|
|
694
|
-
box-shadow:
|
|
695
|
-
border-color: var(--color-
|
|
992
|
+
transform: translateY(-8px);
|
|
993
|
+
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
|
|
994
|
+
border-color: var(--color-primary);
|
|
696
995
|
}
|
|
697
996
|
|
|
698
997
|
.category-link {
|
|
@@ -701,49 +1000,63 @@
|
|
|
701
1000
|
display: flex;
|
|
702
1001
|
flex-direction: column;
|
|
703
1002
|
align-items: center;
|
|
704
|
-
gap: var(--space-4);
|
|
1003
|
+
gap: clamp(var(--space-3), 2vw, var(--space-4));
|
|
1004
|
+
position: relative;
|
|
1005
|
+
z-index: 1;
|
|
705
1006
|
}
|
|
706
1007
|
|
|
707
1008
|
.category-icon {
|
|
708
|
-
color: var(--color-
|
|
1009
|
+
color: var(--color-primary);
|
|
709
1010
|
display: flex;
|
|
710
1011
|
align-items: center;
|
|
711
1012
|
justify-content: center;
|
|
712
|
-
width:
|
|
713
|
-
height:
|
|
714
|
-
background: var(--color-
|
|
715
|
-
border-radius: var(--radius-
|
|
716
|
-
transition: all
|
|
1013
|
+
width: clamp(70px, 10vw, 90px);
|
|
1014
|
+
height: clamp(70px, 10vw, 90px);
|
|
1015
|
+
background: var(--color-card-bg);
|
|
1016
|
+
border-radius: var(--radius-lg);
|
|
1017
|
+
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
|
|
1018
|
+
border: 2px solid var(--color-border-light);
|
|
717
1019
|
}
|
|
718
1020
|
|
|
719
1021
|
.category-card:hover .category-icon {
|
|
720
|
-
background: var(--color-
|
|
721
|
-
color: var(--color-
|
|
722
|
-
transform: scale(1.
|
|
1022
|
+
background: var(--color-primary);
|
|
1023
|
+
color: var(--color-background);
|
|
1024
|
+
transform: scale(1.15) rotate(5deg);
|
|
1025
|
+
border-color: var(--color-primary);
|
|
1026
|
+
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
|
|
723
1027
|
}
|
|
724
1028
|
|
|
725
1029
|
.category-title {
|
|
726
|
-
font-size:
|
|
1030
|
+
font-size: clamp(1.125rem, 2vw, 1.375rem);
|
|
727
1031
|
margin: 0;
|
|
728
|
-
color: var(--color-
|
|
729
|
-
font-weight:
|
|
1032
|
+
color: var(--color-text);
|
|
1033
|
+
font-weight: 700;
|
|
1034
|
+
transition: color 0.3s ease;
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
.category-card:hover .category-title {
|
|
1038
|
+
color: var(--color-primary);
|
|
730
1039
|
}
|
|
731
1040
|
|
|
732
1041
|
.category-description {
|
|
733
|
-
color: var(--color-
|
|
1042
|
+
color: var(--color-text-light);
|
|
734
1043
|
margin: 0;
|
|
735
1044
|
text-align: center;
|
|
736
|
-
line-height: 1.
|
|
1045
|
+
line-height: 1.6;
|
|
1046
|
+
font-size: clamp(0.875rem, 1.5vw, 1rem);
|
|
737
1047
|
}
|
|
738
1048
|
|
|
739
1049
|
.popular-searches {
|
|
740
|
-
margin-top: var(--space-
|
|
1050
|
+
margin-top: clamp(var(--space-10), 5vw, var(--space-16));
|
|
1051
|
+
padding-top: var(--space-12);
|
|
1052
|
+
border-top: 2px solid var(--color-border-light);
|
|
741
1053
|
}
|
|
742
1054
|
|
|
743
1055
|
.popular-title {
|
|
744
|
-
margin: 0 0 var(--space-6) 0;
|
|
745
|
-
color: var(--color-
|
|
746
|
-
font-weight:
|
|
1056
|
+
margin: 0 0 clamp(var(--space-4), 3vw, var(--space-6)) 0;
|
|
1057
|
+
color: var(--color-text);
|
|
1058
|
+
font-weight: 700;
|
|
1059
|
+
font-size: clamp(1.125rem, 2vw, 1.25rem);
|
|
747
1060
|
}
|
|
748
1061
|
|
|
749
1062
|
.search-tags {
|
|
@@ -754,39 +1067,74 @@
|
|
|
754
1067
|
}
|
|
755
1068
|
|
|
756
1069
|
.search-tag {
|
|
757
|
-
background: var(--color-
|
|
758
|
-
color: var(--color-
|
|
759
|
-
padding: var(--space-2) var(--space-4);
|
|
760
|
-
border-radius: var(--radius-
|
|
1070
|
+
background: var(--color-card-bg);
|
|
1071
|
+
color: var(--color-primary);
|
|
1072
|
+
padding: var(--space-2) clamp(var(--space-4), 2vw, var(--space-5));
|
|
1073
|
+
border-radius: var(--radius-lg);
|
|
761
1074
|
text-decoration: none;
|
|
762
|
-
font-weight:
|
|
763
|
-
font-size:
|
|
764
|
-
transition: all
|
|
765
|
-
border: 2px solid
|
|
1075
|
+
font-weight: 600;
|
|
1076
|
+
font-size: clamp(0.8125rem, 1.5vw, 0.9375rem);
|
|
1077
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
1078
|
+
border: 2px solid var(--color-border-light);
|
|
766
1079
|
text-transform: uppercase;
|
|
767
|
-
letter-spacing:
|
|
1080
|
+
letter-spacing: 0.05em;
|
|
1081
|
+
position: relative;
|
|
1082
|
+
overflow: hidden;
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1085
|
+
.search-tag::after {
|
|
1086
|
+
content: '';
|
|
1087
|
+
position: absolute;
|
|
1088
|
+
bottom: 0;
|
|
1089
|
+
left: 0;
|
|
1090
|
+
width: 100%;
|
|
1091
|
+
height: 2px;
|
|
1092
|
+
background: var(--color-primary);
|
|
1093
|
+
transform: scaleX(0);
|
|
1094
|
+
transition: transform 0.3s ease;
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
.search-tag:hover::after {
|
|
1098
|
+
transform: scaleX(1);
|
|
768
1099
|
}
|
|
769
1100
|
|
|
770
1101
|
.search-tag:hover {
|
|
771
|
-
background: var(--color-
|
|
772
|
-
color: var(--color-
|
|
773
|
-
border-color: var(--color-
|
|
774
|
-
transform: translateY(-
|
|
775
|
-
box-shadow:
|
|
1102
|
+
background: var(--color-primary);
|
|
1103
|
+
color: var(--color-background);
|
|
1104
|
+
border-color: var(--color-primary);
|
|
1105
|
+
transform: translateY(-3px);
|
|
1106
|
+
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.12);
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
/* Products Grid */
|
|
1110
|
+
.products-grid {
|
|
1111
|
+
display: grid;
|
|
1112
|
+
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
|
|
1113
|
+
gap: clamp(var(--space-6), 3vw, var(--space-8));
|
|
776
1114
|
}
|
|
777
1115
|
|
|
778
1116
|
/* Responsive Design */
|
|
1117
|
+
@media (max-width: 1024px) {
|
|
1118
|
+
.search-page {
|
|
1119
|
+
padding: var(--space-2) 0;
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1122
|
+
.search-categories {
|
|
1123
|
+
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
|
|
779
1127
|
@media (max-width: 768px) {
|
|
780
1128
|
.search-page {
|
|
781
|
-
padding: var(--space-
|
|
1129
|
+
padding: var(--space-2) 0;
|
|
782
1130
|
}
|
|
783
1131
|
|
|
784
1132
|
.search-header {
|
|
785
|
-
padding: var(--space-
|
|
1133
|
+
padding: var(--space-8) 0;
|
|
786
1134
|
}
|
|
787
1135
|
|
|
788
1136
|
.page-title {
|
|
789
|
-
font-size:
|
|
1137
|
+
font-size: clamp(1.75rem, 6vw, 2.5rem);
|
|
790
1138
|
}
|
|
791
1139
|
|
|
792
1140
|
.search-filters {
|
|
@@ -798,6 +1146,12 @@
|
|
|
798
1146
|
flex-direction: row;
|
|
799
1147
|
align-items: center;
|
|
800
1148
|
gap: var(--space-4);
|
|
1149
|
+
min-width: auto;
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
.filter-label {
|
|
1153
|
+
white-space: nowrap;
|
|
1154
|
+
min-width: 90px;
|
|
801
1155
|
}
|
|
802
1156
|
|
|
803
1157
|
.filter-select {
|
|
@@ -809,6 +1163,10 @@
|
|
|
809
1163
|
gap: var(--space-6);
|
|
810
1164
|
}
|
|
811
1165
|
|
|
1166
|
+
.collections-grid {
|
|
1167
|
+
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
|
|
1168
|
+
}
|
|
1169
|
+
|
|
812
1170
|
.no-results-actions {
|
|
813
1171
|
flex-direction: column;
|
|
814
1172
|
align-items: stretch;
|
|
@@ -823,7 +1181,11 @@
|
|
|
823
1181
|
}
|
|
824
1182
|
|
|
825
1183
|
.landing-title {
|
|
826
|
-
font-size:
|
|
1184
|
+
font-size: clamp(1.75rem, 6vw, 2.5rem);
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1187
|
+
.products-grid {
|
|
1188
|
+
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
|
827
1189
|
}
|
|
828
1190
|
}
|
|
829
1191
|
|
|
@@ -834,11 +1196,21 @@
|
|
|
834
1196
|
|
|
835
1197
|
.search-input-group {
|
|
836
1198
|
flex-direction: column;
|
|
837
|
-
border-radius: var(--radius-
|
|
1199
|
+
border-radius: var(--radius-md);
|
|
1200
|
+
}
|
|
1201
|
+
|
|
1202
|
+
.search-input {
|
|
1203
|
+
padding: var(--space-4) var(--space-4) var(--space-4) var(--space-12);
|
|
838
1204
|
}
|
|
839
1205
|
|
|
840
1206
|
.search-button {
|
|
841
|
-
border-radius: 0 0 var(--radius-
|
|
1207
|
+
border-radius: 0 0 var(--radius-md) var(--radius-md);
|
|
1208
|
+
justify-content: center;
|
|
1209
|
+
padding: var(--space-4);
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
.search-button-text {
|
|
1213
|
+
display: block;
|
|
842
1214
|
}
|
|
843
1215
|
|
|
844
1216
|
.search-results-content {
|
|
@@ -848,75 +1220,217 @@
|
|
|
848
1220
|
.search-section {
|
|
849
1221
|
padding: var(--space-6);
|
|
850
1222
|
}
|
|
1223
|
+
|
|
1224
|
+
.filter-group {
|
|
1225
|
+
flex-direction: column;
|
|
1226
|
+
align-items: flex-start;
|
|
1227
|
+
}
|
|
1228
|
+
|
|
1229
|
+
.collections-grid {
|
|
1230
|
+
grid-template-columns: 1fr;
|
|
1231
|
+
}
|
|
1232
|
+
|
|
1233
|
+
.products-grid {
|
|
1234
|
+
grid-template-columns: 1fr;
|
|
1235
|
+
}
|
|
1236
|
+
|
|
1237
|
+
.search-tags {
|
|
1238
|
+
gap: var(--space-2);
|
|
1239
|
+
}
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
/* Loading States */
|
|
1243
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
1244
|
+
.search-section,
|
|
1245
|
+
.category-card,
|
|
1246
|
+
.page-result,
|
|
1247
|
+
.collection-card {
|
|
1248
|
+
animation: fadeInUp 0.6s ease-out backwards;
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
.search-section:nth-child(1) { animation-delay: 0.1s; }
|
|
1252
|
+
.search-section:nth-child(2) { animation-delay: 0.2s; }
|
|
1253
|
+
.search-section:nth-child(3) { animation-delay: 0.3s; }
|
|
1254
|
+
|
|
1255
|
+
.category-card:nth-child(1) { animation-delay: 0.1s; }
|
|
1256
|
+
.category-card:nth-child(2) { animation-delay: 0.2s; }
|
|
1257
|
+
.category-card:nth-child(3) { animation-delay: 0.3s; }
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1260
|
+
/* Print Styles */
|
|
1261
|
+
@media print {
|
|
1262
|
+
.search-header,
|
|
1263
|
+
.search-filters,
|
|
1264
|
+
.no-results-actions,
|
|
1265
|
+
.search-button {
|
|
1266
|
+
display: none;
|
|
1267
|
+
}
|
|
1268
|
+
|
|
1269
|
+
.search-section {
|
|
1270
|
+
box-shadow: none;
|
|
1271
|
+
border: 1px solid var(--color-border);
|
|
1272
|
+
page-break-inside: avoid;
|
|
1273
|
+
}
|
|
851
1274
|
}
|
|
852
1275
|
</style>
|
|
853
1276
|
|
|
854
1277
|
<script>
|
|
855
|
-
document.addEventListener('DOMContentLoaded',
|
|
1278
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
856
1279
|
// Search form enhancement
|
|
857
1280
|
const searchForm = document.querySelector('.search-form');
|
|
858
1281
|
const searchInput = document.querySelector('.search-input');
|
|
859
1282
|
|
|
860
1283
|
if (searchForm && searchInput) {
|
|
861
|
-
// Auto-focus search input
|
|
862
|
-
|
|
1284
|
+
// Auto-focus search input on desktop
|
|
1285
|
+
if (window.innerWidth > 768) {
|
|
1286
|
+
searchInput.focus();
|
|
1287
|
+
}
|
|
863
1288
|
|
|
864
1289
|
// Handle search form submission
|
|
865
|
-
searchForm.addEventListener('submit',
|
|
1290
|
+
searchForm.addEventListener('submit', (e) => {
|
|
866
1291
|
const query = searchInput.value.trim();
|
|
867
1292
|
if (!query) {
|
|
868
1293
|
e.preventDefault();
|
|
869
1294
|
searchInput.focus();
|
|
1295
|
+
searchInput.classList.add('error-shake');
|
|
1296
|
+
setTimeout(() => searchInput.classList.remove('error-shake'), 500);
|
|
870
1297
|
return;
|
|
871
1298
|
}
|
|
872
1299
|
});
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
searchType.addEventListener('change', function() {
|
|
881
|
-
updateSearchURL();
|
|
882
|
-
});
|
|
883
|
-
}
|
|
884
|
-
|
|
885
|
-
if (searchSort) {
|
|
886
|
-
searchSort.addEventListener('change', function() {
|
|
887
|
-
updateSearchURL();
|
|
1300
|
+
|
|
1301
|
+
// Clear search on Escape key
|
|
1302
|
+
searchInput.addEventListener('keydown', (e) => {
|
|
1303
|
+
if (e.key === 'Escape') {
|
|
1304
|
+
this.value = '';
|
|
1305
|
+
this.blur();
|
|
1306
|
+
}
|
|
888
1307
|
});
|
|
889
1308
|
}
|
|
890
1309
|
|
|
891
|
-
|
|
892
|
-
|
|
1310
|
+
// Filter and sort handlers (aligned with products listing UX)
|
|
1311
|
+
const priceMin = document.getElementById('price-min');
|
|
1312
|
+
const priceMax = document.getElementById('price-max');
|
|
1313
|
+
const filterInStock = document.getElementById('filter-in-stock');
|
|
1314
|
+
const filterOnSale = document.getElementById('filter-on-sale');
|
|
1315
|
+
const resultsSort = document.getElementById('results-sort');
|
|
1316
|
+
const applyFiltersBtn = document.getElementById('apply-filters');
|
|
1317
|
+
const clearFiltersBtn = document.getElementById('clear-filters');
|
|
1318
|
+
|
|
1319
|
+
const applySearchFilters = () => {
|
|
1320
|
+
const url = new URL(window.location.href);
|
|
893
1321
|
const params = new URLSearchParams(url.search);
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
params.delete('type');
|
|
1322
|
+
|
|
1323
|
+
const query = (searchInput?.value || params.get('q') || '').trim();
|
|
1324
|
+
if (query) {
|
|
1325
|
+
params.set('q', query);
|
|
899
1326
|
}
|
|
900
|
-
|
|
901
|
-
if (
|
|
902
|
-
|
|
1327
|
+
|
|
1328
|
+
if (priceMin && priceMin.value) params.set('price_min', priceMin.value);
|
|
1329
|
+
else params.delete('price_min');
|
|
1330
|
+
|
|
1331
|
+
if (priceMax && priceMax.value) params.set('price_max', priceMax.value);
|
|
1332
|
+
else params.delete('price_max');
|
|
1333
|
+
|
|
1334
|
+
if (filterInStock && filterInStock.checked) params.set('in_stock', 'true');
|
|
1335
|
+
else params.delete('in_stock');
|
|
1336
|
+
|
|
1337
|
+
if (filterOnSale && filterOnSale.checked) params.set('on_sale', 'true');
|
|
1338
|
+
else params.delete('on_sale');
|
|
1339
|
+
|
|
1340
|
+
const selectedSort = resultsSort ? resultsSort.value : 'featured';
|
|
1341
|
+
if (selectedSort === 'price-asc') {
|
|
1342
|
+
params.set('sort', 'price');
|
|
1343
|
+
params.set('order', 'asc');
|
|
1344
|
+
} else if (selectedSort === 'price-desc') {
|
|
1345
|
+
params.set('sort', 'price');
|
|
1346
|
+
params.set('order', 'desc');
|
|
1347
|
+
} else if (selectedSort === 'name-asc') {
|
|
1348
|
+
params.set('sort', 'name');
|
|
1349
|
+
params.set('order', 'asc');
|
|
1350
|
+
} else if (selectedSort === 'name-desc') {
|
|
1351
|
+
params.set('sort', 'name');
|
|
1352
|
+
params.set('order', 'desc');
|
|
1353
|
+
} else if (selectedSort === 'newest') {
|
|
1354
|
+
params.set('sort', 'created');
|
|
1355
|
+
params.set('order', 'desc');
|
|
903
1356
|
} else {
|
|
904
|
-
params.
|
|
1357
|
+
params.set('sort', 'featured');
|
|
1358
|
+
params.set('order', 'desc');
|
|
905
1359
|
}
|
|
906
|
-
|
|
1360
|
+
|
|
1361
|
+
params.set('page', '1');
|
|
907
1362
|
url.search = params.toString();
|
|
908
1363
|
window.location.href = url.toString();
|
|
1364
|
+
};
|
|
1365
|
+
|
|
1366
|
+
if (applyFiltersBtn) {
|
|
1367
|
+
applyFiltersBtn.addEventListener('click', applySearchFilters);
|
|
1368
|
+
}
|
|
1369
|
+
|
|
1370
|
+
if (clearFiltersBtn) {
|
|
1371
|
+
clearFiltersBtn.addEventListener('click', () => {
|
|
1372
|
+
const url = new URL(window.location.href);
|
|
1373
|
+
const params = new URLSearchParams(url.search);
|
|
1374
|
+
const query = params.get('q') || (searchInput?.value || '');
|
|
1375
|
+
params.forEach((_, key) => params.delete(key));
|
|
1376
|
+
if (query) params.set('q', query);
|
|
1377
|
+
window.location.href = `${url.pathname}?${params.toString()}`;
|
|
1378
|
+
});
|
|
1379
|
+
}
|
|
1380
|
+
|
|
1381
|
+
if (resultsSort) {
|
|
1382
|
+
resultsSort.addEventListener('change', applySearchFilters);
|
|
909
1383
|
}
|
|
910
1384
|
|
|
911
1385
|
// Search suggestions (mock implementation)
|
|
1386
|
+
let suggestionTimeout;
|
|
912
1387
|
if (searchInput) {
|
|
913
|
-
searchInput.addEventListener('input',
|
|
914
|
-
const query =
|
|
1388
|
+
searchInput.addEventListener('input', (e) => {
|
|
1389
|
+
const query = e.target.value.trim();
|
|
1390
|
+
clearTimeout(suggestionTimeout);
|
|
1391
|
+
|
|
915
1392
|
if (query.length >= 2) {
|
|
916
|
-
|
|
917
|
-
|
|
1393
|
+
suggestionTimeout = setTimeout(() => {
|
|
1394
|
+
// In a real implementation, this would fetch suggestions from the API
|
|
1395
|
+
console.log('Search suggestions for:', query);
|
|
1396
|
+
}, 300);
|
|
918
1397
|
}
|
|
919
1398
|
});
|
|
920
1399
|
}
|
|
1400
|
+
|
|
1401
|
+
// Intersection Observer for scroll animations
|
|
1402
|
+
if ('IntersectionObserver' in window) {
|
|
1403
|
+
const observerOptions = {
|
|
1404
|
+
threshold: 0.1,
|
|
1405
|
+
rootMargin: '0px 0px -50px 0px'
|
|
1406
|
+
};
|
|
1407
|
+
|
|
1408
|
+
const observer = new IntersectionObserver((entries) => {
|
|
1409
|
+
entries.forEach(entry => {
|
|
1410
|
+
if (entry.isIntersecting) {
|
|
1411
|
+
entry.target.style.opacity = '1';
|
|
1412
|
+
entry.target.style.transform = 'translateY(0)';
|
|
1413
|
+
}
|
|
1414
|
+
});
|
|
1415
|
+
}, observerOptions);
|
|
1416
|
+
|
|
1417
|
+
document.querySelectorAll('.search-section, .category-card').forEach(el => {
|
|
1418
|
+
el.style.opacity = '0';
|
|
1419
|
+
el.style.transform = 'translateY(20px)';
|
|
1420
|
+
el.style.transition = 'opacity 0.6s ease, transform 0.6s ease';
|
|
1421
|
+
observer.observe(el);
|
|
1422
|
+
});
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1425
|
+
// Add keyboard navigation for search tags
|
|
1426
|
+
const searchTags = document.querySelectorAll('.search-tag');
|
|
1427
|
+
searchTags.forEach(tag => {
|
|
1428
|
+
tag.addEventListener('keypress', (e) => {
|
|
1429
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
1430
|
+
e.preventDefault();
|
|
1431
|
+
tag.click();
|
|
1432
|
+
}
|
|
1433
|
+
});
|
|
1434
|
+
});
|
|
921
1435
|
});
|
|
922
1436
|
</script>
|