{"id":48951003,"url":"https://github.com/seevee/weather_alerts_card","last_synced_at":"2026-04-17T20:04:07.145Z","repository":{"id":338705839,"uuid":"1158790951","full_name":"seevee/weather_alerts_card","owner":"seevee","description":"Weather alerts dashboard card with severity indicators and progress timelines","archived":false,"fork":false,"pushed_at":"2026-04-17T18:49:27.000Z","size":15805,"stargazers_count":43,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-17T19:19:26.716Z","etag":null,"topics":["bom","custom-card","dwd","frontend-only","hacs","home-assistant","lovelace","meteoalarm","nws","pirateweather","weather"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seevee.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-15T23:05:15.000Z","updated_at":"2026-04-17T18:49:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/seevee/weather_alerts_card","commit_stats":null,"previous_names":["seevee/nws_alerts_card"],"tags_count":55,"template":false,"template_full_name":null,"purl":"pkg:github/seevee/weather_alerts_card","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seevee%2Fweather_alerts_card","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seevee%2Fweather_alerts_card/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seevee%2Fweather_alerts_card/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seevee%2Fweather_alerts_card/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seevee","download_url":"https://codeload.github.com/seevee/weather_alerts_card/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seevee%2Fweather_alerts_card/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31943884,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T17:29:20.459Z","status":"ssl_error","status_checked_at":"2026-04-17T17:28:47.801Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bom","custom-card","dwd","frontend-only","hacs","home-assistant","lovelace","meteoalarm","nws","pirateweather","weather"],"created_at":"2026-04-17T20:04:02.797Z","updated_at":"2026-04-17T20:04:07.126Z","avatar_url":"https://github.com/seevee.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Weather Alerts Card\n\nA custom Home Assistant Lovelace card for displaying weather alerts with severity indicators, progress bars, and expandable details. Supports NWS (US), BoM (Australia), MeteoAlarm (Europe), DWD (Germany), and PirateWeather.\n\n[![Weather Alerts Card](https://raw.githubusercontent.com/seevee/weather_alerts_card/main/img/hero-adaptive.svg)](https://raw.githubusercontent.com/seevee/weather_alerts_card/main/img/hero-light.png)\n\n## Features\n\n- **Multi-provider** — NWS (US), BoM (Australia), MeteoAlarm (Europe), DWD (Germany), and PirateWeather with auto-detection\n- **Color themes** — severity-based (default), NWS official event colors, or MeteoAlarm awareness level colors\n- **Time progress bars** — elapsed/remaining time with relative and absolute timestamps\n- **Alert headlines** — contextual subtitle from provider data, with optional redundancy filtering\n- **Expandable details** — sanitized description, instructions, and source link\n- **BoM phase badges** — New, Updated, Renewed lifecycle indicators\n- **Compact layout** — collapsed single-row alerts with progress bars that expand on tap\n- **Zone filtering** — show only alerts for specific zones\n- **Sort order** — default, onset time, or severity\n- **Severity threshold** — minimum severity to display\n- **Localized UI** — English, French, Spanish, Italian, and German; auto-detected from Home Assistant locale\n- **Visual config** — no YAML editing required\n\n## Themes\n\n[![Severity, NWS, and MeteoAlarm color themes](https://raw.githubusercontent.com/seevee/weather_alerts_card/main/img/themes-adaptive.svg)](https://raw.githubusercontent.com/seevee/weather_alerts_card/main/img/themes-light.png)\n\n## Quick Start\n\n1. Install a weather alerts integration for your region (see [Supported Providers](#supported-providers))\n2. Install this card via HACS: search \"Weather Alerts Card\"\n3. Add to your dashboard and select your alert entity\n\n## Installation\n\n### HACS (recommended)\n\n[![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=seevee\u0026repository=weather_alerts_card)\n\nThen click the Download button, and click Reload when prompted.\n\n### Manual\n\n1. Download `weather-alerts-card.js` from the [latest release](../../releases/latest)\n2. Copy to `config/www/weather-alerts-card.js`\n3. Add as resource: **Settings → Dashboards → Resources** → URL: `/local/weather-alerts-card.js`, Type: JavaScript Module\n\n## Configuration\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `entity` | *(required)* | Alert sensor entity |\n| `entities` | — | Additional alert entities to merge (e.g. DWD current + advance) |\n| `provider` | auto-detect | `'nws'`, `'bom'`, `'meteoalarm'`, `'dwd'`, `'pirateweather'` |\n| `title` | — | Card header title |\n| `zones` | — | Zone codes to filter (NWS zones or BoM `area_id`) |\n| `sortOrder` | `'default'` | `'default'`, `'onset'`, `'severity'` |\n| `minSeverity` | `'all'` | `'all'`, `'minor'`, `'moderate'`, `'severe'`, `'extreme'` |\n| `colorTheme` | `'severity'` | `'severity'`, `'nws'`, `'meteoalarm'` |\n| `eventCodes` | — | Event codes to include, e.g. `['SVR', 'TOR']` (NWS) or `['31', '95']` (DWD) |\n| `excludeEventCodes` | — | Event codes to exclude, e.g. `['SCY']` (NWS) or `['22']` (DWD) |\n| `timezone` | `'server'` | `'server'` or `'browser'` (client's local time) |\n| `deduplicateHeadlines` | `true` | Suppress headlines that repeat the event name |\n| `deduplicate` | `true` | Collapse matching alerts across zones and providers |\n| `animations` | system | `true`, `false`, or respect `prefers-reduced-motion` |\n| `showDetails` | `true` | Show the expandable detail panel (hides entire \"Read Details\" section when `false`) |\n| `expandDetails` | `false` | Always show details inline without a toggle (ideal for wall-mounted displays) |\n| `showProvider` | `false` | Show provider label (e.g., NWS) above event title |\n| `showMetadata` | `true` | Show issued/onset/expires/area grid in detail panel |\n| `showDescription` | `true` | Show description text in detail panel |\n| `showInstructions` | `true` | Show instructions text in detail panel |\n| `showSourceLink` | `true` | Show \"Open Source\" link (`false` for kiosk mode) |\n| `hideExpired` | `true` | Hide expired alerts (set `false` to show them dimmed) |\n| `hideNoAlerts` | `false` | Hide the \"No active alerts\" banner when there are no alerts |\n| `fontSize` | `'default'` | `'small'`, `'default'`, `'large'`, `'x-large'` — scales text and icons |\n| `reformatText` | `true` | Strip hard line wraps from alert text (NWS 69-char teletype breaks) while preserving paragraph breaks |\n| `layout` | `'default'` | `'default'` or `'compact'` |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eExamples\u003c/strong\u003e\u003c/summary\u003e\n\n**Basic**\n```yaml\ntype: custom:weather-alerts-card\nentity: sensor.nws_alerts_alerts\n```\n\n**With title and zone filtering**\n```yaml\ntype: custom:weather-alerts-card\nentity: sensor.nws_alerts_alerts\ntitle: Weather Alerts\nzones:\n  - COC059\n  - COZ039\n```\n\n**NWS official colors, compact, sorted by severity**\n```yaml\ntype: custom:weather-alerts-card\nentity: sensor.nws_alerts_alerts\ncolorTheme: nws\nlayout: compact\nsortOrder: severity\n```\n\n**NWS filtered to specific event types, browser timezone**\n```yaml\ntype: custom:weather-alerts-card\nentity: sensor.nws_alerts_alerts\neventCodes:\n  - TOR\n  - SVR\ntimezone: browser\n```\n\n**European MeteoAlarm warnings with awareness colors**\n```yaml\ntype: custom:weather-alerts-card\nentity: binary_sensor.meteoalarm\ncolorTheme: meteoalarm\n```\n\n**Australian BoM warnings**\n```yaml\ntype: custom:weather-alerts-card\nentity: sensor.sydney_warnings\nprovider: bom\n```\n\n**DWD (Germany)**\n```yaml\ntype: custom:weather-alerts-card\nentity: sensor.dwd_weather_warnings_hamburg_current\n```\n\n**DWD current + advance warnings merged**\n```yaml\ntype: custom:weather-alerts-card\nentity: sensor.dwd_weather_warnings_current\nentities:\n  - sensor.dwd_weather_warnings_advance\n```\n\n**PirateWeather alerts**\n```yaml\ntype: custom:weather-alerts-card\nentity: sensor.pirateweather_alerts\n```\n\n\u003c/details\u003e\n\n## Supported Providers\n\nThe card auto-detects the provider from entity attributes. Any integration that produces a compatible data shape will work.\n\n| Provider | Region | Tested integrations |\n|----------|--------|---------------------|\n| NWS | US | [finity69x2/nws_alerts](https://github.com/finity69x2/nws_alerts) |\n| BoM | Australia | [bremor/bureau_of_meteorology](https://github.com/bremor/bureau_of_meteorology), [safepay/ha_bom_australia](https://github.com/safepay/ha_bom_australia) |\n| MeteoAlarm | Europe | Built-in [meteoalarm](https://www.home-assistant.io/integrations/meteoalarm/) |\n| DWD | Germany | Built-in [dwd_weather_warnings](https://www.home-assistant.io/integrations/dwd_weather_warnings/) |\n| PirateWeather | Global | [Pirate-Weather/pirate-weather-ha](https://github.com/Pirate-Weather/pirate-weather-ha) |\n\n## Data Fidelity\n\nSeverity and certainty badges are always localized to your configured language. When a value was inferred by the card's adapter logic (rather than provided directly by the alert source), it is rendered with italic text and a tilde prefix (`~Moderate`) so you can tell at a glance which badges reflect actual provider data.\n\n| Provider | Severity | Certainty |\n|----------|----------|-----------|\n| NWS | Raw (from `Severity` field) | Raw (from `Certainty` field) |\n| BoM | Inferred (parsed from title/type/group) | Absent |\n| MeteoAlarm | Raw (from `awareness_level` or `severity`) | Raw (from `certainty`) |\n| DWD | Raw (from integer `level`) | Absent |\n| PirateWeather | Raw (from `severity` field) | Absent |\n\n## Development\n\n```bash\nnpm install\nnpm run build     # bundle → dist/weather-alerts-card.js\nnpm run watch     # bundle with file watching\nnpm run lint      # TypeScript type-check\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMigrating from v1.x\u003c/strong\u003e\u003c/summary\u003e\n\nThe card was renamed from \"NWS Alerts Card\" to \"Weather Alerts Card\" in v2.0 to reflect multi-provider support. **Your existing dashboards will continue to work.** The old `custom:nws-alerts-card` element name is still supported but deprecated. To migrate:\n\n1. Update your dashboard YAML: change `type: custom:nws-alerts-card` to `type: custom:weather-alerts-card`\n2. Update your resource URL:\n   - **HACS users:** HACS updates the resource path automatically — no action needed.\n   - **Manual install:** In Settings → Dashboards → Resources, change `/local/nws-alerts-card.js` to `/local/weather-alerts-card.js`\n3. The old names will be removed in v3.\n\n\u003c/details\u003e\n\n---\n\n**Resources:** [Home Assistant Community thread](https://community.home-assistant.io/t/nws-alerts-card)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseevee%2Fweather_alerts_card","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseevee%2Fweather_alerts_card","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseevee%2Fweather_alerts_card/lists"}