Orbit Cards: collection of modern Home Assistant dashboard cards

and Templates will be fully supported…


      type: custom:orbit-status-card-dev
      mode: standard
      state_source: template
      entity_tap_action:
        action: navigate
        navigation_path: "#security"
      name: Security State
      color_source: template
      color: |-
        {% set doors_open = expand([
          'cover.garage_roller_door',
          'binary_sensor.garage_door_contact_sensor',
          'binary_sensor.back_door_contact_sensor',
          'binary_sensor.front_door_contact_sensor'
        ]) | selectattr('state', 'in', ['open', 'on']) | list | count > 0 %}
        {% set house_armed =
          is_state('alarm_control_panel.house_alarm', 'armed_away') %}
        {% set garage_armed =
          is_state('alarm_control_panel.garage_alarm', 'armed_away') %}

        {{ 'red' if doors_open
           else 'green' if house_armed and garage_armed
           else 'blue' if house_armed or garage_armed
           else 'theme' }}
      icon_source: template
      icon: >
        {%- set doors = namespace(open=false) -%}

        {%- set door_entities = [
          'cover.garage_roller_door',
          'binary_sensor.garage_door_contact_sensor',
          'binary_sensor.back_door_contact_sensor',
          'binary_sensor.front_door_contact_sensor'
        ] -%}

        {%- for door in door_entities -%}
          {%- if states(door) in ['open', 'on'] -%}
            {%- set doors.open = true -%}
          {%- endif -%}
        {%- endfor -%}

        {%- if doors.open -%}
          mdi:door-open
        {%- elif is_state('alarm_control_panel.house_alarm', 'armed_away') and
        is_state('alarm_control_panel.garage_alarm', 'armed_away') -%}
          mdi:shield-lock
        {%- elif is_state('alarm_control_panel.house_alarm', 'armed_away') or
        is_state('alarm_control_panel.garage_alarm', 'armed_away') -%}
          mdi:shield-lock-outline
        {%- else -%}
          mdi:shield-off
        {%- endif -%}
      state_template: |-
        {% set open_doors = expand([
          'cover.garage_roller_door',
          'binary_sensor.garage_door_contact_sensor',
          'binary_sensor.back_door_contact_sensor',
          'binary_sensor.front_door_contact_sensor'
        ]) | selectattr('state', 'in', ['open', 'on']) | list %}
        {% set house_armed =
          is_state('alarm_control_panel.house_alarm', 'armed_away') %}
        {% set garage_armed =
          is_state('alarm_control_panel.garage_alarm', 'armed_away') %}

        {% if open_doors | count > 1 %}
          multiple_doors_open
        {% elif open_doors | count == 1 %}
          {% set door_name = open_doors[0].attributes.friendly_name
            | default(open_doors[0].entity_id, true)
            | replace(' Contact Sensor', '')
            | replace(' Roller Door', ' Door') %}
          {{ door_name | replace(' ', '_') | lower ~ '_open' }}
        {% elif house_armed and garage_armed %}
          fully_armed
        {% elif garage_armed %}
          garage_armed
        {% elif house_armed %}
          house_armed
        {% else %}
          disarmed
        {% endif %}
      tap_action:
        action: navigate
        navigation_path: "#security"

as a result of this work templated colours and icons are will be fully supported in all the cards…

beta should be out today hopefully..

more things you can do without any template sensors…




Orbit Cards v1.2.0-beta.1

This beta focuses primarily on expanding the Status Card, adding template-driven presentation controls, and improving compatibility between older and current configurations.

What’s new

Expanded Status Card state sources

Status Cards can now use three distinct state sources:

  • Entity — displays and tracks a Home Assistant entity.
  • Area Count — counts matching active entities across one or more areas.
  • Template — displays and evaluates a native Home Assistant Jinja template.

Grouped Icon-only Status Cards can mix Entity, Area Count, and Template items within the same card. Each item retains its own filters, templates, presentation, and interactions.

Area Count sensor thresholds

Area Count supports:

  • Multiple areas.
  • Numeric sensor thresholds using Above or Below comparisons.
  • Stronger or Weaker comparisons for signal-strength sensors.
  • Battery percentage thresholds.
  • Binary low-battery sensors as fallbacks when no percentage sensor exists.
  • Improved device-class filtering and unit normalization, including power values.

These controls are available to both Status Cards and Status Badges.

Area Count interactions

The new Status Card Area Count source introduces two interactions:

  • Current activity opens Home Assistant’s logbook for the previous 24 hours. A Current / All selector switches between entities that are currently active and all entities matched by the configured areas, domain, device classes, thresholds, and filters.

  • Current state opens a details and control dialog for the entities currently matching the Area Count criteria. It shows entity states, areas, active durations, supported individual controls, and a confirmation before turning off multiple entities.

For Area Count Status Cards, Current activity is the default card interaction and Current state is the default icon interaction.

Status Badge Area Count, which was available in v1.1.0, now uses the expanded Current state dialog in place of the previous Active entities dialog. Current activity is also available as a configurable Status Badge interaction.

Template colours and icons

Colour and icon controls now support native Home Assistant Jinja templates across Area Cards, Status Cards, Action Cards, and Status Badges.

Templates can dynamically produce:

  • Theme or CSS colours.
  • Material Design icons.
  • Orbit icons.
  • Supported local image or SVG paths.

Template active-state handling now uses Home Assistant-style domain rules when entity context is available.

Configuration migration

This release introduces a unified configuration schema for colours, icons, Status Card entities, names, and interactions.

Existing configuration keys are migrated automatically, including supported Orbit cards nested inside Deck Cards. Legacy Status Card templates are also assigned the appropriate Template state source while preserving their existing template content.

Considerable effort has gone into maintaining compatibility and keeping existing dashboards working without manual changes. However, Orbit Cards supports many possible YAML combinations, and unforeseen migration issues may still occur during beta testing.

### Before upgrading, I recommend keeping a copy of your dashboard configuration and checking important cards after installation.

Full details of the renamed keys and automatic compatibility handling are available in the latest migration changes, including the Status Card naming and state-source migration.

Editor and behaviour improvements

  • Preserves code-editor changes when reopening the visual editor.
  • Keeps editor-only selection markers out of dashboards.
  • Improves selected-item previews for grouped Status Cards and Deck Cards.
  • Shows only Deck-level interaction overrides in the Deck editor.
  • Uses more native Home Assistant labels and translations.
  • Keeps card editors open after dismissing supported dialogs.
  • Improves Status Card interaction targets and default actions.
  • Restores template entity fallbacks.
  • Restores native Heading Badge state and icon colours.

Beta notice

This is a beta release intended for testing before v1.2.0.

If you encounter a migration or compatibility problem, please include the affected YAML configuration and describe the behaviour before and after upgrading when reporting it.

Installing the beta through HACS

  1. Open HACS in Home Assistant.
  2. Open Orbit Cards.
  3. Open the three-dot menu in the top-right corner.
  4. Select Redownload.
  5. Select v1.2.0-beta.1.
  6. Select Download.
  7. Refresh the browser or Companion App.

What’s changed in v1.2.0-beta.2

Improvements

  • Added date and time range browsing to the status activity dialog.
  • Added clearer activity dialog titles showing the relevant domain or device class.
  • Activity dialogs now stay synchronized as entity states change.
  • Improved activity dialog sizing and usability on mobile devices.
  • Area-count threshold dialogs now clearly describe the active threshold, such as “Currently below 20%”.
  • Added visual warnings for missing and unavailable entities across Area, Action, and Status Cards.
  • Improved friendly state formatting using Home Assistant’s native localized state formatting.
  • Improved the empty Deck Card editor preview.

Fixes

  • Fixed empty active-entity dialogs failing to open for non-numeric entities such as motion and door sensors.
  • Fixed interactions inside activity dialogs incorrectly triggering card actions.
  • Fixed Deck Card cleanup and localization errors.
  • Fixed several activity dialog loading, sizing, and live-update issues.

Updating to this beta

  1. Open HACS in Home Assistant.
  2. Open Orbit Cards.
  3. Select the three-dot menu and choose Redownload.
  4. Under Need a different version?, select v1.2.0-beta.2.
  5. Select Download.
  6. After installation, hard-refresh your browser or reload the Home Assistant app.

Orbit Cards 1.2.0-beta.3

:sparkles: What’s new

  • Added an Unavailable area-count status to Status Card and Status Badge.
  • Added an All option to the area selector.


:hammer_and_wrench: Improvements

  • Aligned icons and text consistently across all activity-dialog row types.
  • Extended separator lines for cleaner dialog layout.

:test_tube: Notes

This is a beta release. Please report any issues found while testing the new area-count and unavailable-entity functionality.

:scroll: Full changelog: Comparing v1.2.0-beta.2...v1.2.0-beta.3 · andyblac/Orbit-Cards · GitHub

Updating to this beta

  1. Open HACS in Home Assistant.
  2. Open Orbit Cards.
  3. Select the three-dot menu and choose Redownload.
  4. Under Need a different version?, select v1.2.0-beta.3.
  5. Select Download.
  6. After installation, hard-refresh your browser or reload the Home Assistant app.

:rocket: Orbit Cards 1.2.0-beta.4

Beta 4 focuses on editor polish, stability, maintainability, and improved test coverage ahead of the stable 1.2 release.

:sparkles: Improvements

  • Added a more compact Active Entities confirmation dialog.
  • Active Entities can now display live power usage where supported.
  • Prevented the dashboard behind the card editor from moving when switching navigation-picker categories.
  • Added safeguards against duplicate editor registrations when normal and development resources coexist.
  • Replaced remaining Orbit fallbacks with native Home Assistant translations where available.

:brick: Internal Improvements

  • Shared interaction handling across Area, Action, Deck, and Status cards.
  • Split the larger Status card and editor modules into smaller, focused components.
  • Extracted reusable model logic from the Action and Area cards.
  • Aligned package metadata and licensing information.
  • No configuration migration is required.

:test_tube: Testing and Validation

  • Expanded automated coverage for Area, Action, Deck, and Status cards.
  • Added tests for shared interactions, migrations, translations, thresholds, and entity counting.
  • Added ESLint validation.
  • Added bundle-size monitoring.
  • All 36 automated tests pass.

:up_arrow: How to Update

HACS

  1. Open HACS in Home Assistant.
  2. Find Orbit Cards.
  3. Select version 1.2.0-beta.4 and choose Download.
  4. Restart Home Assistant.
  5. If the old version remains visible, hard-refresh your browser:
    • macOS: Cmd + Shift + R
    • Windows/Linux: Ctrl + Shift + R

Manual Installation

  1. Download orbit-cards.js from this release.
  2. Replace the existing file at /config/www/orbit-cards.js.
  3. Confirm the dashboard resource remains configured as:
    • URL: /local/orbit-cards.js
    • Type: JavaScript module
  4. If you manually installed the bundled orbit: icons, also update the corresponding manifest.json and SVG files from dist.
  5. Hard-refresh your browser.

Existing card configurations should continue working without changes.

:compass: Recommended Checks

After updating, please confirm:

  • Existing cards load normally.
  • Card editors open correctly.
  • Entity, navigation, and local-file pickers work.
  • Tap, hold, and double-tap actions behave as expected.
  • Active Entities and Status dialogs display correctly.

:lady_beetle: Found a Problem?

Please report beta issues on GitHub and include your Home Assistant version, browser, card configuration, and any relevant console errors.

Full changelog:

:rocket: Orbit Cards 1.2.0-beta.5

Beta 5 focuses on richer status aggregation, flexible Area Card status templates, and improved Deck Card editor previews. This is hopefully the last beta for v1.2.0.

:sparkles: Improvements

  • Area Count statuses can now combine multiple Home Assistant domains.
  • Multiple areas and domains can be filtered together in a single Status Card or Status Badge.
  • Device-class subtypes are grouped beneath their corresponding domain in the editor.
  • Device-class options are loaded dynamically from Home Assistant.
  • Changing the selected domains now preserves device classes belonging to domains that remain selected.
  • Active Entities dialogs show a separate icon and count for each active subtype.
  • Single controllable subtypes retain their normal action icon, such as Power, Close, or Lock.
  • Active Entities dialogs now use a consistent minimum width for populated and empty states.
  • Area Card Status 1, Status 2, and Status 3 can now use either an Entity or Template state source.
  • Area Card status templates use the shared live template handler and update automatically.
  • Selecting a Deck Card tab in the editor now switches the preview to the corresponding tab.

:bug: Fixes

  • Prevented Deck Card editor highlighting from remaining visible after leaving the editor.
  • Scoped Deck Card selection highlighting to the editor preview.
  • Prevented editor preview highlighting from bleeding through to the dashboard editor.
  • Restored the standard action icon when an Active Entities dialog contains only one controllable subtype.
  • Matched read-only subtype summary pills to the standard Home Assistant filled-button style.
  • Reduced unnecessary horizontal spacing inside subtype summary pills.
  • Fixed multi-domain counts where the dialog included entities from every domain but the header only represented the primary domain.

:brick: Internal Improvements

  • Removed the locally maintained device-class subtype list.
  • Device classes are now sourced from Home Assistant’s frontend component metadata, with configured and locally discovered entities used as fallbacks.
  • Shared multi-domain filtering is used by Status Cards, Status Badges, counts, dialogs, and editor previews.
  • No configuration migration is required.

:test_tube: Testing and Validation

  • Added coverage for multi-domain entity filtering.
  • Added coverage for Home Assistant device-class metadata.
  • Added coverage for preserving subtype selections when domains change.
  • All 40 automated tests pass.
  • ESLint validation passes.
  • Production and development builds pass.
  • Bundle-size validation passes.

:up_arrow: How to Update

HACS

  1. Open HACS in Home Assistant.
  2. Find Orbit Cards.
  3. Select version 1.2.0-beta.5 and choose Download.
  4. Restart Home Assistant.
  5. If the old version remains visible, hard-refresh your browser:
    • macOS: Cmd + Shift + R
    • Windows/Linux: Ctrl + Shift + R

Manual Installation

  1. Download orbit-cards.js from this release.
  2. Replace the existing file at /config/www/orbit-cards.js.
  3. Confirm the dashboard resource remains configured as:
    • URL: /local/orbit-cards.js
    • Type: JavaScript module
  4. If you manually installed the bundled orbit: icons, also update the corresponding manifest.json and SVG files from dist.
  5. Hard-refresh your browser.

Existing card configurations should continue working without changes.

:compass: Recommended Checks

After updating, please confirm:

  • Existing cards and badges load normally.
  • Area Count statuses work with single and multiple domains.
  • Cover and binary-sensor door entities can be counted together.
  • Device-class subtypes appear beneath the correct domain heading.
  • Active Entities dialogs show the correct subtype icons and counts.
  • Area Card status templates update live.
  • Selecting Deck Card tabs updates the editor preview.
  • Editor highlighting disappears after closing the editor.
  • Tap, hold, double-tap, and bulk actions behave as expected.

:lady_beetle: Found a Problem?

Please report beta issues on GitHub and include your Home Assistant version, browser, card configuration, and any relevant console errors.

Full changelog:

:rocket: Orbit Cards 1.2.0

Orbit Cards 1.2.0 significantly expands Status Cards and Status Badges, adds richer Area Count filtering and activity dialogs, introduces more template-driven presentation options, and improves Deck Card editing.

Existing configurations are migrated automatically.

:sparkles: Highlights

Expanded Status Cards and Status Badges

  • Status items can use Entity, Area Count, or Template state sources.
  • Grouped Status Cards can mix different state sources within one card.
  • Area Count supports multiple areas and multiple Home Assistant domains.
  • Cover and binary-sensor doors can be counted together.
  • Device-class filters are grouped beneath their corresponding domains.
  • Device classes are sourced dynamically from Home Assistant frontend metadata.
  • Changing domains preserves compatible device-class selections.
  • Added an Unavailable Area Count status.
  • Added numeric sensor, battery, signal-strength, and power thresholds.

Current activity and state dialogs

  • Added Current activity browsing with Current and All scopes.
  • Added date and time range navigation.
  • Dialogs remain synchronized with live Home Assistant state changes.
  • Active entity rows show localized states, areas, and active durations.
  • Live power usage is shown where supported.
  • Supported entities can be controlled individually or in bulk.
  • Bulk turn-off actions use a compact confirmation dialog.
  • Unavailable entities belonging to one device are grouped together.
  • Header pills show icons and totals for each entity subtype.
  • Grouped unavailable-device counts include every underlying entity.
  • Dialog widths adapt to longer titles and subtype summaries.

Templates and presentation

  • Colours and icons support native Home Assistant Jinja templates.
  • Template results can produce theme colours, CSS colours, Material Design icons, Orbit icons, and supported image paths.
  • Area Card Status 1, Status 2, and Status 3 can use either Entity or Template state sources.
  • Area Card status templates use the shared live template handler.
  • Template active-state handling follows native Home Assistant domain rules where entity context is available.

Deck Card and editor improvements

  • Selecting a Deck Card tab in the editor switches the preview to the matching tab.
  • Selection highlighting is restricted to the card editor preview.
  • Editor highlighting is cleared when leaving the editor.
  • Improved empty and selected-card previews.
  • Improved navigation pickers and prevented unwanted dashboard scrolling.
  • Added safeguards against duplicate custom-element editor registration.
  • Missing and unavailable entities now produce clearer editor warnings.

:counterclockwise_arrows_button: Configuration compatibility

This release introduces a unified configuration schema for colours, icons, Status Card items, names, and interactions.

Supported legacy configurations are migrated automatically, including Orbit cards nested inside Deck Cards. No manual configuration migration should be required.

As with any major update, keeping a backup of important dashboard YAML before upgrading is recommended.

:brick: Internal improvements

  • Shared interaction handling across Area, Action, Deck, and Status cards.
  • Split large Status Card and editor modules into smaller components.
  • Added reusable model helpers for Area and Action cards.
  • Increased use of native Home Assistant translations and formatting.
  • Added ESLint, bundle-size monitoring, and reproducible dependency locking.
  • Improved lifecycle cleanup and update filtering.

:test_tube: Testing and validation

  • All 40 automated tests pass.
  • ESLint validation passes.
  • Production and development builds pass.
  • Bundle-size validation passes.
  • Added coverage for interactions, migrations, translations, templates, thresholds, multi-domain filtering, device-class metadata, and entity counting.

:package: Component versions

Component Version
Orbit Cards 1.2.0
Area Card 1.1.0
Status Card 1.1.0
Action Card 1.1.0
Deck Card 1.1.0
Status Badge 0.6.0

:up_arrow: Updating with HACS

  1. Open HACS in Home Assistant.
  2. Find Orbit Cards.
  3. Select version 1.2.0 and choose Download.
  4. Restart Home Assistant.
  5. Hard-refresh the browser if the previous version remains visible:
    • macOS: Cmd + Shift + R
    • Windows/Linux: Ctrl + Shift + R

Manual installation

  1. Download orbit-cards.js from this release.
  2. Replace /config/www/orbit-cards.js.
  3. Confirm the dashboard resource remains:
    • URL: /local/orbit-cards.js
    • Type: JavaScript module
  4. Update the bundled orbit: icon files if they were installed manually.
  5. Hard-refresh the browser.

Minimum supported Home Assistant version: 2025.6.0.

Full changelog: