import QtQuick import QtQuick.Controls import QtQuick.Layouts import qs.Constants Item { id: root required property string symbol property color buttonColor: Colors.distroColor readonly property alias hovered: mouseArea.containsMouse property real iconSize: Fonts.icon property real radius: Style.radiusS property bool disabledHover: false signal clicked() signal rightClicked() implicitHeight: parent.height implicitWidth: parent.height MouseArea { id: mouseArea anchors.fill: parent cursorShape: Qt.PointingHandCursor hoverEnabled: !disabledHover acceptedButtons: Qt.LeftButton | Qt.RightButton onClicked: (mouse) => { if (mouse.button === Qt.RightButton) root.rightClicked(); else if (mouse.button === Qt.LeftButton) root.clicked(); } } Text { anchors.fill: parent text: symbol font.family: Fonts.nerd font.pointSize: iconSize font.bold: false color: buttonColor horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter } Rectangle { anchors.fill: parent color: parent.hovered ? buttonColor : Colors.transparent opacity: 0.3 radius: root.radius Behavior on color { ColorAnimation { duration: Style.animationNormal easing.type: Easing.InOutCubic } } } }