|
@@ -128,16 +128,16 @@ struct AppTileView: View {
|
|
|
.stroke(Color.white.opacity(isHovering ? 0.18 : 0.08), lineWidth: 1)
|
|
.stroke(Color.white.opacity(isHovering ? 0.18 : 0.08), lineWidth: 1)
|
|
|
)
|
|
)
|
|
|
.shadow(
|
|
.shadow(
|
|
|
- color: .black.opacity(isHovering ? 0.18 : 0.10),
|
|
|
|
|
- radius: isHovering ? 16 : 10,
|
|
|
|
|
|
|
+ color: .black.opacity(isHovering ? 0.20 : 0.10),
|
|
|
|
|
+ radius: isHovering ? 18 : 10,
|
|
|
x: 0,
|
|
x: 0,
|
|
|
- y: isHovering ? 10 : 6
|
|
|
|
|
|
|
+ y: isHovering ? 12 : 6
|
|
|
)
|
|
)
|
|
|
- .scaleEffect(isHovering ? 1.03 : 1.0)
|
|
|
|
|
|
|
+ .scaleEffect(isHovering ? 1.05 : 1.0)
|
|
|
// Ensure tiles look consistent across the adaptive grid.
|
|
// Ensure tiles look consistent across the adaptive grid.
|
|
|
.frame(maxWidth: .infinity, minHeight: 94)
|
|
.frame(maxWidth: .infinity, minHeight: 94)
|
|
|
.contentShape(RoundedRectangle(cornerRadius: tileCornerRadius, style: .continuous))
|
|
.contentShape(RoundedRectangle(cornerRadius: tileCornerRadius, style: .continuous))
|
|
|
- .animation(.easeOut(duration: 0.12), value: isHovering)
|
|
|
|
|
|
|
+ .animation(.spring(response: 0.22, dampingFraction: 0.82), value: isHovering)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private var isPinned: Bool {
|
|
private var isPinned: Bool {
|