feat: initial commit for pixel-snapping components and helpers

This commit is contained in:
2026-10-29 17:34:57 +01:00
parent 9d8bde1413
commit 9cbb90f9e1
163 changed files with 2671 additions and 951 deletions
+2 -1
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import Quickshell
import Quickshell.Services.Pipewire
import qs.Components
@@ -39,7 +40,7 @@ ItemList {
onClicked: root.selected(device.modelData)
}
RowLayout {
SnapLayout {
id: deviceLayout
anchors.fill: parent
+4 -2
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Blobs
import qs.Components
import ZShell.Config
@@ -181,7 +182,8 @@ Item {
onWheel: event => event.accepted = true
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
anchors.bottomMargin: Tokens.padding.largeIncreased
anchors.fill: parent
anchors.margins: Tokens.padding.extraLarge
@@ -222,7 +224,7 @@ Item {
}
}
RowLayout {
SnapLayout {
Layout.alignment: Qt.AlignRight
spacing: Tokens.spacing.extraSmall
+4 -2
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import qs.Components
import ZShell.Config
import qs.Services
@@ -29,7 +30,7 @@ ConnectedRect {
}
}
RowLayout {
SnapLayout {
id: rowLayout
anchors.fill: parent
@@ -44,7 +45,8 @@ ConnectedRect {
visible: root.leadingComponent
}
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
Layout.fillWidth: true
spacing: 0
+3 -1
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import qs.Components
import ZShell.Config
import qs.Services
@@ -38,7 +39,8 @@ ConnectedRect {
type: Anim.DefaultEffects
}
}
sourceComponent: ColumnLayout {
sourceComponent: SnapLayout {
orientation: Qt.Vertical
spacing: Tokens.spacing.extraSmall
MaterialIcon {
+2 -1
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import Quickshell
import ZShell.Config
import qs.Components
@@ -265,7 +266,7 @@ ListView {
}
}
RowLayout {
SnapLayout {
id: row
anchors.fill: parent
+4 -2
View File
@@ -2,12 +2,14 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import qs.Modules.Settings
import qs.Components
import ZShell.Config
import qs.Services
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
id: root
property bool animateScroll: false
@@ -118,7 +120,7 @@ ColumnLayout {
onClicked: focus = true
RowLayout {
SnapLayout {
id: header
spacing: Tokens.spacing.largeIncreased
+4 -2
View File
@@ -1,5 +1,6 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import Quickshell
import qs.Components
import ZShell.Config
@@ -27,7 +28,7 @@ ConnectedRect {
onClicked: popup.open = true
}
RowLayout {
SnapLayout {
id: navLayout
anchors.fill: parent
@@ -43,7 +44,8 @@ ConnectedRect {
fontStyle: Tokens.font.icon.medium
}
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
Layout.fillWidth: true
spacing: 0
+2 -1
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Components
import qs.Services
@@ -30,7 +31,7 @@ ConnectedRect {
onClicked: e => root.clicked(e)
}
RowLayout {
SnapLayout {
id: row
anchors.left: parent.left
+3 -1
View File
@@ -3,6 +3,7 @@ pragma ComponentBehavior: Bound
import Quickshell
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Components
import qs.Services
@@ -19,7 +20,8 @@ DialogRowButton {
separateContent: true
content: Component {
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
VerticalFadeListView {
bottomMargin: Tokens.padding.large
Layout.fillHeight: true
+1 -1
View File
@@ -1,7 +1,7 @@
import QtQuick
import QtQuick.Layouts
import qs.Components
import ZShell.Config
import qs.Components
import qs.Services
CustomText {
+4 -2
View File
@@ -1,5 +1,6 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import qs.Components
import ZShell.Config
import qs.Services
@@ -22,7 +23,7 @@ ConnectedRect {
implicitHeight: rowLayout.implicitHeight + rowLayout.anchors.margins * 2
z: splitButton.expanded ? 1 : 0
RowLayout {
SnapLayout {
id: rowLayout
anchors.fill: parent
@@ -31,7 +32,8 @@ ConnectedRect {
anchors.rightMargin: Tokens.padding.largeIncreased
spacing: Tokens.spacing.small
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
Layout.fillWidth: true
spacing: 0
+5 -3
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import qs.Components
import ZShell.Config
import qs.Services
@@ -19,7 +20,7 @@ ConnectedRect {
Layout.fillWidth: true
implicitHeight: rowLayout.implicitHeight + rowLayout.anchors.margins + rowLayout.anchors.topMargin
RowLayout {
SnapLayout {
id: rowLayout
anchors.fill: parent
@@ -27,11 +28,12 @@ ConnectedRect {
anchors.topMargin: Tokens.padding.large
spacing: Tokens.spacing.small
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
Layout.fillWidth: true
spacing: Tokens.spacing.small
RowLayout {
SnapLayout {
Layout.fillWidth: true
spacing: Tokens.spacing.small
+4 -2
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import qs.Components
import ZShell.Config
import qs.Services
@@ -21,7 +22,7 @@ ConnectedRect {
Layout.fillWidth: true
implicitHeight: rowLayout.implicitHeight + rowLayout.anchors.margins * 2
RowLayout {
SnapLayout {
id: rowLayout
anchors.fill: parent
@@ -30,7 +31,8 @@ ConnectedRect {
anchors.rightMargin: Tokens.padding.largeIncreased
spacing: Tokens.spacing.small
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
Layout.fillWidth: true
spacing: 0
+4 -2
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Components
import qs.Services
@@ -35,7 +36,7 @@ ConnectedRect {
Layout.fillWidth: true
implicitHeight: rowLayout.implicitHeight + Tokens.padding.medium + Math.max(0, Tokens.padding.large - input.verticalPadding) * 2
RowLayout {
SnapLayout {
id: rowLayout
anchors.left: parent.left
@@ -45,7 +46,8 @@ ConnectedRect {
anchors.rightMargin: Tokens.padding.largeIncreased
spacing: Tokens.spacing.medium
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
Layout.fillWidth: true
spacing: 0
+4 -2
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Blobs
import qs.Components
import ZShell.Config
@@ -185,7 +186,8 @@ Item {
implicitWidth: innerLayout.implicitWidth + innerLayout.anchors.margins * 2
implicitHeight: innerLayout.implicitHeight + innerLayout.anchors.margins + innerLayout.anchors.bottomMargin
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
id: innerLayout
anchors.bottomMargin: Tokens.padding.largeIncreased
anchors.fill: parent
@@ -206,7 +208,7 @@ Item {
sourceComponent: root.content
}
RowLayout {
SnapLayout {
Layout.alignment: Qt.AlignRight
spacing: Tokens.spacing.extraSmall
@@ -1,5 +1,6 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import ZShell.Config
import qs.Components
import qs.Modules.Settings
+4 -3
View File
@@ -6,7 +6,8 @@ import qs.Components
import qs.Helpers
import qs.Services
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
id: root
required property int start
@@ -28,7 +29,7 @@ ColumnLayout {
spacing: Tokens.spacing.medium
RowLayout {
SnapLayout {
CustomRect {
id: startHourRect
@@ -470,7 +471,7 @@ ColumnLayout {
}
}
RowLayout {
SnapLayout {
CustomText {
Layout.preferredWidth: spacer.x + spacer.width
text: qsTr("Start")
+1
View File
@@ -1,5 +1,6 @@
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import qs.Components
import ZShell.Config
import qs.Services
+3 -1
View File
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import Quickshell
import qs.Components
import ZShell.Config
@@ -19,7 +20,8 @@ Item {
Layout.fillWidth: true
implicitHeight: layout.implicitHeight
ColumnLayout {
SnapLayout {
orientation: Qt.Vertical
id: layout
anchors.fill: parent
+1 -1
View File
@@ -156,7 +156,7 @@ Item {
}
}
RowLayout {
SnapLayout {
id: sliderLayout
anchors.bottom: parent.bottom