@golstats/gsc-reports 1.0.73 → 1.0.74
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 +2 -2
- package/dist/{FilterConditions-55d68355-DMqzcKBO-DetRyeQp-D-SFJTPh.js → FilterConditions-55d68355-DMqzcKBO-BUsV1uff-BqhmhIO7.js} +20 -20
- package/dist/{FilterField-59a73e38-CNaE03Ge-y0TJhKzn-DmW2Nen2.js → FilterField-59a73e38-CNaE03Ge-5Ufd6Qjm-CLmzz8wD.js} +3 -3
- package/dist/{FilterSubcategories-a9b32cc9-_h5FCZ4r-s9tf4U0t-D2WRoC-O.js → FilterSubcategories-a9b32cc9-_h5FCZ4r-DcLxx26Q-CEyuCb0o.js} +10 -10
- package/dist/css/fonts.css +83 -83
- package/dist/gsc-reports.css +1 -1
- package/dist/gsc-reports.es.js +1 -1
- package/dist/gsc-reports.umd.js +342 -334
- package/dist/{index-DlP73Y2z.js → index-BlybwR5p.js} +99666 -94932
- package/package.json +2 -2
- package/src/App.vue +28 -0
- package/src/components/TemplatesSection.vue +113 -0
- package/src/components/elementsTemplates/FortalezasView.vue +1193 -0
- package/src/components/elementsTemplates/ModalConfigurarContenido.vue +1229 -0
- package/src/components/elementsTemplates/ModalDeleteTemplate.vue +249 -249
- package/src/components/elementsTemplates/ModalGenerarReporte.vue +39 -1
- package/src/components/elementsTemplates/ModalSoloEscritorio.vue +83 -83
- package/src/components/elementsTemplates/ModalduplicateTemplate.vue +300 -300
- package/src/components/elementsTemplates/TirosEsquinaView.vue +1071 -0
- package/src/components/elementsTemplates/TooltipReportOptions.vue +97 -97
- package/src/components/elementsTemplates/TooltipTemplateOptions.vue +168 -168
- package/src/components/filters.vue +935 -935
- package/src/components/thumbnails-reports/AnalisisPostMatchType1.vue +741 -741
- package/src/components/thumbnails-reports/AnalisisPostMatchType2.vue +743 -743
- package/src/components/thumbnails-reports/AnalisisPrematchType3.vue +173 -173
- package/src/components/thumbnails-reports/AnalisisPrematchType4.vue +173 -173
- package/src/index.js +4 -4
- package/src/types.d.ts +45 -45
- package/src/utils/dateUtils.js +52 -52
|
@@ -0,0 +1,1071 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="corners-view">
|
|
3
|
+
<!-- Header con título y descripción -->
|
|
4
|
+
<div class="corners-header">
|
|
5
|
+
<div class="team-logo-container">
|
|
6
|
+
<img
|
|
7
|
+
:src="teamLogoUrl"
|
|
8
|
+
:alt="`Logo ${teamInitials}`"
|
|
9
|
+
class="team-logo"
|
|
10
|
+
@error="onLogoError"
|
|
11
|
+
/>
|
|
12
|
+
</div>
|
|
13
|
+
<div class="header-content">
|
|
14
|
+
<h3 class="corners-title">{{ title }}</h3>
|
|
15
|
+
<p class="corners-description">
|
|
16
|
+
Este template contiene 10 visualizaciones de tiros de esquina. Selecciona los deseados.
|
|
17
|
+
</p>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
<div class="corners-container">
|
|
22
|
+
<!-- Header Partido Selector - Carrusel (dentro del recuadro) -->
|
|
23
|
+
<div class="matches-header">
|
|
24
|
+
<div
|
|
25
|
+
class="window"
|
|
26
|
+
ref="matchesWindowRef"
|
|
27
|
+
@pointerdown="onPointerDown"
|
|
28
|
+
@pointerup="onPointerUp"
|
|
29
|
+
@pointercancel="onPointerUp"
|
|
30
|
+
@pointerleave="onPointerUp"
|
|
31
|
+
@pointermove="onPointerMove"
|
|
32
|
+
>
|
|
33
|
+
<button v-if="showLeftMatchesArrow" class="carousel-arrow left" @click="prevSlide">
|
|
34
|
+
‹
|
|
35
|
+
</button>
|
|
36
|
+
<div class="track" :class="{ animating: !isDragging }" :style="trackStyle">
|
|
37
|
+
<div
|
|
38
|
+
v-for="(m, idx) in matches"
|
|
39
|
+
:key="m.id + '-' + idx"
|
|
40
|
+
class="match-pill"
|
|
41
|
+
:class="{ active: idx === currentIndex }"
|
|
42
|
+
>
|
|
43
|
+
<div class="team-logos">
|
|
44
|
+
<div class="logo">{{ m.home }}</div>
|
|
45
|
+
<span class="score">{{ m.score }}</span>
|
|
46
|
+
<div class="logo alt">{{ m.away }}</div>
|
|
47
|
+
</div>
|
|
48
|
+
<div class="meta">{{ m.jornada }}</div>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
<button v-if="showRightMatchesArrow" class="carousel-arrow right" @click="nextSlide">
|
|
52
|
+
›
|
|
53
|
+
</button>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
<!-- Tabs - segmented control -->
|
|
57
|
+
<div class="categorias-tabs segmented">
|
|
58
|
+
<div
|
|
59
|
+
class="segmented-highlight"
|
|
60
|
+
:style="{
|
|
61
|
+
width: `calc(100% / ${tabs.length})`,
|
|
62
|
+
left: `calc(${tabs.indexOf(activeTab)} * (100% / ${tabs.length}))`,
|
|
63
|
+
}"
|
|
64
|
+
></div>
|
|
65
|
+
<button
|
|
66
|
+
v-for="tab in tabs"
|
|
67
|
+
:key="tab"
|
|
68
|
+
class="categoria-tab"
|
|
69
|
+
:class="{ active: activeTab === tab }"
|
|
70
|
+
@click="activeTab = tab"
|
|
71
|
+
>
|
|
72
|
+
{{ tab }}
|
|
73
|
+
</button>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
<!-- Lista de corners -->
|
|
77
|
+
<div class="corners-list">
|
|
78
|
+
<div
|
|
79
|
+
v-for="item in filteredItems"
|
|
80
|
+
:key="item.id"
|
|
81
|
+
class="corner-item"
|
|
82
|
+
:class="{ selected: selectedIds.includes(item.id), disabled: item.disabled }"
|
|
83
|
+
@click="!item.disabled && toggle(item.id)"
|
|
84
|
+
>
|
|
85
|
+
<div class="check-col">
|
|
86
|
+
<div class="corner-checkbox" @click.stop="!item.disabled && toggle(item.id)">
|
|
87
|
+
<input
|
|
88
|
+
type="checkbox"
|
|
89
|
+
:checked="selectedIds.includes(item.id)"
|
|
90
|
+
:disabled="item.disabled"
|
|
91
|
+
class="checkbox-input"
|
|
92
|
+
@click.stop="!item.disabled && toggle(item.id)"
|
|
93
|
+
/>
|
|
94
|
+
<span v-if="selectedIds.includes(item.id)" class="selection-number">
|
|
95
|
+
{{ selectionOrderMap[item.id] }}
|
|
96
|
+
</span>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
<div class="badge-col">
|
|
100
|
+
<div class="count-badge">{{ item.order }}</div>
|
|
101
|
+
</div>
|
|
102
|
+
<div class="content-col">
|
|
103
|
+
<div class="title-row">
|
|
104
|
+
<span class="time">{{ item.minute }}</span>
|
|
105
|
+
<span class="title">{{ item.title }}</span>
|
|
106
|
+
<span class="player">| {{ item.player }}</span>
|
|
107
|
+
</div>
|
|
108
|
+
<div class="meta-row">
|
|
109
|
+
<span>Comba hacia afuera</span>
|
|
110
|
+
<span class="dot" />
|
|
111
|
+
<span>Rematado {{ item.wasGoal ? 'fue gol' : 'no fue gol' }}</span>
|
|
112
|
+
<div class="separator"></div>
|
|
113
|
+
<div class="category-indicator">
|
|
114
|
+
<div
|
|
115
|
+
class="category-dot"
|
|
116
|
+
:style="{ backgroundColor: item.color || '#4CAF50' }"
|
|
117
|
+
></div>
|
|
118
|
+
<span>{{ item.category }}</span>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
|
|
126
|
+
<!-- Footer con contador y carrusel -->
|
|
127
|
+
<div class="corners-footer">
|
|
128
|
+
<!-- Contador izquierdo - solo si hay tiros de esquina seleccionados -->
|
|
129
|
+
<div v-if="selectedIds.length > 0" class="counter-section">
|
|
130
|
+
<div class="counter-text">{{ selectedIds.length }}/10</div>
|
|
131
|
+
</div>
|
|
132
|
+
|
|
133
|
+
<!-- Carrusel derecho - solo si hay tiros de esquina seleccionados -->
|
|
134
|
+
<div v-if="selectedIds.length > 0" class="carousel-section">
|
|
135
|
+
<div class="carousel-container" ref="carouselContainerRef">
|
|
136
|
+
<button v-if="showLeftArrow" class="carousel-arrow left" @click="scrollLeft">‹</button>
|
|
137
|
+
<div class="carousel-track" ref="carouselTrackRef" :style="carouselTrackStyle">
|
|
138
|
+
<div v-for="corner in selectedCornersData" :key="corner.id" class="footer-pill">
|
|
139
|
+
<div class="footer-badge">{{ corner.order }}</div>
|
|
140
|
+
<div class="footer-content">
|
|
141
|
+
<div class="footer-name">{{ corner.title }}</div>
|
|
142
|
+
<div class="footer-ranking">
|
|
143
|
+
<span>{{ corner.minute }}</span>
|
|
144
|
+
<span>{{ corner.player }}</span>
|
|
145
|
+
<div class="footer-separator"></div>
|
|
146
|
+
<div class="footer-category-indicator">
|
|
147
|
+
<div
|
|
148
|
+
class="footer-category-dot"
|
|
149
|
+
:style="{ backgroundColor: corner.color || '#4CAF50' }"
|
|
150
|
+
></div>
|
|
151
|
+
<span>{{ corner.category }}</span>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
</div>
|
|
155
|
+
<button class="pill-remove-btn" @click="removeCorner(corner.id)">×</button>
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
158
|
+
<!-- Flecha derecha -->
|
|
159
|
+
<button v-if="showRightArrow" class="carousel-arrow right" @click="scrollRight">›</button>
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
163
|
+
<!-- Mensaje cuando no hay tiros de esquina seleccionados - full width -->
|
|
164
|
+
<div v-else class="empty-message-full">
|
|
165
|
+
<span class="empty-text">{{ selectedIds.length }} de 10 Tiros de esquina agregados</span>
|
|
166
|
+
</div>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
</template>
|
|
170
|
+
|
|
171
|
+
<script setup>
|
|
172
|
+
import { ref, computed, reactive, onMounted, onBeforeUnmount, nextTick, watch } from 'vue'
|
|
173
|
+
|
|
174
|
+
const props = defineProps({
|
|
175
|
+
modelValue: { type: Array, default: () => [] },
|
|
176
|
+
rival: { type: Boolean, default: false },
|
|
177
|
+
teamInitials: {
|
|
178
|
+
type: String,
|
|
179
|
+
default: 'AME',
|
|
180
|
+
},
|
|
181
|
+
title: {
|
|
182
|
+
type: String,
|
|
183
|
+
default: 'Tiros de esquina en contra de mi equipo',
|
|
184
|
+
},
|
|
185
|
+
teamLogoUrl: {
|
|
186
|
+
type: String,
|
|
187
|
+
default: 'https://golstatsimages.blob.core.windows.net/teams-80/2.png',
|
|
188
|
+
},
|
|
189
|
+
})
|
|
190
|
+
|
|
191
|
+
const emit = defineEmits(['update:modelValue'])
|
|
192
|
+
|
|
193
|
+
const tabs = ['Todos', 'Ofensiva', 'Defensiva']
|
|
194
|
+
const activeTab = ref('Todos')
|
|
195
|
+
|
|
196
|
+
const selectedIds = ref([...props.modelValue])
|
|
197
|
+
const selectionOrderMap = reactive({})
|
|
198
|
+
|
|
199
|
+
// Inicializar mapa de orden con las selecciones iniciales
|
|
200
|
+
selectedIds.value.forEach((id, idx) => {
|
|
201
|
+
selectionOrderMap[id] = idx + 1
|
|
202
|
+
})
|
|
203
|
+
|
|
204
|
+
// Carrusel de tiros de esquina seleccionados
|
|
205
|
+
const carouselScrollLeft = ref(0)
|
|
206
|
+
const carouselContainerRef = ref(null)
|
|
207
|
+
const carouselTrackRef = ref(null)
|
|
208
|
+
const containerWidth = ref(0)
|
|
209
|
+
const trackWidth = ref(0)
|
|
210
|
+
|
|
211
|
+
// Medir tamaños para overflow
|
|
212
|
+
function measureCarousel() {
|
|
213
|
+
const container = carouselContainerRef.value
|
|
214
|
+
const track = carouselTrackRef.value
|
|
215
|
+
containerWidth.value = container ? container.clientWidth : 0
|
|
216
|
+
trackWidth.value = track ? track.scrollWidth : 0
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Calcular overflow y mostrar flechas
|
|
220
|
+
const maxScroll = computed(() => Math.max(0, trackWidth.value - containerWidth.value))
|
|
221
|
+
|
|
222
|
+
const showLeftArrow = computed(() => carouselScrollLeft.value > 0)
|
|
223
|
+
const showRightArrow = computed(() => carouselScrollLeft.value < maxScroll.value)
|
|
224
|
+
|
|
225
|
+
// Función para scroll hacia la derecha
|
|
226
|
+
function scrollRight() {
|
|
227
|
+
const next = Math.min(maxScroll.value, carouselScrollLeft.value + 200)
|
|
228
|
+
carouselScrollLeft.value = next
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
function scrollLeft() {
|
|
232
|
+
const next = Math.max(0, carouselScrollLeft.value - 200)
|
|
233
|
+
carouselScrollLeft.value = next
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Datos de tiros de esquina seleccionados ordenados por número
|
|
237
|
+
const selectedCornersData = computed(() => {
|
|
238
|
+
return selectedIds.value
|
|
239
|
+
.map((id) => items.value.find((f) => f.id === id))
|
|
240
|
+
.filter(Boolean)
|
|
241
|
+
.sort((a, b) => selectionOrderMap[a.id] - selectionOrderMap[b.id])
|
|
242
|
+
})
|
|
243
|
+
|
|
244
|
+
// Estilo del track del carrusel
|
|
245
|
+
const carouselTrackStyle = computed(() => {
|
|
246
|
+
return {
|
|
247
|
+
transform: `translateX(-${carouselScrollLeft.value}px)`,
|
|
248
|
+
}
|
|
249
|
+
})
|
|
250
|
+
|
|
251
|
+
// Carrusel de partidos (mock)
|
|
252
|
+
const matches = ref([
|
|
253
|
+
{ id: 1, home: 'AME', away: 'PUM', score: '4 - 1', jornada: 'J11' },
|
|
254
|
+
{ id: 2, home: 'ASL', away: 'AME', score: '0 - 1', jornada: 'J10' },
|
|
255
|
+
{ id: 3, home: 'MTY', away: 'AME', score: '2 - 0', jornada: 'J9' },
|
|
256
|
+
{ id: 4, home: 'CAZ', away: 'AME', score: '1 - 1', jornada: 'J8' },
|
|
257
|
+
{ id: 5, home: 'AME', away: 'LEO', score: '3 - 2', jornada: 'J7' },
|
|
258
|
+
])
|
|
259
|
+
const currentIndex = ref(0)
|
|
260
|
+
const matchesWindowRef = ref(null)
|
|
261
|
+
const visibleMatchCount = ref(1)
|
|
262
|
+
const maxMatchIndex = computed(() => Math.max(0, matches.value.length - visibleMatchCount.value))
|
|
263
|
+
const showLeftMatchesArrow = computed(() => currentIndex.value > 0)
|
|
264
|
+
const showRightMatchesArrow = computed(() => currentIndex.value < maxMatchIndex.value)
|
|
265
|
+
const isDragging = ref(false)
|
|
266
|
+
const startX = ref(0)
|
|
267
|
+
const deltaX = ref(0)
|
|
268
|
+
|
|
269
|
+
const cardWidth = 148 // ancho aproximado del pill + gap
|
|
270
|
+
|
|
271
|
+
function measureMatchesWindow() {
|
|
272
|
+
const win = matchesWindowRef.value
|
|
273
|
+
const width = win ? win.clientWidth : 0
|
|
274
|
+
const perView = Math.max(1, Math.floor(width / (cardWidth + 10)))
|
|
275
|
+
visibleMatchCount.value = perView
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
const trackStyle = computed(() => {
|
|
279
|
+
const base = -currentIndex.value * (cardWidth + 10)
|
|
280
|
+
const dragOffset = isDragging.value ? deltaX.value : 0
|
|
281
|
+
return { transform: `translateX(${base + dragOffset}px)` }
|
|
282
|
+
})
|
|
283
|
+
|
|
284
|
+
function nextSlide() {
|
|
285
|
+
currentIndex.value = Math.min(maxMatchIndex.value, currentIndex.value + 1)
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
function prevSlide() {
|
|
289
|
+
currentIndex.value = Math.max(0, currentIndex.value - 1)
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
function onPointerDown(e) {
|
|
293
|
+
isDragging.value = true
|
|
294
|
+
startX.value = e.clientX
|
|
295
|
+
deltaX.value = 0
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
function onPointerMove(e) {
|
|
299
|
+
if (!isDragging.value) return
|
|
300
|
+
deltaX.value = e.clientX - startX.value
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
function onPointerUp() {
|
|
304
|
+
if (!isDragging.value) return
|
|
305
|
+
const threshold = cardWidth / 3
|
|
306
|
+
if (deltaX.value <= -threshold) nextSlide()
|
|
307
|
+
else if (deltaX.value >= threshold) prevSlide()
|
|
308
|
+
isDragging.value = false
|
|
309
|
+
deltaX.value = 0
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
const items = ref([
|
|
313
|
+
{
|
|
314
|
+
id: 1,
|
|
315
|
+
order: '2/7',
|
|
316
|
+
minute: '12:31',
|
|
317
|
+
title: 'Tiro de esquina',
|
|
318
|
+
player: 'Pedro Vite',
|
|
319
|
+
wasGoal: true,
|
|
320
|
+
category: 'Ofensiva',
|
|
321
|
+
color: '#4CAF50',
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
id: 2,
|
|
325
|
+
order: '4/7',
|
|
326
|
+
minute: '33:41',
|
|
327
|
+
title: 'Tiro de esquina',
|
|
328
|
+
player: 'Pedro Vite',
|
|
329
|
+
wasGoal: false,
|
|
330
|
+
category: 'Defensiva',
|
|
331
|
+
color: '#F44336',
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
id: 3,
|
|
335
|
+
order: '6/7',
|
|
336
|
+
minute: '62:21',
|
|
337
|
+
title: 'Tiro de esquina',
|
|
338
|
+
player: 'Pedro Vite',
|
|
339
|
+
wasGoal: false,
|
|
340
|
+
category: 'Ofensiva',
|
|
341
|
+
color: '#4CAF50',
|
|
342
|
+
disabled: true,
|
|
343
|
+
},
|
|
344
|
+
])
|
|
345
|
+
|
|
346
|
+
const filteredItems = computed(() => {
|
|
347
|
+
if (activeTab.value === 'Todos') return items.value
|
|
348
|
+
return items.value.filter((i) => i.category === activeTab.value)
|
|
349
|
+
})
|
|
350
|
+
|
|
351
|
+
function toggle(id) {
|
|
352
|
+
const item = items.value.find((i) => i.id === id)
|
|
353
|
+
if (item?.disabled) return
|
|
354
|
+
|
|
355
|
+
const index = selectedIds.value.indexOf(id)
|
|
356
|
+
if (index > -1) {
|
|
357
|
+
// deseleccionar: quitar del array y mantener números sin reordenar
|
|
358
|
+
selectedIds.value.splice(index, 1)
|
|
359
|
+
delete selectionOrderMap[id]
|
|
360
|
+
} else {
|
|
361
|
+
// seleccionar: asignar el número más bajo disponible
|
|
362
|
+
const total = items.value.length
|
|
363
|
+
const usedNumbers = new Set(Object.values(selectionOrderMap))
|
|
364
|
+
|
|
365
|
+
// encontrar el primer número disponible (1, 2, 3, ...)
|
|
366
|
+
let nextNumber = 1
|
|
367
|
+
while (usedNumbers.has(nextNumber) && nextNumber <= total) {
|
|
368
|
+
nextNumber++
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
selectionOrderMap[id] = nextNumber
|
|
372
|
+
selectedIds.value.push(id)
|
|
373
|
+
}
|
|
374
|
+
emit('update:modelValue', selectedIds.value)
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
function autocompletar() {
|
|
378
|
+
const total = items.value.length
|
|
379
|
+
const alreadySelected = new Set(selectedIds.value)
|
|
380
|
+
const usedNumbers = new Set(Object.values(selectionOrderMap))
|
|
381
|
+
|
|
382
|
+
// números faltantes 1..total que no están usados
|
|
383
|
+
const missingNumbers = []
|
|
384
|
+
for (let n = 1; n <= total; n++) {
|
|
385
|
+
if (!usedNumbers.has(n)) missingNumbers.push(n)
|
|
386
|
+
}
|
|
387
|
+
// orden ascendente para asignar secuencialmente
|
|
388
|
+
missingNumbers.sort((a, b) => a - b)
|
|
389
|
+
|
|
390
|
+
// ids que faltan por seleccionar, en el orden ACTUAL visible (arriba -> abajo)
|
|
391
|
+
const remainingIds = filteredItems.value.map((f) => f.id).filter((id) => !alreadySelected.has(id))
|
|
392
|
+
|
|
393
|
+
for (const id of remainingIds) {
|
|
394
|
+
const num = missingNumbers.shift()
|
|
395
|
+
if (num === undefined) break
|
|
396
|
+
selectionOrderMap[id] = num
|
|
397
|
+
selectedIds.value.push(id)
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
emit('update:modelValue', selectedIds.value)
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
function removeCorner(cornerId) {
|
|
404
|
+
const index = selectedIds.value.indexOf(cornerId)
|
|
405
|
+
if (index > -1) {
|
|
406
|
+
selectedIds.value.splice(index, 1)
|
|
407
|
+
delete selectionOrderMap[cornerId]
|
|
408
|
+
emit('update:modelValue', selectedIds.value)
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
function onLogoError() {
|
|
413
|
+
console.warn('Error loading team logo, falling back to initials')
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
let carouselResizeHandler = null
|
|
417
|
+
|
|
418
|
+
onMounted(() => {
|
|
419
|
+
measureCarousel()
|
|
420
|
+
const onResize = () => measureCarousel()
|
|
421
|
+
window.addEventListener('resize', onResize)
|
|
422
|
+
carouselResizeHandler = onResize
|
|
423
|
+
})
|
|
424
|
+
|
|
425
|
+
onBeforeUnmount(() => {
|
|
426
|
+
if (carouselResizeHandler) {
|
|
427
|
+
window.removeEventListener('resize', carouselResizeHandler)
|
|
428
|
+
carouselResizeHandler = null
|
|
429
|
+
}
|
|
430
|
+
})
|
|
431
|
+
|
|
432
|
+
// Re-medir cuando cambia el contenido seleccionado
|
|
433
|
+
watch(
|
|
434
|
+
() => selectedIds.value.slice(),
|
|
435
|
+
async () => {
|
|
436
|
+
await nextTick()
|
|
437
|
+
measureCarousel()
|
|
438
|
+
},
|
|
439
|
+
{ deep: true },
|
|
440
|
+
)
|
|
441
|
+
|
|
442
|
+
// Medición para matches window
|
|
443
|
+
let matchesResizeHandler = null
|
|
444
|
+
onMounted(() => {
|
|
445
|
+
measureMatchesWindow()
|
|
446
|
+
const onResizeMatches = () => measureMatchesWindow()
|
|
447
|
+
window.addEventListener('resize', onResizeMatches)
|
|
448
|
+
matchesResizeHandler = onResizeMatches
|
|
449
|
+
})
|
|
450
|
+
|
|
451
|
+
onBeforeUnmount(() => {
|
|
452
|
+
if (matchesResizeHandler) {
|
|
453
|
+
window.removeEventListener('resize', matchesResizeHandler)
|
|
454
|
+
matchesResizeHandler = null
|
|
455
|
+
}
|
|
456
|
+
})
|
|
457
|
+
|
|
458
|
+
defineExpose({ autocompletar })
|
|
459
|
+
</script>
|
|
460
|
+
|
|
461
|
+
<style scoped>
|
|
462
|
+
.corners-view {
|
|
463
|
+
width: 100%;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.corners-header {
|
|
467
|
+
display: flex;
|
|
468
|
+
align-items: flex-start;
|
|
469
|
+
gap: 16px;
|
|
470
|
+
margin-bottom: 20px;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
.team-logo-container {
|
|
474
|
+
width: 64px;
|
|
475
|
+
height: 64px;
|
|
476
|
+
border-radius: 12px;
|
|
477
|
+
background-color: rgba(255, 255, 255, 0.05);
|
|
478
|
+
display: flex;
|
|
479
|
+
align-items: center;
|
|
480
|
+
justify-content: center;
|
|
481
|
+
padding: 6px;
|
|
482
|
+
flex-shrink: 0;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
.team-logo {
|
|
486
|
+
width: 40px;
|
|
487
|
+
height: 40px;
|
|
488
|
+
border-radius: 4px;
|
|
489
|
+
object-fit: contain;
|
|
490
|
+
background: transparent;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
.header-content {
|
|
494
|
+
flex: 1;
|
|
495
|
+
display: flex;
|
|
496
|
+
flex-direction: column;
|
|
497
|
+
gap: 6px;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
.corners-title {
|
|
501
|
+
font-family: Poppins-Medium;
|
|
502
|
+
font-size: 14px;
|
|
503
|
+
font-weight: 500;
|
|
504
|
+
opacity: 0.8;
|
|
505
|
+
color: #fff;
|
|
506
|
+
margin: 0;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
.corners-description {
|
|
510
|
+
font-family: Poppins-Regular;
|
|
511
|
+
font-size: 13px;
|
|
512
|
+
color: rgba(255, 255, 255, 0.5);
|
|
513
|
+
margin: 0;
|
|
514
|
+
line-height: 1.4;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
.corners-container {
|
|
518
|
+
border-radius: 8px;
|
|
519
|
+
border: solid 1px rgba(224, 231, 240, 0.3);
|
|
520
|
+
padding: 12px;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
.matches-header {
|
|
524
|
+
display: flex;
|
|
525
|
+
align-items: center;
|
|
526
|
+
gap: 10px;
|
|
527
|
+
margin-bottom: 12px;
|
|
528
|
+
}
|
|
529
|
+
.window {
|
|
530
|
+
overflow: hidden;
|
|
531
|
+
position: relative;
|
|
532
|
+
}
|
|
533
|
+
.track {
|
|
534
|
+
display: flex;
|
|
535
|
+
gap: 10px;
|
|
536
|
+
}
|
|
537
|
+
.track.animating {
|
|
538
|
+
transition: transform 220ms ease;
|
|
539
|
+
}
|
|
540
|
+
.match-pill {
|
|
541
|
+
display: flex;
|
|
542
|
+
flex-direction: column;
|
|
543
|
+
gap: 6px;
|
|
544
|
+
padding: 10px 12px;
|
|
545
|
+
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
546
|
+
border-radius: 10px;
|
|
547
|
+
color: #fff;
|
|
548
|
+
opacity: 0.7;
|
|
549
|
+
}
|
|
550
|
+
.match-pill.active {
|
|
551
|
+
border-color: #cbee6b;
|
|
552
|
+
opacity: 1;
|
|
553
|
+
box-shadow: 0 0 0 1px rgba(203, 238, 107, 0.25) inset;
|
|
554
|
+
}
|
|
555
|
+
.team-logos {
|
|
556
|
+
display: flex;
|
|
557
|
+
align-items: center;
|
|
558
|
+
gap: 8px;
|
|
559
|
+
}
|
|
560
|
+
.logo {
|
|
561
|
+
width: 28px;
|
|
562
|
+
height: 28px;
|
|
563
|
+
border-radius: 50%;
|
|
564
|
+
background: rgba(255, 255, 255, 0.12);
|
|
565
|
+
display: flex;
|
|
566
|
+
align-items: center;
|
|
567
|
+
justify-content: center;
|
|
568
|
+
font-size: 10px;
|
|
569
|
+
}
|
|
570
|
+
.logo.alt {
|
|
571
|
+
background: rgba(255, 255, 255, 0.08);
|
|
572
|
+
}
|
|
573
|
+
.score {
|
|
574
|
+
font-family: Poppins-Medium;
|
|
575
|
+
font-size: 12px;
|
|
576
|
+
}
|
|
577
|
+
.meta {
|
|
578
|
+
font-family: Poppins-Regular;
|
|
579
|
+
font-size: 10px;
|
|
580
|
+
opacity: 0.7;
|
|
581
|
+
}
|
|
582
|
+
.nav {
|
|
583
|
+
background: none;
|
|
584
|
+
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
585
|
+
color: #fff;
|
|
586
|
+
border-radius: 50%;
|
|
587
|
+
width: 28px;
|
|
588
|
+
height: 28px;
|
|
589
|
+
cursor: pointer;
|
|
590
|
+
}
|
|
591
|
+
.nav:hover {
|
|
592
|
+
border-color: #cbee6b;
|
|
593
|
+
color: #cbee6b;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
.categorias-tabs {
|
|
597
|
+
display: flex;
|
|
598
|
+
gap: 8px;
|
|
599
|
+
margin: 12px 0 16px;
|
|
600
|
+
}
|
|
601
|
+
.categoria-tab {
|
|
602
|
+
padding: 8px 16px;
|
|
603
|
+
border-radius: 20px;
|
|
604
|
+
border: 1px solid rgba(255, 255, 255, 0.3);
|
|
605
|
+
background: transparent;
|
|
606
|
+
color: rgba(255, 255, 255, 0.7);
|
|
607
|
+
font-family: Poppins-Regular;
|
|
608
|
+
font-size: 12px;
|
|
609
|
+
cursor: pointer;
|
|
610
|
+
}
|
|
611
|
+
.categoria-tab.active {
|
|
612
|
+
border-color: #cbee6b;
|
|
613
|
+
color: #cbee6b;
|
|
614
|
+
background: rgba(203, 238, 107, 0.08);
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
/* Segmented control styles to match fortalezas */
|
|
618
|
+
.categorias-tabs.segmented {
|
|
619
|
+
position: relative;
|
|
620
|
+
display: flex;
|
|
621
|
+
align-items: center;
|
|
622
|
+
gap: 0;
|
|
623
|
+
border: 1px solid rgba(224, 231, 240, 0.3);
|
|
624
|
+
border-radius: 999px;
|
|
625
|
+
padding: 0;
|
|
626
|
+
overflow: hidden;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
.segmented-highlight {
|
|
630
|
+
position: absolute;
|
|
631
|
+
top: 0;
|
|
632
|
+
bottom: 0;
|
|
633
|
+
left: 0;
|
|
634
|
+
border-radius: 999px;
|
|
635
|
+
border: 1px solid #cbee6b;
|
|
636
|
+
pointer-events: none;
|
|
637
|
+
transition:
|
|
638
|
+
left 220ms ease,
|
|
639
|
+
width 220ms ease;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
.categorias-tabs.segmented .categoria-tab {
|
|
643
|
+
position: relative;
|
|
644
|
+
flex: 1 1 0;
|
|
645
|
+
background: transparent;
|
|
646
|
+
border: none;
|
|
647
|
+
color: rgba(255, 255, 255, 0.6);
|
|
648
|
+
padding: 8px 12px;
|
|
649
|
+
font-family: Poppins-Regular;
|
|
650
|
+
font-size: 12px;
|
|
651
|
+
cursor: pointer;
|
|
652
|
+
z-index: 1;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
.categorias-tabs.segmented .categoria-tab.active {
|
|
656
|
+
color: #fff;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
.corners-list {
|
|
660
|
+
max-height: 300px;
|
|
661
|
+
overflow-y: auto;
|
|
662
|
+
scrollbar-width: thin;
|
|
663
|
+
scrollbar-color: #cbee6b #2e3b46;
|
|
664
|
+
margin-bottom: 16px;
|
|
665
|
+
}
|
|
666
|
+
.corners-list::-webkit-scrollbar {
|
|
667
|
+
width: 6px;
|
|
668
|
+
}
|
|
669
|
+
.corners-list::-webkit-scrollbar-thumb {
|
|
670
|
+
background: rgba(255, 255, 255, 0.3);
|
|
671
|
+
border-radius: 3px;
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
.corner-item {
|
|
675
|
+
display: flex;
|
|
676
|
+
gap: 10px;
|
|
677
|
+
align-items: flex-start;
|
|
678
|
+
padding: 12px;
|
|
679
|
+
border-bottom: 1px dashed rgba(255, 255, 255, 0.2);
|
|
680
|
+
color: #fff;
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
.corner-item:last-child {
|
|
684
|
+
border-bottom: none;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
/* Opacidad por defecto cuando no está seleccionado */
|
|
688
|
+
.corner-item :is(.title-row, .meta-row, .count-badge) {
|
|
689
|
+
opacity: 0.7;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
/* Al seleccionar se restaura a 1 */
|
|
693
|
+
.corner-item.selected :is(.title-row, .meta-row, .count-badge) {
|
|
694
|
+
opacity: 1;
|
|
695
|
+
}
|
|
696
|
+
.corner-item.disabled {
|
|
697
|
+
opacity: 0.5;
|
|
698
|
+
cursor: not-allowed;
|
|
699
|
+
}
|
|
700
|
+
.corner-item.selected {
|
|
701
|
+
background: transparent;
|
|
702
|
+
}
|
|
703
|
+
.corner-checkbox {
|
|
704
|
+
position: relative;
|
|
705
|
+
width: 20px;
|
|
706
|
+
height: 20px;
|
|
707
|
+
flex-shrink: 0;
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
.checkbox-input {
|
|
711
|
+
width: 20px;
|
|
712
|
+
height: 20px;
|
|
713
|
+
border: 2px solid rgba(255, 255, 255, 0.3);
|
|
714
|
+
border-radius: 4px;
|
|
715
|
+
background: transparent;
|
|
716
|
+
cursor: pointer;
|
|
717
|
+
position: relative;
|
|
718
|
+
transition: all 0.2s ease;
|
|
719
|
+
appearance: none;
|
|
720
|
+
-webkit-appearance: none;
|
|
721
|
+
-moz-appearance: none;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
.checkbox-input:checked {
|
|
725
|
+
background: #cbee6b;
|
|
726
|
+
border-color: #cbee6b;
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
.checkbox-input:disabled {
|
|
730
|
+
opacity: 0.5;
|
|
731
|
+
cursor: not-allowed;
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
.selection-number {
|
|
735
|
+
position: absolute;
|
|
736
|
+
top: 50%;
|
|
737
|
+
left: 50%;
|
|
738
|
+
transform: translate(-50%, -50%);
|
|
739
|
+
color: #000;
|
|
740
|
+
font-size: 12px;
|
|
741
|
+
font-weight: bold;
|
|
742
|
+
font-family: Poppins-Bold;
|
|
743
|
+
pointer-events: none;
|
|
744
|
+
}
|
|
745
|
+
.count-badge {
|
|
746
|
+
width: 40px;
|
|
747
|
+
height: 40px;
|
|
748
|
+
border-radius: 10px;
|
|
749
|
+
background: rgba(255, 255, 255, 0.08);
|
|
750
|
+
display: flex;
|
|
751
|
+
align-items: center;
|
|
752
|
+
justify-content: center;
|
|
753
|
+
font-family: Poppins-Medium;
|
|
754
|
+
}
|
|
755
|
+
.content-col {
|
|
756
|
+
flex: 1;
|
|
757
|
+
}
|
|
758
|
+
.title-row {
|
|
759
|
+
display: flex;
|
|
760
|
+
align-items: center;
|
|
761
|
+
gap: 8px;
|
|
762
|
+
font-size: 13px;
|
|
763
|
+
}
|
|
764
|
+
.time {
|
|
765
|
+
font-size: 11px;
|
|
766
|
+
opacity: 0.7;
|
|
767
|
+
}
|
|
768
|
+
.player {
|
|
769
|
+
opacity: 0.7;
|
|
770
|
+
font-size: 12px;
|
|
771
|
+
}
|
|
772
|
+
.meta-row {
|
|
773
|
+
display: flex;
|
|
774
|
+
gap: 6px;
|
|
775
|
+
opacity: 0.7;
|
|
776
|
+
font-size: 11px;
|
|
777
|
+
margin-top: 4px;
|
|
778
|
+
}
|
|
779
|
+
.meta-row .dot {
|
|
780
|
+
width: 3px;
|
|
781
|
+
height: 3px;
|
|
782
|
+
border-radius: 50%;
|
|
783
|
+
background: rgba(255, 255, 255, 0.5);
|
|
784
|
+
align-self: center;
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
.separator {
|
|
788
|
+
width: 1px;
|
|
789
|
+
height: 12px;
|
|
790
|
+
background-color: rgba(255, 255, 255, 0.3);
|
|
791
|
+
margin: 0 6px;
|
|
792
|
+
align-self: center;
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
.category-indicator {
|
|
796
|
+
display: flex;
|
|
797
|
+
align-items: center;
|
|
798
|
+
gap: 4px;
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
.category-dot {
|
|
802
|
+
width: 6px;
|
|
803
|
+
height: 6px;
|
|
804
|
+
border-radius: 50%;
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
.category-indicator span {
|
|
808
|
+
font-family: Poppins-Regular;
|
|
809
|
+
font-size: 10px;
|
|
810
|
+
color: rgba(255, 255, 255, 0.7);
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
/* Footer con contador y carrusel */
|
|
814
|
+
.corners-footer {
|
|
815
|
+
display: flex;
|
|
816
|
+
gap: 16px;
|
|
817
|
+
margin-top: 20px;
|
|
818
|
+
width: 100%;
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
.counter-section {
|
|
822
|
+
width: 59px;
|
|
823
|
+
height: 68px;
|
|
824
|
+
flex-grow: 0;
|
|
825
|
+
display: flex;
|
|
826
|
+
flex-direction: row;
|
|
827
|
+
justify-content: center;
|
|
828
|
+
align-items: center;
|
|
829
|
+
gap: 16px;
|
|
830
|
+
padding: 12px;
|
|
831
|
+
border-radius: 8px;
|
|
832
|
+
border: solid 1px rgba(255, 255, 255, 0.1);
|
|
833
|
+
background-color: rgba(255, 255, 255, 0.02);
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
.counter-text {
|
|
837
|
+
font-family: Poppins-Regular;
|
|
838
|
+
font-size: 12px;
|
|
839
|
+
font-weight: normal;
|
|
840
|
+
font-stretch: normal;
|
|
841
|
+
font-style: normal;
|
|
842
|
+
line-height: 1.33;
|
|
843
|
+
letter-spacing: 1.2px;
|
|
844
|
+
text-align: center;
|
|
845
|
+
color: #fff;
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
.carousel-section {
|
|
849
|
+
flex: 1;
|
|
850
|
+
width: 332px;
|
|
851
|
+
height: 72px;
|
|
852
|
+
flex-grow: 0;
|
|
853
|
+
display: flex;
|
|
854
|
+
flex-direction: row;
|
|
855
|
+
justify-content: flex-start;
|
|
856
|
+
align-items: center;
|
|
857
|
+
gap: 16px;
|
|
858
|
+
padding: 12px 10px 12px 8px;
|
|
859
|
+
border-radius: 8px;
|
|
860
|
+
background-color: rgba(255, 255, 255, 0.05);
|
|
861
|
+
position: relative;
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
.carousel-container {
|
|
865
|
+
overflow: hidden;
|
|
866
|
+
width: 100%;
|
|
867
|
+
height: 100%;
|
|
868
|
+
position: relative;
|
|
869
|
+
display: flex;
|
|
870
|
+
align-items: center;
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
.carousel-track {
|
|
874
|
+
display: flex;
|
|
875
|
+
gap: 8px;
|
|
876
|
+
transition: transform 0.3s ease;
|
|
877
|
+
min-width: max-content;
|
|
878
|
+
height: 100%;
|
|
879
|
+
align-items: center;
|
|
880
|
+
z-index: 1;
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
.footer-pill {
|
|
884
|
+
display: flex;
|
|
885
|
+
align-items: center;
|
|
886
|
+
gap: 12px;
|
|
887
|
+
padding: 12px;
|
|
888
|
+
padding-left: 12px;
|
|
889
|
+
padding-right: 12px;
|
|
890
|
+
padding-top: 12px;
|
|
891
|
+
padding-bottom: 12px;
|
|
892
|
+
border-radius: 8px;
|
|
893
|
+
cursor: pointer;
|
|
894
|
+
transition: background 0.2s ease;
|
|
895
|
+
background: rgba(255, 255, 255, 0.05);
|
|
896
|
+
flex-shrink: 0;
|
|
897
|
+
height: fit-content;
|
|
898
|
+
min-width: 250px;
|
|
899
|
+
position: relative;
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
.footer-pill:hover {
|
|
903
|
+
background: rgba(255, 255, 255, 0.1);
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
.footer-pill .footer-badge {
|
|
907
|
+
width: 54px;
|
|
908
|
+
height: 54px;
|
|
909
|
+
padding: 6px 8px;
|
|
910
|
+
border-radius: 10.4px;
|
|
911
|
+
box-shadow: 0 12.4px 49.8px 0 rgba(0, 0, 0, 0.08);
|
|
912
|
+
border-image-slice: 1;
|
|
913
|
+
background-blend-mode: color-dodge;
|
|
914
|
+
background-image:
|
|
915
|
+
linear-gradient(to bottom, rgba(50, 50, 50, 0), rgba(50, 50, 50, 0)),
|
|
916
|
+
linear-gradient(
|
|
917
|
+
138deg,
|
|
918
|
+
rgba(255, 255, 255, 0.2) 2%,
|
|
919
|
+
rgba(255, 255, 255, 0.1) 14%,
|
|
920
|
+
rgba(255, 255, 255, 0) 77%,
|
|
921
|
+
rgba(255, 255, 255, 0.2) 100%
|
|
922
|
+
);
|
|
923
|
+
background-origin: border-box;
|
|
924
|
+
background-clip: content-box, border-box;
|
|
925
|
+
display: flex;
|
|
926
|
+
align-items: center;
|
|
927
|
+
justify-content: center;
|
|
928
|
+
font-family: Poppins-SemiBold;
|
|
929
|
+
border-radius: 10.4px;
|
|
930
|
+
font-size: 20.7px;
|
|
931
|
+
font-weight: 600;
|
|
932
|
+
color: #fff;
|
|
933
|
+
flex-shrink: 0;
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
.footer-pill .footer-content {
|
|
937
|
+
flex: 1;
|
|
938
|
+
display: flex;
|
|
939
|
+
flex-direction: column;
|
|
940
|
+
gap: 4px;
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
.footer-pill .footer-name {
|
|
944
|
+
font-family: Poppins-Medium;
|
|
945
|
+
font-size: 14px;
|
|
946
|
+
font-weight: 500;
|
|
947
|
+
color: #fff;
|
|
948
|
+
margin-bottom: 4px;
|
|
949
|
+
line-height: 1.3;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
.footer-pill .footer-ranking {
|
|
953
|
+
font-family: Poppins-Regular;
|
|
954
|
+
font-size: 11px;
|
|
955
|
+
color: rgba(255, 255, 255, 0.6);
|
|
956
|
+
display: flex;
|
|
957
|
+
align-items: center;
|
|
958
|
+
gap: 6px;
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
.footer-pill .footer-league-logo {
|
|
962
|
+
width: 16px;
|
|
963
|
+
height: 16px;
|
|
964
|
+
border-radius: 2px;
|
|
965
|
+
object-fit: contain;
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
.footer-pill .footer-separator {
|
|
969
|
+
width: 1px;
|
|
970
|
+
height: 12px;
|
|
971
|
+
background-color: rgba(255, 255, 255, 0.3);
|
|
972
|
+
margin: 0 6px;
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
.footer-pill .footer-category-indicator {
|
|
976
|
+
display: flex;
|
|
977
|
+
align-items: center;
|
|
978
|
+
gap: 4px;
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
.footer-pill .footer-category-dot {
|
|
982
|
+
width: 6px;
|
|
983
|
+
height: 6px;
|
|
984
|
+
border-radius: 50%;
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
.footer-pill .footer-category-indicator span {
|
|
988
|
+
font-family: Poppins-Regular;
|
|
989
|
+
font-size: 10px;
|
|
990
|
+
color: rgba(255, 255, 255, 0.7);
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
.pill-remove-btn {
|
|
994
|
+
background: none;
|
|
995
|
+
border: none;
|
|
996
|
+
color: rgba(255, 255, 255, 0.7);
|
|
997
|
+
font-size: 18px;
|
|
998
|
+
font-weight: bold;
|
|
999
|
+
cursor: pointer;
|
|
1000
|
+
padding: 0;
|
|
1001
|
+
margin-left: auto;
|
|
1002
|
+
line-height: 1;
|
|
1003
|
+
opacity: 0.7;
|
|
1004
|
+
transition: opacity 0.2s ease;
|
|
1005
|
+
width: 20px;
|
|
1006
|
+
height: 20px;
|
|
1007
|
+
margin-top: -40px;
|
|
1008
|
+
margin-right: -8px;
|
|
1009
|
+
display: flex;
|
|
1010
|
+
align-items: center;
|
|
1011
|
+
justify-content: center;
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
.pill-remove-btn:hover {
|
|
1015
|
+
opacity: 1;
|
|
1016
|
+
color: #fff;
|
|
1017
|
+
}
|
|
1018
|
+
|
|
1019
|
+
.carousel-arrow {
|
|
1020
|
+
position: absolute;
|
|
1021
|
+
top: 50%;
|
|
1022
|
+
transform: translateY(-50%);
|
|
1023
|
+
background: rgba(255, 255, 255, 0.1);
|
|
1024
|
+
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
1025
|
+
color: #fff;
|
|
1026
|
+
width: 32px;
|
|
1027
|
+
height: 32px;
|
|
1028
|
+
border-radius: 50%;
|
|
1029
|
+
display: flex;
|
|
1030
|
+
align-items: center;
|
|
1031
|
+
justify-content: center;
|
|
1032
|
+
cursor: pointer;
|
|
1033
|
+
font-size: 18px;
|
|
1034
|
+
font-weight: bold;
|
|
1035
|
+
transition: all 0.2s ease;
|
|
1036
|
+
z-index: 2;
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
.carousel-arrow:hover {
|
|
1040
|
+
background: rgba(255, 255, 255, 0.2);
|
|
1041
|
+
border-color: rgba(255, 255, 255, 0.3);
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
.carousel-arrow.right {
|
|
1045
|
+
right: 8px;
|
|
1046
|
+
}
|
|
1047
|
+
.carousel-arrow.left {
|
|
1048
|
+
left: 8px;
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
.empty-message-full {
|
|
1052
|
+
width: 100%;
|
|
1053
|
+
height: 72px;
|
|
1054
|
+
display: flex;
|
|
1055
|
+
flex-direction: row;
|
|
1056
|
+
justify-content: center;
|
|
1057
|
+
align-items: center;
|
|
1058
|
+
padding: 12px;
|
|
1059
|
+
border-radius: 8px;
|
|
1060
|
+
background-color: rgba(255, 255, 255, 0.05);
|
|
1061
|
+
position: relative;
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
.empty-text {
|
|
1065
|
+
font-family: Poppins-Regular;
|
|
1066
|
+
font-size: 12px;
|
|
1067
|
+
color: rgba(255, 255, 255, 0.7);
|
|
1068
|
+
text-align: center;
|
|
1069
|
+
width: 100%;
|
|
1070
|
+
}
|
|
1071
|
+
</style>
|