pragma ComponentBehavior: Bound import qs.components import qs.components.filedialog import qs.config import qs.utils import Caelestia import Quickshell import QtQuick Item { id: root required property PersistentProperties visibilities readonly property PersistentProperties dashState: PersistentProperties { property int currentTab property date currentDate: new Date() reloadableId: "dashboardState" } readonly property real nonAnimHeight: state === "visible" ? (content.item?.nonAnimHeight ?? 0) : 0 visible: height > 0 implicitHeight: 0 implicitWidth: content.implicitWidth onStateChanged: { if (state === "visible" && timer.running) { timer.triggered(); timer.stop(); } } states: State { name: "visible" when: root.visibilities.dashboard && Config.dashboard.enabled PropertyChanges { root.implicitHeight: content.implicitHeight } } transitions: [ Transition { from: "" to: "visible" Anim { target: root property: "implicitHeight" duration: Appearance.anim.durations.expressiveDefaultSpatial easing.bezierCurve: Appearance.anim.curves.expressiveDefaultSpatial } }, Transition { from: "visible" to: "" Anim { target: root property: "implicitHeight" easing.bezierCurve: Appearance.anim.curves.emphasized } } ] Timer { id: timer running: true interval: Appearance.anim.durations.extraLarge onTriggered: { content.active = Qt.binding(() => (root.visibilities.dashboard && Config.dashboard.enabled) || root.visible); content.visible = true; } } Loader { id: content anchors.horizontalCenter: parent.horizontalCenter anchors.bottom: parent.bottom visible: false active: true sourceComponent: Content { visibilities: root.visibilities state: root.dashState } } }