diff --git a/Shared/Views/Tab/NewHomeTab.swift b/Shared/Views/Tab/NewHomeTab.swift index a9f66ca..51441ed 100644 --- a/Shared/Views/Tab/NewHomeTab.swift +++ b/Shared/Views/Tab/NewHomeTab.swift @@ -65,70 +65,75 @@ struct PostGridItem: View { } var body: some View { - VStack(alignment: .leading, spacing: 0) { // Убираем отступ между картинкой и текстом - - // 1. Медиа контент - if let url = imageURL { - // Создаем контейнер с четкими границами, чтобы избежать перекрытия - Color.clear - .frame(width: width, height: imageHeight) // Используем вычисленную высоту - .background( - RemoteImageView(url: url) - .scaledToFill() - ) - .clipped() - } - - // Контейнер для текста, который создает эффект "расширения" - VStack(alignment: .leading, spacing: 8) { - // 2. Название поста - if let title = post.title, !title.isEmpty { - Text(title) - .font(.subheadline) - .lineLimit(2) + NavigationLink(destination: PostDetailView(post: post)) { + VStack(alignment: .leading, spacing: 0) { // Убираем отступ между картинкой и текстом + + // 1. Медиа контент + if let url = imageURL { + // Создаем контейнер с четкими границами, чтобы избежать перекрытия + Color.clear + .frame(width: width, height: imageHeight) // Используем вычисленную высоту + .background( + RemoteImageView(url: url) + .scaledToFill() + ) + .clipped() } - // 3. Информация об авторе и лайки - HStack { - - Button(action: { - // пока ничего не делаем - }) { - HStack(spacing: 4) { - Image(systemName: "person.circle.fill") - .resizable() - .frame(width: 20, height: 20) - .foregroundColor(.gray) - Text(post.authorUsername) - .font(.footnote) - .lineLimit(1) - .foregroundColor(.primary) - } - } - .contentShape(Rectangle()) - - Spacer() - - Button(action: { - // пока ничего не делаем - }) { - HStack(spacing: 4) { - Image(systemName: post.isLikedByCurrentUser ? "heart.fill" : "heart") - .foregroundColor(post.isLikedByCurrentUser ? .red : .primary) - Text("\(post.likes)") + // Контейнер для текста, который создает эффект "расширения" + VStack(alignment: .leading, spacing: 8) { + // 2. Название поста + if let title = post.title, !title.isEmpty { + Text(title) .font(.subheadline) - .foregroundColor(.primary) + .lineLimit(2) } - } - .contentShape(Rectangle()) + // 3. Информация об авторе и лайки + HStack { + + Button(action: { + print("account \(post.id)") + // пока ничего не делаем + }) { + HStack(spacing: 4) { + Image(systemName: "person.circle.fill") + .resizable() + .frame(width: 20, height: 20) + .foregroundColor(.gray) + Text(post.authorUsername) + .font(.footnote) + .lineLimit(1) + .foregroundColor(.primary) + } + } + .contentShape(Rectangle()) + + Spacer() + + Button(action: { + print("like \(post.id)") + // пока ничего не делаем + }) { + HStack(spacing: 4) { + Image(systemName: post.isLikedByCurrentUser ? "heart.fill" : "heart") + .foregroundColor(post.isLikedByCurrentUser ? .red : .primary) + Text("\(post.likes)") + .font(.subheadline) + .foregroundColor(.primary) + } + } + .contentShape(Rectangle()) + + } } + .padding(8) + .background(Color(UIColor.systemBackground)) // Фон только для текстовой части } - .padding(8) - .background(Color(UIColor.systemBackground)) // Фон только для текстовой части + .cornerRadius(6) // Закругляем всю карточку + .clipped() // Обрезаем дочерние вью по закругленной форме родителя + .shadow(color: Color.black.opacity(0.1), radius: 5, x: 0, y: 2) } - .cornerRadius(6) // Закругляем всю карточку - .clipped() // Обрезаем дочерние вью по закругленной форме родителя - .shadow(color: Color.black.opacity(0.1), radius: 5, x: 0, y: 2) + .buttonStyle(PlainButtonStyle()) // Убираем стандартный стиль кнопки, чтобы не влиять на UI } }