feat: 메인 홈

- 라이브, 인기 크리, 최신 콘텐츠, 이벤트 배너 UI 추가
This commit is contained in:
Yu Sung
2025-07-11 22:31:15 +09:00
parent e121ec1ee4
commit 5a9b95c2bf
29 changed files with 622 additions and 137 deletions

View File

@@ -23,23 +23,6 @@ struct ContentItemView: View {
.cornerRadius(16)
HStack(alignment: .top, spacing: 0) {
Text("신작")
.font(.custom(Font.medium.rawValue, size: 12))
.foregroundColor(.white)
.padding(.horizontal, 10)
.padding(.vertical, 3)
.background(
LinearGradient(
gradient: Gradient(stops: [
.init(color: Color(hex: "0001B1"), location: 0.24),
.init(color: Color(hex: "3B5FF1"), location: 1.0)
]),
startPoint: .top,
endPoint: .bottom
)
)
.cornerRadius(16, corners: [.topLeft, .bottomRight])
Spacer()
if item.isPointAvailable {

View File

@@ -16,24 +16,23 @@ struct ContentMainContentThemeView: View {
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
HStack(alignment: .top, spacing: 8) {
HStack(alignment: .top, spacing: 16) {
ForEach(0..<themeList.count, id: \.self) { index in
let theme = themeList[index]
Text(theme)
.font(.custom(Font.medium.rawValue, size: 14.7))
.foregroundColor(selectedTheme == theme ? Color.button : Color.gray77)
.padding(.horizontal, 13.3)
.padding(.vertical, 9.3)
.border(
selectedTheme == theme ? Color.button : Color.grayee,
width: 1
.font(
.custom(
selectedTheme == theme ? Font.preBold.rawValue : Font.preRegular.rawValue,
size: 16
)
)
.cornerRadius(16.7)
.overlay(
RoundedRectangle(cornerRadius: CGFloat(16.7))
.stroke(lineWidth: 1)
.foregroundColor(selectedTheme == theme ? Color.button : Color.grayee)
.foregroundColor(.white)
.padding(.horizontal, 24)
.padding(.vertical, 12)
.background(
selectedTheme == theme ? Color.button : Color(hex: "263238")
)
.cornerRadius(999)
.onTapGesture {
if selectedTheme != theme {
selectedTheme = theme
@@ -42,7 +41,7 @@ struct ContentMainContentThemeView: View {
}
}
}
.padding(.horizontal, 13.3)
.padding(.horizontal, 24)
}
}
}

View File

@@ -265,7 +265,6 @@ struct ContentMainTabHomeView: View {
.font(.custom(Font.medium.rawValue, size: 11))
.foregroundColor(Color.gray77)
.padding(.top, 30)
.padding(.horizontal, 13.3)
}
.onAppear {
viewModel.fetchData()

View File

@@ -150,25 +150,29 @@ struct ContentMainTabHomeRankCreatorView: View {
id: 1,
nickname: "User1",
tags: "",
profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"
profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png",
followerCount: 1000
),
GetExplorerSectionCreatorResponse(
id: 2,
nickname: "User2",
tags: "",
profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"
profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png",
followerCount: 1000
),
GetExplorerSectionCreatorResponse(
id: 3,
nickname: "User3",
tags: "",
profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"
profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png",
followerCount: 1000
),
GetExplorerSectionCreatorResponse(
id: 4,
nickname: "User4",
tags: "",
profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png"
profileImageUrl: "https://test-cf.sodalive.net/profile/default-profile.png",
followerCount: 1000
)
]
)

View File

@@ -0,0 +1,18 @@
//
// SeriesItemView.swift
// SodaLive
//
// Created by klaus on 7/11/25.
//
import SwiftUI
struct SeriesItemView: View {
var body: some View {
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
}
}
#Preview {
SeriesItemView()
}