summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Common/ElevationShadow.qml
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Common/ElevationShadow.qml')
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Common/ElevationShadow.qml54
1 files changed, 54 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Common/ElevationShadow.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Common/ElevationShadow.qml
new file mode 100644
index 0000000..dab80cd
--- /dev/null
+++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Common/ElevationShadow.qml
@@ -0,0 +1,54 @@
+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 color borderColor: "transparent"
+ property real borderWidth: 0
+
+ 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
+ radius: root.targetRadius
+ color: root.targetColor
+ border.color: root.borderColor
+ border.width: root.borderWidth
+ }
+}