Files
fuel-price/resources/js/components/landing/StatsRow.vue
Ovidiu U dd9bd95657
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
Redesign search UI with unified input, expandable filters, and integrated map controls
- Consolidate HeroSearch into single responsive form with inline geolocation button and submit actions
- Transform SearchBar into pill-based filter bar with visual state indicators (active filters highlighted)
- Move map toggle from separate component into SearchBar with open/close state management
- Redesign StationList sort controls as pills with icons, move brand filter inline, add result count
- Expand LeafletMap to full-width panel (96 viewport height) controlled by parent open state
- Remove nested mobile/desktop layouts in HeroSearch in favor of single adaptive form
- Add "Refine" and "Sort" labels to filter groups, implement clear-all filters button
- Show verdict card only before first search on mobile, hide after results load
- Position StatsRow within hero gradient, move results section into same gradient container
- Update map initialization to only occur when panel is open, destroy on close
- Add accessibility labels (aria-expanded, aria-controls) to map toggle button
2026-04-22 09:38:23 +01:00

29 lines
948 B
Vue

<template>
<dl class="hidden md:flex items-center divide-x divide-zinc-300">
<div v-for="stat in stats" :key="stat.label" class="px-8 first:pl-0 last:pr-0">
<dt class="sr-only">{{ stat.label }}</dt>
<dd>
<span class="block font-serif text-2xl text-zinc-900 leading-none">{{ stat.value }}</span>
<span class="block font-mono text-[11px] uppercase tracking-widest text-zinc-500 mt-1.5">{{ stat.label }}</span>
</dd>
</div>
</dl>
</template>
<script setup>
import { computed } from 'vue'
const props = defineProps({
stationCount: { type: Number, default: null },
})
const stats = computed(() => [
{
value: props.stationCount ? props.stationCount.toLocaleString('en-GB') : '11,482',
label: 'Stations tracked',
},
{ value: '£273', label: 'Median saving / yr' },
{ value: '84%', label: 'Forecast accuracy' },
])
</script>