šŸŸ£ Rounded - Dashboard guide

Or you create a custom card. :laughing:
Ive alread made it. I just dont find/know the service call to open the voice assistant.

1 Like

Doesnt work on my end. I can see the card loading something and an animation. But its way too big. fill the complete card in white color.

got it working. Failure on my end

1 Like

I used the standard button card. You can then select assist from the gui interface. Select the specofic assistant.

I then switched to code view and copied it.

Not sure if that helps you work out something.

Where do i need to paste that yaml code in the theme.yaml?

Of could you update your github ?:slight_smile:

By the way. You do not need to add the scaler, width and color to the theme. You can apply it in button card.
I ve just noticed the mistake. Usennn

:host {
    --assistant-width: 50;
    --assistant-scaler: calc(var(--assistant-width); / 200);
    --assistant-color: white;
  }

so here the complete code.

type: custom:button-card
show_name: false
show_state: false
show_icon: false
show_label: false
tap_action:
  action: none
styles:
  grid:
    - grid-template-areas: '"."'
    - grid-template-columns: min-content
    - grid-template-rows: min-content
  card:
    - padding: 32px
    - background: var(--background-color)
    - height: max-content
custom_fields:
  custom_html: |
    [[[
      return `
      <div class="assistant-container">
          <div id="assistant">
              <div class="assistant-dot"></div>
              <div class="assistant-dot"></div>
              <div class="assistant-dot"></div>
          </div>
          <div id="assistant-corner"></div>
          <div id="assistant-antenna">
              <div id="assistant-beam"></div>
              <div id="assistant-beam-pulsar"></div>
          </div>
      </div>
      `
    ]]]
extra_styles: |
  :host {
    --assistant-width: 50;
    --assistant-scaler: calc(var(--assistant-width) / 200);
    --assistant-color: white;
  }
  .assistant-container {
    margin: auto;
    position: absolute;
    bottom: 0;
    left: 0;
    top: 0;
    right: 0;
    height: calc(200px * var(--assistant-scaler));
    width: calc(200px * var(--assistant-scaler));
    animation: up-down 7.5s infinite ease-in-out;
    background-color: var(--background-color);
  }
  .assistant-container #assistant {
    margin: auto;
    position: absolute;
    bottom: 0;
    left: 0;
    top: 0;
    right: 0;
    width: calc(150px * var(--assistant-scaler));
    height: calc(85px * var(--assistant-scaler));
    border: calc(12px * var(--assistant-scaler)) solid var(--assistant-color);
    border-radius: 5rem;
  }
  .assistant-container #assistant-corner {
    margin: auto;
    position: absolute;
    bottom: 0;
    left: 0;
    top: 0;
    right: 0;
    top: calc(105px * var(--assistant-scaler));
    left: calc(-65px * var(--assistant-scaler));
    width: 0;
    height: 0;
    border-left: calc(20px * var(--assistant-scaler)) solid transparent;
    border-right: calc(20px * var(--assistant-scaler)) solid transparent;
    border-top: calc(25px * var(--assistant-scaler)) solid var(--assistant-color);
    transform: rotate(140deg);
  }
  .assistant-container #assistant-antenna {
    margin: auto;
    position: absolute;
    bottom: 0;
    left: 0;
    top: 0;
    right: 0;
    top: calc(-125px * var(--assistant-scaler));
    height: calc(20px * var(--assistant-scaler));
    width: calc(10px * var(--assistant-scaler));
    background-color: var(--assistant-color);
    animation: antenna-appear 7.5s infinite ease-in-out;
  }
  .assistant-container #assistant-antenna #assistant-beam {
    position: absolute;
    top: calc(-12.5px * var(--assistant-scaler));
    left: calc(-5px * var(--assistant-scaler));
    height: calc(20px * var(--assistant-scaler));
    width: calc(20px * var(--assistant-scaler));
    border-radius: 50%;
    background-color: var(--assistant-color);
    animation: beam-appear 7.5s infinite ease-in-out;
  }
  .assistant-container #assistant-antenna #assistant-beam-pulsar {
    position: absolute;
    top: calc(-12.5px * var(--assistant-scaler));
    left: calc(-5px * var(--assistant-scaler));
    height: calc(20px * var(--assistant-scaler));
    width: calc(20px * var(--assistant-scaler));
    border-radius: 50%;
    background-color: var(--assistant-color);
    animation: beam-pulsar-appear 7.5s infinite ease-in-out;
  }
  .assistant-container .assistant-dot {
    height: calc(17.5px * var(--assistant-scaler));
    width: calc(17.5px * var(--assistant-scaler));
    margin: auto;
    position: absolute;
    bottom: 0;
    left: 0;
    top: 0;
    right: 0;
    left: calc(-65px * var(--assistant-scaler));
    background-color: var(--assistant-color);
    border-radius: 50%;
    animation: pulse-outer 7.5s infinite ease-in-out;
  }
  .assistant-container .assistant-dot:nth-child(2) {
    left: 0;
    animation: pulse-inner 7.5s infinite ease-in-out;
    animation-delay: 0.2s;
  }
  .assistant-container .assistant-dot:nth-child(3) {
    left: calc(65px * var(--assistant-scaler));
    animation: pulse-outer 7.5s infinite ease-in-out;
    animation-delay: 0.4s;
  }
  @keyframes pulse-inner {
      0% { transform: scale(1); }
      7.5% { transform: scale(1.5); }
      15% { transform: scale(1); }
      22.5% { transform: scale(1.5); }
      30% { transform: scale(1); }
      37.5% { transform: scale(1.5); }
      45% { top: 0; transform: scale(1); height: calc(17.5px * var(--assistant-scaler)); border-bottom-left-radius: 50%; border-bottom-right-radius: 50%; transform: rotate(-370deg); }
      50% { top: calc(22.5px * var(--assistant-scaler)); height: calc(10px * var(--assistant-scaler)); border-top-left-radius: 50%; border-top-right-radius: 50%; border-bottom-left-radius: 3rem; border-bottom-right-radius: 3rem; transform: rotate(10deg); }
      55% { transform: rotate(-10deg); }
      60% { transform: rotate(10deg); }
      65% { transform: rotate(-10deg); }
      85% { top: calc(22.5px * var(--assistant-scaler)); height: calc(10px * var(--assistant-scaler)); border-top-left-radius: 50%; border-top-right-radius: 50%; border-bottom-left-radius: 3rem; border-bottom-right-radius: 3rem; transform: rotate(0deg); }
      92.5% { top: calc(22.5px * var(--assistant-scaler)); height: calc(10px * var(--assistant-scaler)); border-top-left-radius: 50%; border-top-right-radius: 50%; border-bottom-left-radius: 2.5rem; border-bottom-right-radius: 2.5rem; transform: rotate(0deg); }
      100% { top: 0; height: calc(17.5px * var(--assistant-scaler)); border-radius: 50%; transform: rotate(-360deg); }
  }
  @keyframes pulse-outer {
      0% { transform: scale(1); }
      7.5% { transform: scale(1.5); }
      15% { transform: scale(1);  }
      22.5% { transform: scale(1.5); }
      30% { transform: scale(1); }
      37.5% {transform: scale(1.5); }
      45% { transform: scale(1); height: calc(17.5px * var(--assistant-scaler)); }
      55% { tranform: scale(1); height: calc(5px * var(--assistant-scaler)); }
      60% { height: calc(17.5px * var(--assistant-scaler)); }
      75% { height: calc(17.5px * var(--assistant-scaler)); }
      80% { tranform: scale(1); height: calc(5px * var(--assistant-scaler)); }
      85% { height: calc(17.5px * var(--assistant-scaler)); }
      100% { height: calc(17.5px * var(--assistant-scaler)); }
  }
  @keyframes antenna-appear {
      0% { visibility: hidden; top: calc(-100px * var(--assistant-scaler)); height: 0; } 
      50% { visibility: hidden; top: calc(-100px * var(--assistant-scaler)); height: 0; }
      55% { visibility: visible; top: calc(-125px * var(--assistant-scaler)); height: calc(20px * var(--assistant-scaler)); }
      95% { visibility: visible; top: calc(-125px * var(--assistant-scaler)); height: calc(20px * var(--assistant-scaler)); }
      100% { top: calc(-100px * var(--assistant-scaler)); height: 0; }
  }
  @keyframes beam-appear {
      0% { visibility: hidden; top: calc(-12.5px * var(--assistant-scaler)); height: 0; }
      50% { visibility: hidden; top: calc(-12.5px * var(--assistant-scaler)); height: 0; }
      55% { visibility: visible; top: calc(-12.5px * var(--assistant-scaler)); height: calc(20px * var(--assistant-scaler)); width: calc(20px * var(--assistant-scaler)); }
      100% { visibility: visible; top: calc(-12.5px * var(--assistant-scaler)); height: calc(20px * var(--assistant-scaler)); width: calc(20px * var(--assistant-scaler)); }
  }
  @keyframes beam-pulsar-appear {
      0% { visibility: hidden; top: calc(-12.5px * var(--assistant-scaler)); height: 0; }
      50% { visibility: hidden; top: calc(-12.5px * var(--assistant-scaler)); height: 0; }
      55% { visibility: visible; top: calc(-12.5px * var(--assistant-scaler)); left: calc(-5px * var(--assistant-scaler)); height: calc(20px * var(--assistant-scaler)); width: cal(20px * var(--assistant-scaler)); opacity: 1; }
      65% { top: calc(-25px * var(--assistant-scaler)); left: calc(-15px * var(--assistant-scaler)); height: calc(40px * var(--assistant-scaler)); width: calc(40px * var(--assistant-scaler)); opacity: 0; visibility: visible; }
      74% { visibility: hidden; opacity: 0; }
      75% { visibility: visible; top: calc(-12.5px * var(--assistant-scaler)); left: calc(-5px * var(--assistant-scaler)); height: calc(20px * var(--assistant-scaler)); width: calc(20px * var(--assistant-scaler)); opacity: 1; }
      85% { top: calc(-25px * var(--assistant-scaler)); left: calc(-15px * var(--assistant-scaler)); height: calc(40px * var(--assistant-scaler)); width: calc(40px * var(--assistant-scaler)); opacity: 0; visibility: visible; }
      94% { visibility: hidden; opacity: 0; }
      100% { visibility: hidden; opacity: 0; }
  }
  @keyframes up-down {
      0% { transform: translate(0); }
      2.5% { transform: translate(0, 2%); }
      25% { transform: translate(0); }
      37.5% { transform: translate(0, 2%); }
      50% { transform: translate(0); }
      62.5% { transform: translate(0, 2%); }
      75% { transform: translate(0); }
      87.5% { transform: translate(0, 2%); }
      100% { transform: translate(0); }
  }

So, here my second swipe card for those, who want to test.

Uhmm got a questionā€¦ You know how to fix the background of bubble popup with your theme? With your theme the popups got a terrible background

My theme??? I guess you meant Leon?
Regarding bubble card, Cloos postet following code to change the background.
use it under the pop-up card.

styles: |
      .pop-up {
        background-color: your color !important;
      }

Hi,

Thanks for sharing your themes, I try to create mine with yours and Bubble. But one question, how itā€™s possible to move the top bar to the bottom bar ?

Thanks

EDIT : itā€™s done, i didnā€™t define Rounded by defaultā€¦

Hi everybody, I canā€™t find the services section in developer tools. Could someone help me?

And where should I put this code here? In rounded.yaml or configuration.yaml?

neither
itā€™s a title card, it goes with your other cards

And where should I find them?

You need to create a new Dashboard in yaml mode Multiple dashboards - Home Assistant

Then you can place your cards in the dashboard File you are using.
For example my configuration looks like this:

1 Like

Just as information. Home assistant changed services to actions in the newest release. Thats why you cant find service.

You can use bothā€¦


thanks for the ideas and codes, iā€™m creating my own dash with some modifications and mesh with andyā€™s
In the end I chose the one on the bottom right.

Can anyone explain to me what is wrong with the graph card being like this? I copied the codes exactly the same.

  /* Graph card style */

  .graph {
    background: var(--blue-tint);
    display: flex;
    overflow: hidden; /* Temporary fix for graph overflow bug */
  }
  
  .graph .name {
    font-size: 12px;
    line-height: 18px;
    background: var(--black);
    color: var(--white);
    padding: 6px 10px;
    border-radius: 100px;
    z-index: 1;
  }

  .graph .icon {
    display: none;
  }

  .graph .info {
    margin-top: 0;
    padding: 24px 24px 0 24px;
    order: 1;
  }

  .graph hui-graph-header-footer {
    order: 3;
  }

  .graph .header {
    padding: 0 24px;
    order: 2;
    margin: 4px 0 -16px 0;
    z-index: 1;
  }

1 Like

Newest HA update seems to have broken the CSS. I noticed it today as wellā€¦

Hi all,

I want to try and replicate the design below for notifications but in the rounded style. Iā€™ve been trying my best to do so, and using ChatGPT hasnā€™t yielded any results. Iā€™m thinking someone smarter and better than I am can come up with something.

Any help?

I want to replace my current design which is a bit clunky and if you have a lot, can get messy.

SCR-20240823-ncbq

EDIT:

Iā€™ve continued to play around and Iā€™ve made some headway with it.

Hereā€™s my code;

type: custom:button-card
entity: input_boolean.black_bin_needs_taking_out
name: Take Black Bin Out
show_icon: false
tap_action:
  action: toggle
styles:
  card:
    - border-radius: 25px
    - border-style: none
    - box-shadow: 0px 0px 10px -9px black
    - background: |
        [[[
            return 'var(--primary-text-color)';
        ]]]
  grid:
    - grid-template-areas: '"icon_cells n"'
    - grid-template-rows: 2px 16px
    - grid-template-columns: 1fr
  custom_fields:
    icon_cells:
      - justify-self: start
      - margin-top: 15px
      - margin-left: 15px
    icon1:
      - position: absolute
      - width: 3em
      - opacity: 20%
      - color: |
          [[[
            if (entity.state == 'on') {
              return 'var(--black)';
            } else {
              return 'var(--primary-background-color)';
            }
          ]]]
      - transform: rotate(-20deg)
      - justify-self: end
      - margin-top: 20px
  name:
    - font-size: 100%
    - font-weight: bold
    - justify-self: start
    - margin-top: 10%
    - color: black
    - white-space: normal
    - word-wrap: break-word
    - text-align: left
custom_fields:
  icon_cells: |
    [[[
        return `<ha-icon
        icon="mdi:trash-can-outline"
        style="width: 25px; height: 25px; color: black;">
        </ha-icon>`;
    ]]]
  icon1: |
    [[[
      return '<ha-icon icon="mdi:trash-can-outline"></ha-icon>';
    ]]]

But this is what it looks like currently;

I feel like Iā€™m so close with this but I donā€™t know why the text is only displaying on the right and not next to the icon. Again, any help would be appreciated