From 35840bd8a794998e17d99064d27b82e33100926d Mon Sep 17 00:00:00 2001 From: Mark Date: Sun, 18 Feb 2024 21:27:02 +0100 Subject: [PATCH 1/7] Update About.js --- src/views/About.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/views/About.js b/src/views/About.js index 875e435..e183cbb 100755 --- a/src/views/About.js +++ b/src/views/About.js @@ -51,7 +51,7 @@ function About() {

Support:

- +

License:

@@ -112,6 +112,15 @@ function About() {
+
+
Mark
+
Maintainer & Support
+
Maintaining the Github repository, Add api features, Fix bugs, Slack & Github support.
+
+ +
+
+
Thank you!
A big thank you to everyone contributing to this project:
From 95a10a1c4e0ea302dca099e329a752597240a57d Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 2 Mar 2024 13:58:48 +0100 Subject: [PATCH 2/7] update --- src/containers/TheHeader.js | 30 ++++++++++++++++++++++++++++ src/scss/mainframe.scss | 40 +++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/src/containers/TheHeader.js b/src/containers/TheHeader.js index 0e53832..cb151df 100644 --- a/src/containers/TheHeader.js +++ b/src/containers/TheHeader.js @@ -2,9 +2,13 @@ import { useState, useEffect } from "react"; import { FaBars } from "react-icons/fa"; import axios from "axios"; import { motion } from "framer-motion"; +import { toast } from 'react-hot-toast'; const TheHeader = ({ HOST_IP, showSidebar, setShowSidebar, API_KEY }) => { const [group0State, setGroup0State] = useState(false); + const [install, setInstall] = useState(false); + const [check, setCheck] = useState(false); + const [state, getState] = useState("noupdates"); const iconVariants = { opened: { @@ -18,6 +22,17 @@ const TheHeader = ({ HOST_IP, showSidebar, setShowSidebar, API_KEY }) => { }; useEffect(() => { + axios + .get(`${HOST_IP}/api/${API_KEY}/config/swupdate2`) + .then((result) => { + setInstall(result.data["install"]); + setCheck(result.data["checkforupdate"]); + getState(result.data["state"]); + }) + .catch((error) => { + console.error(error); + //toast.error(`Error occurred: ${error.message}`); + }); const fetchGroups = () => { if (API_KEY !== undefined) { axios @@ -46,6 +61,10 @@ const TheHeader = ({ HOST_IP, showSidebar, setShowSidebar, API_KEY }) => { axios.put(`${HOST_IP}/api/${API_KEY}/groups/0/action`, newState); }; + const handleupdate = () => { + toast.success("Check update"); + } + return (
{ > +
+
handleupdate(e)}> + setCheck(e.target.checked)} + /> +
+
+

Turn all lights {group0State ? "off" : "on"}

diff --git a/src/scss/mainframe.scss b/src/scss/mainframe.scss index 3944c84..b839594 100644 --- a/src/scss/mainframe.scss +++ b/src/scss/mainframe.scss @@ -112,6 +112,46 @@ body { } } + .checkbtn { + display: flex; + align-items: center; + margin: 15px 15px; + background: rgb(85, 106, 120); + padding: 10px 10px; + border-radius: 10px; + color: #eee; + font-size: 18px; + font-weight: 0; + border: none; + + &:hover, + &:active, + &:focus { + border: none; + background: rgb(61, 177, 255); + } + } + + .updatebtn { + display: flex; + align-items: center; + margin: 15px 15px; + background: rgb(0, 185, 34); + padding: 10px 10px; + border-radius: 10px; + color: #eee; + font-size: 18px; + font-weight: 0; + border: none; + + &:hover, + &:active, + &:focus { + border: none; + background: rgb(67, 255, 61); + } + } + .hamburger { display: flex; color: #ccc; From d28b0941cc659af700e25d41bdae8e25072e2594 Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 2 Mar 2024 15:42:35 +0100 Subject: [PATCH 3/7] Update TheHeader.js --- src/containers/TheHeader.js | 93 +++++++++++++++++++++++++++++-------- 1 file changed, 74 insertions(+), 19 deletions(-) diff --git a/src/containers/TheHeader.js b/src/containers/TheHeader.js index cb151df..1632e77 100644 --- a/src/containers/TheHeader.js +++ b/src/containers/TheHeader.js @@ -22,17 +22,21 @@ const TheHeader = ({ HOST_IP, showSidebar, setShowSidebar, API_KEY }) => { }; useEffect(() => { - axios - .get(`${HOST_IP}/api/${API_KEY}/config/swupdate2`) - .then((result) => { - setInstall(result.data["install"]); - setCheck(result.data["checkforupdate"]); - getState(result.data["state"]); - }) - .catch((error) => { - console.error(error); - //toast.error(`Error occurred: ${error.message}`); - }); + const fetchUpdate = () => { + if (API_KEY !== undefined) { + axios + .get(`${HOST_IP}/api/${API_KEY}/config/swupdate2`) + .then((result) => { + setInstall(result.data["install"]); + setCheck(result.data["checkforupdate"]); + getState(result.data["state"]); + }) + .catch((error) => { + console.error(error); + toast.error(`Error occurred: ${error.message}`); + }); + } + }; const fetchGroups = () => { if (API_KEY !== undefined) { axios @@ -43,13 +47,16 @@ const TheHeader = ({ HOST_IP, showSidebar, setShowSidebar, API_KEY }) => { }) .catch((error) => { console.error(error); + toast.error(`Error occurred: ${error.message}`); }); } }; + fetchUpdate(); fetchGroups(); const interval = setInterval(() => { fetchGroups(); + fetchUpdate(); }, 5000); // <<-- ⏱ 1000ms = 1s return () => clearInterval(interval); }, [HOST_IP, API_KEY]); @@ -61,8 +68,56 @@ const TheHeader = ({ HOST_IP, showSidebar, setShowSidebar, API_KEY }) => { axios.put(`${HOST_IP}/api/${API_KEY}/groups/0/action`, newState); }; - const handleupdate = () => { - toast.success("Check update"); + const handleupdate = (state) => { + if (state == "anyreadytoinstall" || state == "allreadytoinstall") { + axios + .put(`${HOST_IP}/api/${API_KEY}/config`, { + swupdate2: { install: false }, + }) + .then((fetchedData) => { + console.log(fetchedData.data); + toast.success("Install update"); + }) + .catch((error) => { + console.error(error); + toast.error(`Error occurred: ${error.message}`); + }); + } + if (state == "noupdates" || state == "unknown") { + axios + .put(`${HOST_IP}/api/${API_KEY}/config`, { + swupdate2: { checkforupdate: true, install: false }, + }) + .then((fetchedData) => { + console.log(fetchedData.data); + toast.success("Check update"); + }) + .catch((error) => { + console.error(error); + toast.error(`Error occurred: ${error.message}`); + }); + } + } + + const getUpdateState = (state, value) => { + let msg; + if (state == "anyreadytoinstall" || state == "allreadytoinstall") { + if (value == "value") { + msg = "Update available"; + } + else if (value == "className") { + msg = "updatebtn"; + } + } + else if (state == "noupdates" || state == "unknown") { + if (value == "value") { + msg = "No Update"; + } + else if (value == "className") { + msg = "checkbtn"; + } + } + return msg } return ( @@ -76,17 +131,17 @@ const TheHeader = ({ HOST_IP, showSidebar, setShowSidebar, API_KEY }) => { > +
-
handleupdate(e)}> - handleupdate(state, e)}> + setCheck(e.target.checked)} + value={getUpdateState(state, "value")} + className={getUpdateState(state, "className")} />
- +

Turn all lights {group0State ? "off" : "on"}

From ed2574571974279639f58e940728e7296245f055 Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 2 Mar 2024 15:44:40 +0100 Subject: [PATCH 4/7] Update TheHeader.js --- src/containers/TheHeader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/containers/TheHeader.js b/src/containers/TheHeader.js index 1632e77..0e95d17 100644 --- a/src/containers/TheHeader.js +++ b/src/containers/TheHeader.js @@ -72,7 +72,7 @@ const TheHeader = ({ HOST_IP, showSidebar, setShowSidebar, API_KEY }) => { if (state == "anyreadytoinstall" || state == "allreadytoinstall") { axios .put(`${HOST_IP}/api/${API_KEY}/config`, { - swupdate2: { install: false }, + swupdate2: { install: true }, }) .then((fetchedData) => { console.log(fetchedData.data); From fa024f6cfb6feb96963342fc43766a1b33321320 Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 2 Mar 2024 15:52:57 +0100 Subject: [PATCH 5/7] Update TheHeader.js --- src/containers/TheHeader.js | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/src/containers/TheHeader.js b/src/containers/TheHeader.js index 0e95d17..aaeefc1 100644 --- a/src/containers/TheHeader.js +++ b/src/containers/TheHeader.js @@ -8,7 +8,7 @@ const TheHeader = ({ HOST_IP, showSidebar, setShowSidebar, API_KEY }) => { const [group0State, setGroup0State] = useState(false); const [install, setInstall] = useState(false); const [check, setCheck] = useState(false); - const [state, getState] = useState("noupdates"); + const [swstate, getState] = useState("noupdates"); const iconVariants = { opened: { @@ -99,25 +99,22 @@ const TheHeader = ({ HOST_IP, showSidebar, setShowSidebar, API_KEY }) => { } } - const getUpdateState = (state, value) => { - let msg; + const getValueState = (state) => { if (state == "anyreadytoinstall" || state == "allreadytoinstall") { - if (value == "value") { - msg = "Update available"; - } - else if (value == "className") { - msg = "updatebtn"; - } + return "Update available"; } else if (state == "noupdates" || state == "unknown") { - if (value == "value") { - msg = "No Update"; - } - else if (value == "className") { - msg = "checkbtn"; - } + return "No Update"; + } + } + + const getClassState = (state) => { + if (state == "anyreadytoinstall" || state == "allreadytoinstall") { + return "updatebtn"; + } + else if (state == "noupdates" || state == "unknown") { + return "checkbtn"; } - return msg } return ( @@ -133,11 +130,11 @@ const TheHeader = ({ HOST_IP, showSidebar, setShowSidebar, API_KEY }) => {
-
handleupdate(state, e)}> + handleupdate(swstate, e)}>
From 3069fbbdefbc5f1621652cbddf3ebb3309bbbc3d Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 2 Mar 2024 16:02:38 +0100 Subject: [PATCH 6/7] update --- src/containers/TheHeader.js | 8 +++++++- src/scss/mainframe.scss | 13 +++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/containers/TheHeader.js b/src/containers/TheHeader.js index aaeefc1..381d923 100644 --- a/src/containers/TheHeader.js +++ b/src/containers/TheHeader.js @@ -106,8 +106,11 @@ const TheHeader = ({ HOST_IP, showSidebar, setShowSidebar, API_KEY }) => { else if (state == "noupdates" || state == "unknown") { return "No Update"; } + else if (state == "installing"){ + return "installing..." + } } - + const getClassState = (state) => { if (state == "anyreadytoinstall" || state == "allreadytoinstall") { return "updatebtn"; @@ -115,6 +118,9 @@ const TheHeader = ({ HOST_IP, showSidebar, setShowSidebar, API_KEY }) => { else if (state == "noupdates" || state == "unknown") { return "checkbtn"; } + else if (state == "installing"){ + return "installbtn" + } } return ( diff --git a/src/scss/mainframe.scss b/src/scss/mainframe.scss index b839594..dedebb2 100644 --- a/src/scss/mainframe.scss +++ b/src/scss/mainframe.scss @@ -152,6 +152,19 @@ body { } } + .installbtn { + display: flex; + align-items: center; + margin: 15px 15px; + background: rgb(128, 0, 255); + padding: 10px 10px; + border-radius: 10px; + color: #eee; + font-size: 18px; + font-weight: 0; + border: none; + } + .hamburger { display: flex; color: #ccc; From 60c482bc7bad8647d34fee3349fbf2b17be17704 Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 2 Mar 2024 16:21:53 +0100 Subject: [PATCH 7/7] icon update --- src/icons/hass-hue-icons.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/icons/hass-hue-icons.js b/src/icons/hass-hue-icons.js index 5e9fdb9..8969e84 100644 --- a/src/icons/hass-hue-icons.js +++ b/src/icons/hass-hue-icons.js @@ -146,7 +146,7 @@ export function HueIcons({ type, color = "#000000" }) { "room-laundry": "M 18.75 4.5 C 18.335938 4.5 18 4.164062 18 3.75 C 18 3.335938 18.335938 3 18.75 3 C 19.164062 3 19.5 3.335938 19.5 3.75 C 19.5 4.164062 19.164062 4.5 18.75 4.5 M 12 19.5 C 8.6875 19.5 6 16.8125 6 13.5 C 6 10.1875 8.6875 7.5 12 7.5 C 15.3125 7.5 18 10.1875 18 13.5 C 18 16.8125 15.3125 19.5 12 19.5 M 4.5 3.75 C 4.5 3.335938 4.835938 3 5.25 3 L 8.25 3 C 8.664062 3 9 3.335938 9 3.75 C 9 4.164062 8.664062 4.5 8.25 4.5 L 5.25 4.5 C 4.835938 4.5 4.5 4.164062 4.5 3.75 M 15.75 3 C 16.164062 3 16.5 3.335938 16.5 3.75 C 16.5 4.164062 16.164062 4.5 15.75 4.5 C 15.335938 4.5 15 4.164062 15 3.75 C 15 3.335938 15.335938 3 15.75 3 Z M 16.5 12.019531 C 15.761719 12.136719 15.210938 12.753906 15.210938 13.5 C 15.210938 14.246094 15.761719 14.863281 16.5 14.976562 C 15.867188 16.734375 14.152344 18 12.132812 18 C 9.578125 18 7.5 15.980469 7.5 13.5 C 7.5 11.019531 9.578125 9 12.132812 9 C 14.152344 9 15.867188 10.265625 16.5 12.019531 Z M 20.25 1.5 L 3.75 1.5 C 3.335938 1.5 3 1.835938 3 2.25 L 3 21.75 C 3 22.164062 3.335938 22.5 3.75 22.5 L 20.25 22.5 C 20.664062 22.5 21 22.164062 21 21.75 L 21 2.25 C 21 1.835938 20.664062 1.5 20.25 1.5 ", - "room-living": + "room-living-room": "M 21 9.75 C 21.828125 9.75 22.5 10.421875 22.5 11.25 L 22.5 15.796875 C 22.5 16.1875 22.1875 16.5 21.796875 16.5 L 21 16.5 L 21 17.25 C 21 18.078125 20.328125 18.75 19.5 18.75 C 18.671875 18.75 18 18.078125 18 17.25 L 18 16.5 L 6 16.5 L 6 17.25 C 6 18.078125 5.328125 18.75 4.5 18.75 C 3.671875 18.75 3 18.078125 3 17.25 L 3 16.5 L 2.203125 16.5 C 1.8125 16.5 1.5 16.1875 1.5 15.796875 L 1.5 11.25 C 1.5 10.421875 2.171875 9.75 3 9.75 C 3.828125 9.75 4.5 10.421875 4.5 11.25 L 4.5 12.75 L 19.5 12.75 L 19.5 11.25 C 19.5 10.421875 20.171875 9.75 21 9.75 Z M 6 11.25 C 6 9.59375 4.65625 8.25 3 8.25 L 3 6.75 C 3 5.921875 3.671875 5.25 4.5 5.25 L 19.5 5.25 C 20.328125 5.25 21 5.921875 21 6.75 L 21 8.25 C 19.34375 8.25 18 9.59375 18 11.25 Z M 6 11.25 ", "room-lounge": @@ -476,6 +476,9 @@ export function HueIcons({ type, color = "#000000" }) { "lightstrip-tv": "M4.3,12.6c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8s0.9-0.4,0.8-0.8C5.1,13,4.8,12.6,4.3,12.6 M4.4,5C3.9,5,3.6,5.3,3.6,5.8s0.3,0.8,0.8,0.8s0.9-0.4,0.8-0.8C5.2,5.4,4.9,5,4.4,5z M12.3,5c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8s0.9-0.4,0.8-0.8C13.1,5.4,12.8,5,12.3,5z M16.2,5c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8c0.5,0,0.9-0.4,0.8-0.8C17,5.4,16.7,5,16.2,5z M8.3,5C7.8,5,7.5,5.3,7.5,5.8s0.3,0.8,0.8,0.8s0.9-0.4,0.8-0.8C9.1,5.4,8.8,5,8.3,5z M4.4,8.8c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8S5.3,10,5.2,9.6C5.2,9.2,4.9,8.8,4.4,8.8z M20.2,12.5c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8s0.9-0.4,0.8-0.8C21,12.9,20.7,12.5,20.2,12.5z M20.2,5c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8s0.9-0.4,0.8-0.8C21,5.4,20.7,5,20.2,5z M20.2,8.8c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8S21.1,10,21,9.6C21,9.2,20.7,8.8,20.2,8.8z M21.8,3.4H3C2.4,3.4,1.8,4,1.8,4.7v10.2c0,0.7,0.5,1.2,1.2,1.2l0.4,0l0,0h8.2v2.8h-1.4c-0.4,0-0.8,0.3-0.8,0.8 s0.3,0.8,0.8,0.8h4.4c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8h-1.5v-2.8h6.2h1.2h1c0.7,0,1.2-0.6,1.2-1.2V4.7 C22.7,4.4,22.7,3.4,21.8,3.4z M21.7,14.9c0,0.1-0.1,0.2-0.2,0.2H19c-0.2,0-0.3,0-0.4-0.1c-0.1-0.1-0.1-0.2-0.1-0.2l0-5.8 c0-0.6-0.2-0.9-0.4-1.1c-0.4-0.4-0.9-0.4-1-0.4c0,0,0,0,0,0H7.2c-0.9,0-1.3,0.8-1.3,1.3l0,6c0,0.2-0.2,0.3-0.2,0.3l-2.6,0 c-0.1,0-0.2-0.1-0.2-0.2V4.7c0-0.1,0.1-0.2,0.2-0.2l18.7,0c0,0.1,0,0.2,0,0.2V14.9z", + "room-tv": + "M4.3,12.6c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8s0.9-0.4,0.8-0.8C5.1,13,4.8,12.6,4.3,12.6 M4.4,5C3.9,5,3.6,5.3,3.6,5.8s0.3,0.8,0.8,0.8s0.9-0.4,0.8-0.8C5.2,5.4,4.9,5,4.4,5z M12.3,5c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8s0.9-0.4,0.8-0.8C13.1,5.4,12.8,5,12.3,5z M16.2,5c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8c0.5,0,0.9-0.4,0.8-0.8C17,5.4,16.7,5,16.2,5z M8.3,5C7.8,5,7.5,5.3,7.5,5.8s0.3,0.8,0.8,0.8s0.9-0.4,0.8-0.8C9.1,5.4,8.8,5,8.3,5z M4.4,8.8c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8S5.3,10,5.2,9.6C5.2,9.2,4.9,8.8,4.4,8.8z M20.2,12.5c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8s0.9-0.4,0.8-0.8C21,12.9,20.7,12.5,20.2,12.5z M20.2,5c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8s0.9-0.4,0.8-0.8C21,5.4,20.7,5,20.2,5z M20.2,8.8c-0.5,0-0.8,0.3-0.8,0.8s0.3,0.8,0.8,0.8S21.1,10,21,9.6C21,9.2,20.7,8.8,20.2,8.8z M21.8,3.4H3C2.4,3.4,1.8,4,1.8,4.7v10.2c0,0.7,0.5,1.2,1.2,1.2l0.4,0l0,0h8.2v2.8h-1.4c-0.4,0-0.8,0.3-0.8,0.8 s0.3,0.8,0.8,0.8h4.4c0.4,0,0.8-0.3,0.8-0.8s-0.3-0.8-0.8-0.8h-1.5v-2.8h6.2h1.2h1c0.7,0,1.2-0.6,1.2-1.2V4.7 C22.7,4.4,22.7,3.4,21.8,3.4z M21.7,14.9c0,0.1-0.1,0.2-0.2,0.2H19c-0.2,0-0.3,0-0.4-0.1c-0.1-0.1-0.1-0.2-0.1-0.2l0-5.8 c0-0.6-0.2-0.9-0.4-1.1c-0.4-0.4-0.9-0.4-1-0.4c0,0,0,0,0,0H7.2c-0.9,0-1.3,0.8-1.3,1.3l0,6c0,0.2-0.2,0.3-0.2,0.3l-2.6,0 c-0.1,0-0.2-0.1-0.2-0.2V4.7c0-0.1,0.1-0.2,0.2-0.2l18.7,0c0,0.1,0,0.2,0,0.2V14.9z", + "lightstrip-wrap": "M5.2,3C3.1,3.1,1.5,4.8,1.5,6.9v13.4c0,0.5,0.3,0.8,0.8,0.8h3c0.4,0,0.8-0.3,0.8-0.8V6.8C6,3.8,8.2,3,9,3H5.2z M3.6,19.6 c-0.5,0-0.8-0.3-0.8-0.8s0.4-0.7,0.8-0.7c0.4,0,0.8,0.3,0.8,0.8C4.5,19.3,4.1,19.6,3.6,19.6z M3.6,15.9c-0.5,0-0.7-0.4-0.7-0.8 c0-0.4,0.3-0.8,0.8-0.8s0.7,0.4,0.7,0.8C4.5,15.5,4.1,15.9,3.6,15.9z M3.6,12.1c-0.5,0-0.8-0.3-0.8-0.8s0.3-0.8,0.8-0.8 s0.8,0.4,0.8,0.8C4.5,11.8,4.1,12.1,3.6,12.1z M3.6,8.4c-0.5,0-0.8-0.3-0.8-0.8s0.3-0.8,0.8-0.8s0.8,0.4,0.8,0.8 C4.5,8,4.1,8.4,3.6,8.4z M18.8,2.9H15c0.8,0,3,0.8,3,3.8v13.5c0,0.5,0.4,0.8,0.8,0.8h3c0.5,0,0.8-0.3,0.8-0.8V6.8C22.5,4.7,20.8,3,18.8,2.9z M20.3,19.5c-0.5,0-0.8-0.3-0.8-0.7c0-0.5,0.4-0.8,0.8-0.8c0.4,0,0.8,0.2,0.8,0.7S20.8,19.5,20.3,19.5z M19.5,15 c0-0.4,0.2-0.8,0.7-0.8S21,14.6,21,15c0,0.4-0.2,0.8-0.7,0.8S19.5,15.4,19.5,15z M20.3,12c-0.5,0-0.8-0.3-0.8-0.8 c0-0.4,0.3-0.8,0.8-0.8s0.8,0.3,0.8,0.8S20.8,12,20.3,12z M20.3,8.3c-0.5,0-0.8-0.4-0.8-0.8c0-0.4,0.3-0.8,0.8-0.8s0.8,0.3,0.8,0.8 S20.8,8.3,20.3,8.3z M12,3C7.5,2.9,7.5,6.5,7.5,7h9.1C16.6,7,17.1,3,12,3z M10.3,5.9C9.9,6,9.5,5.7,9.4,5.3C9.3,4.9,9.6,4.5,10,4.4 c0.4-0.1,0.8,0.2,0.9,0.6C11,5.4,10.7,5.8,10.3,5.9z M14,5.9c-0.4,0.1-0.8-0.2-0.9-0.6s0.2-0.8,0.6-0.9c0.4-0.1,0.8,0.2,0.9,0.6 C14.7,5.4,14.4,5.8,14,5.9z", @@ -660,7 +663,7 @@ export function HueIcons({ type, color = "#000000" }) { return ( - + ); } \ No newline at end of file