feat: add Home Assistant example Plugin

This commit is contained in:
Benjamin Nussbaum 2025-03-20 21:35:09 +01:00
parent 282fdac583
commit dfd77b392a
3 changed files with 128 additions and 0 deletions

View file

@ -0,0 +1,41 @@
{{-- Credit: Lucide (https://lucide.dev) --}}
@props([
'variant' => 'outline',
])
@php
if ($variant === 'solid') {
throw new \Exception('The "solid" variant is not supported in Lucide.');
}
$classes = Flux::classes('shrink-0')
->add(match($variant) {
'outline' => '[:where(&)]:size-6',
'solid' => '[:where(&)]:size-6',
'mini' => '[:where(&)]:size-5',
'micro' => '[:where(&)]:size-4',
});
$strokeWidth = match ($variant) {
'outline' => 2,
'mini' => 2.25,
'micro' => 2.5,
};
@endphp
<svg
{{ $attributes->class($classes) }}
data-flux-icon
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="{{ $strokeWidth }}"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
data-slot="icon"
>
<path d="M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z" />
</svg>

View file

@ -0,0 +1,68 @@
@php
$weatherEntity = collect($data)->first(function($entity) {
return $entity['entity_id'] === 'weather.forecast_home';
});
@endphp
<x-trmnl::view>
<x-trmnl::layout class="layout--col gap--space-between">
@if($weatherEntity)
<div class="grid" style="gap: 9px;">
<div class="row row--center col--span-3 col--end">
<img class="weather-image" style="max-height: 150px; margin:auto;"
src="https://usetrmnl.com/images/weather/wi-thermometer.svg">
</div>
<div class="col col--span-3 col--end">
<div class="item h--full">
<div class="meta"></div>
<div class="justify-center">
<span class="value value--xxxlarge"
data-fit-value="true">{{ $weatherEntity['attributes']['temperature'] }}</span>
<span class="label">Temperature {{ $weatherEntity['attributes']['temperature_unit'] }}</span>
</div>
</div>
</div>
<div class="col col--span-3 col--end gap--medium">
<div class="item">
<div class="meta"></div>
<div class="icon">
{{-- <img class="weather-icon" src="https://usetrmnl.com/images/weather/wi-thermometer.svg">--}}
</div>
<div class="content">
<span class="value value--small">{{ $weatherEntity['attributes']['wind_speed'] }} {{ $weatherEntity['attributes']['wind_speed_unit'] }}</span>
<span class="label">Wind Speed</span>
</div>
</div>
<div class="item">
<div class="meta"></div>
<div class="icon">
{{-- <img class="weather-icon" src="https://usetrmnl.com/images/weather/wi-raindrops.svg">--}}
</div>
<div class="content">
<span class="value value--small">{{ $weatherEntity['attributes']['humidity'] }}%</span>
<span class="label">Humidity</span>
</div>
</div>
<div class="item">
<div class="meta"></div>
<div class="icon">
{{-- <img class="weather-icon" src="https://usetrmnl.com/images/weather/wi-day-sunny.svg">--}}
</div>
<div class="content">
<span class="value value--xsmall">{{ Str::title($weatherEntity['state']) }}</span>
<span class="label">Right Now</span>
</div>
</div>
</div>
</div>
@else
<p>Weather forecast data not found.</p>
@endif
</x-trmnl::layout>
<x-trmnl::title-bar title="Home Assistant"/>
</x-trmnl::view>