diff --git a/.github/workflows/auto-tagging.yaml b/.github/workflows/auto-tagging.yaml index 44524426..fb85a691 100644 --- a/.github/workflows/auto-tagging.yaml +++ b/.github/workflows/auto-tagging.yaml @@ -9,7 +9,7 @@ on: jobs: auto-tagging: - if: github.event.pull_request.merged == true + if: github.event.pull_request.merged == true && (contains(github.event.pull_request.labels.*.name, 'major') || contains(github.event.pull_request.labels.*.name, 'minor') || contains(github.event.pull_request.labels.*.name, 'patch')) runs-on: ubuntu-latest steps: diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 11030ebe..8dc9eab5 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -15,10 +15,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: set up JDK 18 + - name: set up JDK 17 uses: actions/setup-java@v3 with: - java-version: '18' + java-version: '17' distribution: 'temurin' cache: 'gradle' - name: Download common setup files diff --git a/.github/workflows/create_artifact.yaml b/.github/workflows/create_artifact_and_deployment.yaml similarity index 88% rename from .github/workflows/create_artifact.yaml rename to .github/workflows/create_artifact_and_deployment.yaml index c283666e..18e0ffdf 100644 --- a/.github/workflows/create_artifact.yaml +++ b/.github/workflows/create_artifact_and_deployment.yaml @@ -1,12 +1,11 @@ -name: create artifact +name: create artifact and deployment on: workflow_dispatch: pull_request: branches: - master types: - - synchronize - - opened + - closed jobs: common_setup: @@ -15,16 +14,17 @@ jobs: upload_apk: needs: common_setup + if: github.event.pull_request.merged == true runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - - name: set up JDK 18 + - name: set up JDK 17 uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: '18' + java-version: '17' cache: 'gradle' - name: Download common setup files @@ -59,16 +59,17 @@ jobs: upload_aab: needs: common_setup + if: github.event.pull_request.merged == true runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - - name: set up JDK 18 + - name: set up JDK 17 uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: '18' + java-version: '17' cache: 'gradle' - name: Download common setup files uses: actions/download-artifact@v4 @@ -98,6 +99,14 @@ jobs: retention-days: 7 overwrite: true + - name: play store auto deployment + uses: r0adkll/upload-google-play@v1 + with: + packageName: com.mashup.dorabangs + releaseFiles: app/build/outputs/bundle/release/app-release.aab + track: production + serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }} + post_github: needs: [ upload_apk, upload_aab ] runs-on: ubuntu-latest diff --git a/.github/workflows/lint_check.yaml b/.github/workflows/lint_check.yaml index 68ea9d15..aa4523a3 100644 --- a/.github/workflows/lint_check.yaml +++ b/.github/workflows/lint_check.yaml @@ -8,10 +8,10 @@ jobs: steps: - uses: actions/checkout@v4 - - name: set up JDK 18 + - name: set up JDK 17 uses: actions/setup-java@v3 with: - java-version: '18' + java-version: '17' distribution: 'temurin' cache: 'gradle' diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f3f47da6..4d5dd596 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -4,7 +4,7 @@ plugins { alias(libs.plugins.com.android.application) alias(libs.plugins.org.jetbrains.kotlin.android) alias(libs.plugins.hilt) - alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.ksp) alias(libs.plugins.kotlinx.serialization) alias(libs.plugins.google.gms.service) } @@ -17,7 +17,7 @@ android { applicationId = "com.mashup.dorabangs" minSdk = libs.versions.min.sdk.get().toInt() targetSdk = libs.versions.target.sdk.get().toInt() - versionCode = GitUtil.getGitCommitCount(project) + versionCode = getGitCommitCount() versionName = libs.versions.versionName.get() testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" @@ -51,14 +51,14 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_18 - targetCompatibility = JavaVersion.VERSION_18 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } composeOptions { - kotlinCompilerExtensionVersion = "1.4.4" + kotlinCompilerExtensionVersion = "1.5.2" } kotlinOptions { - jvmTarget = "18" + jvmTarget = "17" } packaging { resources { @@ -101,7 +101,7 @@ dependencies { // Hilt implementation(libs.hilt.android) - kapt(libs.hilt.compiler) + ksp(libs.hilt.compiler) // Firebase implementation(platform(libs.firebase.bom)) diff --git a/build.gradle.kts b/build.gradle.kts index 1add2db6..bea60b49 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,8 +7,8 @@ plugins { alias(libs.plugins.org.jetbrains.kotlin.jvm) apply false alias(libs.plugins.spotless) apply true alias(libs.plugins.hilt) apply false - alias(libs.plugins.kotlin.kapt) apply false alias(libs.plugins.google.gms.service) apply false + alias(libs.plugins.ksp) apply false } subprojects { diff --git a/buildSrc/src/main/kotlin/GitUtil.kt b/buildSrc/src/main/kotlin/GitUtil.kt index 1394ab51..a0c7b1a1 100644 --- a/buildSrc/src/main/kotlin/GitUtil.kt +++ b/buildSrc/src/main/kotlin/GitUtil.kt @@ -1,20 +1,18 @@ import java.io.ByteArrayOutputStream import org.gradle.api.Project -object GitUtil { - /** - * 익셉션 나오면 1로 세팅돼서 - * aab 업로드시에 버전이 겹치다고 나올 것임 - * 그 때 default를 바꾸던,,익셉션 안나게 하던,,, 잘 해보도록 해~ - */ - fun getGitCommitCount(project: Project): Int { - return runCatching { - val stdout = ByteArrayOutputStream() - project.exec { - commandLine = listOf("git", "rev-list", "--count", "HEAD") - standardOutput = stdout - } - stdout.toString().trim().toInt() - }.getOrDefault(1) - } -} \ No newline at end of file +/** + * 익셉션 나오면 1로 세팅돼서 + * aab 업로드시에 버전이 겹치다고 나올 것임 + * 그 때 default를 바꾸던,,익셉션 안나게 하던,,, 잘 해보도록 해~ + */ +fun Project.getGitCommitCount(): Int { + return runCatching { + val stdout = ByteArrayOutputStream() + project.exec { + commandLine = listOf("git", "rev-list", "--count", "HEAD") + standardOutput = stdout + } + stdout.toString().trim().toInt() + }.getOrDefault(1) +} diff --git a/core/coroutine/build.gradle.kts b/core/coroutine/build.gradle.kts index bd812ac8..74c65fea 100644 --- a/core/coroutine/build.gradle.kts +++ b/core/coroutine/build.gradle.kts @@ -14,11 +14,11 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_18 - targetCompatibility = JavaVersion.VERSION_18 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "18" + jvmTarget = "17" } } diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts index 8ebe6bbe..a5a87be1 100644 --- a/core/designsystem/build.gradle.kts +++ b/core/designsystem/build.gradle.kts @@ -17,14 +17,14 @@ android { compose = true } composeOptions { - kotlinCompilerExtensionVersion = "1.4.3" + kotlinCompilerExtensionVersion = "1.5.2" } compileOptions { - sourceCompatibility = JavaVersion.VERSION_18 - targetCompatibility = JavaVersion.VERSION_18 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "18" + jvmTarget = "17" } } diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/bottomsheet/BottomSheetType.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/bottomsheet/BottomSheetType.kt index bea4e40e..fe310d38 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/bottomsheet/BottomSheetType.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/bottomsheet/BottomSheetType.kt @@ -107,7 +107,7 @@ object DoraBottomSheet : BottomSheetType { icon = R.drawable.ic_add_folder_purple, itemName = stringResource(id = R.string.moving_folder_dialog_add_folder), isSelected = false, - color = DoraColorTokens.Primary, + color = DoraColorTokens.Primary500, ), onClickItem = onClickCreateFolder, isLastItem = false, diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/buttons/GradientButton.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/buttons/BannerButton.kt similarity index 88% rename from core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/buttons/GradientButton.kt rename to core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/buttons/BannerButton.kt index 4f759c14..dbc047af 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/buttons/GradientButton.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/buttons/BannerButton.kt @@ -16,20 +16,20 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Shape import androidx.compose.ui.unit.dp +import com.mashup.dorabangs.core.designsystem.theme.DoraColorTokens @Composable -fun GradientButton( +fun BannerButton( onClick: () -> Unit, modifier: Modifier = Modifier, gradientModifier: Modifier = Modifier, enabled: Boolean = true, shape: Shape = ButtonDefaults.shape, colors: ButtonColors = ButtonDefaults.buttonColors(), - containerColor: Brush = Brush.verticalGradient(listOf(colors.containerColor, colors.containerColor)), + containerColor: Color = DoraColorTokens.G7, elevation: ButtonElevation? = ButtonDefaults.buttonElevation(), border: BorderStroke? = null, contentPadding: PaddingValues = ButtonDefaults.ContentPadding, @@ -49,11 +49,11 @@ fun GradientButton( ) { Box( modifier = gradientModifier - .background(brush = containerColor, shape = shape) + .background(color = containerColor, shape = shape) .padding(contentPadding), contentAlignment = Alignment.Center, ) { - Row { + Row(verticalAlignment = Alignment.CenterVertically) { content() } } diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/buttons/ButtonType.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/buttons/ButtonType.kt index fcd3da71..fbec43cc 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/buttons/ButtonType.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/buttons/ButtonType.kt @@ -2,6 +2,8 @@ package com.mashup.dorabangs.core.designsystem.component.buttons import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle import com.mashup.dorabangs.core.designsystem.theme.BtnMaxColorTokens import com.mashup.dorabangs.core.designsystem.theme.BtnMaxRoundTokens import com.mashup.dorabangs.core.designsystem.theme.DoraTypoTokens @@ -27,6 +29,27 @@ object DoraButtons : ButtonType { onClickButton = onClickButton, ) + @Composable + override fun DoraBtnMaxFullWithTextStyle( + modifier: Modifier, + containerColor: Color, + buttonText: String, + enabled: Boolean, + textStyle: TextStyle, + onClickButton: () -> Unit, + ) = DoraButton( + modifier = modifier, + buttonText = buttonText, + textStyle = textStyle, + enabled = enabled, + radius = BtnMaxRoundTokens.FullButtonWidthRadius, + containerColor = containerColor, + contentColor = BtnMaxColorTokens.ContentColor1, + disabledContainerColor = BtnMaxColorTokens.ContainerColor1_Off, + disabledContentColor = BtnMaxColorTokens.ContentColor_1Off, + onClickButton = onClickButton, + ) + @Composable override fun DoraMediumConfirmBtn( modifier: Modifier, @@ -37,7 +60,7 @@ object DoraButtons : ButtonType { buttonText = buttonText, textStyle = DoraTypoTokens.caption3Medium, enabled = true, - radius = BtnMaxRoundTokens.MediumButtonWidthRadius, + radius = BtnMaxRoundTokens.SmallButtonWidthRadius, containerColor = BtnMaxColorTokens.ContainerColor1, contentColor = BtnMaxColorTokens.ContentColor1, disabledContainerColor = BtnMaxColorTokens.ContainerColor1_Off, @@ -55,8 +78,8 @@ object DoraButtons : ButtonType { buttonText = buttonText, textStyle = DoraTypoTokens.caption3Medium, enabled = true, - radius = BtnMaxRoundTokens.MediumButtonWidthRadius, - containerColor = BtnMaxColorTokens.ContainerColor2, + radius = BtnMaxRoundTokens.SmallButtonWidthRadius, + containerColor = BtnMaxColorTokens.ContainerColor1_Off, contentColor = BtnMaxColorTokens.ContentColor2, disabledContainerColor = BtnMaxColorTokens.ContainerColor1_Off, disabledContentColor = BtnMaxColorTokens.ContentColor_1Off, @@ -71,10 +94,10 @@ object DoraButtons : ButtonType { ) = DoraButton( modifier = modifier, buttonText = buttonText, - textStyle = DoraTypoTokens.caption3Medium, + textStyle = DoraTypoTokens.caption2Medium, enabled = true, radius = BtnMaxRoundTokens.FullButtonWidthRadius, - containerColor = BtnMaxColorTokens.ContainerColor1, + containerColor = BtnMaxColorTokens.ContainerColor3, contentColor = BtnMaxColorTokens.ContentColor1, disabledContainerColor = BtnMaxColorTokens.ContainerColor1_Off, disabledContentColor = BtnMaxColorTokens.ContentColor_1Off, @@ -111,6 +134,16 @@ sealed interface ButtonType { onClickButton: () -> Unit, ) + @Composable + fun DoraBtnMaxFullWithTextStyle( + modifier: Modifier, + containerColor: Color, + buttonText: String, + enabled: Boolean, + textStyle: TextStyle, + onClickButton: () -> Unit, + ) + @Composable fun DoraMediumConfirmBtn( modifier: Modifier, diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/card/FeedCard.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/card/FeedCard.kt index 64a9bc29..e5434279 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/card/FeedCard.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/card/FeedCard.kt @@ -155,7 +155,7 @@ fun FeedCardContent( text = stringResource(id = R.string.feed_card_summarizing_content__title), modifier = Modifier .align(Alignment.CenterVertically) - .padding(start = 4.dp), + .padding(start = 2.dp), textAlign = TextAlign.Center, style = DoraTypoTokens.SMedium, color = DoraColorTokens.G9, @@ -165,7 +165,7 @@ fun FeedCardContent( repeat(3) { TextLoadingSkeleton( primaryColor = DoraColorTokens.White, - containerColor = DoraColorTokens.Primary, + containerColor = DoraColorTokens.Primary500, modifier = Modifier .fillMaxWidth() .padding(vertical = 4.dp) @@ -175,7 +175,7 @@ fun FeedCardContent( Spacer(modifier = Modifier.height(8.dp)) TextLoadingSkeleton( primaryColor = DoraColorTokens.White, - containerColor = DoraColorTokens.Primary, + containerColor = DoraColorTokens.Primary500, modifier = Modifier .padding(vertical = 2.dp) .width(172.dp) @@ -192,7 +192,7 @@ fun FeedCardContent( text = stringResource(id = R.string.feed_card_content_title), modifier = Modifier .align(Alignment.CenterVertically) - .padding(start = 4.dp), + .padding(start = 2.dp), textAlign = TextAlign.Center, style = DoraTypoTokens.SMedium, color = DoraColorTokens.G9, @@ -204,7 +204,7 @@ fun FeedCardContent( textAlign = TextAlign.Left, maxLines = 3, overflow = TextOverflow.Ellipsis, - style = DoraTypoTokens.caption1Normal, + style = DoraTypoTokens.SNormal, color = DoraColorTokens.G6, ) } @@ -213,20 +213,25 @@ fun FeedCardContent( } @Composable -fun FeedCardKeyword(keywordList: List?) { +fun FeedCardKeyword( + keywordList: List?, + modifier: Modifier = Modifier, +) { Row( - modifier = Modifier, + modifier = modifier, ) { keywordList?.forEach { keyword -> Box( modifier = Modifier + .height(26.dp) .border( - width = 0.5.dp, + width = 1.dp, shape = RectangleShape, color = DoraColorTokens.G3, ) .background(color = DoraColorTokens.P1) .padding(vertical = 6.dp, horizontal = 8.dp), + contentAlignment = Alignment.Center, ) { Text( text = "# $keyword", @@ -248,19 +253,12 @@ fun FeedCardCategoryAndDayLabel( ) { Row( modifier = modifier.then(Modifier.wrapContentWidth()), + horizontalArrangement = Arrangement.spacedBy(8.dp), ) { Text( text = cardInfo.category.orEmpty(), style = DoraTypoTokens.XSNormal, - color = DoraColorTokens.G5, - ) - Icon( - modifier = Modifier - .align(Alignment.CenterVertically) - .padding(horizontal = 8.dp) - .size(2.dp), - painter = painterResource(id = R.drawable.ic_plus), - contentDescription = "categoryLabel", + color = DoraColorTokens.G6, ) cardInfo.createdAt?.let { day -> if (day.isNotEmpty()) { @@ -268,7 +266,7 @@ fun FeedCardCategoryAndDayLabel( Text( text = if (days == 0L) "오늘" else "${day.convertCreatedDate()}일 전", style = DoraTypoTokens.XSNormal, - color = DoraColorTokens.G5, + color = DoraColorTokens.G4, ) } } diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/card/TextLoadingSkeleton.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/card/TextLoadingSkeleton.kt index 303db811..17336ea6 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/card/TextLoadingSkeleton.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/card/TextLoadingSkeleton.kt @@ -84,7 +84,7 @@ fun Modifier.animatedGradient( @Composable fun TextLoadingSkeletonPreview() { TextLoadingSkeleton( - DoraColorTokens.Primary, + DoraColorTokens.Primary500, DoraColorTokens.White, modifier = Modifier .fillMaxWidth() diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/chips/DoraChips.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/chips/DoraChips.kt index 6f95fe69..61dd813a 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/chips/DoraChips.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/chips/DoraChips.kt @@ -5,6 +5,7 @@ import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding @@ -22,6 +23,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.mashup.dorabangs.core.designsystem.R +import com.mashup.dorabangs.core.designsystem.component.divider.DoraDivider import com.mashup.dorabangs.core.designsystem.theme.ChipColorTokens import com.mashup.dorabangs.core.designsystem.theme.DoraRoundTokens import com.mashup.dorabangs.core.designsystem.theme.DoraTypoTokens @@ -31,26 +33,34 @@ fun DoraChips( chipList: List, modifier: Modifier = Modifier, selectedIndex: Int = 0, + isShowPostCount: Boolean = false, onClickChip: (Int) -> Unit = {}, ) { - LazyRow( - modifier = modifier - .padding(vertical = 8.dp), - horizontalArrangement = Arrangement.spacedBy(8.dp), - ) { - item { - Spacer(modifier = Modifier.width(12.dp)) - } - items(chipList.size) { index -> - DoraChip( - doraChipUiModel = chipList[index], - isSelected = index == selectedIndex, - onClickChip = { onClickChip(index) }, - ) - } - item { - Spacer(modifier = Modifier.width(12.dp)) + Column(modifier = modifier) { + LazyRow( + modifier = Modifier + .padding(top = 4.dp, bottom = 12.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + item { + Spacer(modifier = Modifier.width(20.dp)) + } + items( + count = chipList.size, + contentType = { "DoraChip" }, + ) { index -> + DoraChip( + doraChipUiModel = chipList[index], + isSelected = index == selectedIndex, + isShowPostCount = isShowPostCount, + onClickChip = { onClickChip(index) }, + ) + } + item { + Spacer(modifier = Modifier.width(20.dp)) + } } + DoraDivider() } } @@ -58,6 +68,7 @@ fun DoraChips( fun DoraChip( doraChipUiModel: FeedUiModel.DoraChipUiModel, modifier: Modifier = Modifier, + isShowPostCount: Boolean = false, isSelected: Boolean = false, onClickChip: () -> Unit = {}, ) { @@ -95,6 +106,14 @@ fun DoraChip( ), color = colorToken.OnContainerColor, ) + if (isShowPostCount) { + Text( + modifier = Modifier.padding(start = 4.dp), + text = doraChipUiModel.postCount.toString(), + style = DoraTypoTokens.caption1Normal, + color = colorToken.OnContainerColor2, + ) + } } } @@ -105,6 +124,8 @@ fun SelectedDoraChipPreview() { doraChipUiModel = FeedUiModel.DoraChipUiModel( title = "하이?", ), + isSelected = true, + isShowPostCount = true, ) } diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/dialog/DoraDialog.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/dialog/DoraDialog.kt index 3637dbfb..850fd171 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/dialog/DoraDialog.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/dialog/DoraDialog.kt @@ -9,11 +9,13 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalView import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties +import androidx.compose.ui.window.DialogWindowProvider import com.mashup.dorabangs.core.designsystem.component.buttons.DoraButtons import com.mashup.dorabangs.core.designsystem.theme.DialogColorTokens import com.mashup.dorabangs.core.designsystem.theme.DialogRoundTokens @@ -36,6 +38,7 @@ fun DoraDialog( properties = dialogProperties, onDismissRequest = onDisMissRequest, ) { + (LocalView.current.parent as DialogWindowProvider)?.window?.setDimAmount(0.3f) Column( modifier = modifier .background( @@ -46,21 +49,20 @@ fun DoraDialog( ) { Column( modifier = Modifier - .padding(horizontal = 16.dp) - .padding(bottom = 30.dp), + .padding(horizontal = 20.dp) + .padding(bottom = 20.dp), horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(8.dp), ) { Text( - modifier = Modifier.padding(top = 30.dp), + modifier = Modifier.padding(top = 24.dp), text = title, - style = DoraTypoTokens.base1Bold, + style = DoraTypoTokens.base2Bold, color = DialogColorTokens.TitleColor, ) Text( - modifier = Modifier.padding(top = 8.dp), + modifier = Modifier.padding(top = 4.dp), text = content, - style = DoraTypoTokens.caption3Medium, + style = DoraTypoTokens.caption2Normal, color = DialogColorTokens.ContentColor, textAlign = TextAlign.Center, ) @@ -69,7 +71,7 @@ fun DoraDialog( modifier = Modifier .padding(horizontal = 20.dp) .padding(bottom = 20.dp), - horizontalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(4.dp), ) { DoraButtons.DoraMediumDismissBtn( modifier = Modifier.weight(1f), @@ -94,4 +96,5 @@ fun PreviewDoraDialog() = DoraDialog( content = "Text Field Text Field Text Field Text Field Text Field Text Field, Text Field Text Field Text Field", confirmBtnText = "버튼", disMissBtnText = "버튼", + isShowDialog = true, ) diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/divider/DoraDivider.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/divider/DoraDivider.kt new file mode 100644 index 00000000..71c71048 --- /dev/null +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/divider/DoraDivider.kt @@ -0,0 +1,16 @@ +package com.mashup.dorabangs.core.designsystem.component.divider + +import androidx.compose.material3.HorizontalDivider +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.mashup.dorabangs.core.designsystem.theme.DoraColorTokens + +@Composable +fun DoraDivider(modifier: Modifier = Modifier) { + HorizontalDivider( + modifier = modifier, + thickness = 1.dp, + color = DoraColorTokens.G2, + ) +} diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/folder/DoraSelectableFolderListItems.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/folder/DoraSelectableFolderListItems.kt index 1b7fbf2c..ea4bfa46 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/folder/DoraSelectableFolderListItems.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/folder/DoraSelectableFolderListItems.kt @@ -118,7 +118,7 @@ fun DoraFolderSelectableListItem( modifier = Modifier.padding(start = 12.dp), text = data.itemName, style = DoraTypoTokens.caption3Normal, - color = if (index == 0) DoraColorTokens.Primary else DoraColorTokens.Black, + color = if (index == 0) DoraColorTokens.Primary500 else DoraColorTokens.Black, ) } if (data.isSelected) { diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/snackbar/DoraCloseButton.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/snackbar/DoraCloseButton.kt new file mode 100644 index 00000000..89b626d5 --- /dev/null +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/snackbar/DoraCloseButton.kt @@ -0,0 +1,18 @@ +package com.mashup.dorabangs.core.designsystem.component.snackbar + +import androidx.compose.ui.graphics.vector.ImageVector +import com.mashup.dorabangs.core.designsystem.component.snackbar.doraiconclosev2.IC_CLOSE_BUTTON +import kotlin.collections.List as ____KtList + +public object DoraCloseButton + +private var __AllIcons: ____KtList? = null + +public val DoraCloseButton.AllIcons: ____KtList + get() { + if (__AllIcons != null) { + return __AllIcons!! + } + __AllIcons = listOf(IC_CLOSE_BUTTON) + return __AllIcons!! + } diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/snackbar/doraiconclosev2/IcCloseButton.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/snackbar/doraiconclosev2/IcCloseButton.kt new file mode 100644 index 00000000..f1305da2 --- /dev/null +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/snackbar/doraiconclosev2/IcCloseButton.kt @@ -0,0 +1,56 @@ +package com.mashup.dorabangs.core.designsystem.component.snackbar.doraiconclosev2 + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.PathFillType.Companion.NonZero +import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.graphics.StrokeCap.Companion.Round +import androidx.compose.ui.graphics.StrokeJoin.Companion.Miter +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.vector.ImageVector.Builder +import androidx.compose.ui.graphics.vector.path +import androidx.compose.ui.unit.dp +import com.mashup.dorabangs.core.designsystem.component.snackbar.DoraCloseButton + +public val DoraCloseButton.IC_CLOSE_BUTTON: ImageVector + get() { + if (_ic != null) { + return _ic!! + } + _ic = Builder( + name = "Ic", + defaultWidth = 24.0.dp, + defaultHeight = 24.0.dp, + viewportWidth = + 24.0f, + viewportHeight = 24.0f, + ).apply { + path( + fill = SolidColor(Color(0x00000000)), + stroke = SolidColor(Color(0xFF707276)), + strokeLineWidth = 1.5f, + strokeLineCap = Round, + strokeLineJoin = Miter, + strokeLineMiter = 4.0f, + pathFillType = NonZero, + ) { + moveTo(6.0f, 6.5f) + lineTo(18.0f, 18.5f) + } + path( + fill = SolidColor(Color(0x00000000)), + stroke = SolidColor(Color(0xFF707276)), + strokeLineWidth = 1.5f, + strokeLineCap = Round, + strokeLineJoin = Miter, + strokeLineMiter = 4.0f, + pathFillType = NonZero, + ) { + moveTo(18.0f, 6.5f) + lineTo(6.0f, 18.5f) + } + } + .build() + return _ic!! + } + +private var _ic: ImageVector? = null diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/DorabangsTopAppBar.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/DorabangsTopAppBar.kt index 538e938f..4922e79a 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/DorabangsTopAppBar.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/DorabangsTopAppBar.kt @@ -17,6 +17,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.mashup.dorabangs.core.designsystem.R +import com.mashup.dorabangs.core.designsystem.component.divider.DoraDivider import com.mashup.dorabangs.core.designsystem.theme.DoraTypoTokens import com.mashup.dorabangs.core.designsystem.theme.TopBarColorTokens @@ -27,6 +28,7 @@ fun DoraTopAppBar( isTitleCenter: Boolean = false, isEnableBackNavigation: Boolean = false, @DrawableRes actionIcon: Int? = null, + isShowBottomDivider: Boolean = false, onClickBackIcon: () -> Unit = {}, onClickActonIcon: () -> Unit = {}, ) { @@ -39,7 +41,8 @@ fun DoraTopAppBar( val horizontalArrangement = if (isTitleCenter) Arrangement.Center else Arrangement.Start if (isTitleCenter && isEnableBackNavigation) { Icon( - modifier = Modifier.align(Alignment.CenterStart) + modifier = Modifier + .align(Alignment.CenterStart) .padding(start = 20.dp) .clickable { onClickBackIcon() }, painter = painterResource(id = R.drawable.ic_chevron_left_big_black), @@ -48,14 +51,16 @@ fun DoraTopAppBar( Text( modifier = Modifier .align(Alignment.Center) - .padding(start = 16.dp), + .padding(start = 8.dp), text = title, color = TopBarColorTokens.OnContainerColor, style = DoraTypoTokens.base1Bold, ) } else { Row( - modifier = Modifier.fillMaxWidth().align(Alignment.CenterStart), + modifier = Modifier + .fillMaxWidth() + .align(Alignment.CenterStart), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = horizontalArrangement, ) { @@ -78,13 +83,17 @@ fun DoraTopAppBar( } actionIcon?.let { icon -> Icon( - modifier = Modifier.align(Alignment.CenterEnd) + modifier = Modifier + .align(Alignment.CenterEnd) .padding(end = 20.dp) .clickable { onClickActonIcon() }, painter = painterResource(id = icon), contentDescription = "action", ) } + if (isShowBottomDivider) { + DoraDivider(modifier = Modifier.align(Alignment.BottomCenter)) + } } } @@ -105,6 +114,7 @@ fun PreviewBackNavigationTopBar() { modifier = Modifier.fillMaxWidth(), title = "Dorabangs", isTitleCenter = true, + isShowBottomDivider = true, ) {} } @@ -118,6 +128,7 @@ fun PreviewBackWithActionIconTopBar() { onClickBackIcon = {}, onClickActonIcon = {}, isTitleCenter = true, + isShowBottomDivider = true, ) } @@ -127,5 +138,6 @@ fun PreviewTitleTopAppBar() { DoraTopBar.TitleTopAppBar( modifier = Modifier.fillMaxWidth(), title = "Dorabangs", + isShowBottomDivider = true, ) } diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/TopAppBarType.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/TopAppBarType.kt index c5dd9c37..6b9d80c7 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/TopAppBarType.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/TopAppBarType.kt @@ -45,6 +45,7 @@ object DoraTopBar : TopAppBarType { modifier: Modifier, title: String, isTitleCenter: Boolean, + isShowBottomDivider: Boolean, onClickBackIcon: () -> Unit, ) { DoraTopAppBar( @@ -52,6 +53,7 @@ object DoraTopBar : TopAppBarType { title = title, isTitleCenter = isTitleCenter, isEnableBackNavigation = true, + isShowBottomDivider = isShowBottomDivider, onClickBackIcon = onClickBackIcon, ) } @@ -62,6 +64,7 @@ object DoraTopBar : TopAppBarType { title: String, actionIcon: Int, isTitleCenter: Boolean, + isShowBottomDivider: Boolean, onClickBackIcon: () -> Unit, onClickActonIcon: () -> Unit, ) { @@ -71,6 +74,7 @@ object DoraTopBar : TopAppBarType { isTitleCenter = isTitleCenter, isEnableBackNavigation = true, actionIcon = actionIcon, + isShowBottomDivider = isShowBottomDivider, onClickBackIcon = onClickBackIcon, onClickActonIcon = onClickActonIcon, ) @@ -80,10 +84,12 @@ object DoraTopBar : TopAppBarType { override fun TitleTopAppBar( modifier: Modifier, title: String, + isShowBottomDivider: Boolean, ) { DoraTopAppBar( modifier = modifier.background(DoraColorTokens.White), title = title, + isShowBottomDivider = isShowBottomDivider, isTitleCenter = true, ) } @@ -103,6 +109,7 @@ sealed interface TopAppBarType { modifier: Modifier, title: String, isTitleCenter: Boolean, + isShowBottomDivider: Boolean, onClickBackIcon: () -> Unit, ) @@ -112,6 +119,7 @@ sealed interface TopAppBarType { title: String, actionIcon: Int, isTitleCenter: Boolean, + isShowBottomDivider: Boolean, onClickBackIcon: () -> Unit, onClickActonIcon: () -> Unit, ) @@ -120,5 +128,6 @@ sealed interface TopAppBarType { fun TitleTopAppBar( modifier: Modifier, title: String, + isShowBottomDivider: Boolean, ) } diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/theme/Colors.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/theme/Colors.kt index 4c725b8d..922aa1ad 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/theme/Colors.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/theme/Colors.kt @@ -5,20 +5,22 @@ import androidx.compose.ui.graphics.Color object DoraColorTokens { val P1 = Color(0xFFFFFFFF) - val G9 = Color(0xFF121212) - val G8 = Color(0xFF1F1F20) - val G7 = Color(0xFF353638) - val G6 = Color(0xFF4B4C4E) - val G5 = Color(0xFF6E7277) - val G4 = Color(0xFFADB5BD) - val G3 = Color(0xFFCDD1D9) - val G2 = Color(0xFFF0F3F7) - val G1 = Color(0xFFF4F6F8) + val G9 = Color(0xFF27292C) + val G8 = Color(0xFF2B2D34) + val G7 = Color(0xFF404449) + val G6 = Color(0xFF707276) + val G5 = Color(0xFF878E99) + val G4 = Color(0xFFC0C5CC) + val G3 = Color(0xFFE6E7EB) + val G2 = Color(0xFFF5F5F6) + val G1 = Color(0xFFFAFAFB) val White = Color(0xFFFFFFFF) val Black = Color(0xFF000000) + val SurfaceBlack = Color(0xFF27292C) val Alert = Color(0xFFFF5D47) - val Dimend = Color(0xB2121212) - val Primary = Color(0xFF7764FF) + val Dimend = Color(0x1212124D) + val Primary500 = Color(0xFF666FFF) + val Primary100 = Color(0xFFF6F6FF) } object DoraGradientToken { @@ -37,16 +39,18 @@ object DoraGradientToken { ) val Gradient3 = Brush.linearGradient( listOf( - Color(0xFFE2ECFF), - Color(0xFFF7F7FF), - Color(0xFFFFEAF4), + Color(0xFFEAF2FF), + Color(0xFFEDF1FF), + Color(0xFFEEEFFF), + Color(0xFFECEFFF), ), ) val Gradient2 = Brush.linearGradient( listOf( - Color(0xFFF3FBFF), - Color(0xFFF5F5FF), - Color(0xFFF3FBFF), + Color(0xFFF6FBFF), + Color(0xFFF9FBFF), + Color(0xFFFBF9FF), + Color(0xFFF9F9FF), ), ) val Gradient1 = Brush.linearGradient( @@ -66,6 +70,7 @@ object BtnMaxColorTokens { val ContainerColor2 = DoraColorTokens.G1 val ContentColor2 = DoraColorTokens.G9 val Transparent = Color.Transparent + val ContainerColor3 = DoraColorTokens.G8 } object DialogColorTokens { @@ -114,9 +119,10 @@ object ChipsColorTokens { } class ChipColorTokens(isSelected: Boolean) { - val ContainerColor = if (isSelected) DoraColorTokens.Black else DoraColorTokens.White - val OnContainerColor = if (isSelected) DoraColorTokens.White else DoraColorTokens.G6 - val BorderColor = if (isSelected) DoraColorTokens.Black else DoraColorTokens.G2 + val ContainerColor = if (isSelected) DoraColorTokens.G8 else DoraColorTokens.G1 + val OnContainerColor = if (isSelected) DoraColorTokens.G1 else DoraColorTokens.G7 + val OnContainerColor2 = if (isSelected) DoraColorTokens.White else DoraColorTokens.G6 + val BorderColor = if (isSelected) DoraColorTokens.G8 else DoraColorTokens.G2 } object BottomSheetColorTokens { diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/theme/Radius.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/theme/Radius.kt index de225f05..e0e32058 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/theme/Radius.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/theme/Radius.kt @@ -5,7 +5,9 @@ import androidx.compose.ui.unit.dp object DoraRoundTokens { val Round99 = RoundedCornerShape(99.dp) + val Round50 = RoundedCornerShape(50.dp) val Round24 = RoundedCornerShape(24.dp) + val Round20 = RoundedCornerShape(20.dp) val Round16 = RoundedCornerShape(16.dp) val Round12 = RoundedCornerShape(12.dp) val TopRound12 = RoundedCornerShape(topStart = 12.dp, topEnd = 12.dp) @@ -17,7 +19,9 @@ object DoraRoundTokens { object BtnMaxRoundTokens { val FullButtonWidthRadius = DoraRoundTokens.Round99 + val SmallIconButtonRadius = DoraRoundTokens.Round50 val MediumButtonWidthRadius = DoraRoundTokens.Round12 + val SmallButtonWidthRadius = DoraRoundTokens.Round8 } object DialogRoundTokens { diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/theme/Typography.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/theme/Typography.kt index aa439ba2..fa50c43d 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/theme/Typography.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/theme/Typography.kt @@ -37,10 +37,20 @@ object DoraLineHeightTokens { val Caption3 = 22.sp val Caption2 = 22.sp val Caption1 = 22.sp - val S = 14.sp + val S = 21.sp val XS = 14.sp } +object DoraLetterSpacingToken { + val Title = (-0.3).sp + val Base2 = (-0.3).sp + val Caption3 = (-0.3).sp + val Caption2 = (-0.3).sp + val Caption1 = (-0.3).sp + val S = (-0.1).sp + val XS = (-0.1).sp +} + object DoraTypoTokens { private val doraFontFamily = FontFamily( Font(R.font.nanum_700, FontWeight.W700), @@ -137,6 +147,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W700, fontSize = DoraFontSizeTokens.Title, lineHeight = DoraLineHeightTokens.Title, + letterSpacing = DoraLetterSpacingToken.Title, ) val TitleMedium = TextStyle( @@ -221,6 +232,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W700, fontSize = DoraFontSizeTokens.Base2, lineHeight = DoraLineHeightTokens.Base2, + letterSpacing = DoraLetterSpacingToken.Base2, ) val base2Medium = TextStyle( @@ -228,6 +240,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W500, fontSize = DoraFontSizeTokens.Base2, lineHeight = DoraLineHeightTokens.Base2, + letterSpacing = DoraLetterSpacingToken.Base2, ) val base2Normal = TextStyle( @@ -235,6 +248,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W400, fontSize = DoraFontSizeTokens.Base2, lineHeight = DoraLineHeightTokens.Base2, + letterSpacing = DoraLetterSpacingToken.Base2, ) val caption3Bold = TextStyle( @@ -242,6 +256,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W700, fontSize = DoraFontSizeTokens.Caption3, lineHeight = DoraLineHeightTokens.Caption3, + letterSpacing = DoraLetterSpacingToken.Caption3, ) val caption3Medium = TextStyle( @@ -249,6 +264,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W500, fontSize = DoraFontSizeTokens.Caption3, lineHeight = DoraLineHeightTokens.Caption3, + letterSpacing = DoraLetterSpacingToken.Caption3, ) val caption3Normal = TextStyle( @@ -256,6 +272,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W400, fontSize = DoraFontSizeTokens.Caption3, lineHeight = DoraLineHeightTokens.Caption3, + letterSpacing = DoraLetterSpacingToken.Caption3, ) val caption2Bold = TextStyle( @@ -263,6 +280,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W700, fontSize = DoraFontSizeTokens.Caption2, lineHeight = DoraLineHeightTokens.Caption2, + letterSpacing = DoraLetterSpacingToken.Caption2, ) val caption2Medium = TextStyle( @@ -270,6 +288,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W500, fontSize = DoraFontSizeTokens.Caption2, lineHeight = DoraLineHeightTokens.Caption2, + letterSpacing = DoraLetterSpacingToken.Caption2, ) val caption2Normal = TextStyle( @@ -277,6 +296,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W400, fontSize = DoraFontSizeTokens.Caption2, lineHeight = DoraLineHeightTokens.Caption2, + letterSpacing = DoraLetterSpacingToken.Caption2, ) val caption1Bold = TextStyle( @@ -284,6 +304,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W700, fontSize = DoraFontSizeTokens.Caption1, lineHeight = DoraLineHeightTokens.Caption1, + letterSpacing = DoraLetterSpacingToken.Caption1, ) val caption1Medium = TextStyle( @@ -291,6 +312,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W500, fontSize = DoraFontSizeTokens.Caption1, lineHeight = DoraLineHeightTokens.Caption1, + letterSpacing = DoraLetterSpacingToken.Caption1, ) val caption1Normal = TextStyle( @@ -298,6 +320,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W400, fontSize = DoraFontSizeTokens.Caption1, lineHeight = DoraLineHeightTokens.Caption1, + letterSpacing = DoraLetterSpacingToken.Caption1, ) val SBold = TextStyle( @@ -305,6 +328,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W700, fontSize = DoraFontSizeTokens.S, lineHeight = DoraLineHeightTokens.S, + letterSpacing = DoraLetterSpacingToken.S, ) val SMedium = TextStyle( @@ -312,6 +336,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W500, fontSize = DoraFontSizeTokens.S, lineHeight = DoraLineHeightTokens.S, + letterSpacing = DoraLetterSpacingToken.S, ) val SNormal = TextStyle( @@ -319,6 +344,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W400, fontSize = DoraFontSizeTokens.S, lineHeight = DoraLineHeightTokens.S, + letterSpacing = DoraLetterSpacingToken.S, ) val XSBold = TextStyle( @@ -326,6 +352,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W700, fontSize = DoraFontSizeTokens.XS, lineHeight = DoraLineHeightTokens.XS, + letterSpacing = DoraLetterSpacingToken.XS, ) val XSMedium = TextStyle( @@ -333,6 +360,7 @@ object DoraTypoTokens { fontWeight = FontWeight.W500, fontSize = DoraFontSizeTokens.XS, lineHeight = DoraLineHeightTokens.XS, + letterSpacing = DoraLetterSpacingToken.XS, ) val XSNormal = TextStyle( @@ -340,5 +368,6 @@ object DoraTypoTokens { fontWeight = FontWeight.W400, fontSize = DoraFontSizeTokens.XS, lineHeight = DoraLineHeightTokens.XS, + letterSpacing = DoraLetterSpacingToken.XS, ) } diff --git a/core/designsystem/src/main/res/drawable/ic_add_folder.xml b/core/designsystem/src/main/res/drawable/ic_add_folder.xml index 06453b5f..9532dc7e 100644 --- a/core/designsystem/src/main/res/drawable/ic_add_folder.xml +++ b/core/designsystem/src/main/res/drawable/ic_add_folder.xml @@ -8,19 +8,19 @@ android:strokeLineJoin="round" android:strokeWidth="2" android:fillColor="#00000000" - android:strokeColor="#121212" + android:strokeColor="#27292C" android:strokeLineCap="square"/> diff --git a/core/designsystem/src/main/res/drawable/ic_add_link.xml b/core/designsystem/src/main/res/drawable/ic_add_link.xml index 5babbe3a..684f4fdd 100644 --- a/core/designsystem/src/main/res/drawable/ic_add_link.xml +++ b/core/designsystem/src/main/res/drawable/ic_add_link.xml @@ -5,9 +5,9 @@ android:viewportHeight="24"> + android:fillColor="#27292C"/> diff --git a/core/designsystem/src/main/res/drawable/ic_ai.xml b/core/designsystem/src/main/res/drawable/ic_ai.xml index f6ad724d..6ac6eb4c 100644 --- a/core/designsystem/src/main/res/drawable/ic_ai.xml +++ b/core/designsystem/src/main/res/drawable/ic_ai.xml @@ -1,9 +1,24 @@ + android:width="14dp" + android:height="14dp" + android:viewportWidth="14" + android:viewportHeight="14"> + android:pathData="M0,0h14v14h-14z" + android:fillColor="#F5F5F5"/> + + + + diff --git a/core/designsystem/src/main/res/drawable/ic_arrow_down_active.xml b/core/designsystem/src/main/res/drawable/ic_arrow_down_active.xml index 6b7d1031..c68d968f 100644 --- a/core/designsystem/src/main/res/drawable/ic_arrow_down_active.xml +++ b/core/designsystem/src/main/res/drawable/ic_arrow_down_active.xml @@ -5,6 +5,6 @@ android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_arrow_down_disabled.xml b/core/designsystem/src/main/res/drawable/ic_arrow_down_disabled.xml index 92a65b8f..596fc464 100644 --- a/core/designsystem/src/main/res/drawable/ic_arrow_down_disabled.xml +++ b/core/designsystem/src/main/res/drawable/ic_arrow_down_disabled.xml @@ -5,6 +5,6 @@ android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_arrow_up_active.xml b/core/designsystem/src/main/res/drawable/ic_arrow_up_active.xml index 4061730d..2746b0c3 100644 --- a/core/designsystem/src/main/res/drawable/ic_arrow_up_active.xml +++ b/core/designsystem/src/main/res/drawable/ic_arrow_up_active.xml @@ -4,7 +4,7 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_arrow_up_disabled.xml b/core/designsystem/src/main/res/drawable/ic_arrow_up_disabled.xml index a4dcd200..94334ae4 100644 --- a/core/designsystem/src/main/res/drawable/ic_arrow_up_disabled.xml +++ b/core/designsystem/src/main/res/drawable/ic_arrow_up_disabled.xml @@ -5,6 +5,6 @@ android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_bookmark_active.xml b/core/designsystem/src/main/res/drawable/ic_bookmark_active.xml index 66bbec63..ba7ffee1 100644 --- a/core/designsystem/src/main/res/drawable/ic_bookmark_active.xml +++ b/core/designsystem/src/main/res/drawable/ic_bookmark_active.xml @@ -5,6 +5,6 @@ android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_bookmark_default.xml b/core/designsystem/src/main/res/drawable/ic_bookmark_default.xml index 7f8920da..40473bd5 100644 --- a/core/designsystem/src/main/res/drawable/ic_bookmark_default.xml +++ b/core/designsystem/src/main/res/drawable/ic_bookmark_default.xml @@ -3,14 +3,10 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - diff --git a/core/designsystem/src/main/res/drawable/ic_check.xml b/core/designsystem/src/main/res/drawable/ic_check.xml index 8f6d6b8e..f10c9bdb 100644 --- a/core/designsystem/src/main/res/drawable/ic_check.xml +++ b/core/designsystem/src/main/res/drawable/ic_check.xml @@ -5,5 +5,5 @@ android:viewportHeight="24"> + android:fillColor="#27292C"/> diff --git a/core/designsystem/src/main/res/drawable/ic_check_circle.xml b/core/designsystem/src/main/res/drawable/ic_check_circle.xml index d666fe36..12faa4b8 100644 --- a/core/designsystem/src/main/res/drawable/ic_check_circle.xml +++ b/core/designsystem/src/main/res/drawable/ic_check_circle.xml @@ -8,5 +8,5 @@ android:fillColor="#ffffff"/> + android:fillColor="#27292C"/> diff --git a/core/designsystem/src/main/res/drawable/ic_chevron_left_big_black.xml b/core/designsystem/src/main/res/drawable/ic_chevron_left_big_black.xml index 2d7e3f25..4f72cadd 100644 --- a/core/designsystem/src/main/res/drawable/ic_chevron_left_big_black.xml +++ b/core/designsystem/src/main/res/drawable/ic_chevron_left_big_black.xml @@ -5,6 +5,6 @@ android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_chevron_left_m_black.xml b/core/designsystem/src/main/res/drawable/ic_chevron_left_m_black.xml index 3f5c4018..b581b5b7 100644 --- a/core/designsystem/src/main/res/drawable/ic_chevron_left_m_black.xml +++ b/core/designsystem/src/main/res/drawable/ic_chevron_left_m_black.xml @@ -7,6 +7,6 @@ android:pathData="M14.5,7.5L10,12L14.5,16.5" android:strokeWidth="2" android:fillColor="#00000000" - android:strokeColor="#121212" + android:strokeColor="#27292C" android:strokeLineCap="square"/> diff --git a/core/designsystem/src/main/res/drawable/ic_chevron_left_m_gray.xml b/core/designsystem/src/main/res/drawable/ic_chevron_left_m_gray.xml index 3dd52323..de9ec6de 100644 --- a/core/designsystem/src/main/res/drawable/ic_chevron_left_m_gray.xml +++ b/core/designsystem/src/main/res/drawable/ic_chevron_left_m_gray.xml @@ -7,6 +7,6 @@ android:pathData="M14.5,7.5L10,12L14.5,16.5" android:strokeWidth="1.5" android:fillColor="#00000000" - android:strokeColor="#ADB5BD" + android:strokeColor="#C0C5CC" android:strokeLineCap="square"/> diff --git a/core/designsystem/src/main/res/drawable/ic_chevron_right_big_black.xml b/core/designsystem/src/main/res/drawable/ic_chevron_right_big_black.xml index f4a10464..334f5adc 100644 --- a/core/designsystem/src/main/res/drawable/ic_chevron_right_big_black.xml +++ b/core/designsystem/src/main/res/drawable/ic_chevron_right_big_black.xml @@ -5,6 +5,6 @@ android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_chevron_right_m_black.xml b/core/designsystem/src/main/res/drawable/ic_chevron_right_m_black.xml index 894391ab..804ebfae 100644 --- a/core/designsystem/src/main/res/drawable/ic_chevron_right_m_black.xml +++ b/core/designsystem/src/main/res/drawable/ic_chevron_right_m_black.xml @@ -7,6 +7,6 @@ android:pathData="M9.5,7.5L14,12L9.5,16.5" android:strokeWidth="2" android:fillColor="#00000000" - android:strokeColor="#121212" + android:strokeColor="#27292C" android:strokeLineCap="square"/> diff --git a/core/designsystem/src/main/res/drawable/ic_chevron_right_m_gray.xml b/core/designsystem/src/main/res/drawable/ic_chevron_right_m_gray.xml index 73f41924..bdb217a6 100644 --- a/core/designsystem/src/main/res/drawable/ic_chevron_right_m_gray.xml +++ b/core/designsystem/src/main/res/drawable/ic_chevron_right_m_gray.xml @@ -7,6 +7,6 @@ android:pathData="M9.5,7.5L14,12L9.5,16.5" android:strokeWidth="1.5" android:fillColor="#00000000" - android:strokeColor="#ADB5BD" + android:strokeColor="#C0C5CC" android:strokeLineCap="square"/> diff --git a/core/designsystem/src/main/res/drawable/ic_chevron_right_small_gray.xml b/core/designsystem/src/main/res/drawable/ic_chevron_right_small_gray.xml new file mode 100644 index 00000000..4d08b53d --- /dev/null +++ b/core/designsystem/src/main/res/drawable/ic_chevron_right_small_gray.xml @@ -0,0 +1,11 @@ + + + diff --git a/core/designsystem/src/main/res/drawable/ic_chevron_right_small_white.xml b/core/designsystem/src/main/res/drawable/ic_chevron_right_small_white.xml index 5f65bde8..abc40bb4 100644 --- a/core/designsystem/src/main/res/drawable/ic_chevron_right_small_white.xml +++ b/core/designsystem/src/main/res/drawable/ic_chevron_right_small_white.xml @@ -1,11 +1,11 @@ + android:width="16dp" + android:height="16dp" + android:viewportWidth="16" + android:viewportHeight="16"> + android:strokeColor="#FAFAFB"/> diff --git a/core/designsystem/src/main/res/drawable/ic_close_circle.xml b/core/designsystem/src/main/res/drawable/ic_close_circle.xml index f8020591..a5cc3901 100644 --- a/core/designsystem/src/main/res/drawable/ic_close_circle.xml +++ b/core/designsystem/src/main/res/drawable/ic_close_circle.xml @@ -8,6 +8,6 @@ android:fillColor="#ffffff"/> diff --git a/core/designsystem/src/main/res/drawable/ic_edit.xml b/core/designsystem/src/main/res/drawable/ic_edit.xml index adb76bc1..bcc6e2e6 100644 --- a/core/designsystem/src/main/res/drawable/ic_edit.xml +++ b/core/designsystem/src/main/res/drawable/ic_edit.xml @@ -5,6 +5,6 @@ android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_empty.xml b/core/designsystem/src/main/res/drawable/ic_empty.xml index 92a80475..94f11613 100644 --- a/core/designsystem/src/main/res/drawable/ic_empty.xml +++ b/core/designsystem/src/main/res/drawable/ic_empty.xml @@ -5,6 +5,6 @@ android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_folder_active.xml b/core/designsystem/src/main/res/drawable/ic_folder_active.xml index 9c7a4be9..fb7bf01a 100644 --- a/core/designsystem/src/main/res/drawable/ic_folder_active.xml +++ b/core/designsystem/src/main/res/drawable/ic_folder_active.xml @@ -5,6 +5,6 @@ android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_folder_default.xml b/core/designsystem/src/main/res/drawable/ic_folder_default.xml index a461377c..aa409833 100644 --- a/core/designsystem/src/main/res/drawable/ic_folder_default.xml +++ b/core/designsystem/src/main/res/drawable/ic_folder_default.xml @@ -5,6 +5,6 @@ android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_folder_move.xml b/core/designsystem/src/main/res/drawable/ic_folder_move.xml index 910594ed..220e75ee 100644 --- a/core/designsystem/src/main/res/drawable/ic_folder_move.xml +++ b/core/designsystem/src/main/res/drawable/ic_folder_move.xml @@ -5,7 +5,7 @@ android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_home_default.xml b/core/designsystem/src/main/res/drawable/ic_home_default.xml index 30e69c2d..dd663bf2 100644 --- a/core/designsystem/src/main/res/drawable/ic_home_default.xml +++ b/core/designsystem/src/main/res/drawable/ic_home_default.xml @@ -4,7 +4,7 @@ android:viewportWidth="24" android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_more_black.xml b/core/designsystem/src/main/res/drawable/ic_more_black.xml index 924c69c2..d4d34251 100644 --- a/core/designsystem/src/main/res/drawable/ic_more_black.xml +++ b/core/designsystem/src/main/res/drawable/ic_more_black.xml @@ -5,11 +5,11 @@ android:viewportHeight="24"> + android:fillColor="#27292C"/> + android:fillColor="#27292C"/> + android:fillColor="#27292C"/> diff --git a/core/designsystem/src/main/res/drawable/ic_more_gray.xml b/core/designsystem/src/main/res/drawable/ic_more_gray.xml index bf502bae..5a85bbc3 100644 --- a/core/designsystem/src/main/res/drawable/ic_more_gray.xml +++ b/core/designsystem/src/main/res/drawable/ic_more_gray.xml @@ -5,11 +5,11 @@ android:viewportHeight="24"> + android:fillColor="#C0C5CC"/> + android:fillColor="#C0C5CC"/> + android:fillColor="#C0C5CC"/> diff --git a/core/designsystem/src/main/res/drawable/ic_plus.xml b/core/designsystem/src/main/res/drawable/ic_plus.xml index f072ba96..87caa932 100644 --- a/core/designsystem/src/main/res/drawable/ic_plus.xml +++ b/core/designsystem/src/main/res/drawable/ic_plus.xml @@ -1,10 +1,20 @@ + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + android:pathData="M11.999,6V17.989" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#27292C" + android:strokeLineCap="square"/> + diff --git a/core/designsystem/src/main/res/drawable/ic_trashbin.xml b/core/designsystem/src/main/res/drawable/ic_trashbin.xml index 1d7f5b38..cc62df11 100644 --- a/core/designsystem/src/main/res/drawable/ic_trashbin.xml +++ b/core/designsystem/src/main/res/drawable/ic_trashbin.xml @@ -5,6 +5,6 @@ android:viewportHeight="24"> diff --git a/core/designsystem/src/main/res/drawable/ic_x_gray.xml b/core/designsystem/src/main/res/drawable/ic_x_gray.xml new file mode 100644 index 00000000..c0f94bb8 --- /dev/null +++ b/core/designsystem/src/main/res/drawable/ic_x_gray.xml @@ -0,0 +1,18 @@ + + + + diff --git a/core/designsystem/src/main/res/drawable/ic_x_white.xml b/core/designsystem/src/main/res/drawable/ic_x_white.xml new file mode 100644 index 00000000..9cd0c34b --- /dev/null +++ b/core/designsystem/src/main/res/drawable/ic_x_white.xml @@ -0,0 +1,18 @@ + + + + diff --git a/core/designsystem/src/main/res/drawable/logo_top_app_bar.png b/core/designsystem/src/main/res/drawable/logo_top_app_bar.png index 3da0792b..f46fdefb 100644 Binary files a/core/designsystem/src/main/res/drawable/logo_top_app_bar.png and b/core/designsystem/src/main/res/drawable/logo_top_app_bar.png differ diff --git a/core/designsystem/src/main/res/values/string.xml b/core/designsystem/src/main/res/values/string.xml index c16cad50..6dbef95e 100644 --- a/core/designsystem/src/main/res/values/string.xml +++ b/core/designsystem/src/main/res/values/string.xml @@ -25,10 +25,8 @@ 1개 이상을 선택해주세요 완료 확인 - AI로 분류한 링크가 - 아직 읽지 않은 링크가 - %s개 - 있어요 + AI로 분류한\n링크가 %s개 있어요 + 아직 읽지 않은\n링크가 %s개 있어요 3초만에 링크를 \n저장하는 방법이에요 삭제 완료했어요. \ No newline at end of file diff --git a/core/navigation/build.gradle.kts b/core/navigation/build.gradle.kts index 1be96c3d..1923dd17 100644 --- a/core/navigation/build.gradle.kts +++ b/core/navigation/build.gradle.kts @@ -15,11 +15,11 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "1.8" + jvmTarget = "17" } } diff --git a/core/webview/build.gradle.kts b/core/webview/build.gradle.kts index 3e010a7a..cc9fb568 100644 --- a/core/webview/build.gradle.kts +++ b/core/webview/build.gradle.kts @@ -2,7 +2,7 @@ plugins { alias(libs.plugins.com.android.library) alias(libs.plugins.org.jetbrains.kotlin.android) alias(libs.plugins.hilt) - alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.ksp) } android { @@ -30,15 +30,15 @@ android { } composeOptions { - kotlinCompilerExtensionVersion = "1.4.3" + kotlinCompilerExtensionVersion = "1.5.2" } compileOptions { - sourceCompatibility = JavaVersion.VERSION_18 - targetCompatibility = JavaVersion.VERSION_18 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "18" + jvmTarget = "17" } } @@ -64,7 +64,7 @@ dependencies { // Hilt implementation(libs.hilt.android) - kapt(libs.hilt.compiler) + ksp(libs.hilt.compiler) implementation(libs.hilt.navigation.compose) implementation(libs.compose.webview) } diff --git a/core/webview/src/main/java/com/mashup/dorabangs/core/webview/DoraWebView.kt b/core/webview/src/main/java/com/mashup/dorabangs/core/webview/DoraWebView.kt index 738c7319..00fbecbe 100644 --- a/core/webview/src/main/java/com/mashup/dorabangs/core/webview/DoraWebView.kt +++ b/core/webview/src/main/java/com/mashup/dorabangs/core/webview/DoraWebView.kt @@ -34,7 +34,8 @@ fun DoraWebView( modifier = Modifier.fillMaxWidth(), title = "", isTitleCenter = true, - onClickBackIcon = { navigateToPopBackStack() }, + onClickBackIcon = navigateToPopBackStack, + isShowBottomDivider = true, ) WebView( state = state, diff --git a/data/build.gradle.kts b/data/build.gradle.kts index ebbe2a96..77bef824 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -5,7 +5,7 @@ plugins { id("jacoco") alias(libs.plugins.com.android.library) alias(libs.plugins.org.jetbrains.kotlin.android) - alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.ksp) alias(libs.plugins.hilt) alias(libs.plugins.kotlinx.serialization) } @@ -31,11 +31,11 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_18 - targetCompatibility = JavaVersion.VERSION_18 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "18" + jvmTarget = "17" } buildFeatures { @@ -121,7 +121,7 @@ dependencies { implementation(libs.retrofit) implementation(libs.hilt.android) - kapt(libs.hilt.compiler) + ksp(libs.hilt.compiler) testImplementation(libs.junit) testImplementation(libs.mockk) @@ -152,7 +152,7 @@ dependencies { implementation(libs.room.runtime) implementation(libs.room.paging) implementation(libs.room.ktx) - kapt(libs.room.compiler) + ksp(libs.room.compiler) implementation(libs.gson) diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts index 4347be7a..d653c024 100644 --- a/domain/build.gradle.kts +++ b/domain/build.gradle.kts @@ -7,8 +7,8 @@ plugins { } java { - sourceCompatibility = JavaVersion.VERSION_18 - targetCompatibility = JavaVersion.VERSION_18 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } dependencies { diff --git a/feature/classification/build.gradle.kts b/feature/classification/build.gradle.kts index c47ce6b9..5f652ae7 100644 --- a/feature/classification/build.gradle.kts +++ b/feature/classification/build.gradle.kts @@ -3,7 +3,7 @@ plugins { alias(libs.plugins.com.android.library) alias(libs.plugins.org.jetbrains.kotlin.android) alias(libs.plugins.hilt) - alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.ksp) } android { @@ -30,15 +30,15 @@ android { compose = true } composeOptions { - kotlinCompilerExtensionVersion = "1.4.3" + kotlinCompilerExtensionVersion = "1.5.2" } compileOptions { - sourceCompatibility = JavaVersion.VERSION_18 - targetCompatibility = JavaVersion.VERSION_18 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "18" + jvmTarget = "17" } } @@ -68,7 +68,7 @@ dependencies { // Hilt implementation(libs.hilt.android) - kapt(libs.hilt.compiler) + ksp(libs.hilt.compiler) implementation(libs.hilt.navigation.compose) // Orbit diff --git a/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationCompleteScreen.kt b/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationCompleteScreen.kt index 949c56f0..4cd33489 100644 --- a/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationCompleteScreen.kt +++ b/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationCompleteScreen.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -38,8 +37,8 @@ fun ClassificationCompleteScreen( DoraButtons.DoraSmallConfirmBtn( modifier = Modifier .align(Alignment.CenterHorizontally) - .padding(horizontal = 30.dp, vertical = 8.dp) - .wrapContentWidth(), + .padding(horizontal = 24.dp, vertical = 6.dp) + .height(36.dp), buttonText = stringResource(id = R.string.ai_classification_navigate_home), onClickButton = { navigateToHome() }, ) diff --git a/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationListScreen.kt b/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationListScreen.kt index 88a81890..16821ac1 100644 --- a/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationListScreen.kt +++ b/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationListScreen.kt @@ -4,16 +4,14 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState -import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.IconButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -24,12 +22,12 @@ import androidx.compose.ui.unit.dp import androidx.paging.compose.LazyPagingItems import androidx.paging.compose.itemKey import com.mashup.dorabangs.core.designsystem.component.buttons.DoraButtons -import com.mashup.dorabangs.core.designsystem.component.buttons.GradientButton import com.mashup.dorabangs.core.designsystem.component.card.FeedCard import com.mashup.dorabangs.core.designsystem.component.card.FeedCardEntryPoint import com.mashup.dorabangs.core.designsystem.component.chips.FeedUiModel -import com.mashup.dorabangs.core.designsystem.component.snackbar.doraiconclose.CloseCircle -import com.mashup.dorabangs.core.designsystem.component.snackbar.doraiconclose.DoraIconClose +import com.mashup.dorabangs.core.designsystem.component.divider.DoraDivider +import com.mashup.dorabangs.core.designsystem.component.snackbar.DoraCloseButton +import com.mashup.dorabangs.core.designsystem.component.snackbar.doraiconclosev2.IC_CLOSE_BUTTON import com.mashup.dorabangs.core.designsystem.theme.DoraColorTokens import com.mashup.dorabangs.core.designsystem.theme.DoraGradientToken import com.mashup.dorabangs.core.designsystem.theme.DoraTypoTokens @@ -96,8 +94,8 @@ fun ClassificationFolderMove( .background(DoraGradientToken.Gradient2) .fillMaxWidth() .padding(vertical = 32.dp, horizontal = 23.dp), - ) { + Spacer(modifier = Modifier.height(12.dp)) Text( modifier = Modifier.align(Alignment.CenterHorizontally), text = selectedFolder, @@ -111,12 +109,12 @@ fun ClassificationFolderMove( style = DoraTypoTokens.caption1Medium, color = DoraColorTokens.Black, ) - Spacer(modifier = Modifier.height(20.dp)) + Spacer(modifier = Modifier.height(12.dp)) DoraButtons.DoraSmallConfirmBtn( modifier = Modifier .align(Alignment.CenterHorizontally) - .padding(horizontal = 30.dp, vertical = 8.dp) - .wrapContentWidth(), + .padding(horizontal = 24.dp, vertical = 6.dp) + .height(36.dp), buttonText = stringResource(id = R.string.ai_classification_all_move), onClickButton = onClickAllItemMoveButton, ) @@ -148,39 +146,27 @@ fun ClassificationCardItem( onClick = { onClickDeleteButton(cardItem) }, ) { Image( - imageVector = DoraIconClose.CloseCircle, + modifier = Modifier.fillMaxSize(), + imageVector = DoraCloseButton.IC_CLOSE_BUTTON, contentDescription = "delete", ) } - Spacer(modifier = Modifier.height(20.dp)) FeedCard(cardInfo = cardItem, feedCardEntryPoint = FeedCardEntryPoint.AiClassification) - GradientButton( + DoraButtons.DoraBtnMaxFullWithTextStyle( modifier = Modifier .fillMaxWidth() .padding(horizontal = 20.dp), - gradientModifier = Modifier - .fillMaxWidth() - .height(36.dp), - containerColor = DoraGradientToken.Gradient1, - contentPadding = PaddingValues(horizontal = 20.dp), - onClick = { onClickMoveButton(cardItem) }, - ) { - Text( - text = "${cardItem.category}(으)로 옮기기", - modifier = Modifier.padding(vertical = 7.dp), - style = DoraTypoTokens.caption1Medium.copy( - brush = DoraGradientToken.Gradient5, - ), - ) - } + containerColor = DoraColorTokens.Primary100, + buttonText = "${cardItem.category}(으)로 옮기기", + textStyle = DoraTypoTokens.caption1Medium.copy( + color = DoraColorTokens.Primary500, + ), + enabled = true, + onClickButton = { onClickMoveButton(cardItem) }, + ) Spacer(modifier = Modifier.height(32.dp)) if (idx != lastIndex) { - HorizontalDivider( - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 20.dp), - thickness = 0.5.dp, - ) + DoraDivider(modifier = Modifier.padding(horizontal = 20.dp)) Spacer(modifier = Modifier.height(12.dp)) } } diff --git a/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationScreen.kt b/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationScreen.kt index 48fee4bc..3af6fdfb 100644 --- a/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationScreen.kt +++ b/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationScreen.kt @@ -74,16 +74,13 @@ fun ClassificationScreen( modifier = Modifier.fillMaxWidth(), title = stringResource(id = R.string.ai_classification_title), isTitleCenter = true, - onClickBackIcon = { onClickBackIcon() }, + onClickBackIcon = onClickBackIcon, + isShowBottomDivider = false, ) DoraChips( modifier = modifier.fillMaxWidth(), - chipList = state.chipState.chipList.map { - // 여기만 타이틀에서 연예 3 과 같이 숫자 들고 있어서 이렇게 변경함; - it.copy( - title = it.mergedTitle, - ) - }, + chipList = state.chipState.chipList, + isShowPostCount = true, selectedIndex = state.chipState.currentIndex, onClickChip = { onClickChip(it) // UI Update diff --git a/feature/classification/src/main/res/values/string.xml b/feature/classification/src/main/res/values/string.xml index a359ca11..150eabaa 100644 --- a/feature/classification/src/main/res/values/string.xml +++ b/feature/classification/src/main/res/values/string.xml @@ -2,7 +2,7 @@ AI분류 모두 이동 - 홈으로 이동 + 홈(으)로 이동 분류한 링크를 모두 확인했어요! 전체 %s \ No newline at end of file diff --git a/feature/home/build.gradle.kts b/feature/home/build.gradle.kts index b0c24688..a554b615 100644 --- a/feature/home/build.gradle.kts +++ b/feature/home/build.gradle.kts @@ -3,7 +3,7 @@ plugins { alias(libs.plugins.com.android.library) alias(libs.plugins.org.jetbrains.kotlin.android) alias(libs.plugins.hilt) - alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.ksp) } android { @@ -20,15 +20,15 @@ android { compose = true } composeOptions { - kotlinCompilerExtensionVersion = "1.4.3" + kotlinCompilerExtensionVersion = "1.5.2" } compileOptions { - sourceCompatibility = JavaVersion.VERSION_18 - targetCompatibility = JavaVersion.VERSION_18 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "18" + jvmTarget = "17" } } @@ -59,7 +59,7 @@ dependencies { // Hilt implementation(libs.hilt.android) - kapt(libs.hilt.compiler) + ksp(libs.hilt.compiler) implementation(libs.hilt.navigation.compose) // Orbit diff --git a/feature/home/src/main/java/com/mashup/dorabangs/feature/createfolder/HomeCreateFolderScreen.kt b/feature/home/src/main/java/com/mashup/dorabangs/feature/createfolder/HomeCreateFolderScreen.kt index 6af68f14..c7f37157 100644 --- a/feature/home/src/main/java/com/mashup/dorabangs/feature/createfolder/HomeCreateFolderScreen.kt +++ b/feature/home/src/main/java/com/mashup/dorabangs/feature/createfolder/HomeCreateFolderScreen.kt @@ -84,6 +84,7 @@ fun HomeCreateFolderScreen( title = stringResource(id = R.string.home_create_folder_title), isTitleCenter = true, onClickBackIcon = onClickBackIcon, + isShowBottomDivider = true, ) Spacer(modifier = Modifier.height(height = 24.dp)) Column( diff --git a/feature/home/src/main/java/com/mashup/dorabangs/feature/home/HomeCarouselItem.kt b/feature/home/src/main/java/com/mashup/dorabangs/feature/home/HomeCarouselItem.kt index 0ee171d9..aeb55a6f 100644 --- a/feature/home/src/main/java/com/mashup/dorabangs/feature/home/HomeCarouselItem.kt +++ b/feature/home/src/main/java/com/mashup/dorabangs/feature/home/HomeCarouselItem.kt @@ -2,12 +2,11 @@ package com.mashup.dorabangs.feature.home import androidx.annotation.DrawableRes import androidx.annotation.RawRes -import androidx.compose.ui.text.AnnotatedString data class HomeCarouselItem( @RawRes val lottieRes: Int, @DrawableRes val indicatorIcon: Int? = null, - val description: AnnotatedString, + val description: String, val onClickButton: () -> Unit = {}, val isVisible: Boolean = true, ) diff --git a/feature/home/src/main/java/com/mashup/dorabangs/feature/home/HomeScreen.kt b/feature/home/src/main/java/com/mashup/dorabangs/feature/home/HomeScreen.kt index e351e2f1..74780304 100644 --- a/feature/home/src/main/java/com/mashup/dorabangs/feature/home/HomeScreen.kt +++ b/feature/home/src/main/java/com/mashup/dorabangs/feature/home/HomeScreen.kt @@ -8,7 +8,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth @@ -41,18 +40,16 @@ import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.SpanStyle -import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.mashup.dorabangs.core.designsystem.R -import com.mashup.dorabangs.core.designsystem.component.buttons.GradientButton +import com.mashup.dorabangs.core.designsystem.component.buttons.BannerButton import com.mashup.dorabangs.core.designsystem.component.card.FeedCard import com.mashup.dorabangs.core.designsystem.component.card.FeedCardEntryPoint import com.mashup.dorabangs.core.designsystem.component.chips.DoraChips import com.mashup.dorabangs.core.designsystem.component.chips.FeedUiModel +import com.mashup.dorabangs.core.designsystem.component.divider.DoraDivider import com.mashup.dorabangs.core.designsystem.component.topbar.DoraTopBar import com.mashup.dorabangs.core.designsystem.component.util.LottieLoader import com.mashup.dorabangs.core.designsystem.component.util.thenIf @@ -111,15 +108,12 @@ fun HomeScreen( HomeCarousel( modifier = Modifier .fillMaxWidth() - .aspectRatio(1f), + .padding(vertical = 16.dp, horizontal = 20.dp) + .clip(DoraRoundTokens.Round20), homeCarouselItems = listOf( HomeCarouselItem( lottieRes = R.raw.unread, - description = buildAnnotatedString { - withStyle(SpanStyle(color = DoraColorTokens.Black)) { - append(stringResource(id = R.string.home_carousel_save_introduce)) - } - }, + description = stringResource(id = R.string.home_carousel_save_introduce), onClickButton = navigateToHomeTutorial, ), ), @@ -163,58 +157,26 @@ fun HomeScreen( HomeCarouselItem( lottieRes = R.raw.ai, indicatorIcon = R.drawable.ic_ai_8dp, - description = buildAnnotatedString { - withStyle(SpanStyle(color = DoraColorTokens.Black)) { - append(stringResource(id = R.string.home_carousel_classified_link_as_ai) + "\n") - } - withStyle(SpanStyle(color = DoraColorTokens.Primary)) { - append( - stringResource( - id = R.string.home_carousel_count, - state.aiClassificationCount, - ) + " ", - ) - } - withStyle(SpanStyle(color = DoraColorTokens.Black)) { - append(stringResource(id = R.string.home_carousel_its_here)) - } - }, + description = stringResource(R.string.home_carousel_classified_link_as_ai, state.aiClassificationCount), onClickButton = navigateToClassification, isVisible = state.aiClassificationCount > 0, ), HomeCarouselItem( lottieRes = R.raw.unread, - description = buildAnnotatedString { - withStyle(SpanStyle(color = DoraColorTokens.Black)) { - append(stringResource(id = R.string.home_carousel_not_read_yet) + "\n") - } - withStyle(SpanStyle(color = DoraColorTokens.Primary)) { - append( - stringResource( - id = R.string.home_carousel_count, - state.unReadPostCount, - ) + " ", - ) - } - withStyle(SpanStyle(color = DoraColorTokens.Black)) { - append(stringResource(id = R.string.home_carousel_its_here)) - } - }, + description = stringResource(R.string.home_carousel_not_read_yet, state.unReadPostCount), onClickButton = navigateToUnreadStorageDetail, isVisible = state.unReadPostCount > 0, ), HomeCarouselItem( lottieRes = R.raw.tutorial, - description = buildAnnotatedString { - withStyle(SpanStyle(color = DoraColorTokens.Black)) { - append(stringResource(id = R.string.home_carousel_save_introduce)) - } - }, + description = stringResource(id = R.string.home_carousel_save_introduce), onClickButton = navigateToHomeTutorial, ), ).filter { it.isVisible }, modifier = Modifier - .fillMaxWidth(), + .fillMaxWidth() + .padding(vertical = 16.dp, horizontal = 20.dp) + .clip(DoraRoundTokens.Round20), ) } } @@ -238,7 +200,7 @@ fun HomeScreen( Box( modifier = Modifier .fillMaxWidth() - .height(104.dp) + .height(101.dp) .hazeChild( state = hazeState, style = HazeStyle(blurRadius = 12.dp), @@ -297,13 +259,7 @@ private fun LazyListScope.Feeds( ) if (index != feeds.lastIndex) { - Box( - modifier = Modifier - .padding(horizontal = 20.dp) - .fillMaxWidth() - .height(0.5.dp) - .background(DoraColorTokens.G2), - ) + DoraDivider(modifier = Modifier.padding(horizontal = 20.dp)) } } } @@ -319,28 +275,27 @@ private fun HomeCarousel( pageCount = { homeCarouselItems.size }, ) - Column( + Box( modifier = modifier, - horizontalAlignment = Alignment.CenterHorizontally, ) { HorizontalPager( modifier = Modifier.background( - brush = DoraGradientToken.Gradient3, + brush = DoraGradientToken.Gradient2, ), state = pagerState, ) { page -> Column( modifier = Modifier .fillMaxWidth() - .height(340.dp), + .height(334.dp), verticalArrangement = Arrangement.SpaceBetween, horizontalAlignment = Alignment.CenterHorizontally, ) { LottieLoader( lottieRes = homeCarouselItems[page].lottieRes, modifier = Modifier - .width(250.dp) - .height(212.dp), + .width(270.dp) + .height(210.dp), ) Column( @@ -349,14 +304,14 @@ private fun HomeCarousel( horizontalAlignment = Alignment.CenterHorizontally, ) { Text( + modifier = Modifier.height(56.dp), text = homeCarouselItems[page].description, style = DoraTypoTokens.Subtitle2Bold, textAlign = TextAlign.Center, ) - - GradientButton( - containerColor = DoraGradientToken.Gradient3, - contentPadding = PaddingValues(horizontal = 20.dp, vertical = 8.dp), + BannerButton( + containerColor = DoraColorTokens.G7, + contentPadding = PaddingValues(start = 16.dp, end = 12.dp, top = 8.dp, bottom = 8.dp), gradientModifier = Modifier.defaultMinSize( minWidth = ButtonDefaults.MinWidth, minHeight = ButtonDefaults.MinHeight, @@ -365,12 +320,11 @@ private fun HomeCarousel( ) { Text( text = stringResource(id = R.string.home_carousel_checking_button), - style = DoraTypoTokens.caption1Bold, - color = DoraColorTokens.G7, + style = DoraTypoTokens.caption1Medium, + color = DoraColorTokens.White, ) Icon( - painter = painterResource(id = R.drawable.ic_chevron_right_small_balck), - tint = DoraColorTokens.G7, + painter = painterResource(id = R.drawable.ic_chevron_right_small_white), contentDescription = "", ) } @@ -378,50 +332,55 @@ private fun HomeCarousel( } } - Box( - modifier = Modifier - .padding(vertical = 12.dp) - .background( - brush = DoraGradientToken.Gradient1, - shape = DoraRoundTokens.Round99, - ), + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.End, ) { - Row( - modifier = Modifier.padding(8.dp), - horizontalArrangement = Arrangement.spacedBy(6.dp), - verticalAlignment = Alignment.CenterVertically, + Box( + modifier = Modifier + .padding(top = 20.dp, end = 20.dp) + .background( + brush = DoraGradientToken.Gradient3, + shape = DoraRoundTokens.Round99, + ), ) { - repeat(pagerState.pageCount) { index -> - if (homeCarouselItems[index].indicatorIcon == null) { - Box( - modifier = Modifier - .size(4.dp) - .clip(CircleShape) - .background(DoraColorTokens.G4) - .thenIf(index == pagerState.currentPage) { - background(brush = DoraGradientToken.Gradient5) - }, - ) - } else { - if (index == pagerState.currentPage) { - GradientIcon( - painter = painterResource( - id = homeCarouselItems[index].indicatorIcon - ?: R.drawable.ic_empty, - ), - contentDescription = "", - brushGradient = DoraGradientToken.Gradient5, + Row( + modifier = Modifier.padding(8.dp), + horizontalArrangement = Arrangement.spacedBy(6.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + repeat(pagerState.pageCount) { index -> + if (homeCarouselItems[index].indicatorIcon == null) { + Box( + modifier = Modifier + .size(4.dp) + .clip(CircleShape) + .background(DoraColorTokens.G4) + .thenIf(index == pagerState.currentPage) { + background(color = DoraColorTokens.G7) + }, ) } else { - Icon( - painter = painterResource( - id = homeCarouselItems[index].indicatorIcon - ?: R.drawable.ic_empty, - ), - contentDescription = "", - modifier = Modifier.size(8.dp), - tint = DoraColorTokens.G4, - ) + if (index == pagerState.currentPage) { + Icon( + painter = painterResource( + id = homeCarouselItems[index].indicatorIcon + ?: R.drawable.ic_empty, + ), + contentDescription = "", + tint = DoraColorTokens.G7, + ) + } else { + Icon( + painter = painterResource( + id = homeCarouselItems[index].indicatorIcon + ?: R.drawable.ic_empty, + ), + contentDescription = "", + modifier = Modifier.size(8.dp), + tint = DoraColorTokens.G4, + ) + } } } } @@ -459,17 +418,7 @@ fun HomeCarouselPreview() { HomeCarouselItem( lottieRes = R.raw.ai, indicatorIcon = R.drawable.ic_ai_8dp, - description = buildAnnotatedString { - withStyle(SpanStyle(color = DoraColorTokens.Black)) { - append("AI로 분류 링크가\n") - } - withStyle(SpanStyle(color = DoraColorTokens.Primary)) { - append("375개 ") - } - withStyle(SpanStyle(color = DoraColorTokens.Black)) { - append("있어요") - } - }, + description = stringResource(R.string.home_carousel_classified_link_as_ai, 300), onClickButton = {}, isVisible = true, ), diff --git a/feature/home/src/main/java/com/mashup/dorabangs/feature/tutorial/HomeTutorialScreen.kt b/feature/home/src/main/java/com/mashup/dorabangs/feature/tutorial/HomeTutorialScreen.kt index 7e109497..2dc63c19 100644 --- a/feature/home/src/main/java/com/mashup/dorabangs/feature/tutorial/HomeTutorialScreen.kt +++ b/feature/home/src/main/java/com/mashup/dorabangs/feature/tutorial/HomeTutorialScreen.kt @@ -71,6 +71,7 @@ fun HomeTutorialScreen( title = "", isTitleCenter = true, onClickBackIcon = onClickBackIcon, + isShowBottomDivider = true, ) Spacer(modifier = Modifier.height(12.dp)) Text( diff --git a/feature/onboarding/build.gradle.kts b/feature/onboarding/build.gradle.kts index 3ddd40d6..699f2df3 100644 --- a/feature/onboarding/build.gradle.kts +++ b/feature/onboarding/build.gradle.kts @@ -3,7 +3,7 @@ plugins { alias(libs.plugins.com.android.library) alias(libs.plugins.org.jetbrains.kotlin.android) alias(libs.plugins.hilt) - alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.ksp) } android { @@ -19,15 +19,15 @@ android { } composeOptions { - kotlinCompilerExtensionVersion = "1.4.3" + kotlinCompilerExtensionVersion = "1.5.2" } compileOptions { - sourceCompatibility = JavaVersion.VERSION_18 - targetCompatibility = JavaVersion.VERSION_18 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "18" + jvmTarget = "17" } } @@ -56,7 +56,7 @@ dependencies { // Hilt implementation(libs.hilt.android) - kapt(libs.hilt.compiler) + ksp(libs.hilt.compiler) implementation(libs.hilt.navigation.compose) // Orbit diff --git a/feature/save/build.gradle.kts b/feature/save/build.gradle.kts index 6acc1f0d..31b63a73 100644 --- a/feature/save/build.gradle.kts +++ b/feature/save/build.gradle.kts @@ -3,7 +3,7 @@ plugins { alias(libs.plugins.com.android.library) alias(libs.plugins.org.jetbrains.kotlin.android) alias(libs.plugins.hilt) - alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.ksp) } android { @@ -20,15 +20,15 @@ android { compose = true } composeOptions { - kotlinCompilerExtensionVersion = "1.4.3" + kotlinCompilerExtensionVersion = "1.5.2" } compileOptions { - sourceCompatibility = JavaVersion.VERSION_18 - targetCompatibility = JavaVersion.VERSION_18 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "18" + jvmTarget = "17" } } @@ -59,7 +59,7 @@ dependencies { // Hilt implementation(libs.hilt.android) - kapt(libs.hilt.compiler) + ksp(libs.hilt.compiler) implementation(libs.hilt.navigation.compose) // Orbit diff --git a/feature/save/src/main/java/com/dorabangs/feature/save/screen/DoraLinkSaveScreen.kt b/feature/save/src/main/java/com/dorabangs/feature/save/screen/DoraLinkSaveScreen.kt index a07423b8..41c01ae8 100644 --- a/feature/save/src/main/java/com/dorabangs/feature/save/screen/DoraLinkSaveScreen.kt +++ b/feature/save/src/main/java/com/dorabangs/feature/save/screen/DoraLinkSaveScreen.kt @@ -38,6 +38,7 @@ fun DoraLinkSaveScreen( title = stringResource(id = R.string.link_save_title_text), isTitleCenter = true, onClickBackIcon = onClickBackIcon, + isShowBottomDivider = true, ) Spacer(modifier = Modifier.height(height = 24.dp)) Column( diff --git a/feature/save/src/main/java/com/dorabangs/feature/save/screen/DoraLinkSaveSelectFolderScreen.kt b/feature/save/src/main/java/com/dorabangs/feature/save/screen/DoraLinkSaveSelectFolderScreen.kt index 1b8b25f7..a474ba4c 100644 --- a/feature/save/src/main/java/com/dorabangs/feature/save/screen/DoraLinkSaveSelectFolderScreen.kt +++ b/feature/save/src/main/java/com/dorabangs/feature/save/screen/DoraLinkSaveSelectFolderScreen.kt @@ -51,6 +51,7 @@ fun DoraLinkSaveSelectFolderScreen( title = stringResource(id = R.string.link_save_title_text), isTitleCenter = true, onClickBackIcon = onClickBackIcon, + isShowBottomDivider = true, ) DoraLinkSaveTitleAndLinkScreen(state = state) DoraSelectableFolderListItems( diff --git a/feature/share/build.gradle.kts b/feature/share/build.gradle.kts index 63042961..5c89981e 100644 --- a/feature/share/build.gradle.kts +++ b/feature/share/build.gradle.kts @@ -3,7 +3,7 @@ plugins { alias(libs.plugins.com.android.library) alias(libs.plugins.org.jetbrains.kotlin.android) alias(libs.plugins.hilt) - alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.ksp) } android { @@ -29,14 +29,14 @@ android { compose = true } composeOptions { - kotlinCompilerExtensionVersion = "1.4.3" + kotlinCompilerExtensionVersion = "1.5.2" } compileOptions { - sourceCompatibility = JavaVersion.VERSION_18 - targetCompatibility = JavaVersion.VERSION_18 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "18" + jvmTarget = "17" } } @@ -72,7 +72,7 @@ dependencies { // Hilt implementation(libs.hilt.android) - kapt(libs.hilt.compiler) + ksp(libs.hilt.compiler) implementation(libs.hilt.navigation.compose) // Orbit diff --git a/feature/storage/build.gradle.kts b/feature/storage/build.gradle.kts index 02f98c1b..4dae1589 100644 --- a/feature/storage/build.gradle.kts +++ b/feature/storage/build.gradle.kts @@ -2,7 +2,7 @@ plugins { alias(libs.plugins.com.android.library) alias(libs.plugins.org.jetbrains.kotlin.android) alias(libs.plugins.hilt) - alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.ksp) alias(libs.plugins.kotlinx.serialization) } @@ -19,15 +19,15 @@ android { compose = true } composeOptions { - kotlinCompilerExtensionVersion = "1.4.3" + kotlinCompilerExtensionVersion = "1.5.2" } compileOptions { - sourceCompatibility = JavaVersion.VERSION_18 - targetCompatibility = JavaVersion.VERSION_18 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "18" + jvmTarget = "17" } } @@ -57,7 +57,7 @@ dependencies { // Hilt implementation(libs.hilt.android) - kapt(libs.hilt.compiler) + ksp(libs.hilt.compiler) implementation(libs.hilt.navigation.compose) // Orbit diff --git a/feature/storage/src/main/java/com/mashup/dorabangs/feature/folders/StorageFolderManageScreen.kt b/feature/storage/src/main/java/com/mashup/dorabangs/feature/folders/StorageFolderManageScreen.kt index 17ed8fa4..82bf91f2 100644 --- a/feature/storage/src/main/java/com/mashup/dorabangs/feature/folders/StorageFolderManageScreen.kt +++ b/feature/storage/src/main/java/com/mashup/dorabangs/feature/folders/StorageFolderManageScreen.kt @@ -91,6 +91,7 @@ fun FolderManageScreen( title = stringResource(id = folderManageState.type.title), isTitleCenter = true, onClickBackIcon = onClickBackIcon, + isShowBottomDivider = true, ) Spacer(modifier = Modifier.height(height = 24.dp)) Column( diff --git a/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailHeader.kt b/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailHeader.kt index 0b748893..1cd146ee 100644 --- a/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailHeader.kt +++ b/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailHeader.kt @@ -214,6 +214,7 @@ fun StorageDetailTopBarByFolderType( actionIcon = coreR.drawable.ic_more_black, onClickBackIcon = onClickBackIcon, onClickActonIcon = onClickActionIcon, + isShowBottomDivider = false, ) } else -> { @@ -222,6 +223,7 @@ fun StorageDetailTopBarByFolderType( title = title, isTitleCenter = true, onClickBackIcon = onClickBackIcon, + isShowBottomDivider = false, ) } } diff --git a/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailList.kt b/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailList.kt index a3adc860..3790b2eb 100644 --- a/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailList.kt +++ b/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailList.kt @@ -34,6 +34,7 @@ import androidx.paging.compose.itemKey import com.mashup.dorabangs.core.designsystem.component.card.FeedCard import com.mashup.dorabangs.core.designsystem.component.card.FeedCardEntryPoint import com.mashup.dorabangs.core.designsystem.component.chips.FeedUiModel +import com.mashup.dorabangs.core.designsystem.component.divider.DoraDivider import com.mashup.dorabangs.core.designsystem.component.util.LottieLoader import com.mashup.dorabangs.core.designsystem.theme.DoraColorTokens import com.mashup.dorabangs.core.designsystem.theme.DoraTypoTokens @@ -126,13 +127,7 @@ fun StorageDetailList( feedCardEntryPoint = FeedCardEntryPoint.StorageDetail, ) if (idx != state.folderInfo.postCount - 1) { - Box( - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 20.dp) - .height(0.5.dp) - .background(DoraColorTokens.G2), - ) + DoraDivider(modifier = Modifier.padding(horizontal = 20.dp)) } } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 111f60ef..397b81f8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,10 +4,11 @@ compile-sdk = "34" min-sdk = "28" target-sdk = "34" -versionName = "1.0.2" +versionName = "1.0.4" agp = "8.1.3" -org-jetbrains-kotlin-android = "1.8.10" +org-jetbrains-kotlin-android = "1.9.0" +org-jetbrains-kotlin-jvm = "1.9.0" coil = "2.6.0" core-ktx = "1.13.1" junit = "4.13.2" @@ -19,11 +20,10 @@ compose-bom = "2024.06.00" appcompat = "1.6.1" material3 = "1.2.1" material = "1.12.0" -org-jetbrains-kotlin-jvm = "1.8.10" splash = "1.0.1" spotless = "6.19.0" mockk = "1.13.10" -kotlin = "1.8.0" +kotlinx = "1.8.0" okhttp = "4.12.0" retrofit = "2.9.0" hilt = "2.51.1" @@ -48,12 +48,13 @@ exoplayer = "1.3.1" compose-webview = "0.31.3-beta" room = "2.6.1" gson = "2.10.1" +ksp = "1.9.0-1.0.12" [libraries] -kotlin-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "kotlin" } -kotlin-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlin" } -kotlin-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlin" } +kotlin-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "kotlinx" } +kotlin-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinx" } +kotlin-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlinx" } lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycle-runtime-ktx" } lifecycle-compose-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycle-runtime-ktx" } @@ -145,9 +146,9 @@ com-android-library = { id = "com.android.library", version.ref = "agp" } org-jetbrains-kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "org-jetbrains-kotlin-jvm" } spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } -kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } -kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin-serialization" } google-gms-service = { id = "com.google.gms.google-services", version.ref = "gms" } +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } [bundles] okhttp = ["okhttp", "okhttp-logging-interceptor"]