diff --git a/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/App.kt b/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/App.kt index 77e5add..94a2c87 100644 --- a/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/App.kt +++ b/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/App.kt @@ -34,6 +34,7 @@ import com.highcapable.flexiui.component.Surface import com.highcapable.flexiui.demo.screen.LazyListScreen import com.highcapable.flexiui.demo.screen.MainScreen import com.highcapable.flexiui.demo.screen.SecondaryScreen +import com.highcapable.flexiui.toColors const val PROJECT_URL = "https://github.com/BetterAndroid/FlexiUI" diff --git a/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/ColorScheme.kt b/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/ColorScheme.kt deleted file mode 100644 index 18bc2d3..0000000 --- a/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/ColorScheme.kt +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Flexi UI - A flexible and useful UI component library. - * Copyright (C) 2019-2024 HighCapable - * https://github.com/BetterAndroid/FlexiUI - * - * Apache License Version 2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is created by fankes on 2024/1/16. - */ -package com.highcapable.flexiui.demo - -import androidx.compose.runtime.Composable -import androidx.compose.runtime.Stable -import com.highcapable.flexiui.blueColors -import com.highcapable.flexiui.defaultColors -import com.highcapable.flexiui.greenColors -import com.highcapable.flexiui.isSystemColorAvailable -import com.highcapable.flexiui.orangeColors -import com.highcapable.flexiui.pinkColors -import com.highcapable.flexiui.purpleColors -import com.highcapable.flexiui.redColors -import com.highcapable.flexiui.systemColors -import com.highcapable.flexiui.yellowColors - -// TODO: Include ColorScheme to Flexi UI's Colors.kt - -@Stable -enum class ColorScheme { - Default, - DefaultBlack, - System, - SystemBlack, - Red, - RedBlack, - Pink, - PinkBlack, - Purple, - PurpleBlack, - Orange, - OrangeBlack, - Yellow, - YellowBlack, - Green, - GreenBlack, - Blue, - BlueBlack -} - -@Composable -fun colorSchemes(): Array { - val defaultColors = arrayOf( - ColorScheme.Default, - ColorScheme.DefaultBlack - ) - val systemColors = arrayOf( - ColorScheme.System, - ColorScheme.SystemBlack - ) - val presetColors = arrayOf( - ColorScheme.Red, - ColorScheme.RedBlack, - ColorScheme.Pink, - ColorScheme.PinkBlack, - ColorScheme.Purple, - ColorScheme.PurpleBlack, - ColorScheme.Orange, - ColorScheme.OrangeBlack, - ColorScheme.Yellow, - ColorScheme.YellowBlack, - ColorScheme.Green, - ColorScheme.GreenBlack, - ColorScheme.Blue, - ColorScheme.BlueBlack - ) - return if (isSystemColorAvailable()) - defaultColors + systemColors + presetColors - else defaultColors + presetColors -} - -@Composable -fun ColorScheme.toColors(darkMode: Boolean) = when (this) { - ColorScheme.Default -> defaultColors(darkMode) - ColorScheme.DefaultBlack -> defaultColors(darkMode, blackDarkMode = true) - ColorScheme.System -> systemColors(darkMode) - ColorScheme.SystemBlack -> systemColors(darkMode, blackDarkMode = true) - ColorScheme.Red -> redColors(darkMode) - ColorScheme.RedBlack -> redColors(darkMode, blackDarkMode = true) - ColorScheme.Pink -> pinkColors(darkMode) - ColorScheme.PinkBlack -> pinkColors(darkMode, blackDarkMode = true) - ColorScheme.Purple -> purpleColors(darkMode) - ColorScheme.PurpleBlack -> purpleColors(darkMode, blackDarkMode = true) - ColorScheme.Orange -> orangeColors(darkMode) - ColorScheme.OrangeBlack -> orangeColors(darkMode, blackDarkMode = true) - ColorScheme.Yellow -> yellowColors(darkMode) - ColorScheme.YellowBlack -> yellowColors(darkMode, blackDarkMode = true) - ColorScheme.Green -> greenColors(darkMode) - ColorScheme.GreenBlack -> greenColors(darkMode, blackDarkMode = true) - ColorScheme.Blue -> blueColors(darkMode) - ColorScheme.BlueBlack -> blueColors(darkMode, blackDarkMode = true) -} - -@Stable -fun ColorScheme.toName() = when (this) { - ColorScheme.Default -> "Default" - ColorScheme.DefaultBlack -> "Default (Black)" - ColorScheme.System -> "System" - ColorScheme.SystemBlack -> "System (Black)" - ColorScheme.Red -> "Red" - ColorScheme.RedBlack -> "Red (Black)" - ColorScheme.Pink -> "Pink" - ColorScheme.PinkBlack -> "Pink (Black)" - ColorScheme.Purple -> "Purple" - ColorScheme.PurpleBlack -> "Purple (Black)" - ColorScheme.Orange -> "Orange" - ColorScheme.OrangeBlack -> "Orange (Black)" - ColorScheme.Yellow -> "Yellow" - ColorScheme.YellowBlack -> "Yellow (Black)" - ColorScheme.Green -> "Green" - ColorScheme.GreenBlack -> "Green (Black)" - ColorScheme.Blue -> "Blue" - ColorScheme.BlueBlack -> "Blue (Black)" -} \ No newline at end of file diff --git a/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/Preferences.kt b/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/Preferences.kt index a58cb6a..e5521a8 100644 --- a/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/Preferences.kt +++ b/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/Preferences.kt @@ -24,6 +24,7 @@ package com.highcapable.flexiui.demo import androidx.compose.runtime.MutableState import androidx.compose.runtime.Stable import androidx.compose.runtime.mutableStateOf +import com.highcapable.flexiui.ColorScheme @Stable data class AppPreferences( diff --git a/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/screen/MainScreen.kt b/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/screen/MainScreen.kt index 36574f4..50d2577 100644 --- a/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/screen/MainScreen.kt +++ b/samples/composeApp/src/commonMain/kotlin/com/highcapable/flexiui/demo/screen/MainScreen.kt @@ -46,6 +46,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.unit.dp +import com.highcapable.flexiui.availableColorSchemes import com.highcapable.flexiui.component.AreaBox import com.highcapable.flexiui.component.AreaColumn import com.highcapable.flexiui.component.Button @@ -73,11 +74,11 @@ import com.highcapable.flexiui.demo.Screen import com.highcapable.flexiui.demo.SecondarySpacer import com.highcapable.flexiui.demo.SecondaryText import com.highcapable.flexiui.demo.Style -import com.highcapable.flexiui.demo.colorSchemes import com.highcapable.flexiui.demo.locales import com.highcapable.flexiui.demo.rememberRouter import com.highcapable.flexiui.demo.strings import com.highcapable.flexiui.demo.toName +import com.highcapable.flexiui.displayName import com.highcapable.flexiui.resources.FlexiIcons import kotlinx.coroutines.launch @@ -191,6 +192,7 @@ fun MainHomePage(modifier: Modifier) { } PrimarySpacer() AreaColumn(modifier = Modifier.fillMaxWidth()) { + val colorSchemes = availableColorSchemes() var colorScheme by remember { Preferences.colorScheme } var darkMode by remember { Preferences.darkMode } var followSystemDarkMode by remember { Preferences.followSystemDarkMode } @@ -229,16 +231,16 @@ fun MainHomePage(modifier: Modifier) { modifier = Modifier.fillMaxWidth(), expanded = expanded, onExpandedChange = { expanded = it }, - text = { Text(colorScheme.toName()) }, + text = { Text(colorScheme.displayName) }, ) { - colorSchemes().forEach { + colorSchemes.forEach { DropdownMenuItem( actived = colorScheme == it, onClick = { expanded = false colorScheme = it } - ) { Text(it.toName()) } + ) { Text(it.displayName) } } } }