🌻 Lovelace UI • Minimalist

Hey all.

I have my phone dashboard pretty much done. Now for the tablet. Has anyone got some examples they can share, with how they are dealing with the extra real estate?

Also for anyone using Sonarr and Radarr ect upcoming media cards. Sam Wakefield wrote some awesome custom code to modernise the card and make it look so much better, works really well with Minimalist (as you can see by the pics)

Im wondering if one of the devs can see the value of templating it and make it into its own card for us?

This is code for my media view, which has;

Recently Added
Upcoming TV
Upcoming Movies

Again, credit to Sam Wakefield and the card makers for their awesome work :slight_smile:

title: "Media"
path: "media"
cards:
  - type: "custom:button-card"
    template: chip_back
    variables:
      ulm_chip_back_path: home

  - type: horizontal-stack
    cards:
      - type: picture-elements
        image: /local/box.png
        card_mod:
          style: |
            ha-card {
              height: 648px !important;
              width: 1px !important;
              overflow: visible !important;
              background: transparent;
            }
        elements:
          - type: custom:upcoming-media-card
            title: Recently Added
            label:
            date: ddmm
            style:
              top: 5px
              left: 5px
              width: 1px
              height: 260px
              transform: translate(0%, 0%)
            entity: sensor.plex_recently_added
            image_style: poster
            flag: false
            icon: none
            max: 6
            box_shadows: false
            border_color: transparent
            accent_color: transparent
            title_text: $empty
            line1_text: $day, $date
            line2_text: $number - $runtime
            line3_text: $empty
            line4_text: $empty
            title_size: large
            line1_size: large
            text_shadows: false
            card_mod:
              style: |
                ha-card.type-custom-upcoming-media-card {
                background: transparent;
                padding: 0px !important;
                box-shadow: none;
                overflow: visible !important;
                }
                ha-card > div {
                padding: 0px !important;
                }
                #main.plex_poster {
                margin: 0px !important;
                overflow: visible !important;
                position: absolute !important;
                width: 148px !important;
                }
                #main.plex_poster:nth-of-type(2) {
                left: 181px !important;
                }
                #main.plex_poster:nth-of-type(3) {
                left: 0px !important;
                top: 350px;
                }
                #main.plex_poster:nth-of-type(4) {
                top: 350px;
                left: 181px !important;
                }
                #main.plex_poster:nth-of-type(5) {
                top: 625px;
                left: 0px !important;
                }
                #main.plex_poster:nth-of-type(6) {
                top: 625px;
                left: 181px !important;
                }
                .plex_poster .plex_container_poster {
                border-radius: 10px;
                box-shadow: 5px 5px 20px rgba(0, 0, 0, 0.2);
                margin: 0px;
                padding: 0px;
                width: 168px;
                height: 258px;
                }
                .plex_poster .plex_svg_poster {
                margin: 0px;
                position: absolute;
                top: 166px;
                left: 0px;
                width: 153px !important;
                border-radius: 0px 10px 10px 0px;
                background-color: rgba(44, 45, 67, 0.6);
                backdrop-filter: blur(10px);
                -webkit-backdrop-filter: blur(10px);
                transition-duration: 150ms;
                }
                .plex_poster .plex_svg_poster:hover {
                opacity: 0%;
                transition-duration: 200ms;
                }
                .plex_line0_poster {
                font-size: 14px !important;
                }
                .plex_line1_poster {
                font-size: 21px !important;
                fill: white !important;
                opacity: 80%;
                }
                .plex_line2_poster {
                font-size: 22px !important;
                fill: white !important;
                opacity: 80%;
                }
          - type: custom:upcoming-media-card
            title: Upcoming TV
            date: ddmm
            style:
              top: 900px
              left: 5px
              width: 1px
              height: 260px
              transform: translate(0%, 0%)
            entity: sensor.sonarr_upcoming_media
            image_style: poster
            flag: false
            icon: none
            max: 6
            box_shadows: false
            border_color: transparent
            accent_color: transparent
            title_text: $empty
            line1_text: $day, $date
            line2_text: $number - $runtime
            line3_text: $empty
            line4_text: $empty
            title_size: large
            line1_size: large
            text_shadows: false
            card_mod:
              style: |
                ha-card.type-custom-upcoming-media-card {
                  background: transparent;
                  padding: 0px !important;
                  width: 229px !important;
                  height: 260px !important;
                  box-shadow: none;
                  overflow: visible !important;
                }
                ha-card > div {
                  padding: 0px !important;
                }
                #main.sona_poster {
                  margin: 0px !important;
                  overflow: visible !important;
                  position: absolute !important;
                  width: 148px !important;
                }
                #main.sona_poster:nth-of-type(2) {
                  left: 181px !important;
                }
                #main.sona_poster:nth-of-type(3) {
                  left: 0px !important;
                  top: 350px;
                }
                #main.sona_poster:nth-of-type(4) {
                  top: 350px;
                  left: 181px !important;
                }
                #main.sona_poster:nth-of-type(5) {
                  top: 620px;
                  left: 0px !important;
                }
                #main.sona_poster:nth-of-type(6) {
                  top: 620px;
                  left: 181px !important;
                }
                .sona_poster .sona_container_poster {
                  border-radius: 10px;
                  box-shadow: 5px 5px 20px rgba(0, 0, 0, 0.2);
                  margin: 0px;
                  padding: 0px;
                  width: 168px;
                  height: 258px;
                }
                .sona_poster .sona_svg_poster {
                  margin: 0px;
                  position: absolute;
                  top: 166px;
                  left: 0px;
                  width: 153px !important;
                  border-radius: 0px 10px 10px 0px;
                  background-color: rgba(44, 45, 67, 0.6);
                  backdrop-filter: blur(10px);
                  -webkit-backdrop-filter: blur(10px);
                  transition-duration: 150ms;
                }
                .sona_poster .sona_svg_poster:hover {
                  opacity: 0%;
                  transition-duration: 200ms;
                }
                .sona_line0_poster {
                  font-size: 14px !important;
                }
                .sona_line1_poster {
                  font-size: 21px !important;
                  fill: white !important;
                  opacity: 80%;
                }
                .sona_line2_poster {
                  font-size: 22px !important;
                  fill: white !important;
                  opacity: 80%;
                }
          - type: custom:upcoming-media-card
            title: Upcoming Movies
            date: ddmm
            style:
              top: 1800px
              left: 5px
              width: 1px
              height: 260px
              transform: translate(0%, 0%)
            entity: sensor.radarr_upcoming_media
            image_style: poster
            flag: false
            icon: none
            max: 6
            box_shadows: false
            border_color: transparent
            accent_color: transparent
            title_text: $empty
            line1_text: $date
            line2_text: $empty
            line3_text: $empty
            line4_text: $empty
            title_size: large
            line1_size: large
            text_shadows: false
            card_mod:
              style: |
                ha-card.type-custom-upcoming-media-card {
                  background: transparent;
                  padding: 0px !important;
                  width: 229px !important;
                  height: 260px !important;
                  box-shadow: none;
                  overflow: visible !important;
                }
                ha-card > div {
                  padding: 0px !important;
                }
                #main.rada_poster {
                  margin: 0px !important;
                  overflow: visible !important;
                  position: absolute !important;
                  width: 168px;
                }
                #main.rada_poster:nth-of-type(2) {
                  left: 181px !important;
                }
                #main.rada_poster:nth-of-type(3) {
                  top: 350px;
                  left: 0px !important;
                }
                #main.rada_poster:nth-of-type(4) {
                  left: 181px !important;
                  top: 350px;
                }
                #main.rada_poster:nth-of-type(5) {
                  left: 0px !important;
                  top: 400px;
                }
                #main.rada_poster:nth-of-type(6) {
                  left: 181px !important;
                  top: 400px;
                }
                .rada_poster .rada_container_poster {
                  border-radius: 10px;
                  box-shadow: 5px 5px 20px rgba(0, 0, 0, 0.2);
                  margin: 0px;
                  padding: 0px;
                  width: 168px;
                  height: 258px;
                }
                .rada_poster .rada_svg_poster {
                  margin: 0px;
                  position: absolute;
                  top: 5px;
                  left: 5px;
                  width: 51px !important;
                  height: 28px;
                  border-radius: 20px;
                  background-color: rgba(44, 45, 67, 0.3);
                  backdrop-filter: blur(5px);
                  -webkit-backdrop-filter: blur(5px);
                  padding: 0px 0px 2px 7px;
                }
                .rada_line0_poster {
                  font-size: 0px !important;
                }
                .rada_line1_poster {
                  font-size: 55px !important;
                  fill: white !important;
                  opacity: 90%;
                }

1 Like

Hey, thanks for your help! That did not work. There are also two more commented sections (138-156 and 195-213). I also tried to uncomment them without any success. I think that feature is not finished yet. Here is the comment on GitHub regarding popup cover card.

Is there a chip to show an entity state and it’s icon? The chips I’ve seen need me to pass in an icon string (ex. mdi:flower).

Hi all,

What card can we use with buttons?

Ive tried the light card and the input boolean card and both open the default popup, not press the button?

Thanks :slight_smile:

Loving this UI, but has anyone got any good idea how to fix the lag on climate cards? Increasing and decreasing the temperature on my heaters (Mill wifi) is very slow causing like a few seconds delay on every click, so WAF not very high on this part . I was possibly thinking of using a input_number template and then some automation if it has been changed to then trigger an temperature update, which would make it seem more seamless for the user, but maybe someone has a better idea?

not sure what i did, but the colors stopped rendering on the UI. i tried to add a banner card (not from the minimalist collection. i removed the code for that card and now all my minimalist cards render without colors. I reloaded the component in hacs, cleared browser cache, reloaded minimalist ui, refreshed, and still nothing. anyone got any ideas? here is what the default dashboard looks like.

I think you need to apply one of the Minimalist themes (desktop or mobile) in the settings (bottom left corner in the application under your username).

1 Like

If anyone is interested in adding the connection type (Wi-Fi or cellular) and the battery status (charging, SoC) to the person card, here is my trial (this is my first “work”, so issues might occure):

image image

The template code (thanks for imswel for the original one):

---
find_my_phone_button:
  template:
    - "ulm_custom_card_person_language_variables"
  tap_action:
    action: "toggle"
  icon: "mdi:volume-high"
  name: "[[[ return variables.ulm_custom_card_person_findmy; ]]]"
  size: "1.4em"
  styles:
    icon:
      - color: "rgba(var(--color-blue),1)"
    name:
      - font-size: "1.06em"
      - letterspacing: "0.015em"
    grid:
      - grid-template-areas: "'i n'"
      - grid-column-gap: "0.3em"
    card:
      - color: "rgba(var(--color-blue),1)"
      - background: "rgba(var(--color-blue),0.2"
      - border-radius: "0.6em"
      - padding: "1em 1.4em"
      - width: "max-content"
      - font-size: "1.06em"
      - font-weight: "500"
      - letter-spacing: "0.015em"
      - box-shadow: "none"

custom_card_person:
  template:
    - "icon_info_bg"
    - "ulm_language_variables"
    - "ulm_custom_card_person_language_variables"
    - "custom_popup_person"
  variables:
    ulm_card_person_use_entity_picture: false
    ulm_card_person_zones: ""
  triggers_update: "all"
  show_entity_picture: "[[[ return variables.ulm_card_person_use_entity_picture ]]]"
  show_label: true
  show_name: true
  icon: "mdi:face-man"
  entity_picture: >
    [[[
      if (variables.ulm_card_person_use_entity_picture == true){
        return states[variables.ulm_card_person_entity].attributes.entity_picture;
      } else{
        return null;
      }
    ]]]
  label: >
    [[[
      var location = states[variables.ulm_card_person_entity].state
      if (location == "unavailable"){
        return variables.ulm_unavailable;
      } else if (location == "not_home"){
        return variables.ulm_custom_card_person_not_home;
      } else{
        return (location == "home") ? variables.ulm_custom_card_person_home : location;
      }
    ]]]
  name: "[[[ return states[variables.ulm_card_person_entity].attributes.friendly_name ]]]"
  entity: "[[[ return variables.ulm_card_person_entity; ]]]"
  styles:
    icon:
      - color: "rgba(var(--color-theme), 0.9)"
      - width: >
          [[[
            if (variables.ulm_card_person_use_entity_picture == true){
              return "42px";
            } else {
              return "20px";
            }
          ]]]
    img_cell:
      - place-self: center left
    grid:
      - grid-template-areas: "'i n network battery' 'i l network battery'"
      - grid-template-columns: "auto 1fr auto auto"
      - justify-items: "center"
    custom_fields:
      notification:
        - border-radius: "50%"
        - position: "absolute"
        - left: "38px"
        - top: "8px"
        - height: "16px"
        - width: "16px"
        - border: "2px solid var(--card-background-color)"
        - font-size: "12px"
        - line-height: "14px"
        - background-color: >
            [[[
              if (states[variables.ulm_card_person_entity].state == 'home') {
                return "rgba(var(--color-blue),1)";
              } else {
                return "rgba(var(--color-green),1)";
              }
            ]]]
      network:
        - align-self: center
      battery:
        - align-self: center

  custom_fields:
    notification: >
      [[[
        var zones = variables.ulm_card_person_zones;
        var person_location = states[variables.ulm_card_person_entity].state;
        if (person_location !== 'home'){
          for (const item of zones){
            if (person_location == states[item]?.attributes?.friendly_name){
              var icon = (states[item].attributes.icon !== null) ? states[item].attributes.icon : 'mdi:help-circle';
              return '<ha-icon icon="' + icon + '" style="width: 10px; height: 10px; color: var(--primary-background-color);"></ha-icon>';
            } else if (person_location == 'not_home'){
              return '<ha-icon icon="mdi:home-minus" style="width: 10px; height: 10px; color: var(--primary-background-color);"></ha-icon>';
            }
          }
        } else{
          return '<ha-icon icon="mdi:home-variant" style="width: 10px; height: 10px; color: var(--primary-background-color);"></ha-icon>';
        }
      ]]]

    battery: |
      [[[
        if (states[variables.ulm_card_person_battery_state].state =='charging') { 
          return `<ha-icon
          icon="mdi:battery-charging"
          style="width: 14px; height: 14px; color: rgba(var(--color-theme), 0.9)">
          </ha-icon><span style="font-size: 14px; font-weight: bold; color: rgba(var(--color-theme), 0.9)">${states[variables.ulm_card_person_battery_level].state}%</span>`;
        } else {
          return `<ha-icon
          icon="mdi:battery"
          style="width: 14px; height: 14px; color: rgba(var(--color-theme), 0.9)">
          </ha-icon><span style="font-size: 14px; font-weight: bold; color: rgba(var(--color-theme), 0.9)">${states[variables.ulm_card_person_battery_level].state}%</span>`;
        }
      ]]]

    network: |
      [[[
        if (states[variables.ulm_card_person_wifi_connection].state !='<not connected>' ) { 
          return `<ha-icon
          icon="mdi:wifi"
          style="width: 16px; height: 16px; padding-right: 5px; color: rgba(var(--color-theme), 0.9)">
          </ha-icon>`;
        } else {
          return `<ha-icon
          icon="mdi:signal"
          style="width: 16px; height: 16px; padding-right: 5px; color: rgba(var(--color-theme), 0.9)">
          </ha-icon>`; 
        }
      ]]]

custom_popup_person:
  tap_action:
    action: "fire-dom-event"
    browser_mod:
      command: "popup"
      title: "[[[ return states[variables.ulm_card_person_entity].attributes.friendly_name ]]]"
      style:
        $: >
          [[[
            if (hass.themes.theme.includes("desktop")){
              var dialog = `
                .mdc-dialog__surface{
                  border-radius: var(--border-radius) !important;
                }
              `;
            } else{
              var dialog = "";
            }
            return `
              *{
                --secondary-background-color: none !important;
              }
              ${dialog}
            `;
          ]]]
        hui-vertical-stack-card:
          $: >
            button-card {
              align-self: center;
              padding: 0.2em 0 2.3em 0;
            }
            hui-entities-card{
              padding: 0.8em 1.4em;
            }
          $hui-entities-card$: >
            ha-card{
              box-shadow: none;
            }
          $hui-history-graph-card$: >
            .content {
              padding: 0 2.4em !important;
            }
            ha-card{
              box-shadow: none;
            }
          $hui-glance-card$: >
            ha-card{
              box-shadow: none;
            }
          $hui-map-card:
            $: >
              ha-icon-button {
                color: rgba(var(--color-blue),1);
              }
            $ha-map:
              $: >
                .leaflet-control-attribution {
                  display: none;
                }
                .leaflet-touch .leaflet-control-layers, .leaflet-touch .leaflet-bar {
                  border: 2px solid rgba(var(--color-blue),0.4) !important;
                }
                .leaflet-bar a {
                  background-color: rgba(var(--color-blue),0.2) !important;
                  color: rgba(var(--color-blue),1) !important;
                }
                .leaflet-bar a:first-child {
                  border-bottom: 2px solid rgba(var(--color-blue),0.4) !important;
                }
                .leaflet-pane.leaflet-tile-pane {
                  filter: contrast(95%);
                }
      card:
        type: "vertical-stack"
        cards:
          - type: "entities"
            entities:
              - entity: "[[[ return variables.ulm_card_person_entity; ]]]"
                secondary_info: "last-changed"
          - type: "history-graph"
            entities:
              - entity: "[[[ return variables.ulm_card_person_entity; ]]]"
          - type: "glance"
            show_state: false
            entities:
              - entity: "[[[ return variables.ulm_card_person_wifi_tracker; ]]]"
                name: "WiFi"
                icon: "mdi:wifi"
                style: &state >
                  state-badge{
                    color: {{ 'rgba(var(--color-blue),1)' if is_state(config.entity, 'home') }};
                    filter: {{ 'opacity(100%)' if is_state(config.entity, 'home') else 'opacity(40%)'}};
                  }
              - entity: "[[[ return variables.ulm_card_person_gps_tracker; ]]]"
                name: "GPS"
                icon: "mdi:map-marker"
                style: *state
          - type: "custom:button-card"
            template:
              - "find_my_phone_button"
            entity: "[[[ return variables.ulm_card_person_findmy_script; ]]]"
          - type: "map"
            aspect_ratio: "12x10"
            default_zoom: 16
            entities: "[[[ return [variables.ulm_card_person_gps_tracker]; ]]]"

The language file:

---
ulm_custom_card_person_language_variables:
  variables:
    ulm_custom_card_person_home: "home"
    ulm_custom_card_person_not_home: "away"
    ulm_custom_card_person_findmy: "Find my phone"

And the card variables:

      - type: 'custom:button-card'
        template: custom_card_person
        variables:
          ulm_card_person_entity: person.your_name
          ulm_card_person_battery_state: sensor.your_phone_battery_state
          ulm_card_person_battery_level: sensor.your_phone_battery_level
          ulm_card_person_wifi_connection: sensor.your_phone_wifi_connection
          ulm_card_person_wifi_tracker: device_tracker.your_phone
          ulm_card_person_gps_tracker: device_tracker.your_phone
          ulm_card_person_findmy_script: script.find_your_phone
          ulm_card_person_use_entity_picture: false
          ulm_card_person_zones:
            - zone.your_place

Improvements are welcome, especially on styling.

11 Likes

thanks! that was it. i forgot that i cleared the cache on the browser to troubleshoot some issue, that must have cleared the theme in the settings.

For the find my phone button I would recommend a confirmation. And a generic service call filled with some more variables.

tap_action:
  confirmation:
    text: '[[[ return variables.ulm_custom_card_person_findmy_confirmation ]]]'
  action: call-service
  service: '[[[ return variables.ulm_custom_card_person_findmy_notify_device ]]]'
  service_data:
    title: '[[[ return variables.ulm_custom_card_person_findmy_notification_title ]]]'
    message: '[[[ return variables.ulm_custom_card_person_findmy_notification_message ]]]'
    data:
      ttl: 0
      importance: high
      priority: high
      tag: Find
      channel: alarm_stream
1 Like

Really getting into this now, great piece of work, my dashboards are finally looking decent!!
Only a small thing - I guess it’s possible? - if I’ve got Light/Dark set to “Auto” in my profile, how can I force Minimalist to use the Light mode? (Normally have Dark but want to use Light on my wall panel display!)

Sidebar-Username-Theme, there you can choose “Automatic-Light-Dark”.

What is anyone using for button entities?

I’m finding all cards just open the popup, not “press” the button.

EDIT

Sorry, maybe some people are reading this and thinking what the hell am I talking about LOL

      - type: "custom:button-card"
        template: card_input_boolean
        entity: button.coffee_machine_button
        name: Coffee Machine

EDIT 2

OK worked out the button issue. Most cards that cant “toggle” default back to “more-info”

Anyone trying to use a button enttity can use the script card EG:

  - type: horizontal-stack
    cards:
      - type: "custom:button-card"
        template: card_script
        variables:
          ulm_card_script_title: Coffee Machine
          ulm_card_script_icon: "mdi:coffee"
        tap_action:
          action: call-service
          service: button.press
          service_data:
            entity_id: button.coffee_machine_button
1 Like

Finally found some more time to work on my dashboard, here are some more work in progress photos. Hoping to have pretty much complete in the next few weeks, will share code once I am done.

Dark mode is a bit of a mess, focusing on light mode only for now!


ligh

33 Likes

I really like the colour at the top, well done :slight_smile:

1 Like

Looks really good, Any chance the code behind it is on github somewhere?

1 Like

I’m trying to create a second dashboard. Usually I add the yaml file in configuration.yalm.
I created a identic copy of ui-lovelace.yalm file.
Something wrong (button-car missing error).
I suppose can be different with this theme.
What’s the right way? Thanks for help

Hey guys,

Ive added doors to " custom_card_yagrasdemonde_lights_count"

Just add another template for doors in the config.yaml

      - name: "doors open"
        unique_id: doors_open
        icon: phu:sliding-window-door-open
        state: >
          {% set doors = [
              states.binary_sensor.door_1
              states.binary_sensor.door_2,
              states.binary_sensor.door_3,
              ] %}
          {{ doors | selectattr('state','eq','on') | list | count }}

And I just added an else if to the template

Hope it helps someone :slight_smile:

---
### Custom Card Lights (or covers) Counter ###
custom_card_yagrasdemonde_lights_count:
  show_name: true
  template:
    - "ulm_custom_card_yagrasdemonde_lights_count_language_variables"
    - "icon_only"
    - "ulm_language_variables"
  variables:
    ulm_custom_card_yagrasdemonde_lights_count_icon_on: "[[[ return entity.attributes.icon ]]]"
    ulm_custom_card_yagrasdemonde_lights_count_icon_off: "mdi:lightbulb-outline"
    ulm_custom_card_yagrasdemonde_lights_count_color: "yellow"
    ulm_custom_card_yagrasdemonde_lights_count_force_background_color: false
  tap_action:
    action: "none"
  name: >-
    [[[
      var entity_count_O = '';
      var entity_count_1 = '';
      var entity_count_many = '';
      if(variables.ulm_custom_card_yagrasdemonde_lights_count_type == "cover") {
        entity_count_O = variables.ulm_custom_card_yagrasdemonde_lights_count_cover_0;
        entity_count_1 = variables.ulm_custom_card_yagrasdemonde_lights_count_cover_1;
        entity_count_many = variables.ulm_custom_card_yagrasdemonde_lights_count_cover_many;
      }
      else if(variables.ulm_custom_card_yagrasdemonde_lights_count_type == "doors") {
        entity_count_O = variables.ulm_custom_card_yagrasdemonde_lights_count_door_0;
        entity_count_1 = variables.ulm_custom_card_yagrasdemonde_lights_count_door_1;
        entity_count_many = variables.ulm_custom_card_yagrasdemonde_lights_count_door_many;
      }        
      else {
        entity_count_O = variables.ulm_custom_card_yagrasdemonde_lights_count_light_0;
        entity_count_1 = variables.ulm_custom_card_yagrasdemonde_lights_count_light_1;
        entity_count_many = variables.ulm_custom_card_yagrasdemonde_lights_count_light_many;
      }
      if (entity.state != "unavailable") {
        if (entity.state == 0) {
          return entity_count_O;
        } else if (entity.state == 1) {
          return entity_count_1;
        } else {
          return entity.state + " " + entity_count_many;
        }
      } else {
        return variables.ulm_unavailable;
      }
    ]]]
  icon: >
    [[[
        if (entity.state == 0) {
          return variables.ulm_custom_card_yagrasdemonde_lights_count_icon_off;
        }
        else {
          return variables.ulm_custom_card_yagrasdemonde_lights_count_icon_on;
        }
    ]]]
  styles:
    icon:
      - color: >
          [[[
              if (entity.state == 0) {
                return 'rgba(var(--color-theme),0.2)';
              }
              else {
                return 'rgba(var(--color-' + variables.ulm_custom_card_yagrasdemonde_lights_count_color + '),1)';
              }
          ]]]
    name:
      - align-self: "center"
      - justify-self: "start"
      - font-weight: "bold"
      - font-size: "14px"
      - margin-left: "12px"
      - filter: "opacity(100%)"
    img_cell:
      - background-color: >
          [[[
              if (entity.state == 0) {
                return 'rgba(var(--color-theme),0.05)';
              }
              else {
                return 'rgba(var(--color-' + variables.ulm_custom_card_yagrasdemonde_lights_count_color + '),0.2)';
              }
          ]]]
    grid:
      - grid-template-areas: "'i n'"
      - grid-template-columns: "min-content min-content"
      - grid-template-rows: "min-content"
  state:
    - value: 1
      operator: ">="
      styles:
        card:
          - background-color: >-
              [[[
                  if (variables.ulm_custom_card_yagrasdemonde_lights_count_force_background_color == true || hass.themes.darkMode){
                    return 'rgba(var(--color-' + variables.ulm_custom_card_yagrasdemonde_lights_count_color + '-text),0.1)';
                  }
                  else {
                    return 'rgba(var(--color-background-' + variables.ulm_custom_card_yagrasdemonde_lights_count_color + '),var(--opacity-bg))';
                  }
              ]]]
        name:
          - color: "[[[ return 'rgba(var(--color-' + variables.ulm_custom_card_yagrasdemonde_lights_count_color + '-text),1)' ]]]"

en.yaml

---
ulm_custom_card_yagrasdemonde_lights_count_language_variables:
  variables:
    ulm_custom_card_yagrasdemonde_lights_count_light_0: "No lights on"
    ulm_custom_card_yagrasdemonde_lights_count_light_1: "1 light on"
    ulm_custom_card_yagrasdemonde_lights_count_light_many: "lights on"
    ulm_custom_card_yagrasdemonde_lights_count_cover_0: "No curtains open"
    ulm_custom_card_yagrasdemonde_lights_count_cover_1: "1 curtains open"
    ulm_custom_card_yagrasdemonde_lights_count_cover_many: "curtains open"
    ulm_custom_card_yagrasdemonde_lights_count_door_0: "No doors or windows open"
    ulm_custom_card_yagrasdemonde_lights_count_door_1: "1 door or windows open"
    ulm_custom_card_yagrasdemonde_lights_count_door_many: "doors or windows open"
4 Likes

hello do you have the script of the find your phone ?

There is a whole page on the wiki for it. Could be some relative path issue.
https://ui-lovelace-minimalist.github.io/UI/setup/customizing/#add-multiple-dashboards