/* @component-map * App — Main container, layout shell [app.jsx] * WeatherDashboard — Current conditions + forecast display [components/WeatherDashboard.jsx] * SearchBar — City search with geocoding [components/SearchBar.jsx] * CurrentWeather — Current conditions card with animated icon [components/CurrentWeather.jsx] * ForecastCard — Individual forecast day card [components/ForecastCard.jsx] * WeatherIcon — Animated SVG weather icon [components/WeatherIcon.jsx] * @end-component-map */ // DEPLOY_CONFIG: {"cron": [{"name": "daily_weather_forecast_email", "schedule": "0 7 * * *", "action": "event", "config": {"event_type": "fetch_daily_weather_and_email_forecast"}}], "triggers": [{"name": "severe_weather_alert", "on": "collection.add", "collection": "weather_alerts", "actions": [{"type": "email", "to": "subscribed_users", "subject": "Severe Weather Alert", "body": "Severe weather conditions have been detected. Please check the dashboard for immediate updates."}]}, {"name": "dashboard_share_invite", "on": "collection.add", "collection": "dashboard_shares", "actions": [{"type": "email", "to": "share_recipient", "subject": "Dashboard Access Shared With You", "body": "A dashboard link has been shared with you. Use the provided secure URL and permissions to access it."}]}]} import { useState, useEffect } from 'react'; import { WeatherDashboard } from './components/WeatherDashboard.jsx'; function App() { useEffect(() => { document.title = "Keyton's Weather Page"; }, []); return (
Real-time conditions & forecast