├── 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 | | Name |
8 | Uploaded(5s) |
9 | Downloaded(5s) |
10 | Total Utilization |
11 |
12 |
13 | {% for i in range(0, clients | count ) %}
14 |
15 | | {{ clients[i]['client_ip'] }} |
16 | {{ clients[i]['txps'] }} |
17 | {{ clients[i]['rxps'] }} |
18 | {{ clients[i]['gbm'] }} |
19 |
{% endfor %}
20 |
21 |
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 | 
36 |
37 | ### Room Card
38 |
39 | * Sensor info under Room name.
40 | * Indication for Active device at top right corner.
41 |
42 | 
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 | 
50 |
51 | ### Media Player Card
52 |
53 | * Minimal view card
54 |
55 | 
56 |
57 | ### Switch Card
58 |
59 | * Shows state info.
60 | * Toggle button to indicate on/off state.
61 |
62 | 
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 | 
70 |
71 | ### Usage Card
72 |
73 | * Weekly graph of usage
74 |
75 | 
76 |
77 | ### Utilization Card
78 |
79 | * Shows utilization of resources with progress bar.
80 |
81 | 
82 |
83 | ### Storage Card
84 |
85 | * Show Storage with prgress bar.
86 |
87 | 
88 |
89 | ### Information Card
90 |
91 | #### Style 1
92 |
93 | * Shows sensor state information with graph.
94 |
95 | 
96 |
97 | #### Style 2
98 |
99 | * Shows sensor state information.
100 |
101 | 
102 |
103 | #### Style 3
104 |
105 | * Shows sensor state information.
106 |
107 | 
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 |
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 };
--------------------------------------------------------------------------------