I find the default set of cards pretty limited, in that they’re all built around displaying just one type of information. There are bits in my setup which work a lot better with several of entity, condition, markdown, glance, history-graph combined into a single card, as then I can display all information about a single device, or room, in one card.
I’m aware of the Vertical Stack in Card card, but (when I last looked, at least) this had issues with styling, because it simply wrapped ha-card elements in another ha-card.
I’ve written some custom bits to achieve what I wanted as in the screenshots (still somewhat buggy, as I’ve not figured out how to debug in any sensible way), but I’ve wondered, ever since I first set up Home Assistant a couple of years ago, wth this isn’t native.
I think the point of OP is that native cards are very limited while most users today hack them one way or another. Those mods, since used so commonly these days should be replaced by natively flexible cards.
If I look at my dash all cards are augmented. It required additional effort of mods developers, my time and if it is still not enough I lost native features of original card like ability of editing it’s content using GUI, error handling and proper refreshing.
I wouldn’t call it win-win situation.
Thanks @tom_l. I heard about the custom:hui- trick only because someone mentioned it had stopped working, but hui-element looks like it should be able to do a lot of what I want to be able to do. I will investigate.
The way I’d thought about this was for the card to be just a container for rows, rather than to have any type itself, and then to have a whole lot of different types of rows which could be added to it in any order. In my code, the card is called “wall” and the rows are the “bricks”. Yaml for my Home Assistant version card, for example, is:
type: custom:wall-card
title: Home Assistant
cards:
- type: custom:alert-brick
level: info
conditions:
- condition: not_equal
entities:
- sensor.latest_version
- sensor.current_version
content: >
Version [[ sensor.latest_version ]] is available.
- type: custom:entities-brick
entities:
- entity: sensor.current_version
- type: custom:markdown-brick
content: |
[Release notes](https://www.home-assistant.io/latest-release-notes/) for version [[ sensor.latest_version ]].
This sums it up well. There are definitely ways published by the community of achieving a lot of flexibility, but these can easily be missed by new users, and even users who have been around for a while, and this ends up with a lot of reinvention of very similar things. It’d be nice to get some of this flexibility natively.