Files
Nebula-OS/packages/nebula-ui/qml/Nebula/UI/NebulaButton.qml
T
andrew befed8ff96 Add Qt/QML desktop shell and Nebula.UI
Introduce a new production desktop shell at `shells/desktop/shell` built with C++20, Qt Quick/QML, and LayerShellQt, including top bar, launcher, desktop surfaces, shell state, and mock app data. Add the shared `packages/nebula-ui` QML module (theme, controls, focus, icons) and wire it into the shell build.

Retire the old GTK/WebKit native host by removing `shells/desktop/native`, move the React shell UI to `shells/desktop/prototype-react` as an archived design reference, and update root/compositor/session documentation to reflect the new Linux-only production architecture and temporary Sway role.
2026-08-26 16:34:40 +12:00

69 lines
1.6 KiB
QML

import QtQuick
Item {
id: root
property string text: ""
property bool checked: false
property color textColor: checked ? Theme.accentStrong : Theme.textPrimary
default property alias icon: iconHolder.data
signal clicked()
implicitWidth: row.implicitWidth + 18
implicitHeight: Theme.controlHeight
Accessible.role: Accessible.Button
Accessible.name: root.text
Accessible.checkable: true
Accessible.checked: root.checked
Accessible.onPressAction: root.clicked()
Rectangle {
anchors.fill: parent
radius: Theme.radiusSmall
color: (hover.containsMouse || root.checked) ? Theme.accentSoft : "transparent"
Behavior on color {
ColorAnimation {
duration: Theme.animationFast
}
}
}
Row {
id: row
anchors.centerIn: parent
spacing: 8
Item {
id: iconHolder
width: children.length > 0 ? 18 : 0
height: 18
visible: width > 0
}
Text {
text: root.text
color: root.textColor
font.family: Theme.fontFamily
font.pixelSize: Theme.fontSize
font.weight: Font.DemiBold
visible: root.text.length > 0
anchors.verticalCenter: parent.verticalCenter
}
}
MouseArea {
id: hover
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: root.clicked()
}
FocusFrame {
radius: Theme.radiusSmall
}
}