From 6e887c908310b4ccaa24cb48e6c6a33e8709f674 Mon Sep 17 00:00:00 2001 From: Kevin Schildhorn Date: Thu, 1 May 2025 15:48:08 -0400 Subject: [PATCH 1/4] Updating Colors --- .../touchlab/droidcon/android/MainActivity.kt | 3 +- .../ui/BottomNavigationView.kt | 16 +++++++--- .../ui/session/SessionBlockView.kt | 11 ++++++- .../ui/session/SessionDetailView.kt | 16 ++++++++-- .../ui/session/SessionListView.kt | 12 +++++++- .../ui/settings/AboutView.kt | 3 ++ .../ui/settings/SettingsView.kt | 16 ++++++++++ .../ui/sponsors/SponsorsView.kt | 17 +++++++++++ .../co.touchlab.droidcon/ui/theme/Colors.kt | 12 +++++++- .../co.touchlab.droidcon/ui/theme/Theme.kt | 29 +++++++++++++++++-- 10 files changed, 122 insertions(+), 13 deletions(-) diff --git a/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt b/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt index fabec632..fad0d15f 100644 --- a/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt +++ b/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt @@ -14,6 +14,7 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding +import androidx.compose.material.MaterialTheme import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -88,7 +89,7 @@ class MainActivity : } Box( modifier = Modifier - .background(Colors.primary) + .background(MaterialTheme.colors.primary) .fillMaxSize(), contentAlignment = Alignment.Center, ) { diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/BottomNavigationView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/BottomNavigationView.kt index 018763d6..d9b85ae9 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/BottomNavigationView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/BottomNavigationView.kt @@ -18,6 +18,9 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp import co.touchlab.droidcon.domain.entity.Conference import co.touchlab.droidcon.ui.session.SessionListView import co.touchlab.droidcon.ui.settings.SettingsView @@ -33,7 +36,10 @@ internal fun BottomNavigationView(viewModel: ApplicationViewModel, currentConfer Scaffold( modifier = modifier, bottomBar = { - NavigationBar { + NavigationBar( + containerColor = MaterialTheme.colorScheme.surface, + modifier = Modifier.shadow(elevation = 5.dp), + ) { viewModel.listTabs(currentConference).forEach { tab -> val (title, icon) = when (tab) { ApplicationViewModel.Tab.Schedule -> "Schedule" to Icons.Filled.CalendarMonth @@ -51,9 +57,11 @@ internal fun BottomNavigationView(viewModel: ApplicationViewModel, currentConfer viewModel.selectedTab = tab }, colors = NavigationBarItemDefaults.colors( - indicatorColor = MaterialTheme.colorScheme.primary, - selectedIconColor = MaterialTheme.colorScheme.onPrimary, - selectedTextColor = MaterialTheme.colorScheme.primary, + indicatorColor = MaterialTheme.colorScheme.secondary, + selectedIconColor = Color.White, + selectedTextColor = MaterialTheme.colorScheme.onBackground, + unselectedIconColor = MaterialTheme.colorScheme.onBackground, + unselectedTextColor = MaterialTheme.colorScheme.onBackground, ), ) } diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionBlockView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionBlockView.kt index df0dcd47..85e23e0a 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionBlockView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionBlockView.kt @@ -11,6 +11,8 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.CardElevation import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -23,6 +25,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import co.touchlab.droidcon.ui.theme.Colors import co.touchlab.droidcon.ui.theme.Dimensions import co.touchlab.droidcon.ui.util.observeAsState import co.touchlab.droidcon.viewmodel.session.SessionBlockViewModel @@ -58,6 +61,11 @@ internal fun SessionBlockView(sessionsBlock: SessionBlockViewModel) { session.selected() }, enabled = isClickable, + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.surface, + contentColor = MaterialTheme.colorScheme.onSurface, + ), + elevation = CardDefaults.elevatedCardElevation(3.dp) ) { Column { Text( @@ -75,11 +83,12 @@ internal fun SessionBlockView(sessionsBlock: SessionBlockViewModel) { bottom = Dimensions.Padding.half, ), style = MaterialTheme.typography.bodySmall, - color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.8f), + color = MaterialTheme.colorScheme.onSurfaceVariant, ) } Text( text = session.speakers, + color = MaterialTheme.colorScheme.secondary, modifier = Modifier.padding( start = Dimensions.Padding.half, end = Dimensions.Padding.half, diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt index 5ddcc439..6981abf3 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt @@ -45,6 +45,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import co.touchlab.droidcon.dto.WebLink import co.touchlab.droidcon.ui.FeedbackDialog +import co.touchlab.droidcon.ui.theme.Colors import co.touchlab.droidcon.ui.theme.Dimensions import co.touchlab.droidcon.ui.util.DcAsyncImage import co.touchlab.droidcon.ui.util.WebLinkText @@ -77,11 +78,16 @@ internal fun SessionDetailView(viewModel: SessionDetailViewModel) { IconButton(onClick = { NavigationController.root.handleBackPress() }) { Icon( imageVector = Icons.AutoMirrored.Default.ArrowBack, + tint = MaterialTheme.colorScheme.onSecondary, contentDescription = "Back", ) } }, scrollBehavior = scrollBehavior, + colors = TopAppBarDefaults.topAppBarColors( + containerColor = MaterialTheme.colorScheme.secondary, + titleContentColor = MaterialTheme.colorScheme.onSecondary, + ) ) }, ) { paddingValues -> @@ -186,11 +192,12 @@ internal fun SessionDetailView(viewModel: SessionDetailViewModel) { @Composable private fun HeaderView(title: String, locationInfo: String) { Column( - modifier = Modifier.fillMaxWidth(), + modifier = Modifier.fillMaxWidth().background(MaterialTheme.colorScheme.secondary), verticalArrangement = Arrangement.Center, ) { Text( text = title, + color = MaterialTheme.colorScheme.onSecondary, style = MaterialTheme.typography.headlineSmall, maxLines = 3, overflow = TextOverflow.Ellipsis, @@ -202,6 +209,7 @@ private fun HeaderView(title: String, locationInfo: String) { ) Text( text = locationInfo, + color = MaterialTheme.colorScheme.onSecondary, modifier = Modifier.padding( start = Dimensions.Padding.double, end = Dimensions.Padding.double, @@ -223,7 +231,7 @@ private fun InfoView(status: String) { modifier = Modifier .padding(Dimensions.Padding.half) .width(64.dp), - tint = MaterialTheme.colorScheme.onSurface, + tint = MaterialTheme.colorScheme.tertiary, ) Text( text = status, @@ -234,7 +242,7 @@ private fun InfoView(status: String) { top = Dimensions.Padding.half, bottom = Dimensions.Padding.half, ), - color = MaterialTheme.colorScheme.onSurface, + color = MaterialTheme.colorScheme.tertiary, ) } } @@ -251,6 +259,7 @@ private fun DescriptionView(description: String, links: List) { ) WebLinkText( text = description, + normalTextColor = MaterialTheme.colorScheme.onSurfaceVariant, links = links, fontWeight = FontWeight.Normal, modifier = Modifier.padding( @@ -301,6 +310,7 @@ private fun SpeakerView(speaker: SpeakerListItemViewModel) { } Text( text = speaker.bio ?: "", + color = MaterialTheme.colorScheme.onSurfaceVariant, fontWeight = FontWeight.Normal, modifier = Modifier.padding( start = 80.dp, diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionListView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionListView.kt index dfa6d727..e19f5fac 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionListView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionListView.kt @@ -43,6 +43,8 @@ import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.platform.LocalDensity @@ -75,6 +77,11 @@ internal fun SessionListView(viewModel: BaseSessionListViewModel, title: String, topBar = { CenterAlignedTopAppBar( title = { Text(title) }, + colors = TopAppBarDefaults.topAppBarColors( + containerColor = MaterialTheme.colorScheme.surface, + scrolledContainerColor = MaterialTheme.colorScheme.surface, + titleContentColor = MaterialTheme.colorScheme.onSurface, + ), scrollBehavior = scrollBehavior, ) }, @@ -115,6 +122,9 @@ internal fun SessionListView(viewModel: BaseSessionListViewModel, title: String, TabRowDefaults.SecondaryIndicator() } }, + contentColor = MaterialTheme.colorScheme.primary, + containerColor = MaterialTheme.colorScheme.surface, + modifier = Modifier.shadow(elevation = 5.dp), ) { days?.forEachIndexed { index, daySchedule -> Tab( @@ -126,7 +136,7 @@ internal fun SessionListView(viewModel: BaseSessionListViewModel, title: String, pagerState.animateScrollToPage(index) } }, - unselectedContentColor = MaterialTheme.colorScheme.onSurfaceVariant, + unselectedContentColor = MaterialTheme.colorScheme.onBackground, ) { Text( text = daySchedule.day, diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/AboutView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/AboutView.kt index 42c403df..cb978c0f 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/AboutView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/AboutView.kt @@ -7,12 +7,14 @@ import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Info import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight +import co.touchlab.droidcon.ui.theme.Colors import co.touchlab.droidcon.ui.theme.Dimensions import co.touchlab.droidcon.ui.util.LocalImage import co.touchlab.droidcon.ui.util.WebLinkText @@ -49,6 +51,7 @@ private fun AboutItemView(viewModel: AboutItemViewModel) { WebLinkText( text = viewModel.detail, + normalTextColor = MaterialTheme.colorScheme.onSurfaceVariant, links = viewModel.webLinks, modifier = Modifier.padding(end = Dimensions.Padding.default), ) diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/SettingsView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/SettingsView.kt index 8c7b09da..72e56a75 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/SettingsView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/SettingsView.kt @@ -14,8 +14,10 @@ import androidx.compose.material.icons.filled.Notifications import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Switch +import androidx.compose.material3.SwitchDefaults import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults @@ -24,6 +26,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.unit.dp @@ -42,6 +45,12 @@ internal fun SettingsView(viewModel: SettingsViewModel) { TopAppBar( title = { Text("Settings") }, scrollBehavior = scrollBehavior, + colors = TopAppBarDefaults.topAppBarColors( + containerColor = MaterialTheme.colorScheme.surface, + scrolledContainerColor = MaterialTheme.colorScheme.surface, + titleContentColor = MaterialTheme.colorScheme.onSurface, + ), + modifier = Modifier.shadow(5.dp), // No actions ) }, @@ -100,6 +109,13 @@ internal fun IconTextSwitchRow(text: String, image: ImageVector, checked: Mutabl modifier = Modifier.padding(vertical = Dimensions.Padding.half, horizontal = 24.dp), checked = isChecked, onCheckedChange = { checked.value = it }, + colors = SwitchDefaults.colors( + uncheckedThumbColor = MaterialTheme.colorScheme.primary, + uncheckedTrackColor = MaterialTheme.colorScheme.background, + uncheckedBorderColor = MaterialTheme.colorScheme.primary, + checkedThumbColor = MaterialTheme.colorScheme.background, + checkedTrackColor = MaterialTheme.colorScheme.tertiary + ), ) } } diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/sponsors/SponsorsView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/sponsors/SponsorsView.kt index e1755a5d..168d53ce 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/sponsors/SponsorsView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/sponsors/SponsorsView.kt @@ -1,6 +1,8 @@ package co.touchlab.droidcon.ui.sponsors +import androidx.compose.foundation.BorderStroke 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 @@ -20,6 +22,7 @@ import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.DateRange import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -33,6 +36,7 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalUriHandler @@ -67,6 +71,12 @@ internal fun SponsorsView(viewModel: SponsorListViewModel) { TopAppBar( title = { Text("Sponsors") }, scrollBehavior = scrollBehavior, + colors = TopAppBarDefaults.topAppBarColors( + containerColor = MaterialTheme.colorScheme.surface, + titleContentColor = MaterialTheme.colorScheme.onSurface, + scrolledContainerColor = MaterialTheme.colorScheme.surface, + ), + modifier = Modifier.shadow(5.dp) ) }, ) { paddingValues -> @@ -101,6 +111,12 @@ private fun SponsorGroupView(sponsorGroup: SponsorGroupViewModel) { vertical = Dimensions.Padding.quarter, horizontal = Dimensions.Padding.half, ), + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.surface, + ), + elevation = CardDefaults.cardElevation( + defaultElevation = 3.dp + ) ) { Column(modifier = Modifier.fillMaxWidth()) { Text( @@ -129,6 +145,7 @@ private fun SponsorGroupView(sponsorGroup: SponsorGroupViewModel) { .padding(Dimensions.Padding.quarter) .clip(CircleShape) .background(Color.White) + .border(4.dp, MaterialTheme.colorScheme.primary, CircleShape) .clickable { sponsor.selected() }, diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt index 27b5c3d6..a1fca0dd 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt @@ -7,5 +7,15 @@ object Colors { val droidconBlue = Color(0xFF010DEB) val droidconRed = Color(0xFFF66E4D) - val primary = droidconGreen + + val darkDroidconGreen = Color(0xFFa2f7e5) + val darkDroidconBlue = Color(0xFFabaff9) + val darkDroidconRed = Color(0xFFf7ad9b) + + val textColor = Color(0xFF20201E) + val secondaryTextColor = Color(0xFF606060) + + + val darkTextColor = Color(0xFFdfdfe1) + val darkSecondaryTextColor = Color(0xFF9f9f9f) } diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Theme.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Theme.kt index acb660ba..5bf4a21f 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Theme.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Theme.kt @@ -5,13 +5,38 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.darkColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color private val LightColorScheme = lightColorScheme( - primary = Colors.primary, + background = Color.White, + onBackground = Colors.textColor, + surface = Color.White, + onSurface = Colors.textColor, + onSurfaceVariant = Colors.secondaryTextColor, + primary = Colors.droidconGreen, + onPrimary = Color.White, + secondary = Colors.droidconBlue, + onSecondary = Color.White, + tertiary = Colors.droidconRed, + onTertiary = Color.White, + surfaceVariant = Color.White, + surfaceContainer = Colors.droidconBlue, ) private val DarkColorScheme = darkColorScheme( - primary = Colors.primary, + background = Color.Black, + onBackground = Colors.darkTextColor, + surface = Color.DarkGray, + onSurface = Colors.darkTextColor, + onSurfaceVariant = Colors.darkSecondaryTextColor, + primary = Colors.droidconGreen, + onPrimary = Color.White, + secondary = Colors.droidconGreen, + onSecondary = Color.White, + tertiary = Colors.droidconRed, + onTertiary = Color.White, + surfaceVariant = Color.White, + surfaceContainer = Colors.droidconGreen, ) @Composable From 27e0c81b4cba37cc78ee7b92780008eb9447e99e Mon Sep 17 00:00:00 2001 From: Kevin Schildhorn Date: Fri, 2 May 2025 14:24:30 -0400 Subject: [PATCH 2/4] Updating colors --- .../touchlab/droidcon/android/MainActivity.kt | 3 +- .../ui/BottomNavigationView.kt | 2 +- .../ui/session/SessionBlockView.kt | 1 + .../ui/session/SessionDetailView.kt | 36 +++++++++---------- .../ui/session/SessionListView.kt | 4 +-- .../ui/session/SpeakerDetailView.kt | 32 +++++++++++------ .../ui/settings/ConferenceSelector.kt | 2 ++ .../co.touchlab.droidcon/ui/theme/Colors.kt | 2 +- .../co.touchlab.droidcon/ui/theme/Theme.kt | 1 + 9 files changed, 48 insertions(+), 35 deletions(-) diff --git a/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt b/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt index 72afb240..bf995605 100644 --- a/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt +++ b/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt @@ -7,6 +7,7 @@ import android.os.Build import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.animation.Crossfade import androidx.compose.foundation.Image @@ -69,7 +70,7 @@ class MainActivity : // Do the minimal setup needed for launching the app WindowCompat.setDecorFitsSystemWindows(window, false) - + enableEdgeToEdge() // Set up the UI immediately setContent { MainView(waitForLoadedContextModel = waitForLoadedContextModel) diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/BottomNavigationView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/BottomNavigationView.kt index d9b85ae9..54503304 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/BottomNavigationView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/BottomNavigationView.kt @@ -38,7 +38,7 @@ internal fun BottomNavigationView(viewModel: ApplicationViewModel, currentConfer bottomBar = { NavigationBar( containerColor = MaterialTheme.colorScheme.surface, - modifier = Modifier.shadow(elevation = 5.dp), + modifier = Modifier.shadow(elevation = 10.dp), ) { viewModel.listTabs(currentConference).forEach { tab -> val (title, icon) = when (tab) { diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionBlockView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionBlockView.kt index 85e23e0a..986d6ee5 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionBlockView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionBlockView.kt @@ -64,6 +64,7 @@ internal fun SessionBlockView(sessionsBlock: SessionBlockViewModel) { colors = CardDefaults.cardColors( containerColor = MaterialTheme.colorScheme.surface, contentColor = MaterialTheme.colorScheme.onSurface, + disabledContainerColor = MaterialTheme.colorScheme.primaryContainer, ), elevation = CardDefaults.elevatedCardElevation(3.dp) ) { diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt index 6981abf3..ce0ba7dd 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt @@ -87,7 +87,7 @@ internal fun SessionDetailView(viewModel: SessionDetailViewModel) { colors = TopAppBarDefaults.topAppBarColors( containerColor = MaterialTheme.colorScheme.secondary, titleContentColor = MaterialTheme.colorScheme.onSecondary, - ) + ), ) }, ) { paddingValues -> @@ -164,19 +164,21 @@ internal fun SessionDetailView(viewModel: SessionDetailViewModel) { DescriptionView(it, descriptionLinks) } - val speakers by viewModel.observeSpeakers.observeAsState() - if (speakers.isNotEmpty()) { - Text( - text = "Speakers", - modifier = Modifier.fillMaxWidth().padding(Dimensions.Padding.default), - style = MaterialTheme.typography.headlineSmall, - textAlign = TextAlign.Center, - ) - Divider() + Column(Modifier.padding(top = 10.dp).background(MaterialTheme.colorScheme.primary)) { + val speakers by viewModel.observeSpeakers.observeAsState() + if (speakers.isNotEmpty()) { + Text( + text = "Speakers", + color = MaterialTheme.colorScheme.onPrimary, + modifier = Modifier.fillMaxWidth().padding(Dimensions.Padding.default), + style = MaterialTheme.typography.headlineSmall, + textAlign = TextAlign.Center, + ) - speakers.forEach { speaker -> - SpeakerView(speaker) + speakers.forEach { speaker -> + SpeakerView(speaker) + } } } } @@ -273,11 +275,7 @@ private fun DescriptionView(description: String, links: List) { @Composable private fun SpeakerView(speaker: SpeakerListItemViewModel) { - Column( - modifier = Modifier - .fillMaxWidth() - .clickable { speaker.selected() }, - ) { + Column(modifier = Modifier.fillMaxWidth().clickable { speaker.selected() }) { Row(verticalAlignment = Alignment.CenterVertically) { val imageUrl = speaker.avatarUrl?.string if (imageUrl != null) { @@ -299,7 +297,7 @@ private fun SpeakerView(speaker: SpeakerListItemViewModel) { Text( text = speaker.info, - color = MaterialTheme.colorScheme.onSurface, + color = MaterialTheme.colorScheme.onPrimary, fontWeight = FontWeight.Medium, modifier = Modifier.padding( end = Dimensions.Padding.default, @@ -310,7 +308,7 @@ private fun SpeakerView(speaker: SpeakerListItemViewModel) { } Text( text = speaker.bio ?: "", - color = MaterialTheme.colorScheme.onSurfaceVariant, + color = MaterialTheme.colorScheme.onPrimary, fontWeight = FontWeight.Normal, modifier = Modifier.padding( start = 80.dp, diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionListView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionListView.kt index e19f5fac..eb967ac4 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionListView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionListView.kt @@ -122,7 +122,7 @@ internal fun SessionListView(viewModel: BaseSessionListViewModel, title: String, TabRowDefaults.SecondaryIndicator() } }, - contentColor = MaterialTheme.colorScheme.primary, + contentColor = MaterialTheme.colorScheme.secondary, containerColor = MaterialTheme.colorScheme.surface, modifier = Modifier.shadow(elevation = 5.dp), ) { @@ -202,7 +202,7 @@ private fun TabIndicator(modifier: Modifier = Modifier) { .padding(horizontal = 64.dp) .height(2.dp) .clip(RoundedCornerShape(topStart = 12.dp, topEnd = 12.dp)) - .background(MaterialTheme.colorScheme.primary), + .background(MaterialTheme.colorScheme.secondary), ) } diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SpeakerDetailView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SpeakerDetailView.kt index c16ad3dd..0e2d1cd7 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SpeakerDetailView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SpeakerDetailView.kt @@ -1,5 +1,6 @@ package co.touchlab.droidcon.ui.session +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.aspectRatio @@ -61,6 +62,11 @@ internal fun SpeakerDetailView(viewModel: SpeakerDetailViewModel) { } }, scrollBehavior = scrollBehavior, + colors = TopAppBarDefaults.topAppBarColors( + containerColor = MaterialTheme.colorScheme.primary, + titleContentColor = MaterialTheme.colorScheme.onPrimary, + navigationIconContentColor = MaterialTheme.colorScheme.onPrimary, + ) ) }, ) { paddingValues -> @@ -68,19 +74,20 @@ internal fun SpeakerDetailView(viewModel: SpeakerDetailViewModel) { Column( modifier = Modifier.verticalScroll(scrollState).padding(paddingValues), ) { - HeaderView(viewModel.name, viewModel.position ?: "", viewModel.avatarUrl) + Column(Modifier.background(MaterialTheme.colorScheme.primary)) { + HeaderView(viewModel.name, viewModel.position ?: "", viewModel.avatarUrl) - viewModel.socials.website?.let { - SocialView(WebLink.fromUrl(it), Icons.Default.Language) - } - viewModel.socials.twitter?.let { - SocialView(WebLink.fromUrl(it), "twitter") - } - viewModel.socials.linkedIn?.let { - SocialView(WebLink.fromUrl(it), "linkedin") + viewModel.socials.website?.let { + SocialView(WebLink.fromUrl(it), Icons.Default.Language) + } + viewModel.socials.twitter?.let { + SocialView(WebLink.fromUrl(it), "twitter") + } + viewModel.socials.linkedIn?.let { + SocialView(WebLink.fromUrl(it), "linkedin") + } } - Divider() viewModel.bio?.let { BioView(it, viewModel.bioWebLinks) @@ -114,6 +121,7 @@ private fun HeaderView(name: String, tagLine: String, imageUrl: Url?) { Text( text = name, style = MaterialTheme.typography.headlineSmall, + color = MaterialTheme.colorScheme.onPrimary, maxLines = 3, overflow = TextOverflow.Ellipsis, modifier = Modifier.padding( @@ -123,6 +131,7 @@ private fun HeaderView(name: String, tagLine: String, imageUrl: Url?) { ) Text( text = tagLine, + color = MaterialTheme.colorScheme.onPrimary, modifier = Modifier.padding( end = Dimensions.Padding.double, bottom = Dimensions.Padding.default, @@ -163,6 +172,7 @@ private fun SocialView(url: WebLink, icon: ImageVector) { .padding(Dimensions.Padding.default) .size(28.dp), contentDescription = null, + tint = MaterialTheme.colorScheme.onPrimary, ) WebLinkText( text = url.link, @@ -188,7 +198,7 @@ private fun BioView(bio: String, webLinks: List) { modifier = Modifier .padding(Dimensions.Padding.default) .size(28.dp), - tint = MaterialTheme.colorScheme.onSurface, + tint = MaterialTheme.colorScheme.onPrimary, ) WebLinkText( text = bio, diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/ConferenceSelector.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/ConferenceSelector.kt index dc0aa391..bc06940a 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/ConferenceSelector.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/ConferenceSelector.kt @@ -12,6 +12,7 @@ import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -93,6 +94,7 @@ private fun ConferenceDropdownMenu( DropdownMenu( expanded = expanded, onDismissRequest = onDismissRequest, + containerColor = MaterialTheme.colorScheme.background, modifier = Modifier.fillMaxWidth(0.9f), ) { Text( diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt index a1fca0dd..fb4506d0 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt @@ -14,7 +14,7 @@ object Colors { val textColor = Color(0xFF20201E) val secondaryTextColor = Color(0xFF606060) - + val disabled = Color(0xFFc0e3dc) val darkTextColor = Color(0xFFdfdfe1) val darkSecondaryTextColor = Color(0xFF9f9f9f) diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Theme.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Theme.kt index 5bf4a21f..ca2b27f2 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Theme.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Theme.kt @@ -14,6 +14,7 @@ private val LightColorScheme = lightColorScheme( onSurface = Colors.textColor, onSurfaceVariant = Colors.secondaryTextColor, primary = Colors.droidconGreen, + primaryContainer = Colors.disabled, onPrimary = Color.White, secondary = Colors.droidconBlue, onSecondary = Color.White, From 2223a443d2308a905852fdeca9202e77518ed2b6 Mon Sep 17 00:00:00 2001 From: Kevin Schildhorn Date: Fri, 2 May 2025 14:30:06 -0400 Subject: [PATCH 3/4] Updating splash --- .../src/main/java/co/touchlab/droidcon/android/MainActivity.kt | 2 +- .../commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt b/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt index bf995605..e5e7fec5 100644 --- a/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt +++ b/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt @@ -90,7 +90,7 @@ class MainActivity : } Box( modifier = Modifier - .background(MaterialTheme.colors.primary) + .background(Colors.splash) .fillMaxSize(), contentAlignment = Alignment.Center, ) { diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt index fb4506d0..9704673c 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt @@ -6,7 +6,7 @@ object Colors { val droidconGreen = Color(0xFF4CE2C3) val droidconBlue = Color(0xFF010DEB) val droidconRed = Color(0xFFF66E4D) - + val splash = Color(0xff7de1c3) val darkDroidconGreen = Color(0xFFa2f7e5) val darkDroidconBlue = Color(0xFFabaff9) From 1dedea0b9a5b80ce3717f68cda90c416101d1db3 Mon Sep 17 00:00:00 2001 From: Kevin Schildhorn Date: Fri, 2 May 2025 15:00:41 -0400 Subject: [PATCH 4/4] Finalizing colors --- .../touchlab/droidcon/android/MainActivity.kt | 52 +++++++++++-------- gradle/libs.versions.toml | 2 + shared-ui/build.gradle.kts | 4 ++ .../co/touchlab/droidcon/ui/util/MainView.kt | 9 +++- .../ui/MainComposeView.kt | 9 ++-- .../co.touchlab.droidcon/ui/theme/Colors.kt | 6 +-- .../co.touchlab.droidcon/ui/theme/Theme.kt | 7 +-- .../droidcon/ui/ComposeRootController.kt | 5 +- 8 files changed, 58 insertions(+), 36 deletions(-) diff --git a/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt b/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt index e5e7fec5..75087a3f 100644 --- a/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt +++ b/android/src/main/java/co/touchlab/droidcon/android/MainActivity.kt @@ -10,12 +10,15 @@ import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.animation.Crossfade +import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image +import androidx.compose.foundation.LocalOverscrollConfiguration import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material.MaterialTheme +import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -61,6 +64,7 @@ class MainActivity : ) { isGranted: Boolean -> } + @OptIn(ExperimentalFoundationApi::class) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -70,35 +74,37 @@ class MainActivity : // Do the minimal setup needed for launching the app WindowCompat.setDecorFitsSystemWindows(window, false) - enableEdgeToEdge() + // Set up the UI immediately setContent { - MainView(waitForLoadedContextModel = waitForLoadedContextModel) + CompositionLocalProvider(LocalOverscrollConfiguration provides null) { + MainView(waitForLoadedContextModel = waitForLoadedContextModel) - var showSplashScreen by remember { mutableStateOf(true) } + var showSplashScreen by remember { mutableStateOf(true) } - if (!showSplashScreen) { - LaunchedEffect(Unit) { - askNotificationPermission() - } - } - Crossfade(targetState = showSplashScreen) { shouldShowSplashScreen -> - if (shouldShowSplashScreen) { + if (!showSplashScreen) { LaunchedEffect(Unit) { - delay(1_000) - showSplashScreen = false + askNotificationPermission() } - Box( - modifier = Modifier - .background(Colors.splash) - .fillMaxSize(), - contentAlignment = Alignment.Center, - ) { - Image( - painter = painterResource(id = R.drawable.ic_splash_screen), - contentDescription = getString(R.string.droidcon_title), - modifier = Modifier.padding(32.dp), - ) + } + Crossfade(targetState = showSplashScreen) { shouldShowSplashScreen -> + if (shouldShowSplashScreen) { + LaunchedEffect(Unit) { + delay(1_000) + showSplashScreen = false + } + Box( + modifier = Modifier + .background(Colors.splash) + .fillMaxSize(), + contentAlignment = Alignment.Center, + ) { + Image( + painter = painterResource(id = R.drawable.ic_splash_screen), + contentDescription = getString(R.string.droidcon_title), + modifier = Modifier.padding(32.dp), + ) + } } } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 84530293..4fbce3b6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,6 @@ [versions] ## SDK Versions +accompanistSystemuicontroller = "0.30.1" minSdk = "21" targetSdk = "35" compileSdk = "35" @@ -53,6 +54,7 @@ zoomimage = "1.1.0-alpha06" skie = "0.10.1" [libraries] +accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanistSystemuicontroller" } coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coil" } coil-network = { module = "io.coil-kt.coil3:coil-network-ktor3", version.ref = "coil" } sqliter = { module = "co.touchlab:sqliter-driver", version.ref = "sqliter" } diff --git a/shared-ui/build.gradle.kts b/shared-ui/build.gradle.kts index 9828407a..19c562bb 100644 --- a/shared-ui/build.gradle.kts +++ b/shared-ui/build.gradle.kts @@ -102,6 +102,10 @@ kotlin { implementation(libs.hyperdrive.multiplatformx.api) // implementation(libs.hyperdrive.multiplatformx.compose) } + androidMain.dependencies { + implementation(libs.accompanist.systemuicontroller) + + } all { languageSettings.apply { optIn("kotlin.RequiresOptIn") diff --git a/shared-ui/src/androidMain/kotlin/co/touchlab/droidcon/ui/util/MainView.kt b/shared-ui/src/androidMain/kotlin/co/touchlab/droidcon/ui/util/MainView.kt index a3a988f4..eb30626b 100644 --- a/shared-ui/src/androidMain/kotlin/co/touchlab/droidcon/ui/util/MainView.kt +++ b/shared-ui/src/androidMain/kotlin/co/touchlab/droidcon/ui/util/MainView.kt @@ -1,12 +1,19 @@ package co.touchlab.droidcon.ui.util import androidx.compose.foundation.layout.systemBarsPadding +import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import co.touchlab.droidcon.ui.MainComposeView +import co.touchlab.droidcon.ui.theme.DroidconTheme import co.touchlab.droidcon.viewmodel.WaitForLoadedContextModel +import com.google.accompanist.systemuicontroller.rememberSystemUiController @Composable fun MainView(waitForLoadedContextModel: WaitForLoadedContextModel) { - MainComposeView(waitForLoadedContextModel = waitForLoadedContextModel, modifier = Modifier.systemBarsPadding()) + DroidconTheme { + val systemUiController = rememberSystemUiController() + systemUiController.setSystemBarsColor(color = MaterialTheme.colorScheme.surface) + MainComposeView(waitForLoadedContextModel = waitForLoadedContextModel, modifier = Modifier.systemBarsPadding()) + } } diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/MainComposeView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/MainComposeView.kt index e7b0bdda..5c8a91c8 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/MainComposeView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/MainComposeView.kt @@ -40,11 +40,10 @@ internal fun MainComposeView(waitForLoadedContextModel: WaitForLoadedContextMode val loadingState by waitForLoadedContextModel.state.collectAsState() - DroidconTheme { - when (val state = loadingState) { - WaitForLoadedContextModel.State.Loading -> LoadingScreen() - is WaitForLoadedContextModel.State.Ready -> MainAppBody(waitForLoadedContextModel, state.conference, modifier) - } + + when (val state = loadingState) { + WaitForLoadedContextModel.State.Loading -> LoadingScreen() + is WaitForLoadedContextModel.State.Ready -> MainAppBody(waitForLoadedContextModel, state.conference, modifier) } } diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt index 9704673c..a780c1e3 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Colors.kt @@ -8,9 +8,8 @@ object Colors { val droidconRed = Color(0xFFF66E4D) val splash = Color(0xff7de1c3) - val darkDroidconGreen = Color(0xFFa2f7e5) - val darkDroidconBlue = Color(0xFFabaff9) - val darkDroidconRed = Color(0xFFf7ad9b) + val darkDroidconGreen = Color(0xFF369c87) + val darkDroidconBlue = Color(0xFF76D2FE) val textColor = Color(0xFF20201E) val secondaryTextColor = Color(0xFF606060) @@ -18,4 +17,5 @@ object Colors { val darkTextColor = Color(0xFFdfdfe1) val darkSecondaryTextColor = Color(0xFF9f9f9f) + val darkDisabled = Color(0xFF2a3230) } diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Theme.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Theme.kt index ca2b27f2..30f92ff1 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Theme.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/theme/Theme.kt @@ -30,14 +30,15 @@ private val DarkColorScheme = darkColorScheme( surface = Color.DarkGray, onSurface = Colors.darkTextColor, onSurfaceVariant = Colors.darkSecondaryTextColor, - primary = Colors.droidconGreen, + primary = Colors.darkDroidconGreen, + primaryContainer = Colors.darkDisabled, onPrimary = Color.White, - secondary = Colors.droidconGreen, + secondary = Colors.darkDroidconBlue, onSecondary = Color.White, tertiary = Colors.droidconRed, onTertiary = Color.White, surfaceVariant = Color.White, - surfaceContainer = Colors.droidconGreen, + surfaceContainer = Colors.darkDroidconBlue, ) @Composable diff --git a/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/ComposeRootController.kt b/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/ComposeRootController.kt index 52071951..c5827214 100644 --- a/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/ComposeRootController.kt +++ b/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/ComposeRootController.kt @@ -1,12 +1,15 @@ package co.touchlab.droidcon.ui import androidx.compose.ui.window.ComposeUIViewController +import co.touchlab.droidcon.ui.theme.DroidconTheme import co.touchlab.droidcon.ui.venue.VenueBodyView import co.touchlab.droidcon.viewmodel.WaitForLoadedContextModel @Suppress("unused") fun getRootController(viewModel: WaitForLoadedContextModel) = ComposeUIViewController { - MainComposeView(viewModel) + DroidconTheme { + MainComposeView(viewModel) + } } @Suppress("unused")