pragma ComponentBehavior: Bound import Quickshell import QtQuick import qs.Components import ZShell.Config Item { id: root readonly property real nonAnimHeight: content.item?.nonAnimHeight ?? 0 property real offsetScale: shouldBeActive ? 0 : 1 required property string position readonly property bool shouldBeActive: root.visibilities.resources required property PersistentProperties visibilities anchors.bottom: position === "bottom" ? parent.bottom : undefined anchors.bottomMargin: position === "bottom" ? (-implicitHeight - 5) * offsetScale : 0 anchors.left: parent.left anchors.leftMargin: position === "left" ? (-implicitWidth - 5) * offsetScale : 0 anchors.top: position !== "bottom" ? parent.top : undefined anchors.topMargin: position === "top" ? (-implicitHeight - 5) * offsetScale : 0 clip: true implicitHeight: content.implicitHeight implicitWidth: content.implicitWidth || 854 // Hard coded fallback for first open opacity: 1 - offsetScale visible: offsetScale < 1 Behavior on offsetScale { Anim { duration: Tokens.anim.durations.expressiveDefaultSpatial easing.bezierCurve: Tokens.anim.curves.expressiveDefaultSpatial } } Loader { id: content active: root.shouldBeActive || root.visible anchors.bottom: root.position === "top" ? parent.bottom : undefined anchors.horizontalCenter: root.position !== "left" ? parent.horizontalCenter : undefined anchors.right: root.position !== "left" ? undefined : parent.right anchors.top: root.position === "bottom" ? parent.top : undefined anchors.verticalCenter: root.position === "left" ? undefined : parent.verticalCenter sourceComponent: Content { wrapper: root } } }