import qs.components import qs.components.effects import qs.services import qs.config import QtQuick StyledRect { id: root required property int activeWsId required property Repeater workspaces required property Item mask required property var monitorWorkspaces readonly property int currentWsIdx: { let wss = monitorWorkspaces; for (let i = 0; i < wss.length; i++) { let ws = wss[i]; if (ws.id == activeWsId) return i; } } property real currentSize: workspaces.itemAt(currentWsIdx)?.size ?? 0 property real offset: workspaces.itemAt(currentWsIdx)?.y ?? 0 property real size: Config.bar.sizes.innerWidth - Appearance.padding.small * 2 property int cWs property int lastWs onCurrentWsIdxChanged: { lastWs = cWs; cWs = currentWsIdx; } clip: true y: offset + mask.y implicitWidth: size implicitHeight: size radius: Appearance.rounding.full color: Colours.palette.m3primary Colouriser { source: root.mask sourceColor: Colours.palette.m3onSurface colorizationColor: Colours.palette.m3onPrimary x: 0 y: -parent.offset implicitWidth: root.mask.implicitWidth implicitHeight: root.mask.implicitHeight anchors.horizontalCenter: parent.horizontalCenter } Behavior on offset { EAnim {} } component EAnim: Anim { easing.bezierCurve: Appearance.anim.curves.emphasized } }