Here’s the whole of my kitchen card…
- type: custom:vertical-stack-in-card
cards:
- type: custom:mushroom-chips-card
chips:
- type: template
icon: mdi:door
icon_color: |-
{% if is_state('binary_sensor.kitchen_door_contact','on') %}
red
{% elif is_state('binary_sensor.kitchen_door_contact','off') %}
green
{% else %}
disabled
{% endif %}
- type: template
icon: >-
{% if is_state('binary_sensor.kitchen_presence_occupancy','on') %}
mdi:motion-sensor
{% else %}
mdi:walk
{% endif %}
icon_color: >-
{% if is_state('binary_sensor.kitchen_presence_occupancy','on') %}
red
{% elif is_state('binary_sensor.kitchen_presence_occupancy','off') %}
green
{% else %}
disabled
{% endif%}
- type: template
icon: mdi:thermometer
icon_color: orange
use_entity_picture: false
content: 'n/a'
entity: sensor.kitchen_sensor_temperature
- type: template
icon: mdi:water-percent
icon_color: light-blue
use_entity_picture: false
content: 'n/a'
entity: sensor.kitchen_sensor_humidity
alignment: center
card_mod:
style:
mushroom-template-chip:nth-child(1)$: |
ha-icon {
{{ 'animation: open 6s ease-in-out infinite;' if is_state('binary_sensor.kitchen_door_contact', 'on') }}
transform-origin: 30%;
}
@keyframes open {
0%, 66% { transform: rotateY(0deg); }
33% { transform: rotateY(-120deg); }
}
.shape {
perspective: 45px;
}
mushroom-template-chip:nth-child(2)$: |
ha-icon {
{{ 'animation: clip 2s infinite;' if is_state('binary_sensor.kitchen_presence_occupancy', 'on') }}
}
{% if is_state('binary_sensor.kitchen_presence_occupancy', 'on') %}
@keyframes clip {
50% { clip-path: polygon(0 0, 55% 0, 100% 100%, 0 100%); }
}
.shape {
animation: motion 2s linear infinite;
}
@keyframes motion {
0%, 100% { --shape-color: rgba(var(--rgb-red), 0.3); }
50% { --shape-color: rgba(var(--rgb-red), 0.2); }
}
{% endif %}
.: |
ha-card {
--chip-box-shadow: none;
--chip-background: none;
--chip-spacing: 0;
padding-top: 5px;
}
- type: custom:mushroom-template-card
primary: Kitchen
icon: mdi:countertop-outline
card_mod:
style:
mushroom-state-info$: |
.primary {
font-size: 20px !important;
position: absolute;
top: 0px;
left: 75px;
overflow: visible !important;
white-space: normal !important;
}
mushroom-shape-icon$: |
.shape {
position: relative;
left: -30px;
top: -0px;
height: 20px;
{% if is_state('light.kitchen_lights', 'on') %}
--shape-color: rgba(var(--rgb-orange), 0.25);
--icon-color: rgba(var(--rgb-white), 1);
{% endif %}
}
.: |
:host {
--mush-icon-size: 120px;
--primary-text-color: #a0a0a0
}
ha-card {
height: 75px !important;
}
- type: custom:stack-in-card
cards:
- type: grid
square: false
columns: 3
cards:
- type: custom:mushroom-template-card
name: Coffee Machine
entity: switch.coffee_machine
icon: mdi:coffee-maker
icon_color: '{{ ''brown'' if is_state(entity, ''on'') else ''disabled'' }}'
primary_info: none
secondary_info: none
layout: vertical
tap_action:
action: toggle
card_mod:
style:
mushroom-shape-icon$: |
ha-icon {
{{ '--icon-animation: java 4s linear infinite;' if is_state(config.entity, 'on') }}
}
@keyframes java {
0%, 80%, 100% { clip-path: polygon(0 0, 100% 0, 100% 32%, 47% 32%, 47% 43%, 100% 43%, 100% 100%, 0 100%); }
10% { clip-path: polygon(0 0, 100% 0, 100% 32%, 47% 32%, 47% 43%, 100% 43%, 100% 100%, 55% 100%, 55% 79%, 63% 76%, 67% 70%, 66% 54%, 42% 55%, 42% 70%, 47% 77%, 55% 80%, 57% 100%, 0 100%); }
15% { clip-path: polygon(0 0, 100% 0, 100% 100%, 55% 100%, 55% 79%, 63% 76%, 67% 70%, 66% 54%, 42% 54%, 42% 70%, 47% 77%, 55% 80%, 55% 100%, 0 100%); }
20% { clip-path: polygon(0 0, 100% 0, 100% 32%, 47% 32%, 47% 43%, 100% 43%, 100% 100%, 55% 100%, 55% 76%, 63% 76%, 67% 70%, 66% 54%, 42% 55%, 42% 70%, 47% 76%, 55% 76%, 57% 100%, 0 100%); }
25% { clip-path: polygon(0 0, 100% 0, 100% 100%, 55% 100%, 55% 76%, 63% 76%, 67% 70%, 66% 54%, 42% 54%, 42% 70%, 47% 76%, 55% 76%, 56% 100%, 0 100%); }
30% { clip-path: polygon(0 0, 100% 0, 100% 32%, 47% 32%, 47% 43%, 100% 43%, 100% 100%, 55% 100%, 55% 73%, 64% 73%, 66% 70%, 66% 55%, 42% 55%, 42% 69%, 44% 73%, 55% 73%, 57% 100%, 0 100%); }
35% { clip-path: polygon(0 0, 100% 0, 100% 100%, 55% 100%, 55% 73%, 64% 73%, 66% 70%, 66% 55%, 42% 54%, 42% 69%, 44% 73%, 55% 73%, 56% 100%, 0 100%); }
40% { clip-path: polygon(0 0, 100% 0, 100% 32%, 47% 32%, 47% 43%, 100% 43%, 100% 100%, 55% 100%, 55% 70%, 67% 70%, 66% 54%, 42% 54%, 42% 70%, 57% 70%, 57% 100%, 0 100%); }
45% { clip-path: polygon(0 0, 100% 0, 100% 100%, 55% 100%, 55% 70%, 67% 70%, 66% 54%, 42% 54%, 42% 70%, 55% 70%, 56% 100%, 0 100%); }
50% { clip-path: polygon(0 0, 100% 0, 100% 32%, 47% 32%, 47% 43%, 100% 43%, 100% 100%, 55% 100%, 55% 66%, 67% 65%, 66% 54%, 42% 54%, 42% 65%, 57% 65%, 57% 100%, 0 100%); }
55% { clip-path: polygon(0 0, 100% 0, 100% 100%, 55% 100%, 55% 66%, 67% 65%, 66% 54%, 42% 54%, 42% 65%, 55% 65%, 56% 100%, 0 100%); }
60% { clip-path: polygon(0 0, 100% 0, 100% 32%, 47% 32%, 47% 43%, 100% 43%, 100% 100%, 55% 100%, 55% 60%, 66% 60%, 66% 54%, 42% 54%, 42% 60%, 57% 60%, 57% 100%, 0 100%); }
65% { clip-path: polygon(0 0, 100% 0, 100% 100%, 55% 100%, 55% 60%, 66% 60%, 66% 54%, 42% 54%, 42% 60%, 55% 60%, 56% 100%, 0 100%); }
70% { clip-path: polygon(0 0, 100% 0, 100% 32%, 47% 32%, 47% 43%, 100% 43%, 100% 100%, 55% 100%, 55% 56%, 66% 56%, 66% 54%, 42% 54%, 42% 56%, 57% 56%, 57% 100%, 0 100%); }
75% { clip-path: polygon(0 0, 100% 0, 100% 100%, 55% 100%, 55% 56%, 66% 56%, 66% 54%, 42% 54%, 42% 56%, 55% 56%, 55% 100%, 0 100%); }
}
.: |
ha-card:active {
background: rgba(var(--rgb-disabled), 0.1);
transform: scale(0.975);
transition: 0s;
}
- type: custom:mushroom-template-card
name: Dishwasher
entity: switch.dishwasher
icon: mdi:dishwasher
icon_color: '{{ ''light-blue'' if is_state(entity, ''on'') else ''disabled'' }}'
primary_info: none
secondary_info: |-
{% if is_state(entity, 'on') %}
{{ states('sensor.dishwasher_power') | round(0) }} W
{% else %}
Off
{% endif %}
layout: vertical
card_mod:
style:
mushroom-shape-icon$: |
ha-icon {
{{ '--icon-animation: bounce 1.5s ease-in-out infinite, wash 1s ease-in-out infinite;' if states('sensor.dishwasher_power') | int > 5 }}
transform-origin: 50% 75%;
}
@keyframes bounce {
0%, 20%, 50%, 80%, 100% {transform: translateY(0); }
40% { transform: translateY(-1.2px) rotate(5deg); }
60% { transform: translateY(-1.1px) rotate(-4deg); }
}
@keyframes wash {
50% { clip-path: polygon(0 0, 0 100%, 35% 100%, 36% 74%, 31% 43%, 61% 40%, 71% 69%, 62% 78%, 36% 73%, 35% 100%, 100% 100%, 100% 0); }
}
.: |
ha-card:active {
background: rgba(var(--rgb-disabled), 0.1);
transform: scale(0.975);
transition: 0s;
}
- type: custom:mushroom-template-card
name: Quooker Tap
icon: mdi:faucet-variant
entity: switch.quooker_tap
icon_color: '{{ ''red'' if is_state(entity, ''on'') else ''disabled'' }}'
primary_info: none
secondary_info: none
layout: vertical
card_mod:
style:
mushroom-shape-icon$: |
ha-icon {
{{ '--icon-animation: boil 500ms infinite;' if is_state(config.entity, 'on') }}
}
@keyframes boil {
0%, 100% { transform: translate({{ range(-20, 20) | random / 10 }}px, {{ range(-20, 20) | random / 10 }}px) rotate({{ range(-15, 15) | random }}deg); }
10% { transform: translate({{ range(-20, 20) | random / 10 }}px, {{ range(-20, 20) | random / 10 }}px) rotate({{ range(-15, 15) | random }}deg); clip-path: polygon(0 0, 66% 10%, 67% 30%, 88% 52%, 100% 100%, 0 100%); }
20% { transform: translate({{ range(-20, 20) | random / 10 }}px, {{ range(-20, 20) | random / 10 }}px) rotate({{ range(-15, 15) | random }}deg); }
30% { transform: translate({{ range(-20, 20) | random / 10 }}px, {{ range(-20, 20) | random / 10 }}px) rotate({{ range(-15, 15) | random }}deg); }
40% { transform: translate({{ range(-20, 20) | random / 10 }}px, {{ range(-20, 20) | random / 10 }}px) rotate({{ range(-15, 15) | random }}deg); }
50% { transform: translate({{ range(-20, 20) | random / 10 }}px, {{ range(-20, 20) | random / 10 }}px) rotate({{ range(-15, 15) | random }}deg); }
60% { transform: translate({{ range(-20, 20) | random / 10 }}px, {{ range(-20, 20) | random / 10 }}px) rotate({{ range(-15, 15) | random }}deg); }
70% { transform: translate({{ range(-20, 20) | random / 10 }}px, {{ range(-20, 20) | random / 10 }}px) rotate({{ range(-15, 15) | random }}deg); }
80% { transform: translate({{ range(-20, 20) | random / 10 }}px, {{ range(-20, 20) | random / 10 }}px) rotate({{ range(-15, 15) | random }}deg); }
90% { transform: translate({{ range(-20, 20) | random / 10 }}px, {{ range(-20, 20) | random / 10 }}px) rotate({{ range(-15, 15) | random }}deg); }
}
- type: grid
square: false
columns: 1
cards:
- type: custom:stack-in-card
cards:
- type: custom:layout-card
layout_type: custom:grid-layout
layout:
grid-template-columns: auto 33px
margin: '-4px -4px -8px -4px;'
cards:
- type: custom:mushroom-template-card
primary: Kitchen Lights
icon: mdi:ceiling-light-multiple-outline
entity: light.kitchen_lights
icon_color: '{{ ''orange'' if is_state(entity, ''on'') else ''disabled'' }}'
fill_container: false
multiline_secondary: false
card_mod:
style: |
ha-card {
background: none;
--ha-card-box-shadow: 0px;
}
- type: custom:mushroom-template-card
entity: input_boolean.kitchen_lights
primary: ''
secondary: ''
icon: >-
{{ 'mdi:chevron-up' if is_state(entity, 'on') else 'mdi:chevron-down'
}}
icon_color: disabled
hold_action:
action: none
card_mod:
style: |
ha-card {
align-items: flex-end;
background: none;
--ha-card-box-shadow: 0px;
}
mushroom-shape-icon {
--shape-color: none !important;
}
- type: conditional
conditions:
- entity: input_boolean.kitchen_lights
state: 'on'
card:
type: custom:stack-in-card
columns: 4
mode: horizontal
keep:
background: true
border_radius: true
margin: true
cards:
- type: custom:mushroom-light-card
name: Cabinet LEDs
entity: light.kitchen_cabinet_leds
icon: mdi:led-strip
primary_info: none
secondary_info: none
layout: vertical
card_mod: null
style: |
ha-card {
box-shadow: 0px 0px;
}
- type: custom:mushroom-light-card
name: RGB
entity: light.kitchen_rgb
icon: >-
{% if is_state('light.kitchen_rgb','on') %}
mdi:led-strip-variant
{% else %}
mdi:led-strip-variant-off
{% endif %}
show_brightness_control: false
show_color_control: false
collapsible_controls: false
use_light_color: true
primary_info: none
secondary_info: none
layout: vertical
card_mod:
style: |
ha-card:active {
background: rgba(var(--rgb-disabled), 0.1);
transform: scale(0.975);
transition: 0s;
}
mushroom-shape-icon {
{% if is_state(config.entity, 'on') %}
--card-mod-icon: mdi:led-strip-variant;
{% else %}
--card-mod-icon: mdi:led-strip-variant-off;
{% endif %}
}
- type: custom:mushroom-light-card
name: Wall LEDs
entity: light.kitchen_wall_leds
show_brightness_control: true
collapsible_controls: true
primary_info: none
secondary_info: none
layout: vertical
card_mod:
style: |
mushroom-shape-icon {
{% if is_state(config.entity, 'on') %}
--card-mod-icon:
{% set light_level = ((state_attr(config.entity, "brightness") / 255) * 10) | round(0) * 10 %}
{% if light_level == 100 %}
mdi:lightbulb-on
{% elif light_level > 0 %}
mdi:lightbulb-on-{{ light_level }}
{% else %}
mdi:lightbulb-on-outline
{% endif %};
{% else %}
--card-mod-icon: mdi:lightbulb-outline;
{% endif %}
}
ha-card {
box-shadow: 0px 0px;
}
- type: custom:mushroom-light-card
name: Ceiling LEDs
entity: light.kitchen_ceiling_leds
show_brightness_control: true
collapsible_controls: true
primary_info: none
secondary_info: none
layout: vertical
card_mod:
style: |
mushroom-shape-icon {
{% if is_state(config.entity, 'on') %}
--card-mod-icon:
{% set light_level = ((state_attr(config.entity, "brightness") / 255) * 10) | round(0) * 10 %}
{% if light_level == 100 %}
mdi:lightbulb-on
{% elif light_level > 0 %}
mdi:lightbulb-on-{{ light_level }}
{% else %}
mdi:lightbulb-on-outline
{% endif %};
{% else %}
--card-mod-icon: mdi:lightbulb-outline;
{% endif %}
}
ha-card {
box-shadow: 0px 0px;
}
state_color: true
show_header_toggle: false