커스텀 폰트 pretendard-bold, gmarket-bold를 사용하고 있던 것을 appFont 모디파이어를 사용하여 한국어는 pretendard, 그 외에는 시스템 폰트를 사용하도록 수정
This commit is contained in:
@@ -31,7 +31,7 @@ struct ApplyMethodView: View {
|
||||
}
|
||||
|
||||
Text("오디션 지원방식")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.graybb)
|
||||
.padding(.top, 33.3)
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ struct AuditionApplicantRecordingView: View {
|
||||
VStack(spacing: 0) {
|
||||
HStack(spacing: 0) {
|
||||
Text("오디션 녹음")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -46,7 +46,7 @@ struct AuditionApplicantRecordingView: View {
|
||||
}
|
||||
|
||||
Text(soundManager.timeString)
|
||||
.font(.custom(Font.bold.rawValue, size: 33.3))
|
||||
.appFont(size: 33.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.top, 80)
|
||||
|
||||
@@ -114,7 +114,7 @@ struct AuditionApplicantRecordingView: View {
|
||||
|
||||
HStack(spacing: 13.3) {
|
||||
Text("다시 녹음")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.frame(width: (proxy.size.width - 40) / 3, height: 50)
|
||||
.background(Color.button.opacity(0.2))
|
||||
@@ -130,7 +130,7 @@ struct AuditionApplicantRecordingView: View {
|
||||
}
|
||||
|
||||
Text("녹음완료")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.frame(width: (proxy.size.width - 40) * 2 / 3, height: 50)
|
||||
.background(Color.button)
|
||||
|
||||
@@ -46,7 +46,7 @@ struct AuditionApplyView: View {
|
||||
}
|
||||
|
||||
Text("녹음파일")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(.grayee)
|
||||
.padding(.top, 20)
|
||||
|
||||
@@ -67,7 +67,7 @@ struct AuditionApplyView: View {
|
||||
.padding(.top, 10)
|
||||
|
||||
Text("연락처")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(.grayee)
|
||||
.padding(.top, 15)
|
||||
|
||||
@@ -101,7 +101,7 @@ struct AuditionApplyView: View {
|
||||
}
|
||||
|
||||
Text("오디션 지원하기")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.padding(.vertical, 13.3)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
||||
@@ -25,7 +25,7 @@ struct AuditionView: View {
|
||||
.frame(width: 20, height: 20)
|
||||
|
||||
Text("오디션")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
}
|
||||
|
||||
@@ -74,11 +74,11 @@ struct AuditionView: View {
|
||||
VStack(alignment: .leading, spacing: 25) {
|
||||
HStack(spacing: 0) {
|
||||
Text("오디션")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Text(" ON")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.mainRed)
|
||||
|
||||
Spacer()
|
||||
@@ -112,11 +112,11 @@ struct AuditionView: View {
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("오디션")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Text(" OFF")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.graybb)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -31,7 +31,7 @@ struct AuditionDetailView: View {
|
||||
.cornerRadius(6.7)
|
||||
|
||||
Text("오디션 정보")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.padding(.top, 15)
|
||||
|
||||
@@ -39,7 +39,7 @@ struct AuditionDetailView: View {
|
||||
.padding(.top, 13.3)
|
||||
|
||||
Text("오디션 캐릭터")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.padding(.top, 15)
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ struct AuditionRoleDetailView: View {
|
||||
HStack(spacing: 14) {
|
||||
if let url = URL(string: roleDetail.originalWorkUrl), UIApplication.shared.canOpenURL(url) {
|
||||
Text("원작 보러가기")
|
||||
.font(.custom(Font.bold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.padding(.vertical, 12)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -60,7 +60,7 @@ struct AuditionRoleDetailView: View {
|
||||
|
||||
if let url = URL(string: roleDetail.auditionScriptUrl), UIApplication.shared.canOpenURL(url) {
|
||||
Text("오디션 대본 확인")
|
||||
.font(.custom(Font.bold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.padding(.vertical, 12)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -75,7 +75,7 @@ struct AuditionRoleDetailView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
Text("오디션 캐릭터 정보")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
ExpandableTextView(text: roleDetail.information)
|
||||
@@ -190,7 +190,7 @@ struct AuditionRoleDetailView: View {
|
||||
|
||||
if let roleDetail = viewModel.auditionRoleDetail {
|
||||
Text(roleDetail.isAlreadyApplicant ? "오디션 재지원" : "오디션 지원")
|
||||
.font(.custom(Font.bold.rawValue, size: 15.3))
|
||||
.appFont(size: 15.3, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.padding(14)
|
||||
.background(Color.button)
|
||||
|
||||
@@ -48,7 +48,7 @@ struct CharacterItemView: View {
|
||||
|
||||
if isShowRank {
|
||||
Text("\(rank)")
|
||||
.font(.custom(Font.preBold.rawValue, size: 72))
|
||||
.appFont(size: 72, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(1)
|
||||
.frame(height: capHeight)
|
||||
|
||||
@@ -19,7 +19,7 @@ struct CharacterSectionView: View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text(title)
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
Spacer()
|
||||
if let trailingTitle = trailingTitle {
|
||||
|
||||
@@ -68,7 +68,7 @@ struct CharacterView: View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack {
|
||||
Text("추천 캐릭터")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -78,7 +78,7 @@ struct CharacterDetailView: View {
|
||||
VStack(spacing: 16) {
|
||||
HStack {
|
||||
Text("장르의 다른 캐릭터")
|
||||
.font(.custom(Font.preBold.rawValue, size: 26))
|
||||
.appFont(size: 26, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -263,7 +263,7 @@ extension CharacterDetailView {
|
||||
// 이름과 상태
|
||||
HStack(spacing: 8) {
|
||||
Text(viewModel.characterDetail?.translated?.name ?? viewModel.characterDetail?.name ?? "")
|
||||
.font(.custom(Font.preBold.rawValue, size: 26))
|
||||
.appFont(size: 26, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(1)
|
||||
.truncationMode(.tail)
|
||||
@@ -301,7 +301,7 @@ extension CharacterDetailView {
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
HStack {
|
||||
Text("[세계관 및 작품 소개]")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -319,7 +319,7 @@ extension CharacterDetailView {
|
||||
VStack(spacing: 8) {
|
||||
HStack {
|
||||
Text("원작")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.fontWeight(.bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
@@ -340,7 +340,7 @@ extension CharacterDetailView {
|
||||
}
|
||||
}) {
|
||||
Text("원작 보러가기")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.fontWeight(.bold)
|
||||
.foregroundColor(Color(hex: "3BB9F1"))
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -361,7 +361,7 @@ extension CharacterDetailView {
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
HStack {
|
||||
Text("[성격 및 특징]")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -373,7 +373,7 @@ extension CharacterDetailView {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack {
|
||||
Text("⚠️ 캐릭터톡 대화 가이드")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
|
||||
Spacer()
|
||||
@@ -412,7 +412,7 @@ extension CharacterDetailView {
|
||||
extension CharacterDetailView {
|
||||
private var chatButton: some View {
|
||||
Text("대화하기")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.frame(maxWidth: .infinity)
|
||||
.frame(height: 54)
|
||||
|
||||
@@ -95,7 +95,7 @@ struct CharacterDetailGalleryView: View {
|
||||
// 상단 정보 (계산된 % 보유중, 정보 아이콘, 개수)
|
||||
HStack {
|
||||
Text("\(viewModel.ownershipPercentage)% 보유중")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -181,7 +181,7 @@ struct CharacterDetailGalleryView: View {
|
||||
.frame(width: 16)
|
||||
|
||||
Text("\(item.imagePriceCan)")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color(hex: "#263238"))
|
||||
}
|
||||
.padding(.horizontal, 12)
|
||||
|
||||
@@ -16,11 +16,11 @@ struct RecentCharacterSectionView: View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text("최근 대화한 캐릭터 ")
|
||||
.font(.custom(Font.preBold.rawValue, size: 20))
|
||||
.appFont(size: 20, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Text("\(titleCount)")
|
||||
.font(.custom(Font.preBold.rawValue, size: 20))
|
||||
.appFont(size: 20, weight: .bold)
|
||||
.foregroundColor(Color(hex: "FDCA2F"))
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -26,7 +26,7 @@ struct OriginalWorkDetailHeaderView: View {
|
||||
|
||||
// 번역 데이터가 있으면 번역값을 우선 사용
|
||||
Text(item.translated?.title ?? item.title)
|
||||
.font(.custom(Font.preBold.rawValue, size: 26))
|
||||
.appFont(size: 26, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.top, 40)
|
||||
|
||||
|
||||
@@ -157,7 +157,7 @@ struct OriginalWorkInfoView: View {
|
||||
VStack(spacing: 16) {
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
Text("작품 소개")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Text(response.translated?.description ?? response.description)
|
||||
@@ -176,7 +176,7 @@ struct OriginalWorkInfoView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
Text("원작 보러 가기")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
|
||||
ScrollView(.horizontal, showsIndicators: false) {
|
||||
@@ -203,7 +203,7 @@ struct OriginalWorkInfoView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
Text("상세 정보")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
HStack(spacing: 16) {
|
||||
|
||||
@@ -46,13 +46,13 @@ struct ChatRoomView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 4) {
|
||||
Text(viewModel.characterName)
|
||||
.font(.custom(Font.preBold.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(1)
|
||||
.truncationMode(.tail)
|
||||
|
||||
Text(viewModel.characterType.rawValue)
|
||||
.font(.custom(Font.preBold.rawValue, size: 10))
|
||||
.appFont(size: 10, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 4)
|
||||
.padding(.vertical, 2)
|
||||
|
||||
@@ -117,7 +117,7 @@ struct AiMessageItemView: View {
|
||||
.frame(width: 24, height: 24)
|
||||
|
||||
Text("\(message.price ?? 5)")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color(hex: "263238"))
|
||||
}
|
||||
.padding(.horizontal, 10)
|
||||
@@ -131,7 +131,7 @@ struct AiMessageItemView: View {
|
||||
}
|
||||
|
||||
Text("눌러서 잠금해제")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
.frame(width: maxWidth, height: imageHeight)
|
||||
|
||||
@@ -20,11 +20,11 @@ struct ChatQuotaNoticeItemView: View {
|
||||
.frame(width: 30, height: 30)
|
||||
|
||||
Text(remainingTime)
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Text("기다리면 무료 이용이 가능합니다.")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -36,11 +36,11 @@ struct ChatQuotaNoticeItemView: View {
|
||||
Image("ic_can")
|
||||
|
||||
Text("10")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(Color(hex: "263238"))
|
||||
|
||||
Text("(채팅 12개) 바로 대화 시작")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(Color(hex: "263238"))
|
||||
.padding(.leading, 4)
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ struct ChatSettingsView: View {
|
||||
VStack(spacing: 0) {
|
||||
Toggle(isOn: $isHideBg) {
|
||||
Text("배경 이미지 끄기")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
}
|
||||
.toggleStyle(.switch)
|
||||
@@ -43,7 +43,7 @@ struct ChatSettingsView: View {
|
||||
VStack(spacing: 0) {
|
||||
HStack {
|
||||
Text("배경 이미지 변경")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
.padding(.horizontal, 24)
|
||||
.padding(.vertical, 12)
|
||||
@@ -62,7 +62,7 @@ struct ChatSettingsView: View {
|
||||
HStack(spacing: 0) {
|
||||
VStack(alignment: .leading, spacing: 6) {
|
||||
Text("대화 초기화")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
|
||||
HStack(alignment: .top, spacing: 0) {
|
||||
@@ -85,7 +85,7 @@ struct ChatSettingsView: View {
|
||||
.frame(width: 24, height: 24)
|
||||
|
||||
Text("30")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color(hex: "263238"))
|
||||
}
|
||||
.padding(.vertical, 3)
|
||||
|
||||
@@ -24,7 +24,7 @@ struct TalkItemView: View {
|
||||
VStack(alignment: .leading, spacing: 6) {
|
||||
HStack(spacing: 4) {
|
||||
Text(item.title)
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(1)
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ struct ContentRankingAllView: View {
|
||||
|
||||
VStack(spacing: 8) {
|
||||
Text("\(viewModel.dateString)")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Text("※ 인기 콘텐츠의 순위는 매주 업데이트됩니다.")
|
||||
@@ -63,7 +63,7 @@ struct ContentRankingAllView: View {
|
||||
.cornerRadius(5.3)
|
||||
|
||||
Text("\(index + 1)")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "3bb9f1"))
|
||||
.padding(.horizontal, 12)
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ struct ContentListView: View {
|
||||
.frame(width: 20, height: 20)
|
||||
|
||||
Text("콘텐츠 전체보기")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ struct ContentListView: View {
|
||||
|
||||
if userId == UserDefaults.int(forKey: .userId) {
|
||||
Text("새로운 콘텐츠 등록하기")
|
||||
.font(.custom(Font.bold.rawValue, size: 15))
|
||||
.appFont(size: 15, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.padding(.vertical, 17)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
||||
@@ -29,7 +29,7 @@ struct ContentCreateSelectThemeView: View {
|
||||
VStack(spacing: 0) {
|
||||
HStack(alignment: .top, spacing: 0) {
|
||||
Text("테마 선택")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -29,7 +29,7 @@ struct ContentCreateView: View {
|
||||
ScrollView(.vertical, showsIndicators: false) {
|
||||
VStack(spacing: 0) {
|
||||
Text("썸네일")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -62,7 +62,7 @@ struct ContentCreateView: View {
|
||||
.onTapGesture { isShowPhotoPicker = true }
|
||||
|
||||
Text("등록")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.padding(.top, 13.3)
|
||||
@@ -92,7 +92,7 @@ struct ContentCreateView: View {
|
||||
|
||||
VStack(spacing: 0) {
|
||||
Text("제목")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -110,7 +110,7 @@ struct ContentCreateView: View {
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("내용")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Spacer()
|
||||
@@ -135,7 +135,7 @@ struct ContentCreateView: View {
|
||||
.padding(.top, 13.3)
|
||||
|
||||
Text("테마")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.padding(.top, 26.7)
|
||||
@@ -158,7 +158,7 @@ struct ContentCreateView: View {
|
||||
Text(viewModel.theme != nil ?
|
||||
viewModel.theme!.theme :
|
||||
I18n.CreateContent.selectTheme)
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
}
|
||||
.padding(.vertical, viewModel.theme != nil ? 8 : 13.3)
|
||||
@@ -177,7 +177,7 @@ struct ContentCreateView: View {
|
||||
}
|
||||
|
||||
Text("태그")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.padding(.top, 26.7)
|
||||
@@ -204,7 +204,7 @@ struct ContentCreateView: View {
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
Text("가격 설정")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -225,7 +225,7 @@ struct ContentCreateView: View {
|
||||
if !viewModel.isFree {
|
||||
VStack(spacing: 13.3) {
|
||||
Text("소장 설정")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -261,7 +261,7 @@ struct ContentCreateView: View {
|
||||
TextField("가격을 입력하세요(5캔 이상)", text: $viewModel.priceString)
|
||||
.autocapitalization(.none)
|
||||
.disableAutocorrection(true)
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.cornerRadius(6.7)
|
||||
.keyboardType(.numberPad)
|
||||
@@ -305,7 +305,7 @@ struct ContentCreateView: View {
|
||||
if viewModel.price > 0 && viewModel.purchaseOption != .RENT_ONLY {
|
||||
VStack(spacing: 13.3) {
|
||||
Text("한정판 설정")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -327,7 +327,7 @@ struct ContentCreateView: View {
|
||||
TextField("한정판 개수를 입력하세요", text: $viewModel.limitedString)
|
||||
.autocapitalization(.none)
|
||||
.disableAutocorrection(true)
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.cornerRadius(6.7)
|
||||
.keyboardType(.numberPad)
|
||||
@@ -342,7 +342,7 @@ struct ContentCreateView: View {
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
Text("포인트 사용")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -364,7 +364,7 @@ struct ContentCreateView: View {
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
Text("미리듣기")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -387,7 +387,7 @@ struct ContentCreateView: View {
|
||||
if viewModel.isGeneratePreview {
|
||||
VStack(spacing: 10) {
|
||||
Text("미리듣기 시간 설정")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -406,7 +406,7 @@ struct ContentCreateView: View {
|
||||
TextField("00:00:00", text: $viewModel.previewStartTime)
|
||||
.autocapitalization(.none)
|
||||
.disableAutocorrection(true)
|
||||
.font(.custom(Font.bold.rawValue, size: 14.6))
|
||||
.appFont(size: 14.6, weight: .bold)
|
||||
.foregroundColor(Color.gray77)
|
||||
.padding(.vertical, 16.7)
|
||||
.padding(.horizontal, 13.3)
|
||||
@@ -425,7 +425,7 @@ struct ContentCreateView: View {
|
||||
TextField("00:00:15", text: $viewModel.previewEndTime)
|
||||
.autocapitalization(.none)
|
||||
.disableAutocorrection(true)
|
||||
.font(.custom(Font.bold.rawValue, size: 14.6))
|
||||
.appFont(size: 14.6, weight: .bold)
|
||||
.foregroundColor(Color.gray77)
|
||||
.padding(.vertical, 16.7)
|
||||
.padding(.horizontal, 13.3)
|
||||
@@ -446,7 +446,7 @@ struct ContentCreateView: View {
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
Text("연령 제한")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -475,7 +475,7 @@ struct ContentCreateView: View {
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
Text("댓글 가능 여부")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -498,7 +498,7 @@ struct ContentCreateView: View {
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
Text(I18n.CreateContent.publishReserved)
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -573,7 +573,7 @@ struct ContentCreateView: View {
|
||||
VStack(spacing: 0) {
|
||||
HStack(alignment: .top, spacing: 0) {
|
||||
Text("등록")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.frame(height: 50)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -697,7 +697,7 @@ struct SelectButtonView: View {
|
||||
}
|
||||
|
||||
Text(title)
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(isChecked ? .white : Color.main)
|
||||
}
|
||||
.frame(height: 48.7)
|
||||
|
||||
@@ -20,7 +20,7 @@ struct AudioContentDeleteDialogView: View {
|
||||
var body: some View {
|
||||
VStack(spacing: 0) {
|
||||
Text("콘텐츠 삭제")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Text("[\(title)]을 삭제하시겠습니까?")
|
||||
@@ -57,7 +57,7 @@ struct AudioContentDeleteDialogView: View {
|
||||
|
||||
HStack(spacing: 12) {
|
||||
Text("취소")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "9970ff"))
|
||||
.padding(.horizontal, 55)
|
||||
.padding(.vertical, 16)
|
||||
@@ -71,7 +71,7 @@ struct AudioContentDeleteDialogView: View {
|
||||
}
|
||||
|
||||
Text("확인")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.padding(.horizontal, 55)
|
||||
.padding(.vertical, 16)
|
||||
|
||||
@@ -32,7 +32,7 @@ struct AudioContentReportDialogView: View {
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
Text("콘텐츠 신고")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
@@ -66,7 +66,7 @@ struct AudioContentReportDialogView: View {
|
||||
|
||||
HStack(spacing: 12) {
|
||||
Text("취소")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "9970ff"))
|
||||
.padding(.vertical, 16)
|
||||
.frame(width: (screenSize().width - 100) / 2)
|
||||
@@ -80,7 +80,7 @@ struct AudioContentReportDialogView: View {
|
||||
}
|
||||
|
||||
Text("신고")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.padding(.vertical, 16)
|
||||
.frame(width: (screenSize().width - 100) / 2)
|
||||
|
||||
@@ -82,7 +82,7 @@ struct AudioContentCommentItemView: View {
|
||||
.frame(width: 13.3, height: 13.3)
|
||||
|
||||
Text("\(commentItem.donationCan)")
|
||||
.font(.custom(Font.bold.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
.padding(.horizontal, 6.7)
|
||||
|
||||
@@ -26,12 +26,12 @@ struct ContentDetailInfoLimitedEditionView: View {
|
||||
|
||||
if let orderSequence = orderSequence {
|
||||
Text("\(orderSequence)")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.padding(.leading, 5.3)
|
||||
|
||||
Text("/")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayd2)
|
||||
.padding(.leading, 2.3)
|
||||
|
||||
@@ -56,7 +56,7 @@ struct ContentDetailInfoLimitedEditionView: View {
|
||||
.foregroundColor(Color.grayd2)
|
||||
|
||||
Text("\(remainingContentCount)")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.padding(.leading, 5.3)
|
||||
}
|
||||
@@ -70,7 +70,7 @@ struct ContentDetailInfoLimitedEditionView: View {
|
||||
|
||||
if !buyerList.isEmpty {
|
||||
Text("구매자")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
ScrollView(.horizontal, showsIndicators: false) {
|
||||
|
||||
@@ -81,7 +81,7 @@ struct ContentDetailInfoView: View {
|
||||
}
|
||||
|
||||
Text(audioContent.translated?.title ?? audioContent.title)
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayd2)
|
||||
.lineSpacing(5)
|
||||
.multilineTextAlignment(.leading)
|
||||
|
||||
@@ -16,7 +16,7 @@ struct ContentDetailOtherContentView: View {
|
||||
var body: some View {
|
||||
VStack(spacing: 21.3) {
|
||||
Text(title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ struct ContentDetailPlayView: View {
|
||||
|
||||
if let _ = audioContent.totalContentCount, let remainingContentCount = audioContent.remainingContentCount, remainingContentCount <= 0, audioContent.creator.creatorId != UserDefaults.int(forKey: .userId), !audioContent.existOrdered {
|
||||
Text("Sold Out")
|
||||
.font(.custom(Font.bold.rawValue, size: 36.7))
|
||||
.appFont(size: 36.7, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.frame(
|
||||
width: screenSize().width - 26.7,
|
||||
|
||||
@@ -22,7 +22,7 @@ struct ContentDetailPurchaseButton: View {
|
||||
}
|
||||
|
||||
Text(UserDefaults.int(forKey: .userId) == 17958 ? "\(price * 110)" : "\(price)")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.leading, 5.3)
|
||||
|
||||
@@ -31,7 +31,7 @@ struct ContentDetailPurchaseButton: View {
|
||||
.foregroundColor(.white)
|
||||
|
||||
Text(title)
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
.frame(maxWidth: .infinity)
|
||||
|
||||
@@ -39,7 +39,7 @@ struct ContentDetailView: View {
|
||||
.frame(width: 20, height: 20)
|
||||
|
||||
Text("콘텐츠 상세")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ struct ContentDetailView: View {
|
||||
|
||||
if let releaseDate = audioContent.releaseDate {
|
||||
Text(releaseDate)
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.frame(maxWidth: .infinity)
|
||||
.frame(height: 48.7)
|
||||
@@ -123,7 +123,7 @@ struct ContentDetailView: View {
|
||||
audioContent.creator.creatorId != UserDefaults.int(forKey: .userId) {
|
||||
if let _ = audioContent.totalContentCount, let remainingContentCount = audioContent.remainingContentCount, remainingContentCount <= 0 {
|
||||
Text("해당 콘텐츠가 매진되었습니다.")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.frame(maxWidth: .infinity)
|
||||
.frame(height: 48.7)
|
||||
|
||||
@@ -36,7 +36,7 @@ struct ContentOrderConfirmDialogView: View {
|
||||
|
||||
VStack(spacing: 0) {
|
||||
Text("구매확인")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
HStack(spacing: 11) {
|
||||
@@ -64,7 +64,7 @@ struct ContentOrderConfirmDialogView: View {
|
||||
.cornerRadius(2)
|
||||
|
||||
Text(title)
|
||||
.font(.custom(Font.bold.rawValue, size: 11.3))
|
||||
.appFont(size: 11.3, weight: .bold)
|
||||
.foregroundColor(Color.grayd2)
|
||||
.padding(.top, 2)
|
||||
|
||||
@@ -127,7 +127,7 @@ struct ContentOrderConfirmDialogView: View {
|
||||
.frame(width: 16.7, height: 16.7)
|
||||
|
||||
Text("\(usablePoint)")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
}
|
||||
@@ -145,13 +145,13 @@ struct ContentOrderConfirmDialogView: View {
|
||||
.frame(width: 16.7, height: 16.7)
|
||||
|
||||
Text("\(remainingCan)")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Text("\(price * 110)원")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ struct ContentOrderConfirmDialogView: View {
|
||||
|
||||
HStack(spacing: 12) {
|
||||
Text("취소")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.padding(.vertical, 15.7)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -182,7 +182,7 @@ struct ContentOrderConfirmDialogView: View {
|
||||
.onTapGesture { isShowing = false }
|
||||
|
||||
Text("확인")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 15.7)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
||||
@@ -28,7 +28,7 @@ struct ContentOrderDialogView: View {
|
||||
HStack(spacing: 0) {
|
||||
VStack(alignment: .leading, spacing: 5.3) {
|
||||
Text("대여")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Text("(이용기간 5일)")
|
||||
@@ -47,17 +47,17 @@ struct ContentOrderDialogView: View {
|
||||
|
||||
if UserDefaults.int(forKey: .userId) == 17958 {
|
||||
Text("\(Int(ceil(Double(price) * 0.7)) * 110)")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
} else {
|
||||
Text("\(Int(ceil(Double(price) * 0.7)))")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
|
||||
if UserDefaults.int(forKey: .userId) == 17958 {
|
||||
Text("원")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
}
|
||||
@@ -74,7 +74,7 @@ struct ContentOrderDialogView: View {
|
||||
HStack(spacing: 0) {
|
||||
VStack(alignment: .leading, spacing: 5.3) {
|
||||
Text("소장")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Text("(서비스 종료시까지)")
|
||||
@@ -93,17 +93,17 @@ struct ContentOrderDialogView: View {
|
||||
|
||||
if UserDefaults.int(forKey: .userId) == 17958 {
|
||||
Text("\(price * 110)")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
} else {
|
||||
Text("\(price)")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
|
||||
if UserDefaults.int(forKey: .userId) == 17958 {
|
||||
Text("원")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ struct LiveRoomDonationDialogView: View {
|
||||
.frame(width: 26.7, height: 26.7)
|
||||
|
||||
Text("후원하기")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Spacer()
|
||||
@@ -55,7 +55,7 @@ struct LiveRoomDonationDialogView: View {
|
||||
.frame(width: 26.7, height: 26.7)
|
||||
|
||||
Text("\(can)")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Text("충전")
|
||||
@@ -116,7 +116,7 @@ struct LiveRoomDonationDialogView: View {
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("+10")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 12.7)
|
||||
.frame(width: 74)
|
||||
@@ -134,7 +134,7 @@ struct LiveRoomDonationDialogView: View {
|
||||
Spacer()
|
||||
|
||||
Text("+100")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 12.7)
|
||||
.frame(width: 74)
|
||||
@@ -150,7 +150,7 @@ struct LiveRoomDonationDialogView: View {
|
||||
Spacer()
|
||||
|
||||
Text("+1,000")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 12.7)
|
||||
.frame(width: 74)
|
||||
@@ -168,7 +168,7 @@ struct LiveRoomDonationDialogView: View {
|
||||
Spacer()
|
||||
|
||||
Text("+10,000")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 12.7)
|
||||
.frame(width: 74)
|
||||
@@ -218,7 +218,7 @@ struct LiveRoomDonationDialogView: View {
|
||||
|
||||
HStack(spacing: 13.3) {
|
||||
Text("취소")
|
||||
.font(.custom(Font.bold.rawValue, size: 15))
|
||||
.appFont(size: 15, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.padding(.vertical, 16)
|
||||
.frame(width: (screenSize().width - 53.3) / 3)
|
||||
@@ -234,7 +234,7 @@ struct LiveRoomDonationDialogView: View {
|
||||
}
|
||||
|
||||
Text("후원하기")
|
||||
.font(.custom(Font.bold.rawValue, size: 15))
|
||||
.appFont(size: 15, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 16)
|
||||
.frame(width: (screenSize().width - 53.3) * 2 / 3)
|
||||
|
||||
@@ -19,7 +19,7 @@ struct ContentMainView: View {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
HStack(spacing: 0) {
|
||||
Text("콘텐츠 마켓")
|
||||
.font(.custom(Font.bold.rawValue, size: 21.3))
|
||||
.appFont(size: 21.3, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
|
||||
Spacer()
|
||||
@@ -82,7 +82,7 @@ struct ContentMainView: View {
|
||||
Image("ic_alarm_clock_blue")
|
||||
|
||||
Text("보이스 모닝콜")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "0057ff"))
|
||||
}
|
||||
.cornerRadius(2.6)
|
||||
@@ -104,7 +104,7 @@ struct ContentMainView: View {
|
||||
Image("ic_short_play")
|
||||
|
||||
Text("숏플")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "dd158d"))
|
||||
}
|
||||
.cornerRadius(2.6)
|
||||
@@ -161,7 +161,7 @@ struct ContentMainView: View {
|
||||
.frame(width: 20, height: 20)
|
||||
|
||||
Text("콘텐츠 업로드")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
.padding(13.3)
|
||||
|
||||
@@ -15,7 +15,7 @@ struct ContentMainCurationItemView: View {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
HStack(spacing: 0) {
|
||||
Text(item.title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -15,7 +15,7 @@ struct ContentMainNewContentView: View {
|
||||
LazyVStack(spacing: 16.7) {
|
||||
HStack(spacing: 0) {
|
||||
Text("새로운 콘텐츠")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -17,7 +17,7 @@ struct ContentMainMyStashView: View {
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
HStack(spacing: 0) {
|
||||
Text("내 보관함")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -29,29 +29,29 @@ struct ContentMainCreatorRankingView: View {
|
||||
let titleArray = response.title.components(separatedBy: coloredTitle)
|
||||
HStack(spacing: 0) {
|
||||
Text(titleArray[0])
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Text(coloredTitle)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: color))
|
||||
|
||||
if titleArray.count > 1 {
|
||||
Text(titleArray[1])
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Text(response.title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
|
||||
if let desc = response.desc {
|
||||
VStack(spacing: 8) {
|
||||
Text("\(desc)")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Text("※ 인기 크리에이터의 순위는 매주 업데이트됩니다.")
|
||||
|
||||
@@ -22,7 +22,7 @@ struct ContentMainRankingView: View {
|
||||
LazyVStack(spacing: 16.7) {
|
||||
HStack(spacing: 0) {
|
||||
Text("인기 콘텐츠")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Spacer()
|
||||
@@ -35,7 +35,7 @@ struct ContentMainRankingView: View {
|
||||
|
||||
VStack(spacing: 8) {
|
||||
Text("\(viewModel.dateString)")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Text("※ 인기 콘텐츠의 순위는 매주 업데이트됩니다.")
|
||||
@@ -72,7 +72,7 @@ struct ContentMainRankingView: View {
|
||||
.cornerRadius(2.7)
|
||||
|
||||
Text("\(index + 1)")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "3bb9f1"))
|
||||
.padding(.horizontal, 12)
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ struct ContentMainRecommendSeriesView: View {
|
||||
if !viewModel.seriesList.isEmpty {
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
Text("추천 시리즈")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
ScrollView(.horizontal, showsIndicators: false) {
|
||||
|
||||
@@ -35,7 +35,7 @@ struct ContentMainTabRankContentView: View {
|
||||
VStack(spacing: 13.3) {
|
||||
HStack(spacing: 0) {
|
||||
Text(title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Spacer()
|
||||
@@ -76,7 +76,7 @@ struct ContentMainTabRankContentView: View {
|
||||
.cornerRadius(2.7)
|
||||
|
||||
Text("\(index + 1)")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(.button)
|
||||
.padding(.horizontal, 12)
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ struct ContentMainTagCurationView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
Text("태그별 추천 콘텐츠")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.grayee)
|
||||
.padding(.horizontal, 13.3)
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ struct ContentByChannelView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 20) {
|
||||
Text(title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.grayee)
|
||||
.padding(.horizontal, 13.3)
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ struct ContentMainCurationItemViewV2: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
Text(curation.title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.grayee)
|
||||
.padding(.horizontal, 13.3)
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ struct ContentMainNewContentViewV2: View {
|
||||
LazyVStack(spacing: 13.3) {
|
||||
HStack(spacing: 0) {
|
||||
Text(title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.grayee)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -53,7 +53,7 @@ struct ContentMainViewV2: View {
|
||||
VStack(spacing: 0) {
|
||||
HStack(spacing: 0) {
|
||||
Text("콘텐츠 마켓")
|
||||
.font(.custom(Font.bold.rawValue, size: 21.3))
|
||||
.appFont(size: 21.3, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -20,7 +20,7 @@ struct ContentMainTabHomeView: View {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
HStack(spacing: 0) {
|
||||
Text("보이스온")
|
||||
.font(.custom(Font.bold.rawValue, size: 21.3))
|
||||
.appFont(size: 21.3, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.padding(.leading, 8)
|
||||
|
||||
@@ -278,7 +278,7 @@ struct ContentMainTabHomeView: View {
|
||||
.frame(width: 20, height: 20)
|
||||
|
||||
Text("콘텐츠 업로드")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
.padding(13.3)
|
||||
|
||||
@@ -27,7 +27,7 @@ struct ContentMainTabHomeRankCreatorView: View {
|
||||
if let desc = response.desc, !token.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
|
||||
VStack(spacing: 8) {
|
||||
Text("\(desc)")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Text("※ 인기 순위는 매주 업데이트됩니다.")
|
||||
@@ -43,23 +43,23 @@ struct ContentMainTabHomeRankCreatorView: View {
|
||||
let titleArray = response.title.components(separatedBy: coloredTitle)
|
||||
HStack(spacing: 0) {
|
||||
Text(titleArray[0])
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Text(coloredTitle)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: color))
|
||||
|
||||
if titleArray.count > 1 {
|
||||
Text(titleArray[1])
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
}
|
||||
.padding(.top, token.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty ? 0 : 30)
|
||||
} else {
|
||||
Text(response.title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.padding(.top, 30)
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ struct ContentMainTabHomeRankSeriesView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
Text("인기 시리즈")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
ScrollView(.horizontal, showsIndicators: false) {
|
||||
|
||||
@@ -16,7 +16,7 @@ struct ContentMainCompletedSeriesView: View {
|
||||
VStack(spacing: 13.3) {
|
||||
HStack(spacing: 0) {
|
||||
Text("완결 시리즈")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.grayee)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -16,7 +16,7 @@ struct ContentMainNewOrRecommendSeriesView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
Text(title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.padding(.horizontal, 13.3)
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ struct ContentMainSeriesByGenreView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
Text("장르별 추천 시리즈")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.padding(.horizontal, 13.3)
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ struct ContentMainSeriesCurationItemView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
Text(curation.title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.grayee)
|
||||
.padding(.horizontal, 13.3)
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ struct ContentMainSeriesRankingView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
Text("일간 랭킹")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.grayee)
|
||||
.padding(.horizontal, 13.3)
|
||||
|
||||
@@ -43,7 +43,7 @@ struct ContentMainSeriesRankingView: View {
|
||||
.cornerRadius(2.7)
|
||||
|
||||
Text("\(index + 1)")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(.button)
|
||||
.padding(.horizontal, 12)
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ struct ContentMainOriginalAudioDramaView: View {
|
||||
VStack(spacing: 13.3) {
|
||||
HStack(spacing: 0) {
|
||||
Text("오리지널 오디오 드라마")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.grayee)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -19,7 +19,7 @@ struct SeriesByChannelView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
Text(title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.padding(.horizontal, 13.3)
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ struct ContentModifyView: View {
|
||||
ScrollView(.vertical, showsIndicators: false) {
|
||||
VStack(spacing: 0) {
|
||||
Text("썸네일")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -83,7 +83,7 @@ struct ContentModifyView: View {
|
||||
|
||||
VStack(spacing: 0) {
|
||||
Text("제목")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -101,7 +101,7 @@ struct ContentModifyView: View {
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("내용")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Spacer()
|
||||
@@ -126,7 +126,7 @@ struct ContentModifyView: View {
|
||||
.padding(.top, 13.3)
|
||||
|
||||
Text("태그")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.padding(.top, 26.7)
|
||||
@@ -153,7 +153,7 @@ struct ContentModifyView: View {
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
Text("포인트 사용")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -177,7 +177,7 @@ struct ContentModifyView: View {
|
||||
if viewModel.isAdultShowUi {
|
||||
VStack(spacing: 13.3) {
|
||||
Text("연령 제한")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -207,7 +207,7 @@ struct ContentModifyView: View {
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
Text("댓글 가능 여부")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -231,7 +231,7 @@ struct ContentModifyView: View {
|
||||
VStack(spacing: 0) {
|
||||
HStack(alignment: .top, spacing: 0) {
|
||||
Text("수정")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.frame(height: 50)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
||||
@@ -26,7 +26,7 @@ struct ContentPlaylistItemView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 7) {
|
||||
Text(item.title)
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.grayd2)
|
||||
.lineLimit(1)
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ struct ContentPlaylistListView: View {
|
||||
BaseView(isLoading: $viewModel.isLoading) {
|
||||
VStack(spacing: 13.3) {
|
||||
Text("+ 새 재생목록 만들기")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.padding(.vertical, 13.3)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -32,7 +32,7 @@ struct ContentPlaylistListView: View {
|
||||
if viewModel.playlists.isEmpty {
|
||||
VStack(spacing: 13.3) {
|
||||
Text("재생목록이 비어있습니다.")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Text("자주 듣는 콘텐츠를\n재생목록으로 만들어 보세요.")
|
||||
|
||||
@@ -27,7 +27,7 @@ struct ContentPlaylistCreateView: View {
|
||||
.frame(width: 20, height: 20)
|
||||
|
||||
Text("새 재생목록 만들기")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ struct ContentPlaylistCreateView: View {
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("재생목록 제목")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Spacer()
|
||||
@@ -71,7 +71,7 @@ struct ContentPlaylistCreateView: View {
|
||||
TextField("", text: $viewModel.title)
|
||||
.autocapitalization(.none)
|
||||
.disableAutocorrection(true)
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.keyboardType(.webSearch)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -84,7 +84,7 @@ struct ContentPlaylistCreateView: View {
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("재생목록 설명을 입력해 주세요")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Spacer()
|
||||
@@ -104,7 +104,7 @@ struct ContentPlaylistCreateView: View {
|
||||
TextField("", text: $viewModel.desc)
|
||||
.autocapitalization(.none)
|
||||
.disableAutocorrection(true)
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.keyboardType(.webSearch)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -119,7 +119,7 @@ struct ContentPlaylistCreateView: View {
|
||||
Image("btn_plus_round")
|
||||
|
||||
Text("새로운 콘텐츠 추가/제거")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
}
|
||||
.padding(.top, 26.7)
|
||||
|
||||
@@ -18,7 +18,7 @@ struct PlaylistAddContentView: View {
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
ZStack {
|
||||
Text("새로운 콘텐츠 추가/제거")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
HStack(spacing: 0) {
|
||||
|
||||
@@ -112,7 +112,7 @@ struct ContentPlaylistDetailView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 6.7) {
|
||||
Text(response.title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayd2)
|
||||
.lineLimit(2)
|
||||
.truncationMode(.tail)
|
||||
@@ -142,7 +142,7 @@ struct ContentPlaylistDetailView: View {
|
||||
Image("ic_playlist_play")
|
||||
|
||||
Text("Play")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
}
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -160,7 +160,7 @@ struct ContentPlaylistDetailView: View {
|
||||
Image("ic_playlist_shuffle")
|
||||
|
||||
Text("Shuffle")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
}
|
||||
.frame(maxWidth: .infinity)
|
||||
|
||||
@@ -28,7 +28,7 @@ struct ContentPlaylistModifyView: View {
|
||||
.frame(width: 20, height: 20)
|
||||
|
||||
Text("재생목록 수정")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ struct ContentPlaylistModifyView: View {
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("재생목록 제목")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Spacer()
|
||||
@@ -72,7 +72,7 @@ struct ContentPlaylistModifyView: View {
|
||||
TextField("", text: $viewModel.title)
|
||||
.autocapitalization(.none)
|
||||
.disableAutocorrection(true)
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.keyboardType(.webSearch)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -85,7 +85,7 @@ struct ContentPlaylistModifyView: View {
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("재생목록 설명을 입력해 주세요")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Spacer()
|
||||
@@ -105,7 +105,7 @@ struct ContentPlaylistModifyView: View {
|
||||
TextField("", text: $viewModel.desc)
|
||||
.autocapitalization(.none)
|
||||
.disableAutocorrection(true)
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.keyboardType(.webSearch)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -120,7 +120,7 @@ struct ContentPlaylistModifyView: View {
|
||||
Image("btn_plus_round")
|
||||
|
||||
Text("새로운 콘텐츠 추가/제거")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
}
|
||||
.padding(.top, 26.7)
|
||||
|
||||
@@ -46,7 +46,7 @@ struct DayOfWeekSeriesView: View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text("요일별 시리즈")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -18,7 +18,7 @@ struct SeriesDetailHomeView: View {
|
||||
VStack(spacing: 0) {
|
||||
HStack(spacing: 0) {
|
||||
Text("전체회차 듣기")
|
||||
.font(.custom(Font.bold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
|
||||
Text(" (\(contentCount))")
|
||||
|
||||
@@ -16,7 +16,7 @@ struct SeriesDetailIntroductionView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
Text(I18n.SeriesDetail.keywords)
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.padding(.top, 16)
|
||||
.padding(.horizontal, 13.3)
|
||||
@@ -32,7 +32,7 @@ struct SeriesDetailIntroductionView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
Text(I18n.SeriesDetail.workIntro)
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Text(seriesDetail.displayIntroduction)
|
||||
@@ -48,7 +48,7 @@ struct SeriesDetailIntroductionView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
Text(I18n.SeriesDetail.details)
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
HStack(spacing: 30) {
|
||||
@@ -117,7 +117,7 @@ struct SeriesDetailIntroductionView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
Text(I18n.SeriesDetail.price)
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
HStack(spacing: 30) {
|
||||
|
||||
@@ -77,7 +77,7 @@ struct SeriesDetailView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
Text(seriesDetail.displayTitle)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.padding(.horizontal, 13.3)
|
||||
.padding(.top, 24)
|
||||
|
||||
@@ -24,7 +24,7 @@ struct SeriesMainHomeView: View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text("완결 시리즈")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -59,7 +59,7 @@ struct SeriesMainHomeView: View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text("추천 시리즈")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -21,7 +21,7 @@ struct ApplyAuditionCompleteDialog: View {
|
||||
|
||||
VStack(spacing: 0) {
|
||||
Text("오디션 지원")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.padding(.top, 26.7)
|
||||
|
||||
@@ -31,7 +31,7 @@ struct ApplyAuditionCompleteDialog: View {
|
||||
.padding(.top, 15)
|
||||
|
||||
Text(auditionTitle)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.graybb)
|
||||
.padding(.top, 20)
|
||||
|
||||
@@ -41,7 +41,7 @@ struct ApplyAuditionCompleteDialog: View {
|
||||
.padding(.top, 10)
|
||||
|
||||
Text("확인")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.padding(.vertical, 16)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
||||
@@ -23,7 +23,7 @@ struct CommunityPostPurchaseDialog: View {
|
||||
|
||||
VStack(spacing: 0) {
|
||||
Text("게시글 보기")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.graybb)
|
||||
.padding(.top, 40)
|
||||
|
||||
@@ -36,7 +36,7 @@ struct CommunityPostPurchaseDialog: View {
|
||||
|
||||
HStack(spacing: 13.3) {
|
||||
Text("취소")
|
||||
.font(.custom(Font.bold.rawValue, size: 15.3))
|
||||
.appFont(size: 15.3, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.padding(.vertical, 16)
|
||||
.frame(width: (geo.size.width - 66.7) / 3)
|
||||
@@ -51,7 +51,7 @@ struct CommunityPostPurchaseDialog: View {
|
||||
}
|
||||
|
||||
Text("\(can)캔으로 보기")
|
||||
.font(.custom(Font.bold.rawValue, size: 15.3))
|
||||
.appFont(size: 15.3, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.padding(.vertical, 16)
|
||||
.frame(width: (geo.size.width - 66.7) * 2 / 3)
|
||||
|
||||
@@ -29,7 +29,7 @@ struct CreatorFollowNotifyDialog: View {
|
||||
if isShow {
|
||||
VStack(alignment: .leading, spacing: 24) {
|
||||
Text("알림")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
CreatorFollowNotifyItem(
|
||||
|
||||
@@ -23,7 +23,7 @@ struct LivePaymentDialog: View {
|
||||
var body: some View {
|
||||
VStack {
|
||||
Text(title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.graybb)
|
||||
|
||||
Text(desc)
|
||||
@@ -71,7 +71,7 @@ struct LivePaymentDialog: View {
|
||||
|
||||
HStack(spacing: 13.3) {
|
||||
Text("취소")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.padding(.vertical, 16)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -84,7 +84,7 @@ struct LivePaymentDialog: View {
|
||||
.onTapGesture { cancelButtonAction() }
|
||||
|
||||
Text("결제 후 입장")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.padding(.vertical, 16)
|
||||
.frame(maxWidth: .infinity)
|
||||
.background(Color.button)
|
||||
|
||||
@@ -26,7 +26,7 @@ struct LiveRoomPasswordDialog: View {
|
||||
|
||||
VStack(spacing: 0) {
|
||||
Text("비밀번호 입력")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "bbbbbb"))
|
||||
.padding(.top, 40)
|
||||
|
||||
@@ -49,7 +49,7 @@ struct LiveRoomPasswordDialog: View {
|
||||
|
||||
HStack(spacing: 13.3) {
|
||||
Text("취소")
|
||||
.font(.custom(Font.bold.rawValue, size: 15.3))
|
||||
.appFont(size: 15.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "3bb9f1"))
|
||||
.padding(.vertical, 16)
|
||||
.frame(width: (geo.size.width - 66.7) / 3)
|
||||
@@ -66,7 +66,7 @@ struct LiveRoomPasswordDialog: View {
|
||||
if can > 0 {
|
||||
HStack(spacing: 0) {
|
||||
Text("\(can)")
|
||||
.font(.custom(Font.bold.rawValue, size: 15.3))
|
||||
.appFont(size: 15.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "ffffff"))
|
||||
|
||||
Image("ic_can")
|
||||
@@ -74,7 +74,7 @@ struct LiveRoomPasswordDialog: View {
|
||||
.frame(width: 20, height: 20)
|
||||
|
||||
Text("으로 입장")
|
||||
.font(.custom(Font.bold.rawValue, size: 15.3))
|
||||
.appFont(size: 15.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "ffffff"))
|
||||
}
|
||||
.padding(.vertical, 16)
|
||||
@@ -91,7 +91,7 @@ struct LiveRoomPasswordDialog: View {
|
||||
}
|
||||
} else {
|
||||
Text("입장하기")
|
||||
.font(.custom(Font.bold.rawValue, size: 15.3))
|
||||
.appFont(size: 15.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "ffffff"))
|
||||
.padding(.vertical, 16)
|
||||
.frame(width: (geo.size.width - 66.7) * 2 / 3)
|
||||
|
||||
@@ -26,7 +26,7 @@ struct MemberProfileDialog: View {
|
||||
VStack(alignment: .leading, spacing: 21) {
|
||||
HStack(spacing: 0) {
|
||||
Text("프로필")
|
||||
.font(.custom(Font.bold.rawValue, size: 15))
|
||||
.appFont(size: 15, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Spacer()
|
||||
@@ -39,7 +39,7 @@ struct MemberProfileDialog: View {
|
||||
|
||||
if let profile = viewModel.memberProfile {
|
||||
Text(profile.nickname)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
KFImage(URL(string: profile.profileImageUrl))
|
||||
@@ -57,7 +57,7 @@ struct MemberProfileDialog: View {
|
||||
|
||||
HStack(spacing: 8) {
|
||||
Text(profile.isBlocked ? "차단 해제" : "차단")
|
||||
.font(.custom(Font.bold.rawValue, size: 15))
|
||||
.appFont(size: 15, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.frame(maxWidth: .infinity)
|
||||
.padding(.vertical, 13)
|
||||
@@ -77,7 +77,7 @@ struct MemberProfileDialog: View {
|
||||
}
|
||||
|
||||
Text("사용자 신고")
|
||||
.font(.custom(Font.bold.rawValue, size: 15))
|
||||
.appFont(size: 15, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.frame(maxWidth: .infinity)
|
||||
.padding(.vertical, 13)
|
||||
@@ -91,7 +91,7 @@ struct MemberProfileDialog: View {
|
||||
.onTapGesture { viewModel.isShowUesrReportView = true }
|
||||
|
||||
Text("프로필 신고")
|
||||
.font(.custom(Font.bold.rawValue, size: 15))
|
||||
.appFont(size: 15, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.frame(maxWidth: .infinity)
|
||||
.padding(.vertical, 13)
|
||||
|
||||
@@ -44,7 +44,7 @@ struct SodaDialog: View {
|
||||
|
||||
VStack(spacing: 0) {
|
||||
Text(title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.graybb)
|
||||
.padding(.top, 40)
|
||||
|
||||
@@ -59,7 +59,7 @@ struct SodaDialog: View {
|
||||
HStack(spacing: 13.3) {
|
||||
if cancelButtonTitle.count > 0 {
|
||||
Text(cancelButtonTitle)
|
||||
.font(.custom(Font.bold.rawValue, size: 15.3))
|
||||
.appFont(size: 15.3, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.padding(.vertical, 16)
|
||||
.frame(width: (geo.size.width - 66.7) / 3)
|
||||
@@ -75,7 +75,7 @@ struct SodaDialog: View {
|
||||
}
|
||||
|
||||
Text(confirmButtonTitle)
|
||||
.font(.custom(Font.bold.rawValue, size: 15.3))
|
||||
.appFont(size: 15.3, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.padding(.vertical, 16)
|
||||
.frame(width: (geo.size.width - 66.7) * 2 / 3)
|
||||
|
||||
@@ -26,29 +26,29 @@ struct ExplorerSectionView: View {
|
||||
let titleArray = section.title.components(separatedBy: coloredTitle)
|
||||
HStack(spacing: 0) {
|
||||
Text(titleArray[0])
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Text(coloredTitle)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: color))
|
||||
|
||||
if titleArray.count > 1 {
|
||||
Text(titleArray[1])
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Text(section.title)
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
}
|
||||
|
||||
if let desc = section.desc {
|
||||
VStack(spacing: 8) {
|
||||
Text("\(desc)")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Text("※ 인기 크리에이터의 순위는 매주 업데이트됩니다.")
|
||||
|
||||
@@ -17,7 +17,7 @@ struct CreatorCommunityAllItemLockView: View {
|
||||
Image("ic_lock_bb")
|
||||
|
||||
Text("\(price)캔으로 게시글 보기")
|
||||
.font(.custom(Font.bold.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.padding(.horizontal, 21)
|
||||
.padding(.vertical, 11)
|
||||
|
||||
@@ -23,7 +23,7 @@ struct CreatorCommunityItemView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
Text(item.creatorNickname)
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
|
||||
Text(item.relativeTimeText())
|
||||
|
||||
@@ -16,7 +16,7 @@ struct CreatorCommunityNoPostsItemView: View {
|
||||
CreatorCommunityWriteItemView()
|
||||
|
||||
Text("게시물 등록")
|
||||
.font(.custom(Font.bold.rawValue, size: 14.7))
|
||||
.appFont(size: 14.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Text("게시 후에 게시물이 여기에 표시되고\n커뮤니티에 공개됩니다.")
|
||||
|
||||
@@ -30,7 +30,7 @@ struct CreatorCommunityModifyView: View {
|
||||
VStack(spacing: 0) {
|
||||
VStack(spacing: 13.3) {
|
||||
Text("이미지")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -103,7 +103,7 @@ struct CreatorCommunityModifyView: View {
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("내용")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Spacer()
|
||||
@@ -129,7 +129,7 @@ struct CreatorCommunityModifyView: View {
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
Text("댓글 가능 여부")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -157,7 +157,7 @@ struct CreatorCommunityModifyView: View {
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
Text("연령 제한")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -188,7 +188,7 @@ struct CreatorCommunityModifyView: View {
|
||||
VStack(spacing: 0) {
|
||||
HStack(spacing: 13.3) {
|
||||
Text("닫기")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "3BB9F1"))
|
||||
.frame(maxWidth: .infinity)
|
||||
.frame(height: 50)
|
||||
@@ -204,7 +204,7 @@ struct CreatorCommunityModifyView: View {
|
||||
}
|
||||
|
||||
Text("수정")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.frame(maxWidth: .infinity)
|
||||
.frame(height: 50)
|
||||
|
||||
@@ -32,7 +32,7 @@ struct CreatorCommunityRecordingVoiceView: View {
|
||||
VStack(spacing: 0) {
|
||||
HStack(spacing: 0) {
|
||||
Text("음성녹음")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -47,7 +47,7 @@ struct CreatorCommunityRecordingVoiceView: View {
|
||||
}
|
||||
|
||||
Text(soundManager.timeString)
|
||||
.font(.custom(Font.bold.rawValue, size: 33.3))
|
||||
.appFont(size: 33.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.top, 80)
|
||||
|
||||
@@ -115,7 +115,7 @@ struct CreatorCommunityRecordingVoiceView: View {
|
||||
|
||||
HStack(spacing: 13.3) {
|
||||
Text("다시 녹음")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.frame(width: (proxy.size.width - 40) / 3, height: 50)
|
||||
.background(Color.button.opacity(0.2))
|
||||
@@ -131,7 +131,7 @@ struct CreatorCommunityRecordingVoiceView: View {
|
||||
}
|
||||
|
||||
Text("녹음완료")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.frame(width: (proxy.size.width - 40) * 2 / 3, height: 50)
|
||||
.background(Color.button)
|
||||
|
||||
@@ -32,7 +32,7 @@ struct CreatorCommunityWriteView: View {
|
||||
VStack(spacing: 0) {
|
||||
VStack(spacing: 13.3) {
|
||||
Text("이미지")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -100,7 +100,7 @@ struct CreatorCommunityWriteView: View {
|
||||
VStack(spacing: 13.3) {
|
||||
HStack(spacing: 0) {
|
||||
Text("오디오 녹음")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Spacer()
|
||||
@@ -130,7 +130,7 @@ struct CreatorCommunityWriteView: View {
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("내용")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Spacer()
|
||||
@@ -156,7 +156,7 @@ struct CreatorCommunityWriteView: View {
|
||||
|
||||
VStack(spacing: 13.3) {
|
||||
Text("댓글 가능 여부")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -185,7 +185,7 @@ struct CreatorCommunityWriteView: View {
|
||||
if UserDefaults.bool(forKey: .auth) {
|
||||
VStack(spacing: 13.3) {
|
||||
Text("연령 제한")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -215,7 +215,7 @@ struct CreatorCommunityWriteView: View {
|
||||
if let _ = viewModel.postImageData {
|
||||
VStack(spacing: 13.3) {
|
||||
Text("가격 설정")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
@@ -245,7 +245,7 @@ struct CreatorCommunityWriteView: View {
|
||||
.autocapitalization(.none)
|
||||
.disableAutocorrection(true)
|
||||
.multilineTextAlignment(.center)
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.accentColor(Color.button)
|
||||
.keyboardType(.numberPad)
|
||||
@@ -274,7 +274,7 @@ struct CreatorCommunityWriteView: View {
|
||||
VStack(spacing: 0) {
|
||||
HStack(spacing: 13.3) {
|
||||
Text("닫기")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.frame(maxWidth: .infinity)
|
||||
.frame(height: 50)
|
||||
@@ -290,7 +290,7 @@ struct CreatorCommunityWriteView: View {
|
||||
}
|
||||
|
||||
Text("등록")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.frame(maxWidth: .infinity)
|
||||
.frame(height: 50)
|
||||
|
||||
@@ -43,7 +43,7 @@ struct UserProfileFanTalkCheersItemView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
Text("\(cheersItem.nickname)")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
|
||||
Text("\(cheersItem.date)")
|
||||
@@ -70,7 +70,7 @@ struct UserProfileFanTalkCheersItemView: View {
|
||||
)
|
||||
|
||||
Text("수정")
|
||||
.font(.custom(Font.preBold.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.padding(13.3)
|
||||
.background(Color.button)
|
||||
@@ -81,7 +81,7 @@ struct UserProfileFanTalkCheersItemView: View {
|
||||
}
|
||||
|
||||
Text("취소")
|
||||
.font(.custom(Font.preBold.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .bold)
|
||||
.foregroundColor(Color.button)
|
||||
.padding(13.3)
|
||||
.background(Color.gray22)
|
||||
@@ -119,7 +119,7 @@ struct UserProfileFanTalkCheersItemView: View {
|
||||
)
|
||||
|
||||
Text("등록")
|
||||
.font(.custom(Font.preBold.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.padding(13.3)
|
||||
.background(Color.button)
|
||||
|
||||
@@ -26,7 +26,7 @@ struct UserProfileFanTalkView: View {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
HStack(spacing: 0) {
|
||||
Text("팬 Talk")
|
||||
.font(.custom(Font.preBold.rawValue, size: 26))
|
||||
.appFont(size: 26, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -26,7 +26,7 @@ struct FollowerListView: View {
|
||||
|
||||
HStack(spacing: 4) {
|
||||
Text("전체")
|
||||
.font(.custom(Font.bold.rawValue, size: 18.3))
|
||||
.appFont(size: 18.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
|
||||
Text("\(viewModel.totalCount)")
|
||||
|
||||
@@ -16,7 +16,7 @@ struct UserProfileSeriesView: View {
|
||||
VStack(alignment: .leading, spacing: 13.3) {
|
||||
HStack(spacing: 0) {
|
||||
Text("시리즈")
|
||||
.font(.custom(Font.preBold.rawValue, size: 26))
|
||||
.appFont(size: 26, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -59,7 +59,7 @@ struct UserProfileActivitySummaryView: View {
|
||||
.multilineTextAlignment(.center)
|
||||
|
||||
Text(count)
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
}
|
||||
Spacer()
|
||||
|
||||
@@ -25,7 +25,7 @@ struct UserProfileContentView: View {
|
||||
VStack(spacing: 21) {
|
||||
HStack(spacing: 0) {
|
||||
Text(userId == UserDefaults.int(forKey: .userId) ? "내 콘텐츠" : "콘텐츠")
|
||||
.font(.custom(Font.preBold.rawValue, size: 26))
|
||||
.appFont(size: 26, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
|
||||
Spacer()
|
||||
@@ -40,7 +40,7 @@ struct UserProfileContentView: View {
|
||||
|
||||
if userId == UserDefaults.int(forKey: .userId) {
|
||||
Text("새로운 콘텐츠 등록하기")
|
||||
.font(.custom(Font.bold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.padding(.vertical, 17)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -74,7 +74,7 @@ struct UserProfileContentView: View {
|
||||
// 상단 정보 (계산된 % 보유중, 정보 아이콘, 개수)
|
||||
HStack {
|
||||
Text(ownedContentCount > 0 ? "\(Int(round(Double(ownedContentCount) / Double(totalContentCount) * 100)))% 보유중" : "소장 중인 작품이 없어요!")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -24,7 +24,7 @@ struct UserProfileDonationAllView: View {
|
||||
Spacer()
|
||||
|
||||
Text("채널에 후원랭킹 활성화")
|
||||
.font(.custom(Font.bold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Image(viewModel.isVisibleDonationRank ? "btn_toggle_on_big" : "btn_toggle_off_big")
|
||||
@@ -50,13 +50,13 @@ struct UserProfileDonationAllView: View {
|
||||
VStack(spacing: 13.3) {
|
||||
HStack(spacing: 0) {
|
||||
Text("오늘")
|
||||
.font(.custom(Font.bold.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Spacer()
|
||||
|
||||
Text("\(viewModel.accumulatedCansToday.comma())")
|
||||
.font(.custom(Font.bold.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Text(" 캔")
|
||||
@@ -66,13 +66,13 @@ struct UserProfileDonationAllView: View {
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("지난주")
|
||||
.font(.custom(Font.bold.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Spacer()
|
||||
|
||||
Text("\(viewModel.accumulatedCansLastWeek.comma())")
|
||||
.font(.custom(Font.bold.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Text(" 캔")
|
||||
@@ -82,13 +82,13 @@ struct UserProfileDonationAllView: View {
|
||||
|
||||
HStack(spacing: 0) {
|
||||
Text("이번 달 어제까지")
|
||||
.font(.custom(Font.bold.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Spacer()
|
||||
|
||||
Text("\(viewModel.accumulatedCansThisMonth.comma())")
|
||||
.font(.custom(Font.bold.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Text(" 캔")
|
||||
@@ -218,7 +218,7 @@ struct UserProfileDonationAllItemView: View {
|
||||
.frame(width: 63, height: 63)
|
||||
|
||||
Text("\(index + 1)")
|
||||
.font(.custom(Font.bold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
.padding(.leading, 20)
|
||||
.padding(.trailing, 13.3)
|
||||
|
||||
@@ -24,7 +24,7 @@ struct UserProfileDonationView: View {
|
||||
VStack(alignment: .leading, spacing: 14) {
|
||||
HStack(spacing: 0) {
|
||||
Text("후원랭킹")
|
||||
.font(.custom(Font.preBold.rawValue, size: 26))
|
||||
.appFont(size: 26, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -14,7 +14,7 @@ struct UserProfileIntroduceView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 16.7) {
|
||||
Text("채널 소개")
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color(hex: "eeeeee"))
|
||||
|
||||
Text(introduce)
|
||||
|
||||
@@ -76,7 +76,7 @@ struct UserProfileLiveView: View {
|
||||
VStack(alignment: .trailing, spacing: 8) {
|
||||
if item.isActive && !item.channelName.isNullOrBlank() {
|
||||
Text("ON\nAIR")
|
||||
.font(.custom(Font.preBold.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.frame(width: 52, height: 52)
|
||||
.background(Color(hex: "ff5c49"))
|
||||
@@ -84,7 +84,7 @@ struct UserProfileLiveView: View {
|
||||
} else {
|
||||
VStack(spacing: 0) {
|
||||
Text("\(dateDic["month"] ?? "")월")
|
||||
.font(.custom(Font.preBold.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.vertical, 6)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -92,7 +92,7 @@ struct UserProfileLiveView: View {
|
||||
.cornerRadius(16, corners: [.topLeft, .topRight])
|
||||
|
||||
Text("\(dateDic["day"] ?? "")")
|
||||
.font(.custom(Font.preBold.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .bold)
|
||||
.foregroundColor(Color(hex: "263238"))
|
||||
.padding(.vertical, 6)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -103,7 +103,7 @@ struct UserProfileLiveView: View {
|
||||
|
||||
if item.isReservation {
|
||||
Text("예약완료")
|
||||
.font(.custom(Font.preBold.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.padding(4)
|
||||
.frame(maxWidth: .infinity)
|
||||
|
||||
@@ -43,7 +43,7 @@ struct UserProfileView: View {
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
HStack(spacing: 8) {
|
||||
Text(creatorProfile.creator.nickname)
|
||||
.font(.custom(Font.preBold.rawValue, size: 32))
|
||||
.appFont(size: 32, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
if creatorProfile.creator.creatorId != UserDefaults.int(forKey: .userId) {
|
||||
@@ -65,7 +65,7 @@ struct UserProfileView: View {
|
||||
|
||||
if creatorProfile.creator.creatorId == UserDefaults.int(forKey: .userId) {
|
||||
Text(I18n.MemberChannel.followersList)
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color.black)
|
||||
.padding(.vertical, 8)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -189,7 +189,7 @@ struct UserProfileView: View {
|
||||
VStack(alignment: .leading, spacing: 14) {
|
||||
HStack(spacing: 0) {
|
||||
Text(I18n.MemberChannel.liveHeader)
|
||||
.font(.custom(Font.preBold.rawValue, size: 26))
|
||||
.appFont(size: 26, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
|
||||
Spacer()
|
||||
@@ -198,7 +198,7 @@ struct UserProfileView: View {
|
||||
if creatorProfile.creator.creatorId == UserDefaults.int(forKey: .userId) {
|
||||
HStack(spacing: 8) {
|
||||
Text(I18n.MemberChannel.rouletteSettings)
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.padding(.vertical, 12)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -207,7 +207,7 @@ struct UserProfileView: View {
|
||||
.onTapGesture { isShowRouletteSettings = true }
|
||||
|
||||
Text(I18n.MemberChannel.menuSettings)
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.padding(.vertical, 12)
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -259,7 +259,7 @@ struct UserProfileView: View {
|
||||
VStack(alignment: .leading, spacing: 14) {
|
||||
HStack(spacing: 0) {
|
||||
Text(I18n.MemberChannel.communityHeader)
|
||||
.font(.custom(Font.preBold.rawValue, size: 26))
|
||||
.appFont(size: 26, weight: .bold)
|
||||
.foregroundColor(Color.white)
|
||||
.padding(.horizontal, 24)
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ struct FollowCreatorItemView: View {
|
||||
.clipShape(Circle())
|
||||
|
||||
Text(creator.nickname)
|
||||
.font(.custom(Font.bold.rawValue, size: 16.7))
|
||||
.appFont(size: 16.7, weight: .bold)
|
||||
.foregroundColor(Color.grayee)
|
||||
.padding(.leading, 13.3)
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ struct HomeLatestContentView: View {
|
||||
var body: some View {
|
||||
HStack(spacing: 0) {
|
||||
Text("최신 콘텐츠")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -86,7 +86,7 @@ struct HomeTabView: View {
|
||||
if !viewModel.liveList.isEmpty {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
Text("지금 라이브중")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 24)
|
||||
|
||||
@@ -121,7 +121,7 @@ struct HomeTabView: View {
|
||||
if !viewModel.creatorRanking.isEmpty {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
Text("인기 크리에이터")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 24)
|
||||
|
||||
@@ -189,7 +189,7 @@ struct HomeTabView: View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text("오직 보이스온에서만")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -258,7 +258,7 @@ struct HomeTabView: View {
|
||||
if !viewModel.recommendChannelList.isEmpty {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
Text("추천 채널")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 24)
|
||||
|
||||
@@ -277,7 +277,7 @@ struct HomeTabView: View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text("무료 콘텐츠")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -307,7 +307,7 @@ struct HomeTabView: View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text("포인트 대여 콘텐츠")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -337,7 +337,7 @@ struct HomeTabView: View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack {
|
||||
Text("추천 콘텐츠")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -403,7 +403,7 @@ struct HomeTabView: View {
|
||||
.frame(width: 20, height: 20)
|
||||
|
||||
Text("콘텐츠 업로드")
|
||||
.font(.custom(Font.preBold.rawValue, size: 13.3))
|
||||
.appFont(size: 13.3, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
.padding(13.3)
|
||||
|
||||
@@ -17,7 +17,7 @@ struct HomeWeeklyChartItemView: View {
|
||||
var body: some View {
|
||||
HStack(spacing: 16) {
|
||||
Text("\(rank)")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(Color(hex: "B5E7FA"))
|
||||
.frame(width: 30)
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ struct HomeWeeklyChartView: View {
|
||||
VStack(spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text("보온 주간 차트")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user