From b21c99411db4a15519bfa271d961797b1d4447e5 Mon Sep 17 00:00:00 2001 From: Ovidiu U Date: Tue, 7 Apr 2026 14:34:44 +0100 Subject: [PATCH] feat: add x-fuel.* Blade components --- .../views/components/fuel/forecast.blade.php | 29 +++++++++ .../components/fuel/radius-select.blade.php | 10 +++ .../components/fuel/recommendation.blade.php | 63 +++++++++++++++++++ .../components/fuel/sort-select.blade.php | 10 +++ .../components/fuel/station-card.blade.php | 42 +++++++++++++ .../components/fuel/station-map.blade.php | 6 ++ .../components/fuel/type-select.blade.php | 11 ++++ 7 files changed, 171 insertions(+) create mode 100644 resources/views/components/fuel/forecast.blade.php create mode 100644 resources/views/components/fuel/radius-select.blade.php create mode 100644 resources/views/components/fuel/recommendation.blade.php create mode 100644 resources/views/components/fuel/sort-select.blade.php create mode 100644 resources/views/components/fuel/station-card.blade.php create mode 100644 resources/views/components/fuel/station-map.blade.php create mode 100644 resources/views/components/fuel/type-select.blade.php diff --git a/resources/views/components/fuel/forecast.blade.php b/resources/views/components/fuel/forecast.blade.php new file mode 100644 index 0000000..19736d3 --- /dev/null +++ b/resources/views/components/fuel/forecast.blade.php @@ -0,0 +1,29 @@ +
+ {{-- Pro badge --}} +
+
+

14-Day Forecast

+

Price Trend

+
+ + Pro + +
+ + {{-- Decorative squiggle chart --}} + + + + + {{-- Blurred overlay --}} +
+ +

14-day forecast is a Pro feature

+ + Unlock Forecast + +
+
diff --git a/resources/views/components/fuel/radius-select.blade.php b/resources/views/components/fuel/radius-select.blade.php new file mode 100644 index 0000000..3571eb1 --- /dev/null +++ b/resources/views/components/fuel/radius-select.blade.php @@ -0,0 +1,10 @@ + diff --git a/resources/views/components/fuel/recommendation.blade.php b/resources/views/components/fuel/recommendation.blade.php new file mode 100644 index 0000000..ca16af1 --- /dev/null +++ b/resources/views/components/fuel/recommendation.blade.php @@ -0,0 +1,63 @@ +@props(['prediction']) + +@if ($prediction) + @php + $action = $prediction['action'] ?? 'no_signal'; + $headline = match ($action) { + 'fill_now' => 'Fill up now', + 'wait' => 'Wait', + default => 'No signal', + }; + $score = (float) ($prediction['confidence_score'] ?? 0); + $circumference = 125.6; // 2π × 20 + $offset = round($circumference * (1 - $score / 100), 1); + $label = $prediction['confidence_label'] ?? 'low'; + $labelColour = match ($label) { + 'high' => 'bg-green-100 text-green-700', + 'medium' => 'bg-amber-100 text-amber-700', + default => 'bg-zinc-100 text-zinc-500', + }; + @endphp + +
+
+
+

+ Recommendation +

+

+ {{ $headline }} +

+
+ +
+
+ + + + + + {{ (int) $score }}% + +
+ Confidence +
+
+ +

+ {{ $prediction['reasoning'] ?? '' }} +

+ +
+ + {{ ucfirst($label) }} confidence + +
+
+@endif diff --git a/resources/views/components/fuel/sort-select.blade.php b/resources/views/components/fuel/sort-select.blade.php new file mode 100644 index 0000000..07784b5 --- /dev/null +++ b/resources/views/components/fuel/sort-select.blade.php @@ -0,0 +1,10 @@ + diff --git a/resources/views/components/fuel/station-card.blade.php b/resources/views/components/fuel/station-card.blade.php new file mode 100644 index 0000000..556f022 --- /dev/null +++ b/resources/views/components/fuel/station-card.blade.php @@ -0,0 +1,42 @@ +@props(['station']) + +@php + $colourClass = match($station['price_classification'] ?? '') { + 'current' => 'text-green-500', + 'recent' => 'text-slate-500', + 'stale' => 'text-amber-500', + 'outdated' => 'text-red-500', + default => 'text-zinc-400', + }; + $miles = number_format(($station['distance_km'] ?? 0) * 0.621371, 1); + $price = number_format($station['price'] ?? 0, 1); +@endphp + +
+
+
+

+ {{ $station['name'] ?? '' }} +

+ @if (! empty($station['is_supermarket'])) + + Supermarket + + @endif +
+

+ {{ $station['address'] ?? '' }}, {{ $station['postcode'] ?? '' }} +

+

{{ $miles }} miles away

+
+ +
+

{{ $price }}p

+

+ {{ $station['price_classification_label'] ?? '' }} + @if (! empty($station['price_updated_at'])) + · {{ \Carbon\Carbon::parse($station['price_updated_at'])->diffForHumans() }} + @endif +

+
+
diff --git a/resources/views/components/fuel/station-map.blade.php b/resources/views/components/fuel/station-map.blade.php new file mode 100644 index 0000000..fd4d69e --- /dev/null +++ b/resources/views/components/fuel/station-map.blade.php @@ -0,0 +1,6 @@ +@props(['results' => []]) + +
diff --git a/resources/views/components/fuel/type-select.blade.php b/resources/views/components/fuel/type-select.blade.php new file mode 100644 index 0000000..1e6bd67 --- /dev/null +++ b/resources/views/components/fuel/type-select.blade.php @@ -0,0 +1,11 @@ +