├── assets ├── light_card.jpeg ├── media_card.png ├── room_card.jpeg ├── usage_card.jpeg ├── device_card.jpeg ├── person_card.jpeg ├── storage_card.jpeg ├── switch_card.jpeg ├── utilization_card.jpeg ├── information_card_style_1.jpeg ├── information_card_style_2.jpeg └── information_card_style_3.jpeg ├── information_card_style_3.yaml ├── information_card_style_2.yaml ├── internet_usage_per_user_card.yaml ├── light_card.yaml ├── information_card_style_1.yaml ├── utilization_card.yaml ├── switch_card.yaml ├── README.md ├── storage_card.yaml ├── room_card.yaml ├── person_card.yaml ├── download_upload_cards.yaml ├── usage_card.yaml ├── media_card.yaml ├── remote_access_stats_card.yaml ├── device_card.yaml └── custom_icon.js /assets/light_card.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sharn25/HA-Custom_Cards/HEAD/assets/light_card.jpeg -------------------------------------------------------------------------------- /assets/media_card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sharn25/HA-Custom_Cards/HEAD/assets/media_card.png -------------------------------------------------------------------------------- /assets/room_card.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sharn25/HA-Custom_Cards/HEAD/assets/room_card.jpeg -------------------------------------------------------------------------------- /assets/usage_card.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sharn25/HA-Custom_Cards/HEAD/assets/usage_card.jpeg -------------------------------------------------------------------------------- /assets/device_card.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sharn25/HA-Custom_Cards/HEAD/assets/device_card.jpeg -------------------------------------------------------------------------------- /assets/person_card.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sharn25/HA-Custom_Cards/HEAD/assets/person_card.jpeg -------------------------------------------------------------------------------- /assets/storage_card.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sharn25/HA-Custom_Cards/HEAD/assets/storage_card.jpeg -------------------------------------------------------------------------------- /assets/switch_card.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sharn25/HA-Custom_Cards/HEAD/assets/switch_card.jpeg -------------------------------------------------------------------------------- /assets/utilization_card.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sharn25/HA-Custom_Cards/HEAD/assets/utilization_card.jpeg -------------------------------------------------------------------------------- /assets/information_card_style_1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sharn25/HA-Custom_Cards/HEAD/assets/information_card_style_1.jpeg -------------------------------------------------------------------------------- /assets/information_card_style_2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sharn25/HA-Custom_Cards/HEAD/assets/information_card_style_2.jpeg -------------------------------------------------------------------------------- /assets/information_card_style_3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sharn25/HA-Custom_Cards/HEAD/assets/information_card_style_3.jpeg -------------------------------------------------------------------------------- /information_card_style_3.yaml: -------------------------------------------------------------------------------- 1 | type: custom:button-card 2 | entity: sensor.voltage_10a_ckt 3 | show_icon: false 4 | name: Voltage 5 | styles: 6 | card: 7 | - border-radius: 20px 8 | - border-style: none 9 | - box-shadow: 0px 0px 10px -9px black 10 | grid: 11 | - grid-template-areas: '"icon_cells" "n" "value"' 12 | - grid-template-columns: 1fr 13 | - grid-template-rows: 1fr min-content 14 | name: 15 | - justify-self: start 16 | - align-self: start 17 | - margin-top: 10px 18 | - margin-left: 20px 19 | - font-size: 65% 20 | - filter: opacity(60%) 21 | custom_fields: 22 | value: 23 | - justify-self: start 24 | - align-self: start 25 | - margin-top: 0px 26 | - margin-left: 20px 27 | - font-size: 15px 28 | - font-weight: bold 29 | - margin-bottom: 5px 30 | icon_cells: 31 | - justify-self: start 32 | - align-self: start 33 | - margin-top: 5px 34 | - margin-left: 20px 35 | custom_fields: 36 | icon_cells: | 37 | [[[ 38 | return ` 41 | 42 | ` 43 | ]]] 44 | value: | 45 | [[[ 46 | var value = states['sensor.voltage_10a_ckt'].state; 47 | return `${value} V 48 | ` 49 | ]]] 50 | -------------------------------------------------------------------------------- /information_card_style_2.yaml: -------------------------------------------------------------------------------- 1 | type: custom:stack-in-card 2 | cards: 3 | - type: custom:button-card 4 | entity: sensor.daily_energy_usage 5 | show_icon: false 6 | name: Electrcity 7 | styles: 8 | card: 9 | - border-radius: 20px 10 | - border-style: none 11 | grid: 12 | - grid-template-areas: '"icon_cells n" "icon_cells value"' 13 | - grid-template-columns: min-content 1fr 14 | - grid-template-rows: min-content min-content 15 | name: 16 | - align-self: start 17 | - font-weight: normal 18 | - font-size: 65% 19 | - margin-left: 5px 20 | - margin-top: 10px 21 | - justify-self: start 22 | - filter: opacity(60%) 23 | custom_fields: 24 | icon_cells: 25 | - align-self: center 26 | - margin-left: 15px 27 | - margin-top: 4px 28 | - color: ato 29 | value: 30 | - align-self: start 31 | - justify-self: start 32 | - font-weight: bold 33 | - font-size: 14px 34 | - margin-left: 4px 35 | - margin-top: 4px 36 | - margin-bottom: 10px 37 | custom_fields: 38 | icon_cells: | 39 | [[[ 40 | return ` 43 | 44 | ` 45 | ]]] 46 | value: | 47 | [[[ 48 | return ` 49 | ${states['sensor.daily_energy_usage'].state}kWh 50 | ` 51 | 52 | ]]] 53 | card_mod: 54 | style: | 55 | ha-card { 56 | border-radius: 20px; 57 | border-style: none; 58 | box-shadow: 0px 0px 10px -9px black; 59 | 60 | } 61 | -------------------------------------------------------------------------------- /internet_usage_per_user_card.yaml: -------------------------------------------------------------------------------- 1 | type: markdown 2 | content: |- 3 | {% set clients = state_attr('sensor.client_usage','usage_data')%} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | {% for i in range(0, clients | count ) %} 14 | 15 | 16 | 17 | 18 | 19 | {% endfor %} 20 | 21 |
NameUploaded(5s)Downloaded(5s)Total Utilization
{{ clients[i]['client_ip'] }}{{ clients[i]['txps'] }}{{ clients[i]['rxps'] }}{{ clients[i]['gbm'] }}
22 | card_mod: 23 | style: 24 | .: | 25 | ha-card { 26 | border-style: none; 27 | background-color: auto; 28 | box-shadow: 0px 0px 10px -9px black; 29 | 30 | } 31 | ha-markdown { 32 | padding: 0 0 0px 0 !important; 33 | border-radius: 10px; 34 | } 35 | ha-markdown $: | 36 | table { 37 | border-collapse: separate; 38 | border-spacing: 0; 39 | border-radius: 10px; 40 | margin: 25px 0; 41 | font-size: 0.9em; 42 | min-width: 100%; 43 | } 44 | table thead tr { 45 | background-color: #2b79d6; 46 | color: #ffffff; 47 | text-align: left; 48 | 49 | } 50 | table th:first-child { 51 | padding: 8px; 52 | border-radius: 10px 0px 0px 0px; 53 | } 54 | table th:last-child { 55 | padding: 8px; 56 | border-radius: 0px 10px 0px 0px; 57 | } 58 | table td { 59 | padding: 12px 15px; 60 | } 61 | table tbody tr { 62 | border-bottom: 0px solid #dddddd; 63 | } 64 | table tbody tr:nth-of-type(even) { 65 | background-color: var(--primary-background-color); 66 | color: auto 67 | } 68 | table tbody tr:last-of-type { 69 | border-bottom: 2px solid #4e8cd6; 70 | } 71 | table tbody tr.active-row { 72 | font-weight: bold; 73 | color: #009879; 74 | } 75 | -------------------------------------------------------------------------------- /light_card.yaml: -------------------------------------------------------------------------------- 1 | type: custom:button-card 2 | entity: light.bedroom_light 3 | name: Bedroom Room 4 | show_icon: false 5 | styles: 6 | card: 7 | - border-radius: 25px 8 | - border-style: none 9 | - box-shadow: 0px 0px 10px -9px black 10 | grid: 11 | - grid-template-areas: '"icon_cells" "n" "slider"' 12 | - grid-template-columns: 1fr 13 | - grid-template-rows: 1fr min-content min-content 14 | custom_fields: 15 | icon_cells: 16 | - justify-self: start 17 | - margin-top: 12px 18 | - margin-left: 13px 19 | name: 20 | - font-size: 90% 21 | - font-weight: bold 22 | - justify-self: start 23 | - margin-top: 6px 24 | - margin-left: 12px 25 | custom_fields: 26 | icon_cells: | 27 | [[[ 28 | return ` 31 | 32 | ` 33 | ]]] 34 | slider: 35 | card: 36 | type: custom:my-slider-v2 37 | entity: '[[[ return entity.entity_id ]]]' 38 | colorMode: brightness 39 | styles: 40 | card: 41 | - height: 20px 42 | - width: 89% 43 | - margin-left: 12px 44 | - margin-top: 15px 45 | - margin-bottom: 10px 46 | - border-width: 0px 47 | container: 48 | - border-radius: 20px 49 | - margin-left: '-1px' 50 | - width: 101% 51 | track: 52 | - background: | 53 | [[[ 54 | if (entity.state == "on") return 'linear-gradient(to right, #ffee96 , white)'; 55 | else return 'var(--primary-background-color)'; 56 | ]]] 57 | progress: 58 | - height: 100% 59 | - background: '' 60 | - position: absolute 61 | - width: 0.00% 62 | - border-radius: 20px 63 | thumb: 64 | - height: 100% 65 | - background: | 66 | [[[ 67 | if (entity.state == "on") return 'black'; 68 | else return 'var(--primary-text-color)'; 69 | ]]] 70 | - position: absolute 71 | - right: | 72 | [[[ 73 | if (entity.state == "on") return '-5px' ; 74 | else return '-17px'; 75 | ]]] 76 | - height: 15px 77 | - width: 15px 78 | - margin-top: 2.5px 79 | - border-radius: 20px 80 | hold_action: 81 | action: more-info 82 | state: 83 | - value: 'on' 84 | styles: 85 | card: 86 | - background-color: '#ffe871' 87 | - color: black 88 | -------------------------------------------------------------------------------- /information_card_style_1.yaml: -------------------------------------------------------------------------------- 1 | type: custom:stack-in-card 2 | cards: 3 | - type: custom:button-card 4 | entity: sensor.server_cpu_temperature 5 | show_icon: false 6 | name: CPU Temp. 7 | styles: 8 | card: 9 | - border-radius: 20px 10 | - border-style: none 11 | grid: 12 | - grid-template-areas: '"icon_cells icon_cells" "n n" "value value"' 13 | - grid-template-columns: min-content 1fr 14 | - grid-template-rows: min-content min-content 15 | name: 16 | - justify-self: start 17 | - align-self: start 18 | - font-size: 90% 19 | - font-weight: bold 20 | - margin-left: 15px 21 | - margin-top: 5px 22 | custom_fields: 23 | icon_cells: 24 | - justify-self: start 25 | - margin-top: 12px 26 | - margin-left: 15px 27 | value: 28 | - justify-self: start 29 | - align-self: start 30 | - font-size: 60% 31 | - font-weight: normal 32 | - margin-right: 17px 33 | - margin-left: 16px 34 | - margin-top: 4px 35 | - filter: opacity(70%) 36 | custom_fields: 37 | icon_cells: | 38 | [[[ 39 | var temp = states['sensor.server_cpu_temperature'].state; 40 | if( temp > 40) 41 | return ` 44 | 45 | `; 46 | else return ` 49 | 50 | `; 51 | ]]] 52 | value: | 53 | [[[ 54 | var value = states['sensor.server_cpu_temperature'].state; 55 | value = Math.round(value * 100) / 100 56 | return ` 57 | ${value}°C 58 | ` 59 | ]]] 60 | - type: custom:mini-graph-card 61 | entities: 62 | - sensor.server_cpu_temperature 63 | color_thresholds: 64 | - value: 39 65 | color: '#14C38E' 66 | - value: 40 67 | color: '#14C38E' 68 | line_width: 0 69 | show: 70 | icon: false 71 | name: false 72 | state: false 73 | card_mod: 74 | style: | 75 | ha-card { 76 | border-style: none; 77 | margin-top: -35px; 78 | line_color: red; 79 | } 80 | card_mod: 81 | style: | 82 | ha-card { 83 | border-radius: 20px; 84 | border-style: none; 85 | box-shadow: 0px 0px 10px -9px black; 86 | } 87 | -------------------------------------------------------------------------------- /utilization_card.yaml: -------------------------------------------------------------------------------- 1 | type: custom:button-card 2 | entity: sensor.processor_use 3 | show_icon: false 4 | name: CPU Usage 5 | styles: 6 | card: 7 | - border-radius: 20px 8 | - border-style: none 9 | - box-shadow: 0px 0px 10px -9px black 10 | name: 11 | - justify-self: center 12 | - font-size: 90% 13 | - font-weight: bold 14 | - margin-top: 5px 15 | - margin-left: 0px 16 | grid: 17 | - grid-template-areas: '"graph" "icon_cells" "n" "value"' 18 | - grid-template-columns: 1fr 19 | - grid-template-rows: min-content min-content 20 | custom_fields: 21 | graph: 22 | - justify-self: start 23 | - align-self: start 24 | - margin-top: 10px 25 | - margin-left: '-0%' 26 | icon_cells: 27 | - justify-self: center 28 | - margin-top: '-76px' 29 | - margin-left: 0% 30 | value: 31 | - justify-self: center 32 | - align-self: start 33 | - font-size: 80% 34 | - margin-left: 0px 35 | - margin-top: 5px 36 | - margin-bottom: 5px 37 | - filter: opacity(70%) 38 | custom_fields: 39 | icon_cells: | 40 | [[[ 41 | return ` 44 | 45 | ` 46 | ]]] 47 | value: | 48 | [[[ 49 | return `${states['sensor.processor_use'].state} % 50 | ` 51 | ]]] 52 | graph: 53 | card: 54 | type: custom:apexcharts-card 55 | experimental: 56 | color_threshold: true 57 | brush: true 58 | chart_type: radialBar 59 | series: 60 | - entity: sensor.processor_use 61 | color: '#3E54AC' 62 | max: 100 63 | show: 64 | legend_value: false 65 | apex_config: 66 | plotOptions: 67 | radialBar: 68 | offsetY: 0 69 | startAngle: 0 70 | endAngle: 360 71 | hollow: 72 | size: 85% 73 | position: left 74 | dropShadow: 75 | enabled: true 76 | top: 10 77 | left: 10 78 | blur: 4 79 | opacity: 0.24 80 | dataLabels: 81 | name: 82 | show: false 83 | value: 84 | show: false 85 | track: 86 | background: '#ECF2FF' 87 | strokeWidth: 79% 88 | margin: 0 89 | legend: 90 | show: false 91 | chart: 92 | height: 100 93 | card_mod: 94 | style: | 95 | ha-card { 96 | border-style: none; 97 | background-color: transparent; 98 | } 99 | -------------------------------------------------------------------------------- /switch_card.yaml: -------------------------------------------------------------------------------- 1 | type: custom:button-card 2 | entity: switch.server_power 3 | name: Server Switch 4 | show_icon: false 5 | styles: 6 | card: 7 | - border-radius: 25px 8 | - border-style: none 9 | - box-shadow: 0px 0px 10px -9px black 10 | grid: 11 | - grid-template-areas: '"icon_cells" "n" "button"' 12 | - grid-template-columns: 1fr 13 | - grid-template-rows: 1fr min-content min-content 14 | custom_fields: 15 | icon_cells: 16 | - justify-self: start 17 | - margin-top: 12px 18 | - margin-left: 15px 19 | name: 20 | - font-size: 90% 21 | - font-weight: bold 22 | - justify-self: start 23 | - margin-top: 6px 24 | - margin-left: 15px 25 | custom_fields: 26 | icon_cells: | 27 | [[[ 28 | return ` 31 | 32 | ` 33 | ]]] 34 | button: 35 | card: 36 | type: custom:button-card 37 | entity: switch.server_power 38 | show_icon: false 39 | show_name: false 40 | styles: 41 | card: 42 | - border-style: none 43 | - margin-top: '-4%' 44 | - margin-bottom: '-5%' 45 | - background-color: transparent 46 | grid: 47 | - grid-template-areas: '"state icon_cells"' 48 | - grid-template-columns: min-content 1fr 49 | - grid-template-rows: min-content 50 | custom_fields: 51 | state: 52 | - justify-self: start 53 | - align-self: middle 54 | - font-size: 12px 55 | - filter: opacity(50%) 56 | - margin-left: 15px 57 | - margin-top: 1.6px 58 | icon_cells: 59 | - justify-self: end 60 | - align-self: start 61 | - margin-right: 15px 62 | - width: 45px 63 | custom_fields: 64 | icon_cells: | 65 | [[[ 66 | var state = states['switch.server_power'].state; 67 | if(state == "on") 68 | return ` 71 | 72 | `; 73 | else 74 | return ` 77 | 78 | `; 79 | ]]] 80 | state: | 81 | [[[ 82 | var state = states['switch.server_power'].state 83 | if(state == "on") 84 | return `On 85 | `; 86 | else 87 | return `Off 88 | `; 89 | ]]] 90 | hold_action: 91 | action: more-info 92 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Custom Cards 2 | 3 | This Repository gives sample code to make custom cards for HomeAssistant. You will be requiring Custom: Button Card, Mini-Graph Card, my-slider-v2, apex-charts, stack-in-card and Card-mod to be pre-installed to make it work. 4 | 5 | [Card-Mod](https://github.com/thomasloven/lovelace-card-mod) 6 | 7 | [Custom:Button-Card](https://github.com/custom-cards/button-card) 8 | 9 | [Mini-Graph Card](https://github.com/kalkih/mini-graph-card) 10 | 11 | [My-Slider-v2](https://github.com/AnthonMS/my-cards) 12 | 13 | [Stack-in-Card](https://github.com/custom-cards/stack-in-card) 14 | 15 | [ApexCharts](https://github.com/RomRider/apexcharts-card#main-show-options) 16 | 17 | ### Custom Icons 18 | 19 | * Google Material Icons. 20 | * Some from Flaticons. 21 | 22 | #### Install 23 | 24 | ```yaml 25 | resources: 26 | - url: /local/custom_icon.js 27 | type: module 28 | ``` 29 | 30 | ### Person Card 31 | 32 | * Information on Person mobile battery and storage 33 | * Indication for Away from Home Zone and network connection at top right corner. 34 | 35 | ![Person Card](/assets/person_card.jpeg) 36 | 37 | ### Room Card 38 | 39 | * Sensor info under Room name. 40 | * Indication for Active device at top right corner. 41 | 42 | ![Room Cards](/assets/room_card.jpeg) 43 | 44 | ### Light Card 45 | 46 | * Card Color change on light state change. 47 | * Slider for changing brightness(default). Can be changed to use for temperature, color. 48 | 49 | ![Light Card](/assets/light_card.jpeg) 50 | 51 | ### Media Player Card 52 | 53 | * Minimal view card 54 | 55 | ![Media Player Card](/assets/media_card.png) 56 | 57 | ### Switch Card 58 | 59 | * Shows state info. 60 | * Toggle button to indicate on/off state. 61 | 62 | ![Switch-Card](/assets/switch_card.jpeg) 63 | 64 | ### Device Card 65 | 66 | * Show device status battery, storagea other sensors. 67 | * Indication and info of connection type and battery status. 68 | 69 | ![Device Card](/assets/device_card.jpeg) 70 | 71 | ### Usage Card 72 | 73 | * Weekly graph of usage 74 | 75 | ![Usage Card](/assets/usage_card.jpeg) 76 | 77 | ### Utilization Card 78 | 79 | * Shows utilization of resources with progress bar. 80 | 81 | ![Utilization Card](/assets/utilization_card.jpeg) 82 | 83 | ### Storage Card 84 | 85 | * Show Storage with prgress bar. 86 | 87 | ![Storage Card](/assets/storage_card.jpeg) 88 | 89 | ### Information Card 90 | 91 | #### Style 1 92 | 93 | * Shows sensor state information with graph. 94 | 95 | ![Style 1](/assets/information_card_style_1.jpeg) 96 | 97 | #### Style 2 98 | 99 | * Shows sensor state information. 100 | 101 | ![Style 2](/assets/information_card_style_2.jpeg) 102 | 103 | #### Style 3 104 | 105 | * Shows sensor state information. 106 | 107 | ![Style 3](/assets/information_card_style_3.jpeg) 108 | -------------------------------------------------------------------------------- /storage_card.yaml: -------------------------------------------------------------------------------- 1 | type: custom:stack-in-card 2 | cards: 3 | - type: custom:button-card 4 | entity: sensor.internal_available_space 5 | show_icon: false 6 | name: Internal Storage 7 | styles: 8 | card: 9 | - border-radius: 20px 10 | - border-style: none 11 | - box-shadow: 0px 0px 10px -9px black 12 | grid: 13 | - grid-template-areas: '"icon_cells icon_cells" "n n" "value value_2"' 14 | - grid-template-columns: min-content 1fr 15 | - grid-template-rows: min-content min-content 16 | name: 17 | - justify-self: start 18 | - align-self: start 19 | - font-size: 90% 20 | - font-weight: bold 21 | - margin-left: 15px 22 | - margin-top: 5px 23 | custom_fields: 24 | icon_cells: 25 | - justify-self: start 26 | - margin-top: 12px 27 | - margin-left: 15px 28 | value: 29 | - justify-self: start 30 | - align-self: start 31 | - font-size: 60% 32 | - font-weight: normal 33 | - margin-right: 17px 34 | - margin-left: 16px 35 | - margin-top: 15px 36 | - filter: opacity(70%) 37 | value_2: 38 | - justify-self: end 39 | - align-self: start 40 | - font-size: 60% 41 | - font-weight: normal 42 | - margin-right: 17px 43 | - margin-left: 17px 44 | - margin-top: 15px 45 | - filter: opacity(70%) 46 | custom_fields: 47 | icon_cells: | 48 | [[[ 49 | return ` 52 | 53 | ` 54 | ]]] 55 | value: | 56 | [[[ 57 | return ` 58 | ${states['sensor.internal_available_space'].state}B Free 59 | ` 60 | ]]] 61 | value_2: | 62 | [[[ 63 | return ` 64 | 2.1GB 65 | ` 66 | ]]] 67 | - type: custom:bar-card 68 | height: 10px 69 | color: '#2192FF' 70 | entities: 71 | - entity: sensor.disk_use_percent 72 | positions: 73 | name: 'off' 74 | icon: 'off' 75 | indicator: 'off' 76 | minmax: 'off' 77 | title: 'off' 78 | value: 'off' 79 | style: |- 80 | .contentbar-direction-right { 81 | flex-direction: column; 82 | } 83 | bar-card-card { 84 | border-style: none; 85 | } 86 | bar-card-currentbar, bar-card-backgroundbar { 87 | border-radius: 15px; 88 | } ha-card { 89 | background-color: transparent; 90 | box-shadow: none; 91 | border-style: none; 92 | margin-top: -21px; 93 | margin-left: -2px 94 | margin-bottom: 0px; 95 | } 96 | card_mod: 97 | style: | 98 | ha-card { 99 | border-radius: 20px; 100 | border-style: none; 101 | box-shadow: 0px 0px 10px -9px black; 102 | } 103 | -------------------------------------------------------------------------------- /room_card.yaml: -------------------------------------------------------------------------------- 1 | type: custom:button-card 2 | entity: light.living_room_light 3 | show_icon: false 4 | name: Living Room 5 | styles: 6 | card: 7 | - border-radius: 20px 8 | - border-style: none 9 | - box-shadow: 0px 0px 10px -9px black 10 | custom_fields: 11 | icon_cells: 12 | - justify-self: start 13 | - margin-top: 12px 14 | - margin-left: 15px 15 | devices: 16 | - justify-self: end 17 | - margin-right: 10px 18 | - margin-top: '-17px' 19 | temp: 20 | - filter: opacity(80%) 21 | - justify-self: start 22 | - margin-left: 10px 23 | - margin-top: '-2px' 24 | - padding-bottom: 10% 25 | graph: 26 | - padding-top: 0% 27 | - width: 100% 28 | - height: 0% 29 | - margin-bottom: '-1%' 30 | icon: 31 | - width: 25px 32 | - color: auto 33 | name: 34 | - font-size: 90% 35 | - font-weight: bold 36 | - justify-self: start 37 | - margin-top: 6px 38 | - margin-left: 12px 39 | grid: 40 | - grid-template-areas: '"icon_cells devices" "n n" "temp temp" "graph graph"' 41 | - grid-template-columns: 1fr min-content 42 | - grid-template-rows: 1fr min-content min-content min-content 43 | custom_fields: 44 | icon_cells: | 45 | [[[ 46 | return ` 49 | 50 | ` 51 | ]]] 52 | devices: | 53 | [[[ 54 | var codeBlk = ""; 55 | if (states['binary_sensor.hall_motion_detection'].state == 'on') 56 | codeBlk = ` 59 | `; 60 | if (states['light.living_room_light'].state == 'on') 61 | codeBlk = codeBlk + " " + ` 64 | 65 | `; 66 | if (states['media_player.living_room_speaker'].state != 'off') 67 | codeBlk = codeBlk + " " + ` 70 | 71 | `; 72 | return codeBlk; 73 | 74 | ]]] 75 | temp: | 76 | [[[ 77 | return ` 80 | 81 | ${states['sensor.living_room_temperature'].state}°C 82 | 85 | 86 | ${states['sensor.living_room_humidity'].state}%` 87 | 88 | ]]] 89 | graph: 90 | card: 91 | type: custom:mini-graph-card 92 | entities: 93 | - entity: sensor.living_room_temperature 94 | color: '#DC0000' 95 | line_width: 0 96 | show: 97 | icon: false 98 | name: false 99 | legend: false 100 | state: false 101 | card_mod: 102 | style: | 103 | ha-card { 104 | background: none; 105 | border-style: none; 106 | margin-top: -40px; 107 | } 108 | 109 | -------------------------------------------------------------------------------- /person_card.yaml: -------------------------------------------------------------------------------- 1 | type: custom:button-card 2 | entity: person.person_name 3 | show_icon: false 4 | name: Person Name 5 | styles: 6 | card: 7 | - border-radius: 20px 8 | - border-style: none 9 | - box-shadow: 0px 0px 10px -9px black 10 | custom_fields: 11 | icon_cells: 12 | - justify-self: start 13 | - margin-top: 12px 14 | - margin-left: 15px 15 | devices: 16 | - justify-self: end 17 | - margin-right: 8px 18 | - margin-top: '-17px' 19 | temp: 20 | - filter: opacity(80%) 21 | - justify-self: start 22 | - margin-left: 10px 23 | - margin-top: '-2px' 24 | - padding-bottom: 5% 25 | graph: 26 | - padding-top: 0% 27 | - width: 100% 28 | - height: 0% 29 | - margin-bottom: '-1%' 30 | icon: 31 | - width: 25px 32 | - color: auto 33 | name: 34 | - font-size: 90% 35 | - font-weight: bold 36 | - justify-self: start 37 | - margin-top: 6px 38 | - margin-left: 12px 39 | grid: 40 | - grid-template-areas: '"icon_cells devices" "n n" "temp temp" ' 41 | - grid-template-columns: 1fr min-content 42 | - grid-template-rows: 1fr min-content min-content 43 | custom_fields: 44 | icon_cells: | 45 | [[[ 46 | return ` 49 | 50 | ` 51 | ]]] 52 | devices: | 53 | [[[ 54 | var codeBlk = ""; 55 | if (states['person.person_name'].state != 'home') 56 | codeBlk = codeBlk + " " + ` 59 | 60 | `; 61 | if (states['sensor.iphone_connection_type'].state != 'Wi-Fi') 62 | codeBlk = codeBlk + " " + ` 65 | 66 | `; 67 | if (states['sensor.iphone_battery_state'].state != 'Not Charging') 68 | codeBlk = codeBlk + " " + ` 71 | 72 | `; 73 | return codeBlk; 74 | 75 | ]]] 76 | temp: | 77 | [[[ 78 | var icon_battery = "ssb:battery-full"; 79 | var battery_level = states['sensor.iphone_battery_level'].state; 80 | if(battery_level < 20 ) icon_battery = "ssb:battery-0"; 81 | else if(battery_level > 20 && battery_level < 30) icon_battery = "ssb:battery-1"; 82 | else if(battery_level > 30 && battery_level < 40) icon_battery = "ssb:battery-2"; 83 | else if(battery_level > 40 && battery_level < 50) icon_battery = "ssb:battery-3"; 84 | else if(battery_level > 50 && battery_level < 60) icon_battery = "ssb:battery-4"; 85 | else if(battery_level > 60 && battery_level < 70) icon_battery = "ssb:battery-5"; 86 | else if(battery_level > 70 && battery_level < 80) icon_battery = "ssb:battery-6"; 87 | else if(battery_level > 90) icon_battery = "ssb:battery-full"; 88 | return ` 91 | 92 | ${battery_level}% 93 | 96 | 97 | ${states['sensor.iphone_storage'].state}%` 98 | 99 | ]]] 100 | -------------------------------------------------------------------------------- /download_upload_cards.yaml: -------------------------------------------------------------------------------- 1 | square: false 2 | columns: 1 3 | type: grid 4 | cards: 5 | - square: false 6 | columns: 2 7 | type: grid 8 | cards: 9 | - type: custom:stack-in-card 10 | cards: 11 | - type: custom:button-card 12 | entity: sensor.internet_rx_per_sec 13 | show_icon: false 14 | name: Download 15 | styles: 16 | card: 17 | - height: 71px 18 | - border-radius: 20px 19 | - border-style: none 20 | grid: 21 | - grid-template-areas: '"icon_cells n" "value value"' 22 | - grid-template-columns: min-content 1fr 23 | - grid-template-rows: min-content min-content 24 | name: 25 | - align-self: start 26 | - font-weight: bold 27 | - font-size: 90% 28 | - margin-left: 10px 29 | - margin-top: 10px 30 | - justify-self: start 31 | custom_fields: 32 | icon_cells: 33 | - align-self: start 34 | - margin-left: 10px 35 | - margin-top: 8px 36 | - color: '#5a3c83' 37 | value: 38 | - align-self: start 39 | - justify-self: start 40 | - font-weight: normal 41 | - font-size: 11px 42 | - margin-left: 40.5px 43 | - margin-top: 6px 44 | - filter: opacity(70%) 45 | custom_fields: 46 | icon_cells: | 47 | [[[ 48 | return ` 51 | 52 | ` 53 | ]]] 54 | value: | 55 | [[[ 56 | return ` 57 | ${states['sensor.internet_rx_per_sec'].state} 58 | ` 59 | 60 | ]]] 61 | card_mod: 62 | style: | 63 | ha-card { 64 | border-radius: 15px; 65 | border-style: none; 66 | box-shadow: 0px 0px 10px -9px black; 67 | } 68 | - type: custom:stack-in-card 69 | cards: 70 | - type: custom:button-card 71 | entity: sensor.internet_tx_per_sec 72 | show_icon: false 73 | name: Upload 74 | styles: 75 | card: 76 | - height: 71px 77 | - border-radius: 20px 78 | - border-style: none 79 | grid: 80 | - grid-template-areas: '"icon_cells n" "value value"' 81 | - grid-template-columns: min-content 1fr 82 | - grid-template-rows: min-content min-content 83 | name: 84 | - align-self: start 85 | - font-weight: bold 86 | - font-size: 90% 87 | - margin-left: 10px 88 | - margin-top: 10px 89 | - justify-self: start 90 | custom_fields: 91 | icon_cells: 92 | - align-self: start 93 | - margin-left: 10px 94 | - margin-top: 8px 95 | - color: '#42a69d' 96 | value: 97 | - align-self: start 98 | - justify-self: start 99 | - font-weight: normal 100 | - font-size: 11px 101 | - margin-left: 40.5px 102 | - margin-top: 6px 103 | - filter: opacity(70%) 104 | custom_fields: 105 | icon_cells: | 106 | [[[ 107 | return ` 110 | 111 | ` 112 | ]]] 113 | value: | 114 | [[[ 115 | return ` 116 | ${states['sensor.internet_tx_per_sec'].state} 117 | ` 118 | 119 | ]]] 120 | card_mod: 121 | style: | 122 | ha-card { 123 | border-radius: 15px; 124 | border-style: none; 125 | box-shadow: 0px 0px 10px -9px black; 126 | } 127 | -------------------------------------------------------------------------------- /usage_card.yaml: -------------------------------------------------------------------------------- 1 | type: custom:stack-in-card 2 | cards: 3 | - type: custom:button-card 4 | entity: sensor.internet_usage_per_day 5 | show_icon: false 6 | name: Usage 7 | styles: 8 | card: 9 | - border-style: none 10 | grid: 11 | - grid-template-areas: >- 12 | "n sec_info_2_title" "sec_info sec_info_2_title" "sec_info_2 13 | sec_info_2" 14 | - grid-template-columns: 1fr min-content 15 | - grid-template-rows: 1fr 16 | name: 17 | - justify-self: start 18 | - align-self: start 19 | - font-size: 90% 20 | - font-weight: bold 21 | - margin-top: 5px 22 | - margin-left: 15px 23 | custom_fields: 24 | sec_info: 25 | - justify-self: start 26 | - align-self: start 27 | - filter: opacity(50%) 28 | - font-size: 10px 29 | - margin-top: 2px 30 | - margin-left: 15px 31 | sec_info_2: 32 | - justify-self: end 33 | - align-self: end 34 | - filter: opacity(100%) 35 | - font-size: 8px 36 | - margin-top: '-5px' 37 | - margin-right: 15px 38 | sec_info_2_title: 39 | - justify-self: end 40 | - align-self: start 41 | - filter: opacity(50%) 42 | - font-size: 10px 43 | - margin-top: 18px 44 | - margin-right: 15px 45 | custom_fields: 46 | sec_info: | 47 | [[[ 48 | var today = states['sensor.internet_usage_per_day'].state; 49 | return `Today: ${today} 50 | 51 | ` 52 | ]]] 53 | sec_info_2: | 54 | [[[ 55 | var today = states['sensor.internet_usage_per_month'].state; 56 | return `${today}/91 GB 57 | ` 58 | ]]] 59 | sec_info_2_title: | 60 | [[[ 61 | 62 | return `This Month 63 | ` 64 | ]]] 65 | - type: custom:apexcharts-card 66 | update_interval: 10min 67 | card_mod: 68 | style: | 69 | ha-card { 70 | border-style: none; 71 | margin-top: -30px; 72 | margin-left: -10px; 73 | } 74 | graph_span: 7d 75 | span: 76 | start: day 77 | offset: '-6d' 78 | series: 79 | - entity: sensor.internet_usage_per_day 80 | type: column 81 | show: 82 | datalabels: true 83 | group_by: 84 | func: delta 85 | duration: 1d 86 | apex_config: 87 | states: 88 | hover: 89 | filter: 90 | type: none 91 | dataLabels: 92 | enabled: false 93 | offsetY: -8 94 | formatter: | 95 | EVAL:function(value) { 96 | if(value != null){ 97 | 98 | return value + " "; 99 | } 100 | } 101 | style: 102 | fontSize: 10px 103 | colors: 104 | - '#ff8c52' 105 | background: 106 | enabled: false 107 | grid: 108 | show: false 109 | chart: 110 | dropShadow: 111 | enabled: true 112 | top: 0 113 | left: 0 114 | blur: 1.5 115 | opacity: 0.5 116 | color: '#4e8cd6' 117 | plotOptions: 118 | bar: 119 | columnWidth: 40% 120 | borderRadius: 5 121 | xaxis: 122 | axisTicks: 123 | show: false 124 | axisBorder: 125 | show: false 126 | labels: 127 | offsetY: -5 128 | datetimeFormatter: 129 | day: ddd 130 | yaxis: 131 | - min: 0 132 | crosshairs: 133 | show: false 134 | axisTicks: 135 | show: false 136 | tickAmount: 8 137 | labels: 138 | show: false 139 | maxwidth: 4 140 | tooltip: 141 | enabled: false 142 | fill: 143 | type: gradient 144 | gradient: 145 | shadeIntensity: 1 146 | type: vertical 147 | opacityFrom: 0.7 148 | opacityTo: 0.9 149 | colorStops: 150 | - offset: 0 151 | color: '#4e8cd6' 152 | opacity: 1 153 | - offset: 100 154 | color: '#2b79d6' 155 | opacity: 1 156 | card_mod: 157 | style: | 158 | ha-card { 159 | border-radius: 20px; 160 | border-style: none; 161 | box-shadow: 0px 0px 10px -9px black; 162 | } 163 | -------------------------------------------------------------------------------- /media_card.yaml: -------------------------------------------------------------------------------- 1 | type: custom:button-card 2 | entity: media_player.living_room_speaker 3 | show_icon: false 4 | show_name: false 5 | tap_action: 6 | action: call-service 7 | service: media_player.media_play_pause 8 | service_data: 9 | entity_id: '[[[ return entity.entity_id ]]]' 10 | double_tap_action: 11 | action: call-service 12 | service: media_player.media_next_track 13 | service_data: 14 | entity_id: '[[[ return entity.entity_id ]]]' 15 | hold_action: 16 | action: more-info 17 | styles: 18 | card: 19 | - border-radius: 20px 20 | - border-style: none 21 | - box-shadow: 0px 0px 10px -9px black 22 | - height: | 23 | [[[ 24 | if (entity.state == "playing" || entity.state == "paused") return '150px' ; 25 | else return '73px'; 26 | ]]] 27 | grid: 28 | - grid-template-areas: >- 29 | "icon_cells title title" "icon_cells alubm alubm" "volume_dec 30 | volume_slider volume_inc" 31 | - grid-template-columns: min-content 1fr min-content 32 | - grid-template-rows: min-content min-content min-content 33 | custom_fields: 34 | icon_cells: 35 | - justify-self: start 36 | - align-self: start 37 | - margin-left: 20px 38 | title: 39 | - justify-self: start 40 | - align-self: end 41 | - font-size: 15px 42 | - font-weight: bold 43 | - margin-top: | 44 | [[[ 45 | if (entity.state == "playing" || entity.state == "paused") return '-5px' ; 46 | else return '13px'; 47 | ]]] 48 | - margin-left: 20px 49 | alubm: 50 | - justify-self: start 51 | - align-self: start 52 | - color: var(--secondary-text-color) 53 | - font-size: 12px 54 | - margin-left: 20px 55 | - margin-top: 3px 56 | volume_dec: 57 | - margin-left: 5px 58 | volume_inc: 59 | - margin-right: 5px 60 | volume_slider: 61 | - margin-left: '-35px' 62 | custom_fields: 63 | icon_cells: | 64 | [[[ 65 | if (states['media_player.living_room_speaker'].state == 'off') 66 | return ` 69 | 70 | `; 71 | else if (states['media_player.living_room_speaker'].state == 'idle') 72 | return ` 75 | 76 | `; 77 | else 78 | return ` 79 | GeeksforGeeks logo 83 | `; 84 | ]]] 85 | title: | 86 | [[[ 87 | if (states['media_player.living_room_speaker'].state == 'off') 88 | return ` 89 | ${entity.attributes.friendly_name} 90 | `; 91 | else if (states['media_player.living_room_speaker'].state == 'idle') 92 | return ` 93 | ${entity.attributes.friendly_name} 94 | `; 95 | else 96 | return ` 97 | ${entity.attributes.media_title} 98 | `; 99 | ]]] 100 | alubm: | 101 | [[[ 102 | if (states['media_player.living_room_speaker'].state == 'playing' || states['media_player.living_room_speaker'].state == 'paused' || 103 | states['media_player.living_room_speaker'].state == 'buffering') 104 | return ` 105 | ${entity.attributes.media_artist}` 106 | 107 | ]]] 108 | volume_dec: 109 | card: 110 | type: custom:button-card 111 | entity: media_player.living_room_speaker 112 | show_name: false 113 | icon: ssb:volume-down 114 | styles: 115 | card: 116 | - border-style: none 117 | - width: 50px 118 | - height: 50px 119 | tap_action: 120 | action: call-service 121 | service: media_player.volume_down 122 | service_data: 123 | entity_id: '[[[ return entity.entity_id ]]]' 124 | volume_inc: 125 | card: 126 | type: custom:button-card 127 | entity: media_player.living_room_speaker 128 | show_name: false 129 | icon: ssb:volume-up 130 | styles: 131 | card: 132 | - border-style: none 133 | - width: 50px 134 | - height: 50px 135 | tap_action: 136 | action: call-service 137 | service: media_player.volume_up 138 | service_data: 139 | entity_id: '[[[ return entity.entity_id ]]]' 140 | volume_slider: 141 | card: 142 | type: custom:my-slider-v2 143 | entity: '[[[ return entity.entity_id ]]]' 144 | styles: 145 | card: 146 | - height: 2px 147 | - width: 100% 148 | - margin-left: 0px 149 | - margin-top: 0px 150 | - margin-bottom: 0px 151 | - border-width: 0px 152 | container: 153 | - border-radius: 2px 154 | - margin-left: 0px 155 | - width: 100% 156 | track: 157 | - background: | 158 | [[[ 159 | return 'var(--primary-background-color)'; 160 | ]]] 161 | progress: 162 | - height: 100% 163 | - background: var(--primary-text-color) 164 | - position: absolute 165 | - width: 0.00% 166 | - border-radius: 20px 167 | thumb: 168 | - background: | 169 | [[[ 170 | return 'var(--primary-text-color)'; 171 | ]]] 172 | - position: absolute 173 | - right: 1px 174 | - height: 5px 175 | - width: 5px 176 | - margin-top: 0px 177 | - border-radius: 20px 178 | -------------------------------------------------------------------------------- /remote_access_stats_card.yaml: -------------------------------------------------------------------------------- 1 | type: custom:button-card 2 | entity: sensor.public_ip_address 3 | show_name: false 4 | show_icon: false 5 | styles: 6 | card: 7 | - border-radius: 15px 8 | - border-style: none 9 | - box-shadow: 0px 0px 10px -9px black 10 | grid: 11 | - grid-template-areas: '"title_card title_card" "info1 info1" "info2 info2" "info3 info3"' 12 | - grid-template-columns: min-content 1fr 13 | - grid-template-rows: min-content min-content 14 | custom_fields: 15 | title_card: 16 | - margin-top: '-10px' 17 | custom_fields: 18 | title_card: 19 | card: 20 | type: custom:button-card 21 | styles: 22 | card: 23 | - border-style: none 24 | grid: 25 | - grid-template-areas: '"icon_cells title_name" "icon_cells subtitle_name"' 26 | - grid-template-columns: min-content min-content 27 | - grid-template-rows: min-content min-content 28 | custom_fields: 29 | title_name: 30 | - color: auto 31 | - align-self: start 32 | - font-weight: bold 33 | - font-size: 90% 34 | - margin-left: 10px 35 | - margin-top: '-5px' 36 | - justify-self: start 37 | subtitle_name: 38 | - color: auto 39 | - align-self: start 40 | - font-weight: nomral 41 | - font-size: 70% 42 | - margin-left: 10px 43 | - margin-top: '-4px' 44 | - filter: opacity(40%) 45 | - justify-self: start 46 | icon_cells: 47 | - color: green 48 | - align-self: start 49 | - margin-left: 10px 50 | - margin-top: '-10px' 51 | - justify-self: start 52 | custom_fields: 53 | icon_cells: | 54 | [[[ 55 | return ` 58 | 59 | ` 60 | ]]] 61 | title_name: | 62 | [[[ 63 | return `Remote Access Stats 64 | ` 65 | ]]] 66 | subtitle_name: | 67 | [[[ 68 | return `HomeLab Servers 69 | ` 70 | ]]] 71 | info1: 72 | card: 73 | type: custom:button-card 74 | styles: 75 | card: 76 | - border-style: none 77 | - padding: 10px 0px 0px 20px 78 | grid: 79 | - grid-template-areas: '"title_name subtitle_name"' 80 | - grid-template-columns: 1fr min-content 81 | - grid-template-rows: min-content 82 | custom_fields: 83 | title_name: 84 | - color: auto 85 | - align-self: start 86 | - font-weight: normal 87 | - font-size: 80% 88 | - filter: opacity(40%) 89 | - margin-left: 10px 90 | - margin-top: '-2px' 91 | - justify-self: start 92 | subtitle_name: 93 | - color: auto 94 | - align-self: start 95 | - font-weight: normal 96 | - font-size: 70% 97 | - margin-right: 25px 98 | - margin-top: 0px 99 | - filter: opacity(100%) 100 | - justify-self: end 101 | custom_fields: 102 | title_name: | 103 | [[[ 104 | return `Current IP 105 | ` 106 | ]]] 107 | subtitle_name: | 108 | [[[ 109 | return `${states['sensor.public_ip_address'].state} 110 | ` 111 | ]]] 112 | info2: 113 | card: 114 | type: custom:button-card 115 | styles: 116 | card: 117 | - border-style: none 118 | - padding: 10px 0px 0px 20px 119 | grid: 120 | - grid-template-areas: '"title_name subtitle_name"' 121 | - grid-template-columns: 1fr min-content 122 | - grid-template-rows: min-content 123 | custom_fields: 124 | title_name: 125 | - color: auto 126 | - align-self: start 127 | - font-weight: normal 128 | - font-size: 80% 129 | - filter: opacity(40%) 130 | - margin-left: 10px 131 | - margin-top: '-2px' 132 | - justify-self: start 133 | subtitle_name: 134 | - color: auto 135 | - align-self: start 136 | - font-weight: normal 137 | - font-size: 70% 138 | - margin-right: 25px 139 | - margin-top: 0px 140 | - filter: opacity(100%) 141 | - justify-self: end 142 | custom_fields: 143 | title_name: | 144 | [[[ 145 | return `Home Assistant Tunnel 146 | ` 147 | ]]] 148 | subtitle_name: | 149 | [[[ 150 | if(states['sensor.tunnel_status'].state != 'unknown'){ 151 | var tunnel_states = states['sensor.tunnel_status'].attributes.http_codes.ha_tunnel_code 152 | if(tunnel_states == 200){ 153 | return `Up 154 | `;}else{ 155 | return `Down 156 | `; 157 | }}else{ 158 | return `Down 159 | `; 160 | } 161 | ]]] 162 | info3: 163 | card: 164 | type: custom:button-card 165 | styles: 166 | card: 167 | - border-style: none 168 | - padding: 10px 0px 0px 20px 169 | grid: 170 | - grid-template-areas: '"title_name subtitle_name"' 171 | - grid-template-columns: 1fr min-content 172 | - grid-template-rows: min-content 173 | custom_fields: 174 | title_name: 175 | - color: auto 176 | - align-self: start 177 | - font-weight: normal 178 | - font-size: 80% 179 | - filter: opacity(40%) 180 | - margin-left: 10px 181 | - margin-top: '-2px' 182 | - justify-self: start 183 | subtitle_name: 184 | - color: auto 185 | - align-self: start 186 | - font-weight: normal 187 | - font-size: 70% 188 | - margin-right: 25px 189 | - margin-top: 0px 190 | - filter: opacity(100%) 191 | - justify-self: end 192 | custom_fields: 193 | title_name: | 194 | [[[ 195 | return `Vault Tunnel 196 | ` 197 | ]]] 198 | subtitle_name: | 199 | [[[ 200 | if(states['sensor.tunnel_status'].state != 'unknown'){ 201 | var tunnel_states = states['sensor.tunnel_status'].attributes.http_codes.vault_tunnel_code 202 | if(tunnel_states == 200){ 203 | return `Up 204 | `;}else{ 205 | return `Down 206 | `; 207 | }}else{ 208 | return `Down 209 | `; 210 | } 211 | ]]] 212 | -------------------------------------------------------------------------------- /device_card.yaml: -------------------------------------------------------------------------------- 1 | type: custom:button-card 2 | entity: person.person_name 3 | show_icon: false 4 | name: Apple Iphone 5 | styles: 6 | card: 7 | - border-radius: 20px 8 | - border-style: none 9 | - box-shadow: 0px 0px 10px -9px black 10 | custom_fields: 11 | icon_cells: 12 | - justify-self: start 13 | - margin-top: 12px 14 | - margin-left: 15px 15 | devices: 16 | - justify-self: end 17 | - margin-right: 8px 18 | - margin-top: '-17px' 19 | temp: 20 | - justify-self: start 21 | - margin-left: 12px 22 | - margin-top: '-4px' 23 | - padding-bottom: 5% 24 | sec_title: 25 | - justify-self: start 26 | - font-size: 10px 27 | - margin-left: 12px 28 | - margin-top: 2px 29 | - filter: opacity(40%) 30 | icon: 31 | - width: 25px 32 | - color: auto 33 | name: 34 | - font-size: 90% 35 | - font-weight: bold 36 | - justify-self: start 37 | - margin-top: 6px 38 | - margin-left: 12px 39 | grid: 40 | - grid-template-areas: '"icon_cells devices" "n n" "sec_title sec_title" "temp temp"' 41 | - grid-template-columns: 1fr min-content 42 | - grid-template-rows: 1fr min-content min-content 43 | custom_fields: 44 | sec_title: | 45 | [[[ 46 | return `Owner Name 47 | ` 48 | ]]] 49 | icon_cells: | 50 | [[[ 51 | return ` 54 | 55 | ` 56 | ]]] 57 | devices: | 58 | [[[ 59 | var codeBlk = ""; 60 | if (states['person.person_name'].state != 'home') 61 | codeBlk = codeBlk + " " + ` 64 | 65 | `; 66 | if (states['sensor.iphone_connection_type'].state != 'Wi-Fi') 67 | codeBlk = codeBlk + " " + ` 70 | 71 | `; 72 | else 73 | codeBlk = codeBlk + " " + ` 76 | 77 | `; 78 | 79 | var icon_battery = "ssb:battery-v2-slash"; 80 | var battery_level = states['sensor.iphone_battery_level'].state; 81 | var charge_state = states['sensor.iphone_battery_state'].state; 82 | 83 | if (charge_state != 'Not Charging') icon_battery = "ssb:battery-v2-charging"; 84 | else if(battery_level <= 20 ) icon_battery = "ssb:battery-v2-low"; 85 | else if(battery_level > 20 && battery_level < 40) icon_battery = "ssb:battery-v2-1"; 86 | else if(battery_level > 40 && battery_level < 60) icon_battery = "ssb:battery-v2-2"; 87 | else if(battery_level > 60 && battery_level < 80) icon_battery = "ssb:battery-v2-3"; 88 | else if(battery_level => 80) icon_battery = "ssb:battery-v2-full"; 89 | 90 | codeBlk = codeBlk + " " + ` 93 | 94 | ${battery_level}% 95 | `; 96 | return codeBlk; 97 | 98 | ]]] 99 | temp: 100 | card: 101 | type: custom:button-card 102 | styles: 103 | card: 104 | - border-style: none 105 | - background-color: transparent 106 | - padding-right: 10px 107 | - margin-bottom: '-10px' 108 | grid: 109 | - grid-template-areas: '"storage steps distance"' 110 | - grid-template-columns: min-content min-content 111 | - grid-template-rows: 1fr 112 | custom_fields: 113 | icon: 114 | - margin-top: 1px 115 | custom_fields: 116 | storage: 117 | card: 118 | type: custom:button-card 119 | styles: 120 | card: 121 | - border-radius: 7px 122 | - border-style: none 123 | - background-color: var(--secondary-background-color) 124 | - margin-top: 10px 125 | - padding-left: 10px 126 | - padding-right: 10px 127 | - padding-bottom: 5px 128 | grid: 129 | - grid-template-areas: '"icon value"' 130 | - grid-template-columns: min-content min-content 131 | - grid-template-rows: 1fr 132 | custom_fields: 133 | icon: 134 | - margin-top: 0px 135 | value: 136 | - margin-top: '-1px' 137 | custom_fields: 138 | value: | 139 | [[[ 140 | return ` 141 | 142 | ${states['sensor.iphone_storage'].state}%` 143 | 144 | ]]] 145 | icon: | 146 | [[[ 147 | return ` 150 | ` 151 | ]]] 152 | steps: 153 | card: 154 | type: custom:button-card 155 | styles: 156 | card: 157 | - border-radius: 7px 158 | - border-style: none 159 | - background-color: var(--secondary-background-color) 160 | - margin-top: 10px 161 | - margin-left: 3px 162 | - padding-left: 10px 163 | - padding-right: 10px 164 | - padding-bottom: 5px 165 | grid: 166 | - grid-template-areas: '"icon value"' 167 | - grid-template-columns: min-content min-content min-content 168 | - grid-template-rows: 1fr 169 | custom_fields: 170 | icon: 171 | - margin-top: 1px 172 | value: 173 | - margin-top: '-0px' 174 | custom_fields: 175 | value: | 176 | [[[ 177 | return ` 178 | 179 | ${states['sensor.iphone_steps'].state}` 180 | 181 | ]]] 182 | icon: | 183 | [[[ 184 | return ` 187 | ` 188 | ]]] 189 | distance: 190 | card: 191 | type: custom:button-card 192 | styles: 193 | card: 194 | - border-radius: 7px 195 | - border-style: none 196 | - background-color: var(--secondary-background-color) 197 | - margin-top: 10px 198 | - margin-left: 6px 199 | - padding-left: 10px 200 | - padding-right: 10px 201 | - padding-bottom: 5px 202 | grid: 203 | - grid-template-areas: '"icon value"' 204 | - grid-template-columns: min-content min-content 205 | - grid-template-rows: 1fr 206 | custom_fields: 207 | icon: 208 | - margin-top: 0px 209 | value: 210 | - margin-top: '-2.5px' 211 | custom_fields: 212 | value: | 213 | [[[ 214 | return ` 215 | 216 | ${states['sensor.iphone_distance'].state}` 217 | 218 | ]]] 219 | icon: | 220 | [[[ 221 | return ` 224 | ` 225 | ]]] 226 | -------------------------------------------------------------------------------- /custom_icon.js: -------------------------------------------------------------------------------- 1 | var icons = { 2 | "google-mini":[0,96,960,960,"M300 646q12 0 21-9t9-21q0-12-9-21t-21-9q-12 0-21 9t-9 21q0 12 9 21t21 9Zm120 0q12 0 21-9t9-21q0-12-9-21t-21-9q-12 0-21 9t-9 21q0 12 9 21t21 9Zm120 0q12 0 21-9t9-21q0-12-9-21t-21-9q-12 0-21 9t-9 21q0 12 9 21t21 9Zm120 0q12 0 21-9t9-21q0-12-9-21t-21-9q-12 0-21 9t-9 21q0 12 9 21t21 9ZM480 976q-75 0-140.5-28.5t-114-77q-48.5-48.5-77-114T120 616q0-145 97-246t233-112V126q0-12.75 8.675-21.375Q467.351 96 480.175 96 493 96 501.5 104.625T510 126v132q136 11 233 112t97 246q0 75-28.5 140.5t-77 114q-48.5 48.5-114 77T480 976Zm0-60q125 0 212.5-87.5T780 616q0-125-87.5-212.5T480 316q-125 0-212.5 87.5T180 616q0 125 87.5 212.5T480 916Zm0-300Z"], 3 | "cash":[0,96,960,960,"M540 636q-50 0-85-35t-35-85q0-50 35-85t85-35q50 0 85 35t35 85q0 50-35 85t-85 35ZM220 776q-24.75 0-42.375-17.625T160 716V316q0-24.75 17.625-42.375T220 256h640q24.75 0 42.375 17.625T920 316v400q0 24.75-17.625 42.375T860 776H220Zm100-60h440q0-42 29-71t71-29V416q-42 0-71-29t-29-71H320q0 42-29 71t-71 29v200q42 0 71 29t29 71Zm480 180H100q-24.75 0-42.375-17.625T40 836V376h60v460h700v60ZM220 716V316v400Z"], 4 | "card":[0,96,960,960,"M880 316v520q0 24-18 42t-42 18H140q-24 0-42-18t-18-42V316q0-24 18-42t42-18h680q24 0 42 18t18 42ZM140 425h680V316H140v109Zm0 129v282h680V554H140Zm0 282V316v520Z"], 5 | "iphone":[0,0,128,128,"M39,0C56.723-.119,78.477-1.131,93,2c4.343,9.585,3,24.141,3,38v81H95l-1,4-3,1v1H89v1H39v-1l-4-1c-4.343-9.585-3-24.141-3-38V7h1l1-4C35.749,2.263,37.837,1.378,39,0ZM80,4L79,8H49L48,4H39a19.219,19.219,0,0,1-3,3V121a19.766,19.766,0,0,1,3,3H89a19.213,19.213,0,0,1,3-3V7C87.233,4.235,88.245,3.9,80,4Z"], 6 | "laptop-mac":[0,96,960,960,"M57 896q-23.513 0-40.256-17.625Q0 860.75 0 836h141q-24 0-42-18t-18-42V276q0-24 18-42t42-18h678q24 0 42 18t18 42v500q0 24-18 42t-42 18h141q0 25-17.625 42.5T900 896H57Zm423-22q14.45 0 24.225-9.775Q514 854.45 514 840q0-14.45-9.775-24.225Q494.45 806 480 806q-14.45 0-24.225 9.775Q446 825.55 446 840q0 14.45 9.775 24.225Q465.55 874 480 874Zm-339-98h678V276H141v500Zm0 0V276v500Z"], 7 | "laptop":[0,96,960,960,"M140 816q-24.75 0-42.375-17.625T80 756V276q0-24.75 17.625-42.375T140 216h680q24.75 0 42.375 17.625T880 276v480q0 24.75-17.625 42.375T820 816H140Zm0-60h680V276H140v480ZM70 936q-12.75 0-21.375-8.675Q40 918.649 40 905.825 40 893 48.625 884.5T70 876h820q12.75 0 21.375 8.675 8.625 8.676 8.625 21.5 0 12.825-8.625 21.325T890 936H70Zm70-180V276v480Z"], 8 | "smart-phone":[0,96,960,960,"M260 1016q-24 0-42-18t-18-42V196q0-24 18-42t42-18h440q24 0 42 18t18 42v760q0 24-18 42t-42 18H260Zm0-90v30h440v-30H260Zm0-60h440V286H260v580Zm0-640h440v-30H260v30Zm0 0v-30 30Zm0 700v30-30Z"], 9 | "storage":[0,96,960,960,"M154 896q-30.525 0-52.262-21.737Q80 852.525 80 822t21.738-52.263Q123.475 748 154 748h652q30.525 0 52.263 21.737Q880 791.475 880 822t-21.737 52.263Q836.525 896 806 896H154Zm26-38h72v-72h-72v72Zm-26-454q-30.525 0-52.262-21.737Q80 360.525 80 330t21.738-52.263Q123.475 256 154 256h652q30.525 0 52.263 21.737Q880 299.475 880 330t-21.737 52.263Q836.525 404 806 404H154Zm26-38h72v-72h-72v72Zm-26 284q-30.525 0-52.262-21.737Q80 606.525 80 576t21.738-52.263Q123.475 502 154 502h652q30.525 0 52.263 21.737Q880 545.475 880 576t-21.737 52.263Q836.525 650 806 650H154Zm26-38h72v-72h-72v72Z"], 10 | "signal":[0,96,960,960,"M749.882 896Q729 896 714.5 881.417 700 866.833 700 846V306q0-20.833 14.618-35.417Q729.235 256 750.118 256 771 256 785.5 270.583 800 285.167 800 306v540q0 20.833-14.618 35.417Q770.765 896 749.882 896ZM250.5 896q-10.5 0-20-4t-16-10.5Q208 875 204 865.618q-4-9.383-4-19.618V706q0-20.833 14.618-35.417Q229.235 656 250.118 656 271 656 285.5 670.583 300 685.167 300 706v140q0 10.235-4 19.618-4 9.382-10.5 15.882T270 892q-9 4-19.5 4Zm249.382 0Q479 896 464.5 881.417 450 866.833 450 846V506q0-20.833 14.618-35.417Q479.235 456 500.118 456 521 456 535.5 470.583 550 485.167 550 506v340q0 20.833-14.618 35.417Q520.765 896 499.882 896Z"], 11 | "wifi":[0,96,960,960,"M201 668q-13-13-13.5-31.5T201 606q63-55 132-82.5T480 496q78 0 147 27.5T759 606q14 12 14 30t-14 32q-13 13-31 13t-32-12q-54-45-107.5-64T480 586q-55 0-108.5 19T264 669q-14 12-32 12t-31-13ZM32 499q-13-13-13.5-32T32 436q91-82 205.5-131T480 256q128 0 242.5 49T928 436q14 12 14 30.5T928 499q-13 13-31.5 13T864 500q-83-71-179-112.5T480 346q-109 0-205 41.5T96 500q-14 12-32.5 12T32 499Zm448 430q-36 0-63-27t-27-63q0-36 27-63t63-27q36 0 63 27t27 63q0 36-27 63t-63 27Z"], 12 | "kitehcn":[0,96,960,960,"M338.825 406Q326 406 317.5 397.375T309 376v-58q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T369 318v58q0 12.75-8.675 21.375-8.676 8.625-21.5 8.625Zm0 361Q326 767 317.5 758.375T309 737V601q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T369 601v136q0 12.75-8.675 21.375-8.676 8.625-21.5 8.625ZM220 976q-24.75 0-42.375-17.625T160 916V236q0-24.75 17.625-42.375T220 176h520q24.75 0 42.375 17.625T800 236v680q0 24.75-17.625 42.375T740 976H220Zm0-60h520V518H220v398Zm0-458h520V236H220v222Z"], 13 | "person-male":[0,96,960,960,"M353.775 673Q331 673 315.5 657.275q-15.5-15.726-15.5-38.5Q300 596 315.725 580.5q15.726-15.5 38.5-15.5Q377 565 392.5 580.725q15.5 15.726 15.5 38.5Q408 642 392.275 657.5q-15.726 15.5-38.5 15.5Zm253 0Q584 673 568.5 657.275q-15.5-15.726-15.5-38.5Q553 596 568.725 580.5q15.726-15.5 38.5-15.5Q630 565 645.5 580.725q15.5 15.726 15.5 38.5Q661 642 645.275 657.5q-15.726 15.5-38.5 15.5ZM480 916q142.375 0 241.188-98.948Q820 718.105 820 575.535 820 550 816 525q-4-25-10-46-20 5-43.262 7-23.261 2-48.738 2-97.115 0-183.557-40Q444 408 383 334q-34 81-97.5 141.5T140 569v7q0 142.375 98.812 241.188Q337.625 916 480 916Zm0 60q-83 0-156-31.5T197 859q-54-54-85.5-127T80 576q0-83 31.5-156T197 293q54-54 127-85.5T480 176q83 0 156 31.5T763 293q54 54 85.5 127T880 576q0 83-31.5 156T763 859q-54 54-127 85.5T480 976Zm-92-727q88 103 162.5 141T714 428q24 0 38-1t31-6q-45-81-122.5-133T480 236q-27 0-51 4t-41 9ZM149 498q48-18 109.5-81.5T346 263q-87 39-131.5 99.5T149 498Zm239-249Zm-42 14Z"], 14 | "person-female":[0,96,960,960,"M480 1016q23 0 46-3t46-8q86 67 192.5 46.5T927 937q44-74 30-158t-78-142v-3q64-57 77.5-141T927 335q-37-63-101.5-94.5T689 218q-32-57-87.5-89.5T480 96q-66 0-121.5 32.5T271 218q-72-9-136.5 22.5T33 335q-43 74-29.5 158T81 634v3Q17 695 3 779t30 158q56 94 162.5 114.5T388 1005q23 5 46 8t46 3Zm-168-37q-60 29-125.5 8T86 908q-27-45-26-96t33-94q12 43 32.5 82t48.5 73q28 34 62.5 60.5T312 979Zm336 0q41-19 75.5-45.5T786 873q28-34 49-73t32-82q32 43 33 94t-26 96q-35 58-100.5 79T648 979Zm-168-23q-142 0-241-99t-99-241q0-124 77-216.5T411 283q-1 6-1 11.5V306q0 98 68.5 166.5T645 541q45 0 83-14.5t67-39.5q12 30 18.5 62.5T820 616q0 142-99 241t-241 99ZM354 713q-23 0-38.5-15.5T300 659q0-23 15.5-38.5T354 605q23 0 38.5 15.5T408 659q0 23-15.5 38.5T354 713Zm253 0q-23 0-38.5-15.5T553 659q0-23 15.5-38.5T607 605q23 0 38.5 15.5T661 659q0 23-15.5 38.5T607 713ZM87 543q-26-43-27-88.5T85 365q28-48 77-71.5T265 279q-35 22-64 50t-52 62q-23 34-38.5 72T87 543Zm786 0q-8-42-23.5-80T811 391q-23-34-52-62t-64-50q54-9 103 14.5t77 71.5q26 44 25 89.5T873 543Zm-228-62q-72 0-123.5-51.5T470 306q0-8 .5-15t2.5-15h7q46 0 87.5 11t78.5 32q37 21 67.5 50t53.5 65q-22 22-52 34.5T645 481Zm-13-235q-35-14-73-22t-79-8q-41 0-79 8t-73 22q29-38 67-64t85-26q47 0 85 26t67 64ZM149 391Zm331-175Zm166 103Zm165 72Zm-25 482Zm-612 0Z"], 15 | "water-heater":[0,96,960,960,"M220 976q-25 0-42.5-17.5T160 916V336q0-66 47-113t113-47h320q66 0 113 47t47 113v580q0 25-17.5 42.5T740 976H220Zm0-170v110h520V806q-30 0-53 20t-77 20q-54 0-75.5-20T480 806q-33 0-54.5 20T350 846q-54 0-75.5-20T220 806Zm130-20q33 0 54.5-20t75.5-20q54 0 77 20t53 20q30 0 53-20t77-20V336q0-42-29-71t-71-29H320q-42 0-71 29t-29 71v410q54 0 75.5 20t54.5 20Zm135-92q-66 0-115-43.5T321 539q0-23 6.5-47.5T351 443q3-5 8.5-8t12.5-3q4 0 6 2.5t2 5.5q-1 6-1.5 11.5T378 462q0 30 12.5 52.5T413 537q6 0 8.5-4t2.5-9q0-5-2-11.5t-5-16.5q-2-8-4-19.5t-2-26.5q0-54 24.5-92.5T505 299q4-2 5.5-2.5t4.5-.5q3 0 4.5 2t.5 5q-4 11-5.5 19.5T513 342q0 32 17.5 57t46.5 45q31 21 40 51.5t9 62.5q0 51-35 93.5T485 694Zm1-60q35 0 57.5-20t22.5-54q0-22-7-39t-22-33q-11-11-23.5-23T492 439q-14 10-18.5 30t.5 45q2 11 3 20.5t1 17.5q0 23-19 39.5T422 611q9 8 26 15.5t38 7.5Zm-6-58Z"], 16 | "server":[0,96,960,960,"M286.882 339Q266 339 251.5 353.618q-14.5 14.617-14.5 35.5Q237 410 251.618 424.5q14.617 14.5 35.5 14.5Q308 439 322.5 424.382q14.5-14.617 14.5-35.5Q337 368 322.382 353.5q-14.617-14.5-35.5-14.5Zm0 414Q266 753 251.5 767.618q-14.5 14.617-14.5 35.5Q237 824 251.618 838.5q14.617 14.5 35.5 14.5Q308 853 322.5 838.382q14.5-14.617 14.5-35.5Q337 782 322.382 767.5q-14.617-14.5-35.5-14.5ZM154 217h651q16 0 25.5 9.5t9.5 25.813V521q0 17.425-9.5 29.213Q821 562 805 562H154q-15 0-24.5-11.787Q120 538.425 120 521V252.313q0-16.313 9.5-25.813T154 217Zm26 60v225h600V277H180Zm-26 353h647q15 0 27 12.5t12 28.527V935q0 20-12 30.5T801 976H159q-16 0-27.5-10.5T120 935V671.027q0-16.027 9.5-28.527T154 630Zm26 60v226h600V690H180Zm0-413v225-225Zm0 413v226-226Z"], 17 | "lighting-bolt":[0,96,960,960,"m393 891 279-335H492l36-286-253 366h154l-36 255Zm-33-195H217q-17.872 0-26.436-16T193 649l338-488q8-11 20-15t24 1q12 5 19 16.17 7 11.17 5 23.83l-39 309h176q19.362 0 27.181 17Q771 530 759 545L388 990q-8.442 9.905-20.721 12.95Q355 1006 344 1000.75t-17.5-16.125Q320 973.75 322 961l38-265Zm113-115Z"], 18 | "ceiling-light":[0,96,960,960,"M480 936q-63 0-106.5-43.5T330 786H180q-24 0-42-18t-18-42q0-152 93.5-258T450 351V246q0-13 8.5-21.5T480 216q13 0 21.5 8.5T510 246v105q143 11 236.5 117T840 726q0 24-18 42t-42 18H630q0 63-43.5 106.5T480 936ZM180 726h600q0-132-87.5-223.5T480 411q-125 0-212.5 91.5T180 726Zm300 150q38 0 64-26t26-64H390q0 38 26 64t64 26Zm0-90Z"], 19 | "living-room":[0,96,960,960,"M193 936q-12 0-21-9t-9-21v-42h-13q-45.833 0-77.917-32.083Q40 799.833 40 754V510q0-51 31-77.5t73-26.5v-86q0-46 29-75t75-29h465q46 0 74.5 29t28.5 75v86q42 0 73 26.5t31 77.5v244q0 45.833-32.083 77.917Q855.833 864 810 864h-13v42q0 12-9 21t-21 9q-12 0-21-9t-9-21v-42H223v42q0 12-9 21t-21 9Zm-43-132h660q20 0 35-15t15-35V510q0-20-12-32t-32-12q-20 0-32 12t-12 32v176H188V510q0-20-12-32t-32-12q-20 0-32 12t-12 32v244q0 20 15 35t35 15Zm98-178h464V510q0-31 14-51.5t30-32.5V320q0-20-12-32t-31.742-12H247.742Q228 276 216 288t-12 32v106q16 12 30 32.5t14 51.5v116Zm232 0Zm0 178Zm0-118Z"], 20 | "transportation":[0,96,960,960,"M446.018 896Q432 896 422.5 886.513 413 877.025 413 863V651q0 1 1-7l56-165q2-7 8-12t17-5h303q11 0 16.5 4.5T823 479l56 165q1 2 1 7v212q0 14.025-9.482 23.513-9.483 9.487-23.5 9.487-14.018 0-23.518-9.487Q814 877.025 814 863v-34H479v34q0 14.025-9.482 23.513-9.483 9.487-23.5 9.487ZM466 617h361l-38-115H504l-38 115Zm-13 40v132-132Zm67 106q16.575 0 27.787-11.213Q559 740.575 559 724t-11.213-27.787Q536.575 685 520 685t-27.788 11.213Q481 707.425 481 724t11.212 27.787Q503.425 763 520 763Zm253 0q16.575 0 27.787-11.213Q812 740.575 812 724t-11.213-27.787Q789.575 685 773 685t-27.787 11.213Q734 707.425 734 724t11.213 27.787Q756.425 763 773 763ZM174 874.875q0-4.875 1.909-9.446 1.909-4.572 5.091-7.429l40-40q-56 0-98.5-37.5T80 695V367q0-66 52-88.5T338 256q143 0 200.5 24.5T596 367v65h-60v-77H140v269h243v272H195q-8 0-14.5-6.5t-6.5-14.625ZM191 734q16.575 0 27.788-11.213Q230 711.575 230 695t-11.212-27.787Q207.575 656 191 656q-16.575 0-27.788 11.213Q152 678.425 152 695t11.212 27.787Q174.425 734 191 734Zm262 55h387V657H453v132Z"], 21 | "shopping":[0,96,960,960,"M220 976q-24 0-42-18t-18-42V396q0-24 18-42t42-18h110v-10q0-63 43.5-106.5T480 176q63 0 106.5 43.5T630 326v10h110q24 0 42 18t18 42v520q0 24-18 42t-42 18H220Zm0-60h520V396H630v90q0 12.75-8.675 21.375-8.676 8.625-21.5 8.625-12.825 0-21.325-8.625T570 486v-90H390v90q0 12.75-8.675 21.375-8.676 8.625-21.5 8.625-12.825 0-21.325-8.625T330 486v-90H220v520Zm170-580h180v-10q0-38-26-64t-64-26q-38 0-64 26t-26 64v10ZM220 916V396v520Z"], 22 | "misc":[0,96,960,960,"M333 1016q-22.785 0-39.873-14.7Q276.038 986.609 273 964l-68-514q-2-13.6 6.5-23.8Q220 416 234 416h492q14 0 22.5 10.2T755 450l-68 514q-3.038 22.609-20.127 37.3Q649.785 1016 627 1016H333Zm0-60h295l63-480H269l64 480Zm147.118-230Q526 726 558 693.917q32-32.084 32-77.917v-40q0-12.75-8.675-21.375-8.676-8.625-21.5-8.625-12.825 0-21.325 8.625T530 576v40q0 21.25-14.325 35.625Q501.351 666 480.175 666 459 666 444.5 651.625 430 637.25 430 616v-40q0-12.75-8.675-21.375-8.676-8.625-21.5-8.625-12.825 0-21.325 8.625T370 576v40q0 45.833 32.118 77.917 32.117 32.083 78 32.083ZM600 356q-20 0-35-15t-15-35.5q0-20.5 15-35t35.5-14.5q20.5 0 35 14.583Q650 285.167 650 306q0 20-14.583 35-14.584 15-35.417 15Zm-200-40q-37 0-63.5-26.5t-26.5-64q0-37.5 26.5-63.5t64-26q37.5 0 63.5 26.1t26 63.9q0 37-26.1 63.5T400 316Zm228 640H333h295Z"], 23 | "medical":[0,96,960,960,"M450 686v90q0 12.75 8.675 21.375 8.676 8.625 21.5 8.625 12.825 0 21.325-8.625T510 776v-90h90q12.75 0 21.375-8.675 8.625-8.676 8.625-21.5 0-12.825-8.625-21.325T600 626h-90v-90q0-12.75-8.675-21.375-8.676-8.625-21.5-8.625-12.825 0-21.325 8.625T450 536v90h-90q-12.75 0-21.375 8.675-8.625 8.676-8.625 21.5 0 12.825 8.625 21.325T360 686h90ZM140 976q-24 0-42-18t-18-42V383q0-24 18-42t42-18h190v-87q0-23 18-41.5t42-18.5h180q24 0 42 18.5t18 41.5v87h190q24 0 42 18t18 42v533q0 24-18 42t-42 18H140Zm250-653h180v-87H390v87ZM140 916h680V383H140v533Zm0 0V383v533Z"], 24 | "bill":[0,96,960,960,"M222 976q-43.75 0-74.375-30.625T117 871v-95q0-12.75 8.625-21.375T147 746h97V202q0-10 8-10t16 8l36 36 49-49q4.636-5 10.818-5Q370 182 375 187l48 49 49-49q4.636-5 10.818-5Q489 182 494 187l49 49 49-49q4.636-5 10.818-5Q609 182 614 187l49 49 49-49q4.636-5 10.818-5Q729 182 734 187l49 49 36-36q8-8 16-8t8 10.272V871q0 43.75-30.625 74.375T738 976H222Zm516-60q20 0 32.5-12.5T783 871V276H304v470h359q12.75 0 21.375 8.625T693 776v94.845Q693 891 705.5 903.5T738 916ZM386 434q-12 0-20.5-9t-8.5-21.5q0-12.5 8.625-21T387 374h180q12.75 0 21.375 8.675 8.625 8.676 8.625 21.5 0 12.825-8.625 21.325T567 434H386Zm0 134q-12 0-20.5-9t-8.5-21.5q0-12.5 8.625-21T387 508h180q12.75 0 21.375 8.675 8.625 8.676 8.625 21.5 0 12.825-8.625 21.325T567 568H386Zm304-134q-12 0-21-9t-9-21q0-12 9-21t21-9q12 0 21 9t9 21q0 12-9 21t-21 9Zm0 129q-12 0-21-9t-9-21q0-12 9-21t21-9q12 0 21 9t9 21q0 12-9 21t-21 9ZM221 916h412V806H177v65q0 20 12.65 32.5T221 916Zm-44 0V806v110Z"], 25 | "gadget":[0,96,960,960,"M211 836q47 0 78.5-31.5T321 726q0-26.057-12-51.029Q297 650 273 634l-32-21V346q0-13.5-8.25-21.75T211 316q-13.5 0-21.75 8.25T181 346v267l-32 21q-24 16.525-36 40.763Q101 699 101 726.4q0 46.032 31.9 77.816Q164.8 836 211 836Zm0 60q-72 0-121-49.035T41 726.263Q41 681 63 643.76T121 583V346q0-37.8 26.141-63.9t64-26.1Q249 256 275 282.1t26 63.9v237q36 23.52 58 60.76 22 37.24 22 82.503 0 70.724-49.583 120.23Q281.833 896 211 896Zm340-200q-45-32-78-83.5T440 496q0-99 70.5-169.5T680 256q101 0 170.5 70T920 496q0 65-33 116.5T809 696H551Zm21-60h216q30-23 51-62.5t21-77.5q0-75-52-127.5T680 316q-74.25 0-127.125 52.875T500 496q0 38 21 77.5t51 62.5Zm108 260q-18 0-31.5-11.5T631 856h98q-4 17-17.5 28.5T680 896Zm-110-80v-60h220v60H570Zm-359-90Zm469-250Z"], 26 | "electronics":[0,96,960,960,"M390 486h300q12.75 0 21.375-8.675 8.625-8.676 8.625-21.5 0-12.825-8.625-21.325T690 426H390q-12.75 0-21.375 8.675-8.625 8.676-8.625 21.5 0 12.825 8.625 21.325T390 486Zm0 160h300q12.75 0 21.375-8.675 8.625-8.676 8.625-21.5 0-12.825-8.625-21.325T690 586H390q-12.75 0-21.375 8.675-8.625 8.676-8.625 21.5 0 12.825 8.625 21.325T390 646ZM279.982 489q14.018 0 23.518-9.482 9.5-9.483 9.5-23.5 0-14.018-9.482-23.518-9.483-9.5-23.5-9.5-14.018 0-23.518 9.482-9.5 9.483-9.5 23.5 0 14.018 9.482 23.518 9.483 9.5 23.5 9.5Zm0 160q14.018 0 23.518-9.482 9.5-9.483 9.5-23.5 0-14.018-9.482-23.518-9.483-9.5-23.5-9.5-14.018 0-23.518 9.482-9.5 9.483-9.5 23.5 0 14.018 9.482 23.518 9.483 9.5 23.5 9.5ZM360 936q-12.75 0-21.375-8.625T330 906v-50H140q-24.75 0-42.375-17.625T80 796V276q0-24.75 17.625-42.375T140 216h680q24.75 0 42.375 17.625T880 276v520q0 24.75-17.625 42.375T820 856H630v50q0 12.75-8.625 21.375T600 936H360ZM140 796h680V276H140v520Zm0 0V276v520Z"], 27 | "drink":[0,96,960,960,"M275.741 976Q243 976 224 957t-23-49l-77-699q-2-13.5 7.25-23.25T154 176h652q13.5 0 22.75 9.75T836 209l-77 699q-3 30-22.5 49T685 976H275.741ZM214 476l47.964 440H698l48-440H214Zm-7-60h546l20-180H187l20 180Zm273 447q45 0 76.5-30.684T588 757q0-40.312-21-84.656Q546 628 508 585q-11.25-12-28.125-12T452 585q-38 43-59 87.344-21 44.344-21 84.656 0 44.632 31.5 75.316Q435 863 480 863Zm266-387H214h532ZM480 803q-20.4 0-34.2-13.8Q432 775.4 432 755q0-21 11.5-50t36.5-61q25 33 36.5 62t11.5 49q0 20.4-13.8 34.2Q500.4 803 480 803Z"], 28 | "meal":[0,96,960,960,"M71 752q-13.256 0-21.628-9T43 722q11-86 83-144.5T345 519q147 0 219 58.5T647 722q2 12-6.372 21T619 752H71Zm638 264v-60h86l57-580H454l-3.333-27.076Q449 335 457.976 325.5 466.951 316 481 316h171V166q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T712 166v150h176q13.5 0 22.75 9.75T918 349l-64 607q-3 26-21.5 43t-46.5 17h-77Zm0-60h86-86ZM575 692q-18-51-74-82t-157-31q-101 0-157 31t-75 82h463Zm-231 0ZM70 880q-12.75 0-21.375-8.675Q40 862.649 40 849.825 40 837 48.625 828.5T70 820h548q12.75 0 21.375 8.675 8.625 8.676 8.625 21.5 0 12.825-8.625 21.325T618 880H70Zm0 136q-12.75 0-21.375-8.68Q40 998.649 40 985.825 40 973 48.625 964.5T70 956h548q12.75 0 21.375 8.675 8.625 8.676 8.625 21.5 0 12.825-8.625 21.325T618 1016H70Z"], 29 | "battery-full-charge":[0,96,960,960,"M320 976q-17 0-28.5-11.5T280 936V296q0-17 11.5-28.5T320 256h80v-50q0-13 8.5-21.5T430 176h100q13 0 21.5 8.5T560 206v50h80q17 0 28.5 11.5T680 296v640q0 17-11.5 28.5T640 976H320Zm158-168 96-179q4-8-.5-15t-12.5-7h-52V473q0-12-11.5-15.5T481 465l-96 179q-4 8 .5 15t12.5 7h52v134q0 12 11.5 15.5T478 808Z"], 30 | "cpu":[0,96,960,960,"M407 679q-12.75 0-21.375-8.625T377 649V504q0-12.75 8.625-21.375T407 474h145q12.75 0 21.375 8.625T582 504v145q0 12.75-8.625 21.375T552 679H407Zm-17.175 257Q377 936 368.5 927.375T360 906v-50H260q-24 0-42-18t-18-42V696h-50q-12.75 0-21.375-8.675-8.625-8.676-8.625-21.5 0-12.825 8.625-21.325T150 636h50V512h-50q-12.75 0-21.375-8.675-8.625-8.676-8.625-21.5 0-12.825 8.625-21.325T150 452h50V352q0-24 18-42t42-18h100v-46q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T420 246v46h124v-46q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T604 246v46h100q24 0 42 18t18 42v100h46q12.75 0 21.375 8.675 8.625 8.676 8.625 21.5 0 12.825-8.625 21.325T810 512h-46v124h46q12.75 0 21.375 8.675 8.625 8.676 8.625 21.5 0 12.825-8.625 21.325T810 696h-46v100q0 24-18 42t-42 18H604v50q0 12.75-8.675 21.375-8.676 8.625-21.5 8.625-12.825 0-21.325-8.625T544 906v-50H420v50q0 12.75-8.675 21.375-8.676 8.625-21.5 8.625ZM260 796h444V352H260v444Zm177-177h85v-85h-85v85Zm43-43Z"], 31 | "memory":[0,96,960,960,"M280.175 686q12.825 0 21.325-8.625T310 656V496q0-12.75-8.675-21.375-8.676-8.625-21.5-8.625-12.825 0-21.325 8.625T250 496v160q0 12.75 8.675 21.375 8.676 8.625 21.5 8.625Zm200 0q12.825 0 21.325-8.625T510 656V496q0-12.75-8.675-21.375-8.676-8.625-21.5-8.625-12.825 0-21.325 8.625T450 496v160q0 12.75 8.675 21.375 8.676 8.625 21.5 8.625Zm200 0q12.825 0 21.325-8.625T710 656V496q0-12.75-8.675-21.375-8.676-8.625-21.5-8.625-12.825 0-21.325 8.625T650 496v160q0 12.75 8.675 21.375 8.676 8.625 21.5 8.625ZM140 796h680V356H140v440Zm0 0V356v440Zm0 60q-24 0-42-18t-18-42V356q0-24 18-42t42-18h70v-50q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T270 246v50h180v-50q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T510 246v50h180v-50q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T750 246v50h70q24 0 42 18t18 42v440q0 24-18 42t-42 18h-70v50q0 12.75-8.675 21.375-8.676 8.625-21.5 8.625-12.825 0-21.325-8.625T690 906v-50H510v50q0 12.75-8.675 21.375-8.676 8.625-21.5 8.625-12.825 0-21.325-8.625T450 906v-50H270v50q0 12.75-8.675 21.375-8.676 8.625-21.5 8.625-12.825 0-21.325-8.625T210 906v-50h-70Z"], 32 | "sdcard":[0,96,960,960,"M413.175 528q12.825 0 21.325-8.625T443 498v-97q0-12.75-8.675-21.375-8.676-8.625-21.5-8.625-12.825 0-21.325 8.625T383 401v97q0 12.75 8.675 21.375 8.676 8.625 21.5 8.625Zm119 0q12.825 0 21.325-8.625T562 498v-97q0-12.75-8.675-21.375-8.676-8.625-21.5-8.625-12.825 0-21.325 8.625T502 401v97q0 12.75 8.675 21.375 8.676 8.625 21.5 8.625Zm119 0q12.825 0 21.325-8.625T681 498v-97q0-12.75-8.675-21.375-8.676-8.625-21.5-8.625-12.825 0-21.325 8.625T621 401v97q0 12.75 8.675 21.375 8.676 8.625 21.5 8.625ZM220 976q-24 0-42-18t-18-42V440q0-12.444 5-23.722T178 397l203-203q8-8 19.278-13 11.278-5 23.722-5h316q24 0 42 18t18 42v680q0 24-18 42t-42 18H220Zm0-60h520V236H426L220 442.125V916Zm0 0h520-520Z"], 33 | "hard-drive":[0,96,960,960,"M140 796h680V516H140v280Zm540.118-90Q701 706 715.5 691.382q14.5-14.617 14.5-35.5Q730 635 715.382 620.5q-14.617-14.5-35.5-14.5Q659 606 644.5 620.618q-14.5 14.617-14.5 35.5Q630 677 644.618 691.5q14.617 14.5 35.5 14.5ZM880 456h-85L695 356H265L165 456H80l142-142q8-8 19.278-13 11.278-5 23.722-5h430q12.444 0 23.722 5T738 314l142 142ZM140 856q-24.75 0-42.375-17.625T80 796V456h800v340q0 24.75-17.625 42.375T820 856H140Z"], 34 | "bolt-circle":[0,96,960,960,"M465 626v156q0 12 11.5 15t16.5-8l116-241q4-8-.5-15t-12.5-7h-95V368q0-12-11.5-15t-16.5 8L350 604q-4 8 .5 15t12.5 7h102Zm15 350q-82 0-155-31.5t-127.5-86Q143 804 111.5 731T80 576q0-82 31.5-155t86-127.5Q252 239 325 207.5T480 176q82 0 155 31.5t127.5 86Q817 348 848.5 421T880 576q0 82-31.5 155t-86 127.5Q708 913 635 944.5T480 976Zm0-400Zm0 340q140 0 240-100t100-240q0-140-100-240T480 236q-140 0-240 100T140 576q0 140 100 240t240 100Z"], 35 | "away":[0,96,960,960,"M80 936V456l320-240 241 181q-20 0-39.5 4T563 413L400 291 140 486v390h190v60H80Zm320 0v-76q0-21 10.5-39.5T439 791q46-27 96.5-41T640 736q54 0 104.5 14t96.5 41q18 11 28.5 29.5T880 860v76H400Zm60-60h360v-29q-42-24-87.227-37.5Q687.546 796 640 796t-92.773 14Q502 824 460 848v28Zm180-180q-50 0-85-35t-35-85q0-50 35-85t85-35q50 0 85 35t35 85q0 50-35 85t-85 35Zm0-60q25.5 0 42.75-17.25T700 576q0-25.5-17.25-42.75T640 516q-25.5 0-42.75 17.25T580 576q0 25.5 17.25 42.75T640 636Z"], 36 | "house":[0,96,960,960,"M430 896H230q-12.75 0-21.375-8.625T200 866V576h-81q-10.5 0-14.25-9.5T109 550l351-316q8.186-8 20.093-8T500 234l180 159v-87q0-12.75 8.625-21.375T710 276h20q12.75 0 21.375 8.625T760 306v161l91 83q8 7 4.25 16.5T841 576h-81v290q0 12.75-8.625 21.375T730 896H530V656H430v240Zm-170-60h110V626q0-12.75 8.625-21.375T400 596h160q12.75 0 21.375 8.625T590 626v210h110V495L480 295 260 495v341Zm135-350h170q0-33-25.5-54.5T480 410q-34 0-59.5 21.342Q395 452.685 395 486Zm5 110h160-160Z"], 37 | "devices":[0,96,960,960,"M770 316H140v520h110q12.75 0 21.375 8.675 8.625 8.676 8.625 21.5 0 12.825-8.625 21.325T250 896H140q-24.75 0-42.375-17.625T80 836V316q0-24.75 17.625-42.375T140 256h630q12.75 0 21.375 8.675 8.625 8.676 8.625 21.5 0 12.825-8.625 21.325T770 316ZM410 896q-12.75 0-21.375-8.625T380 866v-36q-18-17-29-37.761-11-20.76-11-46.239 0-25.479 11-46.239Q362 679 380 662v-36q0-12.75 8.625-21.375T410 596h80q12.75 0 21.375 8.625T520 626v36q18 17 29 37.761 11 20.76 11 46.239 0 25.479-11 46.239Q538 813 520 830v36q0 12.75-8.625 21.375T490 896h-80Zm39.767-80Q480 816 500 796.233q20-19.768 20-50Q520 716 500.233 696q-19.768-20-50-20Q420 676 400 695.767q-20 19.768-20 50Q380 776 399.767 796q19.768 20 50 20ZM650 896q-12 0-21-9t-9-21V506q0-12.75 9-21.375T650 476h200q12.75 0 21.375 8.625T880 506v360q0 12-8.625 21T850 896H650Zm30-60h140V536H680v300Z"], 38 | "upload":[0,96,960,960,"M479.825 743Q467 743 458.5 734.375T450 713V372l-99 99q-9 9-21 8.5t-21-9.5q-9-9-9-21.5t9-21.5l150-150q5-5 10.133-7 5.134-2 11-2Q486 268 491 270q5 2 10 7l151 151q9 9 9 21t-9 21q-9 9-21.5 9t-21.5-9l-99-98v341q0 12.75-8.675 21.375-8.676 8.625-21.5 8.625ZM220 896q-24 0-42-18t-18-42V723q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T220 723v113h520V723q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T800 723v113q0 24-18 42t-42 18H220Z"], 39 | "download":[0,96,960,960,"M479.867 731Q474 731 469 729q-5-2-10-7L308 571q-9-9-8.5-21.5T309 528q9-9 21.5-9t21.5 9l98 99V286q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T510 286v341l99-99q9-9 21.5-9t21.5 9q9 9 9 21.5t-9 21.5L501 722q-5 5-10.133 7-5.134 2-11 2ZM220 896q-24 0-42-18t-18-42V723q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T220 723v113h520V723q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T800 723v113q0 24-18 42t-42 18H220Z"], 40 | "percentage":[0,96,960,960,"M289.899 516Q236 516 198 477.899t-38-92Q160 332 198.101 294t92-38Q344 256 382 294.101t38 92Q420 440 381.899 478t-92 38Zm-.017-60Q319 456 339.5 435.618q20.5-20.383 20.5-49.5Q360 357 339.618 336.5q-20.383-20.5-49.5-20.5Q261 316 240.5 336.382q-20.5 20.383-20.5 49.5Q220 415 240.382 435.5q20.383 20.5 49.5 20.5Zm380.017 440Q616 896 578 857.899t-38-92Q540 712 578.101 674t92-38Q724 636 762 674.101t38 92Q800 820 761.899 858t-92 38Zm-.017-60Q699 836 719.5 815.618q20.5-20.383 20.5-49.5Q740 737 719.618 716.5q-20.383-20.5-49.5-20.5Q641 696 620.5 716.382q-20.5 20.383-20.5 49.5Q600 795 620.382 815.5q20.383 20.5 49.5 20.5ZM181 875q-9-9-9-21t9-21l556-556q9-9 21-9t21 9q9 9 9 21t-9 21L223 875q-9 9-21 9t-21-9Z"], 41 | "flash":[0,96,960,960,"m460 784 186-268H520l81-280H340v360h120v188Zm251-257L441 917q-5 7-11.5 8.5t-13.4-.656q-6.9-2.156-11.5-7.547T400 904V656h-60q-24.75 0-42.375-17.625T280 596V236q0-24.75 17.625-42.375T340 176h278q23 0 38 18.5t8 41.5l-64 220h74q26.873 0 39.937 24Q727 504 711 527Zm-251 69H340h120Z"], 42 | "air_purifier":[0,96,960,960,"M120 936V326q0-45.833 32.5-77.917Q185 216 230 216h170q45.833 0 77.917 32.083Q510 280.167 510 326v610H120Zm270-220h60V476h-60v240ZM180 876h270V776h-60q-24.75 0-42.375-17.625T330 716V476q0-24.75 17.625-42.375T390 416h60v-90q0-21.25-14.375-35.625T400 276H230q-20 0-35 14.375T180 326v550Zm520.347-247q-23.347 0-45.306-5.88Q633.081 617.24 612 608l19-56q18 8 35.5 12.5T701 569q13.667 0 27.333-4.5Q742 560 756 551q23-15 44.943-21 21.943-6 42.057-6 22.115 0 45.558 6Q912 536 933 544l-20 57q-20.403-6.8-37.702-11.9Q858 584 844 584t-29.467 4.95Q799.067 593.9 782 606q-20 14-40.5 18.5t-41.153 4.5ZM701 463q-22 0-45-6t-44-15l19-57q23 9 39.5 13.5T701 403q13.667 0 27.333-4Q742 395 756 385q23-15 45.5-21t42.5-6q21 0 43.368 5.417Q909.737 368.833 933 378l-19 57q-23-8-39.5-12.5T844 418q-14 0-29.5 4.5T781 440q-17 11-37.846 17-20.845 6-42.154 6Zm0 332q-22.911 0-45.381-5.88Q633.148 783.24 612 774l19-57q20 8 37.593 13 17.592 5 32.407 5 13.667 0 27.333-4Q742 727 756 717q21.547-14.897 45.905-20.948Q826.263 690 845 690q21 0 44 6t44 14l-19 57q-23-8-40.39-12.5T844 750q-15.302 0-31.151 5.5T781 772q-15 11-36.196 17-21.195 6-43.804 6Zm-521 81h270-270Z"], 43 | "alarm":[0,96,960,960,"M480 974q-74 0-139.5-28t-114-76.5q-48.5-48.5-77-114T121 615.267q0-74.733 28.5-140T226.5 361q48.5-49 114-77T480 256q74 0 139.5 28T734 361q49 49 77 114.267t28 140Q839 690 811 755.5t-77 114Q685 918 619.5 946T480 974Zm0-357Zm-27-171v172q0 5.565 2 10.783Q457 634 462 639l119 119q8.186 8 20.093 8T622 757q9-9 9-21t-9-21L513 606V445q0-12-8.675-20.5-8.676-8.5-21.5-8.5-12.825 0-21.325 8.625T453 446Zm-339-77q-9 8-21 8t-21-9q-9-9-9-21.467 0-12.466 9-20.533l122-117q9-8 21-8t21 9q9 9 9 21.467 0 12.466-9 20.533L114 369Zm732-1L724 251q-8-8-8.5-20t8.342-20.87q8.105-8.13 20.632-8.13Q757 202 766 210l122 117q8 8 8.5 20t-8.342 20.87q-8.105 8.13-20.632 8.13Q855 376 846 368ZM480.043 914Q605 914 692 826.957t87-212Q779 490 691.957 403t-212-87Q355 316 268 403.043t-87 212Q181 740 268.043 827t212 87Z"], 44 | "humidity":[0,96,960,960,"M580.118 806Q601 806 615.5 791.382q14.5-14.617 14.5-35.5Q630 735 615.382 720.5q-14.617-14.5-35.5-14.5Q559 706 544.5 720.618q-14.5 14.617-14.5 35.5Q530 777 544.618 791.5q14.617 14.5 35.5 14.5ZM357 779q9 9 21 9t21-9l204-204q9-9 9-21t-9.053-21q-9.052-9-21.5-9Q569 524 560 533L357 737q-9 8.8-9 20.9 0 12.1 9 21.1Zm23.118-173Q401 606 415.5 591.382q14.5-14.617 14.5-35.5Q430 535 415.382 520.5q-14.617-14.5-35.5-14.5Q359 506 344.5 520.618q-14.5 14.617-14.5 35.5Q330 577 344.618 591.5q14.617 14.5 35.5 14.5ZM480 976q-127 0-223.5-88.5T160 648q0-96 73.5-208.5T457 196q4.579-4.091 10.684-6.545Q473.789 187 479.895 187q6.105 0 12.287 2.455Q498.364 191.909 503 196q150 131 223.5 243.401Q800 551.801 800 648q0 151-96.5 239.5T480 976Zm0-60q110 0 185-76t75-192q0-79-66.5-179.5T480 256Q353 368 286.5 468.5T220 648q0 116 75 192t185 76Zm0-231Z"], 45 | "thermostat":[0,96,960,960,"M480 976q-83 0-141.5-58.5T280 776q0-51 23-96t68-67V285q0-45.417 31.792-77.208Q434.583 176 480 176t77.208 31.792Q589 239.583 589 285v328q45 22 68 67t23 96q0 83-58.5 141.5T480 976Zm-49-435h98v-53h-49v-39h49v-87h-49v-38.5h49V285q0-20.825-14.123-34.912-14.123-14.088-35-14.088Q459 236 445 250.088 431 264.175 431 285v256Z"], 46 | "battery-1":[0,96,960,960,"M310 976q-12.75 0-21.375-8.625T280 946V270q0-12.75 8.625-21.375T310 240h90v-34q0-12.75 8.625-21.375T430 176h100q12.75 0 21.375 8.625T560 206v34h90q12.75 0 21.375 8.625T680 270v676q0 12.75-8.625 21.375T650 976H310Zm30-148h280V300H340v528Z"], 47 | "battery-0":[0,96,960,960,"M310 976q-12.75 0-21.375-8.625T280 946V270q0-12.75 8.625-21.375T310 240h90v-34q0-12.75 8.625-21.375T430 176h100q12.75 0 21.375 8.625T560 206v34h90q12.75 0 21.375 8.625T680 270v676q0 12.75-8.625 21.375T650 976H310Zm30-60h280V300H340v616Z"], 48 | "battery-full":[0,96,960,960,"M320 976q-17 0-28.5-11.5T280 936V296q0-17 11.5-28.5T320 256h80v-50q0-13 8.5-21.5T430 176h100q13 0 21.5 8.5T560 206v50h80q17 0 28.5 11.5T680 296v640q0 17-11.5 28.5T640 976H320Z"], 49 | "battery-6":[0,96,960,960,"M310 976q-12.75 0-21.375-8.625T280 946V270q0-12.75 8.625-21.375T310 240h90v-34q0-12.75 8.625-21.375T430 176h100q12.75 0 21.375 8.625T560 206v34h90q12.75 0 21.375 8.625T680 270v676q0 12.75-8.625 21.375T650 976H310Zm30-588h280v-88H340v88Z"], 50 | "battery-5":[0,96,960,960,"M310 976q-12.75 0-21.375-8.625T280 946V270q0-12.75 8.625-21.375T310 240h90v-34q0-12.75 8.625-21.375T430 176h100q12.75 0 21.375 8.625T560 206v34h90q12.75 0 21.375 8.625T680 270v676q0 12.75-8.625 21.375T650 976H310Zm30-500h280V300H340v176Z"], 51 | "battery-4":[0,96,960,960,"M310 976q-12.75 0-21.375-8.625T280 946V270q0-12.75 8.625-21.375T310 240h90v-34q0-12.75 8.625-21.375T430 176h100q12.75 0 21.375 8.625T560 206v34h90q12.75 0 21.375 8.625T680 270v676q0 12.75-8.625 21.375T650 976H310Zm30-412h280V300H340v264Z"], 52 | "battery-3":[0,96,960,960,"M310 976q-12.75 0-21.375-8.625T280 946V270q0-12.75 8.625-21.375T310 240h90v-34q0-12.75 8.625-21.375T430 176h100q12.75 0 21.375 8.625T560 206v34h90q12.75 0 21.375 8.625T680 270v676q0 12.75-8.625 21.375T650 976H310Zm30-324h280V300H340v352Z"], 53 | "battery-2":[0,96,960,960,"M310 976q-12.75 0-21.375-8.625T280 946V270q0-12.75 8.625-21.375T310 240h90v-34q0-12.75 8.625-21.375T430 176h100q12.75 0 21.375 8.625T560 206v34h90q12.75 0 21.375 8.625T680 270v676q0 12.75-8.625 21.375T650 976H310Zm30-236h280V300H340v440Z"], 54 | "battery-low":[0,96,960,960,"M174 776q-12.75 0-21.375-8.625T144 746v-90H80V496h64v-90q0-12.75 8.625-21.375T174 376h676q12.75 0 21.375 8.625T880 406v340q0 12.75-8.625 21.375T850 776H174Zm30-60h576V436H204v280Z"], 55 | "light-bulb":[0,96,960,960,"M480 976q-34 0-57.5-23.5T399 895h162q0 34-23.5 57.5T480 976ZM348 833q-12.75 0-21.375-8.675-8.625-8.676-8.625-21.5 0-12.825 8.625-21.325T348 773h264q12.75 0 21.375 8.675 8.625 8.676 8.625 21.5 0 12.825-8.625 21.325T612 833H348Zm-25-121q-66-43-104.5-107.5T180 459q0-122 89-211t211-89q122 0 211 89t89 211q0 81-38 145.5T637 712H323Zm22-60h270.667Q664 620 692 568.872 720 517.743 720 459q0-99-70.5-169.5T480 219q-99 0-169.5 70.5T240 459q0 58.743 28 109.872Q296 620 345 652Zm135 0Z"], 56 | "motion":[0,96,960,960,"M234 606q-13.737 0-21.368 12.5Q205 631 209 645q19 75 73 128.5T411 846q14 4 26-3.5t12-21.894Q449 810 441.5 801q-7.5-9-18.5-12-58-15-100-57t-57-100q-3-11-11.841-18.5Q245.317 606 234 606Zm1-60q-13.737 0-21.368-12.5Q206 521 210 507q19-75 73-128.5T412 306q14-4 26 3.5t12 21.894Q450 342 442.5 351q-7.5 9-18.5 12-58 15-100 57t-57 100q-3 11-11.841 18.5Q246.317 546 235 546Zm245-40q29 0 49.5 20.5t20.5 49.933Q550 605 529.5 625.5T479.567 646Q451 646 430.5 625.438 410 604.875 410 576q0-29 20.562-49.5Q451.125 506 480 506Zm246 100q13.737 0 21.368 12.5Q755 631 751 645q-19 75-73 128.5T549 846q-14 4-26-3.5t-12-21.894Q511 810 518.5 801q7.5-9 18.5-12 58-15 100-57t57-100q3-11 11.841-18.5Q714.683 606 726 606Zm0-60q13.737 0 21.368-12.5Q755 521 751 507q-19-75-73-128.5T549 306q-14-4-26 3.5t-12 21.894Q511 342 518.5 351q7.5 9 18.5 12 58 15 100 57t57 100q3 11 11.841 18.5Q714.683 546 726 546ZM282 236H140v142q0 12.75-8.675 21.375-8.676 8.625-21.5 8.625Q97 408 88.5 399.375T80 378V236q0-24 18-42t42-18h142q12.75 0 21.375 8.675 8.625 8.676 8.625 21.5 0 12.825-8.625 21.325T282 236ZM140 976q-24 0-42-18t-18-42V774q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T140 774v142h142q12.75 0 21.375 8.675 8.625 8.676 8.625 21.5 0 12.825-8.625 21.325T282 976H140Zm680 0H678q-12.75 0-21.375-8.675-8.625-8.676-8.625-21.5 0-12.825 8.625-21.325T678 916h142V774q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T880 774v142q0 24-18 42t-42 18ZM678 236q-12.75 0-21.375-8.675-8.625-8.676-8.625-21.5 0-12.825 8.625-21.325T678 176h142q24 0 42 18t18 42v142q0 12.75-8.675 21.375-8.676 8.625-21.5 8.625-12.825 0-21.325-8.625T820 378V236H678Z"], 57 | "power-socket":[0,96,960,960,"M442 876h76v-82l142-156V447H300v191l142 155.701V876Zm-60-58L256 679q-7.652-7.857-11.826-18.214T240 639V447q0-24.75 17.625-42.375T300 387h72l-30 30V246q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T402 246v141h156V246q0-12.75 8.675-21.375 8.676-8.625 21.5-8.625 12.825 0 21.325 8.625T618 246v171l-30-30h72q24.75 0 42.375 17.625T720 447v192q0 11.429-4.174 21.786Q711.652 671.143 704 679L578 818v88q0 12.75-8.625 21.375T548 936H412q-12.75 0-21.375-8.625T382 906v-88Zm98-157Z"], 58 | "volume-up":[0,96,960,960,"M602 913q-16 5-29-5t-13-27q0-8 4.5-14.5T577 858q91-32 147-109t56-174q0-97-56-174.5T577 292q-8-2-12.5-9t-4.5-15q0-17 13.5-26.5T602 237q107 38 172.5 130.5T840 575q0 115-65.5 207.5T602 913ZM150 696q-13 0-21.5-8.5T120 666V486q0-13 8.5-21.5T150 456h130l149-149q14-14 32.5-6.5T480 328v496q0 20-18.5 27.5T429 845L280 696H150Zm390 48V407q54 17 87 64t33 105q0 59-33 105t-87 63ZM420 408 307 516H180v120h127l113 109V408Zm-94 168Z"], 59 | "volume-down":[0,96,960,960,"M230 696q-13 0-21.5-8.5T200 666V486q0-13 8.5-21.5T230 456h130l149-149q14-14 32.5-6.5T560 328v496q0 20-18.5 27.5T509 845L360 696H230Zm390 48V407q54 17 87 64t33 105q0 59-33 105t-87 63ZM500 408 387 516H260v120h127l113 109V408ZM378 576Z"], 60 | "public":[0,96,960,960,"M480 976q-83 0-156-31.5T197 859q-54-54-85.5-127T80 576q0-83 31.5-156T197 293q54-54 127-85.5T480 176q83 0 156 31.5T763 293q54 54 85.5 127T880 576q0 83-31.5 156T763 859q-54 54-127 85.5T480 976Zm-43-61v-82q-35 0-59-26t-24-61v-44L149 497q-5 20-7 39.5t-2 39.5q0 130 84.5 227T437 915Zm294-108q22-24 38.5-51t28-56.5q11.5-29.5 17-60.5t5.5-63q0-106-58-192.5T607 257v18q0 35-24 61t-59 26h-87v87q0 17-13.5 28T393 488h-83v88h258q17 0 28 13t11 30v127h43q29 0 51 17t30 44Z"], 61 | "battery-charge-full":[0,96,960,960,"m460 816 100-240h-60V416L400 656h60v160ZM310 976q-12.75 0-21.375-8.625T280 946V270q0-12.75 8.625-21.375T310 240h90v-64h160v64h90q12.75 0 21.375 8.625T680 270v676q0 12.75-8.625 21.375T650 976H310Zm30-60h280V300H340v616Zm0 0h280-280Z"], 62 | "lighting-bolt-circle":[0,96,960,960,"m462 874 170-360H502V274L332 634h130v240Zm18 102q-85 0-158-30.5T195 861q-54-54-84.5-127T80 576q0-84 30.5-157T195 292q54-54 127-85t158-31q84 0 157 31t127 85q54 54 85 127t31 157q0 85-31 158t-85 127q-54 54-127 84.5T480 976Zm0-400Zm0 340q145 0 242.5-97.5T820 576q0-145-97.5-242.5T480 236q-145 0-242.5 97.5T140 576q0 145 97.5 242.5T480 916Z"], 63 | "hard-drive-2":[0,96,960,960,"M540 856q17 0 28.5-11.5T580 816q0-17-11.5-28.5T540 776q-17 0-28.5 11.5T500 816q0 17 11.5 28.5T540 856Zm140 0q17 0 28.5-11.5T720 816q0-17-11.5-28.5T680 776q-17 0-28.5 11.5T640 816q0 17 11.5 28.5T680 856ZM120 626V236q0-24 18-42t42-18h600q24 0 42 18t18 42v390h-60V236H180v390h-60Zm60 60v230h600V686H180Zm0 290q-24 0-42-18t-18-42V626h720v290q0 24-18 42t-42 18H180Zm0-350h600-600Zm0 60h600-600Z"], 64 | "steps":[0,96,960,960,"M216 486q36 0 70 13.5t61 38.5l395 378h18q25.5 0 42.75-17.25T820 856q0-11.2-2.125-23.8Q815.75 819.6 803 807L623 627l-76-227-92 23q-29 7-52-10.5T380 365v-97l-54-27-175 235q-2 2-3.5 4.5T144 486h72Zm0 60h-78q3 11 9 20.176 6 9.177 14 16.824l338 307q14 13 31 19.5t36 6.5h89L306 582q-18-17-41.455-26.5Q241.091 546 216 546Zm350 430q-30 0-57-11t-50-31L134 639q-46-42-51.5-103T114 425l154-206q17-23 45.5-30.5T368 195l28 14q21 11 32.5 30t11.5 42v84l74-19q30-8 58 7.5t38 44.5l65 196 170 170q20 20 27.5 43t7.5 49q0 50-35 85t-85 35H566Z"], 65 | "distant":[0,96,960,960,"M480 976q-106 0-173-31t-67-79q0-27 24.5-51t67.5-39l18 58q-16 5-29.5 14T299 866q17 20 70.5 35T480 916q57 0 111-15t71-35q-8-8-21-17t-30-15l17-58q43 15 67.5 39t24.5 51q0 48-67 79t-173 31Zm0-215q21.103-39 44.552-71.5Q548 657 571 628q44-57 69.5-98T666 421.926q0-77.666-54.214-131.796-54.215-54.13-132-54.13Q402 236 348 290.13t-54 131.796Q294 489 319.5 530t69.5 98q23 29 46.448 61.5Q458.897 722 480 761Zm0 109q-12 0-21-6.771T446 845q-24-73-60.019-121-36.02-48-69.981-92-34-44-58-91.5t-24-118.541Q234 319 305.319 247.5 376.639 176 480 176q103.361 0 174.681 71.319Q726 318.639 726 422q0 71-23.873 118.341Q678.253 587.681 644 632q-34 44-70 92t-59.852 120.732Q510 856 501 863t-21 7Zm.208-388Q505 482 522.5 464.292q17.5-17.709 17.5-42.5Q540 397 522.292 379.5q-17.709-17.5-42.5-17.5Q455 362 437.5 379.708q-17.5 17.709-17.5 42.5Q420 447 437.708 464.5q17.709 17.5 42.5 17.5ZM480 422Z"], 66 | "stand-girl":[0,96,960,960,"M479.899 376Q455 376 437.5 358.399t-17.5-42.5Q420 291 437.601 273.5t42.5-17.5Q505 256 522.5 273.601t17.5 42.5Q540 341 522.399 358.5t-42.5 17.5ZM420 896V716h-71l85-248q5-14 17.627-23 12.626-9 28.5-9 15.873 0 28.373 9 12.5 9 17.5 23l85 248h-71v180H420Z"], 67 | "stand-male":[0,96,960,960,"M479.899 376Q455 376 437.5 358.399t-17.5-42.5Q420 291 437.601 273.5t42.5-17.5Q505 256 522.5 273.601t17.5 42.5Q540 341 522.399 358.5t-42.5 17.5ZM420 896V696h-40V496q0-24.75 17.625-42.375T440 436h80q24.75 0 42.375 17.625T580 496v200h-40v200H420Z"], 68 | "walk":[0,96,960,960,"m278 1016 116-586-101 43v133h-61V433l192-81q14-6 29.5-7.5T484 346q17 3 29.5 11t20.5 20l42 66q31 48 77.5 75.5T753 546v60q-70-2-123.5-30.5T533 488l-38 152 92 83v293h-60V776l-108-98-79 338h-62Zm262-714q-30 0-51.5-21.5T467 229q0-30 21.5-51.5T540 156q30 0 51.5 21.5T613 229q0 30-21.5 51.5T540 302Z"], 69 | "android-mobile":[0,96,960,960,"M398 931h164v-40H398v40Zm-138 85q-24 0-42-18t-18-42V196q0-24 18-42t42-18h440q24 0 42 18t18 42v760q0 24-18 42t-42 18H260Zm0-150v90h440v-90H260Zm0-60h440V286H260v520Zm0-580h440v-30H260v30Zm0 640v90-90Zm0-640v-30 30Z"], 70 | "iphone-mobile":[0,96,960,960,"M260 1016q-24 0-42-18t-18-42V196q0-24 18-42t42-18h440q24 0 42 18t18 42v760q0 24-18 42t-42 18H260Zm0-150v90h440v-90H260Zm220.175 75q12.825 0 21.325-8.675 8.5-8.676 8.5-21.5 0-12.825-8.675-21.325-8.676-8.5-21.5-8.5-12.825 0-21.325 8.675-8.5 8.676-8.5 21.5 0 12.825 8.675 21.325 8.676 8.5 21.5 8.5ZM260 806h440V286H260v520Zm0-580h440v-30H260v30Zm0 640v90-90Zm0-640v-30 30Z"], 71 | "sim-card":[0,96,960,960,"M274 863h60v-60h-60v60Zm0-156h60V541h-60v166Zm174 156h60V693h-60v170Zm0-262h60v-60h-60v60Zm182 262h60v-60h-60v60Zm0-156h60V541h-60v166ZM220 976q-24 0-42-18t-18-42V415l239-239h341q24 0 42 18t18 42v680q0 24-18 42t-42 18H220Zm0-60h520V236H426L220 442.125V916Zm0 0h520-520Z"], 72 | "board_offline":[0,96,960,960,"M849 999 42 192l43-43 807 807-43 43ZM236 216h504q23 0 41.5 18.5T800 276v60h60v60h-60v135h60v60h-60v135h60v60h-54l-66-66V276H296l-60-60Zm217 216-96-96h96v96Zm47 48-17-17V336h197v144H500Zm180 179L531 510h149v149Zm-246-43Zm69-103ZM200 816V616h253v200H200Zm-48-600 60 60h-62v600h590v-72l60 60q-2 28-18 50t-42 22H150q-24 0-42-18t-18-42V276q0-24 18-40.5t44-19.5Zm331 331 197 197v72H483V547ZM272 336l181 181v69H200V336h72Z"], 73 | "borad":[0,96,960,960,"M150 936q-24 0-42-18t-18-42V276q0-24 18-42t42-18h600q24 0 42 18t18 42v60h60v60h-60v150h60v60h-60v150h60v60h-60v60q0 24-18 42t-42 18H150Zm0-60h600V276H150v600Zm60-60h253V616H210v200Zm283-336h197V336H493v144ZM210 586h253V336H210v250Zm283 230h197V510H493v306ZM150 276v600-600Z"], 74 | "charger":[0,96,960,960,"m462 874 170-360H502V274L332 634h130v240Zm18 102q-85 0-158-30.5T195 861q-54-54-84.5-127T80 576q0-84 30.5-157T195 292q54-54 127-85t158-31q84 0 157 31t127 85q54 54 85 127t31 157q0 85-31 158t-85 127q-54 54-127 84.5T480 976Zm0-400Zm0 340q145 0 242.5-97.5T820 576q0-145-97.5-242.5T480 236q-145 0-242.5 97.5T140 576q0 145 97.5 242.5T480 916Z"], 75 | "battery-v2-low":[0,0,24,24,"M17.5,20H4.5c-2.481,0-4.5-2.019-4.5-4.5v-7c0-2.481,2.019-4.5,4.5-4.5h13c2.312,0,4.223,1.753,4.473,4h.527c.827,0,1.5,.673,1.5,1.5v5c0,.827-.673,1.5-1.5,1.5h-.527c-.25,2.247-2.16,4-4.473,4ZM4.5,5c-1.93,0-3.5,1.57-3.5,3.5v7c0,1.93,1.57,3.5,3.5,3.5h13c1.93,0,3.5-1.57,3.5-3.5,0-.276,.224-.5,.5-.5h1c.275,0,.5-.224,.5-.5v-5c0-.276-.225-.5-.5-.5h-1c-.276,0-.5-.224-.5-.5,0-1.93-1.57-3.5-3.5-3.5H4.5Z"], 76 | "battery-v2-1":[0,0,24,24,"M17.5,20H4.5c-2.481,0-4.5-2.019-4.5-4.5v-7c0-2.481,2.019-4.5,4.5-4.5h13c2.312,0,4.223,1.753,4.472,4h.528c.827,0,1.5,.673,1.5,1.5v5c0,.827-.673,1.5-1.5,1.5h-.528c-.25,2.247-2.16,4-4.472,4ZM4.5,5c-1.93,0-3.5,1.57-3.5,3.5v7c0,1.93,1.57,3.5,3.5,3.5h13c1.93,0,3.5-1.57,3.5-3.5,0-.276,.224-.5,.5-.5h1c.276,0,.5-.224,.5-.5v-5c0-.276-.224-.5-.5-.5h-1c-.276,0-.5-.224-.5-.5,0-1.93-1.57-3.5-3.5-3.5H4.5Zm2,12h-2c-.827,0-1.5-.673-1.5-1.5v-7c0-.827,.673-1.5,1.5-1.5h2c.827,0,1.5,.673,1.5,1.5v7c0,.827-.673,1.5-1.5,1.5Zm-2-9c-.276,0-.5,.224-.5,.5v7c0,.276,.224,.5,.5,.5h2c.276,0,.5-.224,.5-.5v-7c0-.276-.224-.5-.5-.5h-2Z"], 77 | "battery-v2-2":[0,0,24,24,"M17.5,20H4.5c-2.481,0-4.5-2.019-4.5-4.5v-7c0-2.481,2.019-4.5,4.5-4.5h13c2.312,0,4.223,1.753,4.472,4h.528c.827,0,1.5,.673,1.5,1.5v5c0,.827-.673,1.5-1.5,1.5h-.528c-.25,2.247-2.16,4-4.472,4ZM4.5,5c-1.93,0-3.5,1.57-3.5,3.5v7c0,1.93,1.57,3.5,3.5,3.5h13c1.93,0,3.5-1.57,3.5-3.5,0-.276,.224-.5,.5-.5h1c.276,0,.5-.224,.5-.5v-5c0-.276-.224-.5-.5-.5h-1c-.276,0-.5-.224-.5-.5,0-1.93-1.57-3.5-3.5-3.5H4.5Zm6,12H4.5c-.827,0-1.5-.673-1.5-1.5v-7c0-.827,.673-1.5,1.5-1.5h6c.827,0,1.5,.673,1.5,1.5v7c0,.827-.673,1.5-1.5,1.5ZM4.5,8c-.276,0-.5,.224-.5,.5v7c0,.276,.224,.5,.5,.5h6c.276,0,.5-.224,.5-.5v-7c0-.276-.224-.5-.5-.5H4.5Z"], 78 | "battery-v2-3":[0,0,24,24,"M17.5,20H4.5c-2.481,0-4.5-2.019-4.5-4.5v-7c0-2.481,2.019-4.5,4.5-4.5h13c2.312,0,4.223,1.753,4.473,4h.527c.827,0,1.5,.673,1.5,1.5v5c0,.827-.673,1.5-1.5,1.5h-.527c-.25,2.247-2.16,4-4.473,4ZM4.5,5c-1.93,0-3.5,1.57-3.5,3.5v7c0,1.93,1.57,3.5,3.5,3.5h13c1.93,0,3.5-1.57,3.5-3.5,0-.276,.224-.5,.5-.5h1c.275,0,.5-.224,.5-.5v-5c0-.276-.225-.5-.5-.5h-1c-.276,0-.5-.224-.5-.5,0-1.93-1.57-3.5-3.5-3.5H4.5Zm9,12H4.5c-.827,0-1.5-.673-1.5-1.5v-7c0-.827,.673-1.5,1.5-1.5H13.5c.827,0,1.5,.673,1.5,1.5v7c0,.827-.673,1.5-1.5,1.5ZM4.5,8c-.275,0-.5,.224-.5,.5v7c0,.276,.225,.5,.5,.5H13.5c.275,0,.5-.224,.5-.5v-7c0-.276-.225-.5-.5-.5H4.5Z"], 79 | "battery-v2-full":[0,0,24,24,"M17.5,20H4.5c-2.481,0-4.5-2.019-4.5-4.5v-7c0-2.481,2.019-4.5,4.5-4.5h13c2.312,0,4.223,1.753,4.473,4h.527c.827,0,1.5,.673,1.5,1.5v5c0,.827-.673,1.5-1.5,1.5h-.527c-.25,2.247-2.16,4-4.473,4ZM4.5,5c-1.93,0-3.5,1.57-3.5,3.5v7c0,1.93,1.57,3.5,3.5,3.5h13c1.93,0,3.5-1.57,3.5-3.5,0-.276,.224-.5,.5-.5h1c.275,0,.5-.224,.5-.5v-5c0-.276-.225-.5-.5-.5h-1c-.276,0-.5-.224-.5-.5,0-1.93-1.57-3.5-3.5-3.5H4.5Zm13,12H4.5c-.827,0-1.5-.673-1.5-1.5v-7c0-.827,.673-1.5,1.5-1.5h13c.827,0,1.5,.673,1.5,1.5v7c0,.827-.673,1.5-1.5,1.5ZM4.5,8c-.275,0-.5,.224-.5,.5v7c0,.276,.225,.5,.5,.5h13c.275,0,.5-.224,.5-.5v-7c0-.276-.225-.5-.5-.5H4.5Z"], 80 | "battery-v2-charging":[0,0,24,24,"M11.5,20c-.071,0-.144-.015-.213-.048-.25-.118-.356-.416-.239-.666l2.848-6.03c.142-.223,.109-.41,.044-.531-.036-.068-.143-.225-.346-.225h-4.187c-.516,0-.975-.281-1.227-.752-.258-.48-.237-1.053,.056-1.494l2.812-5.967c.118-.249,.416-.357,.666-.239,.25,.118,.356,.416,.239,.666l-2.848,6.03c-.142,.223-.109,.41-.044,.532,.036,.067,.143,.225,.346,.225h4.187c.516,0,.975,.281,1.228,.752,.258,.48,.235,1.053-.057,1.494l-2.812,5.967c-.085,.181-.265,.287-.453,.287Zm10.473-4h.527c.827,0,1.5-.673,1.5-1.5v-5c0-.827-.673-1.5-1.5-1.5h-.527c-.25-2.247-2.16-4-4.473-4h-3c-.276,0-.5,.224-.5,.5s.224,.5,.5,.5h3c1.93,0,3.5,1.57,3.5,3.5,0,.276,.224,.5,.5,.5h1c.275,0,.5,.224,.5,.5v5c0,.276-.225,.5-.5,.5h-1c-.276,0-.5,.224-.5,.5,0,1.93-1.57,3.5-3.5,3.5h-3c-.276,0-.5,.224-.5,.5s.224,.5,.5,.5h3c2.312,0,4.223-1.753,4.473-4Zm-12.973,3.5c0-.276-.224-.5-.5-.5H4.5c-1.93,0-3.5-1.57-3.5-3.5v-7c0-1.93,1.57-3.5,3.5-3.5h4c.276,0,.5-.224,.5-.5s-.224-.5-.5-.5H4.5C2.019,4,0,6.019,0,8.5v7c0,2.481,2.019,4.5,4.5,4.5h4c.276,0,.5-.224,.5-.5Z"], 81 | "battery-v2-slash":[0,0,24,24,"M16,19.5c0,.276-.224,.5-.5,.5H4.5c-2.481,0-4.5-2.019-4.5-4.5v-7c0-1.098,.399-2.155,1.125-2.977,.184-.206,.5-.226,.706-.044,.207,.183,.227,.499,.044,.706-.564,.639-.875,1.461-.875,2.314v7c0,1.93,1.57,3.5,3.5,3.5H15.5c.276,0,.5,.224,.5,.5Zm3.969-.238l3.885,3.885c.195,.195,.195,.512,0,.707-.098,.098-.226,.146-.354,.146s-.256-.049-.354-.146L.146,.854C-.049,.658-.049,.342,.146,.146S.658-.049,.854,.146l3.854,3.854h12.793c2.312,0,4.223,1.753,4.473,4h.527c.827,0,1.5,.673,1.5,1.5v5c0,.827-.673,1.5-1.5,1.5h-.528c-.15,1.328-.89,2.529-2.003,3.262Zm1.031-3.762c0-.276,.224-.5,.5-.5h1c.275,0,.5-.224,.5-.5v-5c0-.276-.225-.5-.5-.5h-1c-.276,0-.5-.224-.5-.5,0-1.93-1.57-3.5-3.5-3.5H5.707l13.536,13.536c1.076-.62,1.757-1.781,1.757-3.036Z"], 82 | "wave":[0,0,24,24,"16.527 22.416 11.953 5.266 7.521 18.951 4.665 12 0 12 0 11 5.335 11 7.41 16.049 12.047 1.734 16.541 18.584 18.618 11 24 11 24 12 19.382 12 16.527 22.416"], 83 | //"":[0,0,24,24,""], 84 | } 85 | 86 | async function getIcon(name) { 87 | if (!(name in icons)) { 88 | console.log(`Icon "${name}" not available`); 89 | return ''; 90 | } 91 | 92 | var svgDef = icons[name]; 93 | var primaryPath = svgDef[4]; 94 | return { 95 | path: primaryPath, 96 | viewBox: svgDef[0] + " " + svgDef[1] + " " + svgDef[2] + " " + svgDef[3] 97 | } 98 | 99 | } 100 | 101 | async function getIconList() { 102 | return Object.entries(icons).map(([icon]) => ({ 103 | name: icon 104 | })); 105 | } 106 | 107 | window.customIconsets = window.customIconsets || {}; 108 | window.customIconsets["ssb"] = getIcon; 109 | 110 | window.customIcons = window.customIcons || {}; 111 | window.customIcons["ssb"] = { getIcon, getIconList }; --------------------------------------------------------------------------------