feat: 메인 홈
- 라이브, 인기 크리, 최신 콘텐츠, 이벤트 배너 UI 추가
This commit is contained in:
		@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
                )
 | 
			
		||||
            ]
 | 
			
		||||
        )
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								SodaLive/Sources/Content/Series/SeriesItemView.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								SodaLive/Sources/Content/Series/SeriesItemView.swift
									
									
									
									
									
										Normal 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()
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user