added two new themes, reworked Crypto.qml and Stats.qml, standardized the buttons for the modules, added a new Sidebar widget which contains new 3 modules

This commit is contained in:
SomeElse
2026-05-28 08:24:03 +00:00
parent b9708ddfd0
commit 1b9ee3bbb3
39 changed files with 3652 additions and 267 deletions

View File

@@ -0,0 +1,90 @@
import QtQuick
import QtQuick.Layouts
// ── SysInfoRow ────────────────────────────────────────────────────────────────
// Metric row with icon badge, label, right-aligned value, and an optional
// animated progress bar underneath.
Item {
id: root
property string icon: ""
property string label: ""
property string value: "—"
property color iconColor: "#ffffffff"
property color dimColor: "#997a8996"
property color textColor: "#ffe8eef2"
property bool showBar: false
property int barPct: 0 // 0-100
property color barColor: iconColor
property color trackColor: "#15ffffff"
implicitHeight: col.implicitHeight
implicitWidth: col.implicitWidth
ColumnLayout {
id: col
anchors { left: parent.left; right: parent.right }
spacing: 5
// ── Label row ─────────────────────────────────────────────────────────
RowLayout {
Layout.fillWidth: true
spacing: 10
// Icon in a tinted pill badge
Rectangle {
width: 18; height: 18
radius: 4
color: Qt.alpha(root.iconColor, 0.15)
Layout.alignment: Qt.AlignVCenter
Text {
anchors.centerIn: parent
text: root.icon
color: root.iconColor
font.pixelSize: 12
}
}
Text {
text: root.label
color: root.dimColor
font.pixelSize: 12
Layout.fillWidth: true
Layout.alignment: Qt.AlignVCenter
}
Text {
text: root.value
color: root.textColor
font.pixelSize: 12
font.weight: Font.Medium
Layout.alignment: Qt.AlignVCenter
}
}
// ── Progress bar (optional) ───────────────────────────────────────────
Rectangle {
visible: root.showBar
Layout.fillWidth: true
height: 3
radius: 2
color: root.trackColor
Rectangle {
width: parent.width * Math.max(0, Math.min(root.barPct, 100)) / 100
height: parent.height
radius: parent.radius
color: root.barColor
// smooth fill transitions on data refresh
Behavior on width {
NumberAnimation { duration: 800; easing.type: Easing.OutCubic }
}
Behavior on color {
ColorAnimation { duration: 300 }
}
}
}
}
}