Add liquid glass highlights to wallet cards

This commit is contained in:
Rafal Kolarz 2026-10-23 01:56:51 +01:00
parent dd8adb2c59
commit 75f8850115
2 changed files with 41 additions and 4 deletions

View File

@ -292,7 +292,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 15; CURRENT_PROJECT_VERSION = 16;
GENERATE_INFOPLIST_FILE = NO; GENERATE_INFOPLIST_FILE = NO;
INFOPLIST_FILE = Kasztelan/Info.plist; INFOPLIST_FILE = Kasztelan/Info.plist;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.food-and-drink"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.food-and-drink";
@ -316,7 +316,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 15; CURRENT_PROJECT_VERSION = 16;
GENERATE_INFOPLIST_FILE = NO; GENERATE_INFOPLIST_FILE = NO;
INFOPLIST_FILE = Kasztelan/Info.plist; INFOPLIST_FILE = Kasztelan/Info.plist;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.food-and-drink"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.food-and-drink";

View File

@ -81,17 +81,54 @@ struct GlassDepthDeck<Content: View>: View {
.shadow(color: KTheme.purple.opacity(0.30), radius: 24, x: -8, y: 8) .shadow(color: KTheme.purple.opacity(0.30), radius: 24, x: -8, y: 8)
.shadow(color: KTheme.pink.opacity(0.30), radius: 20, x: 10, y: 4) .shadow(color: KTheme.pink.opacity(0.30), radius: 20, x: 10, y: 4)
RoundedRectangle(cornerRadius: cornerRadius, style: .continuous)
.fill(
LinearGradient(
colors: [.white.opacity(0.20), .clear, .clear, .black.opacity(0.12)],
startPoint: .topLeading,
endPoint: .bottomTrailing
)
)
.allowsHitTesting(false)
RoundedRectangle(cornerRadius: cornerRadius, style: .continuous) RoundedRectangle(cornerRadius: cornerRadius, style: .continuous)
.stroke( .stroke(
LinearGradient( LinearGradient(
colors: [.white.opacity(0.76), .white.opacity(0.10), KTheme.purple.opacity(0.46)], colors: [.white.opacity(0.92), .white.opacity(0.18), KTheme.purple.opacity(0.52)],
startPoint: .topLeading, startPoint: .topLeading,
endPoint: .bottomTrailing endPoint: .bottomTrailing
), ),
lineWidth: 1.6 lineWidth: 2.2
) )
.allowsHitTesting(false) .allowsHitTesting(false)
RoundedRectangle(cornerRadius: cornerRadius - 3, style: .continuous)
.inset(by: 3)
.stroke(
LinearGradient(
colors: [.white.opacity(0.34), .clear, .black.opacity(0.28)],
startPoint: .top,
endPoint: .bottom
),
lineWidth: 1
)
.allowsHitTesting(false)
VStack {
HStack {
Capsule()
.fill(.white.opacity(0.58))
.frame(width: 112, height: 4)
.blur(radius: 0.6)
.padding(.top, 8)
.padding(.leading, 22)
Spacer()
}
Spacer()
}
.allowsHitTesting(false)
} }
.compositingGroup()
.padding(.bottom, 20) .padding(.bottom, 20)
} }
} }