diff --git a/composeapp/src/main/java/com/example/composeapp/MainActivity.kt b/composeapp/src/main/java/com/example/composeapp/MainActivity.kt index 7bc7011..0fe466f 100644 --- a/composeapp/src/main/java/com/example/composeapp/MainActivity.kt +++ b/composeapp/src/main/java/com/example/composeapp/MainActivity.kt @@ -7,12 +7,14 @@ import androidx.compose.runtime.Composable import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController -import com.example.composeapp.ui.datepicker.DatePickerScreen import com.example.composeapp.ui.AnimationScreen import com.example.composeapp.ui.ComponentScreen +import com.example.composeapp.ui.DigitalAgencyScreen import com.example.composeapp.ui.PagerScreen import com.example.composeapp.ui.PlaygroundScreen +import com.example.composeapp.ui.datepicker.DatePickerScreen import com.messi.designsystem.CustomTheme +import com.messi.designsystem.digitalagency.DigitalAgencyTheme class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -34,5 +36,8 @@ fun CreateNav(startDestination: String = NavRouter.PlaygroundScreen) { composable(NavRouter.AnimationScreen) { AnimationScreen(navController) } composable(NavRouter.PagerScreen) { PagerScreen(navController) } composable(NavRouter.DatePickerScreen) { DatePickerScreen(navController) } + composable(NavRouter.DigitalAgencyScreen) { + DigitalAgencyTheme { DigitalAgencyScreen(navController) } + } } } diff --git a/composeapp/src/main/java/com/example/composeapp/NavRouter.kt b/composeapp/src/main/java/com/example/composeapp/NavRouter.kt index 2cd50ed..2627d8f 100644 --- a/composeapp/src/main/java/com/example/composeapp/NavRouter.kt +++ b/composeapp/src/main/java/com/example/composeapp/NavRouter.kt @@ -6,4 +6,5 @@ object NavRouter { const val PagerScreen = "PagerScreen" const val AnimationScreen = "AnimationScreen" const val DatePickerScreen = "DatePickerScreen" + const val DigitalAgencyScreen = "DigitalAgencyScreen" } diff --git a/composeapp/src/main/java/com/example/composeapp/ui/DigitalAgencyScreen.kt b/composeapp/src/main/java/com/example/composeapp/ui/DigitalAgencyScreen.kt new file mode 100644 index 0000000..a55061f --- /dev/null +++ b/composeapp/src/main/java/com/example/composeapp/ui/DigitalAgencyScreen.kt @@ -0,0 +1,142 @@ +package com.example.composeapp.ui + +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.Box +import androidx.compose.foundation.layout.BoxScope +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio +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.lazy.LazyColumn +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.unit.dp +import androidx.navigation.NavController +import com.example.composeapp.R +import com.messi.designsystem.digitalagency.DigitalAgencyTheme +import com.messi.designsystem.digitalagency.component.ButtonSize +import com.messi.designsystem.digitalagency.component.DigitalAgencyTopAppBar +import com.messi.designsystem.digitalagency.component.PrimaryButton +import com.messi.designsystem.digitalagency.component.ScrollTopButton +import com.messi.designsystem.digitalagency.component.SecondaryButton +import com.messi.designsystem.digitalagency.component.TertiaryButton +import kotlinx.coroutines.launch + +@Composable +fun DigitalAgencyScreen(navController: NavController) { + val listState = rememberLazyListState() + val coroutineScope = rememberCoroutineScope() + Scaffold( + topBar = { + DigitalAgencyTopAppBar( + textResId = R.string.compose_digital_agency, + navigationIcon = R.drawable.ic_arrow_back, + onClickNavigationIcon = navController::popBackStack + ) + }, + floatingActionButton = { + ScrollTopButton { + coroutineScope.launch { + listState.animateScrollToItem(index = 0) + } + } + } + ) { + Surface( + modifier = Modifier + .fillMaxSize() + .padding(it), + color = DigitalAgencyTheme.colors.backgroundPrimary + ) { + LazyColumn( + state = listState, + contentPadding = PaddingValues(vertical = 8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + item { + ContentsCard( + modifier = Modifier.padding(horizontal = 16.dp), + description = "ボタン" + ) { + PrimaryButton(text = "ボタン", size = ButtonSize.Large) {} + } + } + item { + ContentsCard( + modifier = Modifier.padding(horizontal = 16.dp), + description = "ボタン" + ) { + PrimaryButton(text = "ボタン", size = ButtonSize.Large) {} + } + } + item { + PrimaryButton(text = "ラベル", size = ButtonSize.Large) {} + Spacer(modifier = Modifier.height(48.dp)) + PrimaryButton(text = "ラベル", size = ButtonSize.Medium) {} + Spacer(modifier = Modifier.height(148.dp)) + PrimaryButton(text = "ラベル", size = ButtonSize.Small) {} + Spacer(modifier = Modifier.height(148.dp)) + SecondaryButton(text = "ラベル", size = ButtonSize.Large) {} + Spacer(modifier = Modifier.height(48.dp)) + SecondaryButton(text = "ラベル", size = ButtonSize.Medium) {} + Spacer(modifier = Modifier.height(48.dp)) + SecondaryButton(text = "ラベル", size = ButtonSize.Small) {} + Spacer(modifier = Modifier.height(148.dp)) + TertiaryButton(text = "ラベル", size = ButtonSize.Large) {} + Spacer(modifier = Modifier.height(48.dp)) + TertiaryButton(text = "ラベル", size = ButtonSize.Medium) {} + Spacer(modifier = Modifier.height(48.dp)) + TertiaryButton(text = "ラベル", size = ButtonSize.Small) {} + } + } + } + } +} + +@Composable +private fun ContentsCard( + modifier: Modifier = Modifier, + description: String, + content: @Composable (BoxScope) -> Unit +) { + Column( + modifier = modifier + .clip(RoundedCornerShape(8.dp)) + .clickable { } + .border( + width = 1.dp, + color = DigitalAgencyTheme.colors.borderDivider, + shape = RoundedCornerShape(8.dp) + ) + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .aspectRatio(16f / 9f) + .background( + DigitalAgencyTheme.colors.backgroundTertiary, + RoundedCornerShape(topStart = 8.dp, topEnd = 8.dp) + ), + contentAlignment = Alignment.Center, + content = content + ) + Column(modifier = Modifier.padding(horizontal = 16.dp, vertical = 12.dp)) { + Text(text = description, color = DigitalAgencyTheme.colors.textBody) + } + } +} diff --git a/composeapp/src/main/java/com/example/composeapp/ui/PlaygroundScreen.kt b/composeapp/src/main/java/com/example/composeapp/ui/PlaygroundScreen.kt index 02b85a2..fd0bd83 100644 --- a/composeapp/src/main/java/com/example/composeapp/ui/PlaygroundScreen.kt +++ b/composeapp/src/main/java/com/example/composeapp/ui/PlaygroundScreen.kt @@ -29,6 +29,9 @@ fun PlaygroundScreen(navController: NavController) { MessiElevatedButton(text = stringResource(id = R.string.compose_date_picker)) { navController.navigate(NavRouter.DatePickerScreen) } + MessiElevatedButton(text = stringResource(id = R.string.compose_digital_agency)) { + navController.navigate(NavRouter.DigitalAgencyScreen) + } } } } diff --git a/composeapp/src/main/res/values-night/themes.xml b/composeapp/src/main/res/values-night/themes.xml index d812c21..8f5f1e4 100644 --- a/composeapp/src/main/res/values-night/themes.xml +++ b/composeapp/src/main/res/values-night/themes.xml @@ -1,16 +1,4 @@ - + +