diff --git a/client/src/components/Moon.vue b/client/src/components/Moon.vue
new file mode 100644
index 0000000..531d0a2
--- /dev/null
+++ b/client/src/components/Moon.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
🌙 Moon
+
+
+
+
+ {{ d.moon_phase }}
+ {{ d.moon_illumination?.toFixed(1) }}% illuminated
+
+
+
+
+
+
+
+
+
diff --git a/client/src/components/Precipitation.vue b/client/src/components/Precipitation.vue
new file mode 100644
index 0000000..d887af1
--- /dev/null
+++ b/client/src/components/Precipitation.vue
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
🌧️ Precipitation
+
+
+
+
Raining
+
+
{{ d.raining == 'True' ? d.storm_direction : 'No' }}
+
+
+
Lightning
+
+
{{ d.lightning_rate }}/hr
+
+
+
Distance
+
+
{{ d.lightning_distance }} km
+
+
+
+
+
+
+
+
Chance
+
+
{{ d.precipitation_chance }}%
+
+
+
Pressure
+
+
{{ d.pressure_hpa.toFixed(1) }} ({{d.pressure_trend}})
+
+
+
Precipitation
+
+
{{ d.precipitation.toFixed(1) }} mm
+
+
+
Accumulation
+
+
{{ d.accumulation.toFixed(1) }} mm {{ d.accumulation_type != 'none' ? `(${d.accumulation_type})` : '' }}
+
+
+
Dew Point
+
+
{{ d.dew_point.toFixed(1) }}°C
+
+
+
Frost Risk
+
+
{{ d.frost_risk }}
+
+
+
+
diff --git a/client/src/components/Seismic.vue b/client/src/components/Seismic.vue
new file mode 100644
index 0000000..1a1d91e
--- /dev/null
+++ b/client/src/components/Seismic.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
🫨 Seismic
+
+
+
+
+
+
+
diff --git a/client/src/components/Sun.vue b/client/src/components/Sun.vue
new file mode 100644
index 0000000..a67a6af
--- /dev/null
+++ b/client/src/components/Sun.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
🌅 Sun
+
+
+
+
+
Sunrise
+
{{ new Date(data.sunrise).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) }}
+
+
+
Sunset
+
{{ new Date(data.sunset).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) }}
+
+
+
+
+
+
+
+
+
+
Daylight
+
+
{{ data.daylight?.toFixed(2) }} hrs
+
+
+
Lux
+
+
{{ data.lux }}
+
+
+
Solar W/m²
+
+
{{ data.solar_wm2 }}
+
+
+
+
+
+
+
+
UV Index
+
+
{{ data.uv_index.toFixed(1) }} ({{ data.uv_index_label }})
+
+
+
UV Dose
+
+
{{ data.uv_dose?.toFixed(0) }} J/m²
+
+
+
UV Max
+
+
{{ data.uv_index_max ?? '—' }}
+
+
+
+
+
+
diff --git a/client/src/components/Wind.vue b/client/src/components/Wind.vue
new file mode 100644
index 0000000..c9dabd9
--- /dev/null
+++ b/client/src/components/Wind.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
🍃 Wind
+
+
+
+
Speed
+
+
{{ ~~(d.wind_speed) }} Kph
+
+
+
Gusts
+
+
{{ ~~(d.wind_gusts) }} Kph
+
+
+
Direction
+
+
{{ dir(d.wind_direction) }}
+
+
+
+
diff --git a/client/src/views/Dashboard.vue b/client/src/views/Dashboard.vue
index b1494a1..37b6679 100644
--- a/client/src/views/Dashboard.vue
+++ b/client/src/views/Dashboard.vue
@@ -1,7 +1,11 @@
`