Добавлена темизация: circular reveal анимация, адаптивные цвета light/dark, обои по теме
This commit is contained in:
@@ -47,7 +47,7 @@ struct ChatListView: View {
|
||||
.padding(.bottom, 8)
|
||||
.background(
|
||||
(hasPinnedChats && !isSearchActive
|
||||
? RosettaColors.Dark.pinnedSectionBackground
|
||||
? RosettaColors.Adaptive.pinnedSectionBackground
|
||||
: Color.clear
|
||||
).ignoresSafeArea(.all, edges: .top)
|
||||
)
|
||||
@@ -121,7 +121,6 @@ struct ChatListView: View {
|
||||
}
|
||||
}
|
||||
.presentationDetents([.large])
|
||||
.preferredColorScheme(.dark)
|
||||
}
|
||||
.sheet(isPresented: $showJoinGroupSheet) {
|
||||
NavigationStack {
|
||||
@@ -133,7 +132,6 @@ struct ChatListView: View {
|
||||
}
|
||||
}
|
||||
.presentationDetents([.large])
|
||||
.preferredColorScheme(.dark)
|
||||
}
|
||||
.onReceive(NotificationCenter.default.publisher(for: .openChatFromNotification)) { notification in
|
||||
guard let route = notification.object as? ChatRoute else { return }
|
||||
@@ -238,14 +236,14 @@ private extension ChatListView {
|
||||
.background {
|
||||
if isSearchActive {
|
||||
RoundedRectangle(cornerRadius: 24, style: .continuous)
|
||||
.fill(Color.white.opacity(0.08))
|
||||
.fill(RosettaColors.Adaptive.searchBarFill)
|
||||
.overlay {
|
||||
RoundedRectangle(cornerRadius: 24, style: .continuous)
|
||||
.strokeBorder(Color.white.opacity(0.06), lineWidth: 0.5)
|
||||
.strokeBorder(RosettaColors.Adaptive.searchBarBorder, lineWidth: 0.5)
|
||||
}
|
||||
} else {
|
||||
RoundedRectangle(cornerRadius: 24, style: .continuous)
|
||||
.fill(RosettaColors.Adaptive.backgroundSecondary)
|
||||
.fill(RosettaColors.Adaptive.searchBarFill)
|
||||
}
|
||||
}
|
||||
.onChange(of: isSearchFocused) { _, focused in
|
||||
@@ -266,17 +264,17 @@ private extension ChatListView {
|
||||
.resizable()
|
||||
.scaledToFit()
|
||||
.frame(width: 19, height: 19)
|
||||
.foregroundStyle(.white)
|
||||
.foregroundStyle(RosettaColors.Adaptive.text)
|
||||
.frame(width: 36, height: 36)
|
||||
.padding(3)
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
.background {
|
||||
Circle()
|
||||
.fill(Color.white.opacity(0.08))
|
||||
.fill(RosettaColors.Adaptive.searchBarFill)
|
||||
.overlay {
|
||||
Circle()
|
||||
.strokeBorder(Color.white.opacity(0.06), lineWidth: 0.5)
|
||||
.strokeBorder(RosettaColors.Adaptive.searchBarBorder, lineWidth: 0.5)
|
||||
}
|
||||
}
|
||||
.transition(.opacity.combined(with: .scale(scale: 0.5)))
|
||||
@@ -507,10 +505,10 @@ private struct SyncAwareEmptyState: View {
|
||||
VStack(spacing: 16) {
|
||||
Spacer().frame(height: 120)
|
||||
ProgressView()
|
||||
.tint(.white)
|
||||
.tint(RosettaColors.Adaptive.textSecondary)
|
||||
Text("Syncing conversations…")
|
||||
.font(.system(size: 15))
|
||||
.foregroundStyle(Color.white.opacity(0.5))
|
||||
.foregroundStyle(RosettaColors.Adaptive.textSecondary)
|
||||
Spacer()
|
||||
}
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -680,8 +678,8 @@ private struct ChatListDialogContent: View {
|
||||
if !pinned.isEmpty {
|
||||
ForEach(pinned, id: \.id) { dialog in
|
||||
chatRow(dialog, isFirst: dialog.id == pinned.first?.id && requestsCount == 0)
|
||||
.environment(\.rowBackgroundColor, RosettaColors.Dark.pinnedSectionBackground)
|
||||
.listRowBackground(RosettaColors.Dark.pinnedSectionBackground)
|
||||
.environment(\.rowBackgroundColor, RosettaColors.Adaptive.pinnedSectionBackground)
|
||||
.listRowBackground(RosettaColors.Adaptive.pinnedSectionBackground)
|
||||
}
|
||||
}
|
||||
ForEach(unpinned, id: \.id) { dialog in
|
||||
|
||||
@@ -11,7 +11,7 @@ struct DeviceConfirmView: View {
|
||||
var body: some View {
|
||||
ZStack {
|
||||
// Full black background covering everything
|
||||
RosettaColors.Dark.background
|
||||
RosettaColors.Adaptive.background
|
||||
.ignoresSafeArea()
|
||||
|
||||
VStack(spacing: 0) {
|
||||
|
||||
Reference in New Issue
Block a user