pragma ComponentBehavior: Bound import QtQuick import QtQuick.Effects import qs.Common Item { id: root property var level: Theme.elevationLevel2 property string direction: Theme.elevationLightDirection property real fallbackOffset: 4 property color targetColor: "white" property real targetRadius: Theme.cornerRadius property real topLeftRadius: targetRadius property real topRightRadius: targetRadius property real bottomLeftRadius: targetRadius property real bottomRightRadius: targetRadius property color borderColor: "transparent" property real borderWidth: 0 property bool useCustomSource: false property bool shadowEnabled: Theme.elevationEnabled property real shadowBlurPx: level && level.blurPx !== undefined ? level.blurPx : 0 property real shadowSpreadPx: level && level.spreadPx !== undefined ? level.spreadPx : 0 property real shadowOffsetX: Theme.elevationOffsetXFor(level, direction, fallbackOffset) property real shadowOffsetY: Theme.elevationOffsetYFor(level, direction, fallbackOffset) property color shadowColor: Theme.elevationShadowColor(level) property real shadowOpacity: 1 property real blurMax: Theme.elevationBlurMax property alias sourceRect: sourceRect layer.enabled: shadowEnabled layer.effect: MultiEffect { autoPaddingEnabled: true shadowEnabled: true blurEnabled: false maskEnabled: false shadowBlur: Math.max(0, Math.min(1, root.shadowBlurPx / Math.max(1, root.blurMax))) shadowScale: 1 + (2 * root.shadowSpreadPx) / Math.max(1, Math.min(root.width, root.height)) shadowHorizontalOffset: root.shadowOffsetX shadowVerticalOffset: root.shadowOffsetY blurMax: root.blurMax shadowColor: root.shadowColor shadowOpacity: root.shadowOpacity } Rectangle { id: sourceRect anchors.fill: parent visible: !root.useCustomSource topLeftRadius: root.topLeftRadius topRightRadius: root.topRightRadius bottomLeftRadius: root.bottomLeftRadius bottomRightRadius: root.bottomRightRadius color: root.targetColor border.color: root.borderColor border.width: root.borderWidth } }