import qs.modules.common import qs.modules.common.widgets import QtQuick import QtQuick.Layouts Item { id: root property int currentIndex: 0 property bool expanded: false default property alias data: tabBarColumn.data implicitHeight: tabBarColumn.implicitHeight implicitWidth: tabBarColumn.implicitWidth Layout.topMargin: 25 Rectangle { property real itemHeight: tabBarColumn.children[0]?.baseSize ?? 56 property real baseHighlightHeight: tabBarColumn.children[0]?.baseHighlightHeight ?? 56 anchors { top: tabBarColumn.top left: tabBarColumn.left topMargin: itemHeight * root.currentIndex + (root.expanded ? 0 : ((itemHeight - baseHighlightHeight) / 2)) } radius: Appearance.rounding.full color: Appearance.colors.colSecondaryContainer implicitHeight: root.expanded ? itemHeight : baseHighlightHeight implicitWidth: tabBarColumn?.children[root.currentIndex]?.visualWidth ?? 100 Behavior on anchors.topMargin { NumberAnimation { duration: Appearance.animationCurves.expressiveFastSpatialDuration easing.type: Appearance.animation.elementMove.type easing.bezierCurve: Appearance.animationCurves.expressiveFastSpatial } } } ColumnLayout { id: tabBarColumn anchors.fill: parent spacing: 0 } }