diff --git a/README.md b/README.md index f30c312f..2dffa770 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ kotlin { @Composable fun App() { MiuixTheme( - colorScheme = if (isSystemInDarkTheme()) darkColorScheme() else lightColorScheme() + colors = if (isSystemInDarkTheme()) darkColorScheme() else lightColorScheme() ) { // Other content... } diff --git a/composeApp/src/commonMain/kotlin/ui/Theme.kt b/composeApp/src/commonMain/kotlin/ui/Theme.kt index d8f0c629..c8628a05 100644 --- a/composeApp/src/commonMain/kotlin/ui/Theme.kt +++ b/composeApp/src/commonMain/kotlin/ui/Theme.kt @@ -13,7 +13,7 @@ fun AppTheme( ) { val darkTheme = isSystemInDarkTheme() return MiuixTheme( - colorScheme = when (colorMode) { + colors = when (colorMode) { 1 -> lightColorScheme() 2 -> darkColorScheme() else -> if (darkTheme) darkColorScheme() else lightColorScheme() diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/Button.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/Button.kt index def6642f..eb682bcb 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/Button.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/Button.kt @@ -30,6 +30,7 @@ import top.yukonga.miuix.kmp.utils.SmoothRoundedCornerShape * @param enabled Whether the [Button] is enabled. * @param submit Whether the [Button] is a submit button. * @param cornerRadius The corner radius of the [Button]. + * @param minHeight The minimum height of the [Button]. */ @Composable fun Button( @@ -38,7 +39,8 @@ fun Button( onClick: () -> Unit, enabled: Boolean = true, submit: Boolean = false, - cornerRadius: Dp = 18.dp + cornerRadius: Dp = 16.dp, + minHeight: Dp = 40.dp ) { val hapticFeedback = LocalHapticFeedback.current val color by rememberUpdatedState(getButtonColor(enabled, submit)) @@ -56,7 +58,7 @@ fun Button( ) { Row( Modifier - .defaultMinSize(minWidth = 58.dp, minHeight = 40.dp) + .defaultMinSize(minWidth = 58.dp, minHeight = minHeight) .padding(16.dp, 16.dp), horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically, @@ -64,6 +66,7 @@ fun Button( Text( text = text, color = textColor, + fontSize = MiuixTheme.textStyles.button.fontSize, fontWeight = FontWeight.Medium ) } diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/Card.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/Card.kt index c8807f18..6b4db02e 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/Card.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/Card.kt @@ -29,7 +29,7 @@ import top.yukonga.miuix.kmp.utils.SmoothRoundedCornerShape fun Card( modifier: Modifier = Modifier, insideMargin: DpSize = DpSize(0.dp, 0.dp), - cornerRadius: Dp = 18.dp, + cornerRadius: Dp = 16.dp, color: Color = MiuixTheme.colorScheme.surface, content: @Composable ColumnScope.() -> Unit ) { diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/Component.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/Component.kt index 249b7e59..7ecd7c95 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/Component.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/Component.kt @@ -8,6 +8,7 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -81,6 +82,7 @@ fun BasicComponent( } } } + .heightIn(min = 56.dp) .fillMaxWidth() .then(paddingModifier), verticalAlignment = Alignment.CenterVertically, @@ -99,6 +101,7 @@ fun BasicComponent( title?.let { Text( text = it, + fontSize = MiuixTheme.textStyles.headline1.fontSize, fontWeight = FontWeight.Medium, color = titleColor ) @@ -106,7 +109,7 @@ fun BasicComponent( summary?.let { Text( text = it, - fontSize = MiuixTheme.textStyles.title.fontSize, + fontSize = MiuixTheme.textStyles.body2.fontSize, color = summaryColor ) } diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/SmallTitle.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/SmallTitle.kt index 1c23bf2b..799063ff 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/SmallTitle.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/SmallTitle.kt @@ -8,7 +8,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import top.yukonga.miuix.kmp.theme.MiuixTheme /** @@ -32,7 +31,7 @@ fun SmallTitle( Text( modifier = modifier.then(paddingModifier), text = text, - fontSize = 14.sp, + fontSize = MiuixTheme.textStyles.subtitle.fontSize, fontWeight = FontWeight.Medium, color = textColor ) diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/TextField.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/TextField.kt index a0e0cb56..7a7ce80b 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/TextField.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/TextField.kt @@ -195,9 +195,9 @@ fun TextField( value: String, onValueChange: (String) -> Unit, modifier: Modifier = Modifier, - insideMargin: DpSize = DpSize(16.dp, 16.dp), + insideMargin: DpSize = DpSize(16.dp, 15.dp), backgroundColor: Color = MiuixTheme.colorScheme.secondaryContainer, - cornerRadius: Dp = 18.dp, + cornerRadius: Dp = 16.dp, label: String = "", labelColor: Color = MiuixTheme.colorScheme.onSecondaryContainer, enabled: Boolean = true, @@ -223,7 +223,7 @@ fun TextField( else Modifier.padding(vertical = insideMargin.height) } val isFocused by interactionSource.collectIsFocusedAsState() - val borderWidth by animateDpAsState(if (isFocused) 1.6.dp else 0.dp) + val borderWidth by animateDpAsState(if (isFocused) 2.0.dp else 0.dp) val borderColor by animateColorAsState(if (isFocused) MiuixTheme.colorScheme.primary else backgroundColor) val labelOffsetY by animateDpAsState(if (value.isNotEmpty()) -(insideMargin.height / 2) else 0.dp) val innerTextOffsetY by animateDpAsState(if (value.isNotEmpty()) (insideMargin.height / 2) else 0.dp) diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/TopAppBar.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/TopAppBar.kt index d4421dc4..62d17591 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/TopAppBar.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/basic/TopAppBar.kt @@ -53,7 +53,6 @@ import androidx.compose.ui.unit.Constraints import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Velocity import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import androidx.compose.ui.util.fastFirst import top.yukonga.miuix.kmp.theme.MiuixTheme import kotlin.math.abs @@ -524,7 +523,7 @@ private fun TopAppBarLayout( Text( text = title, maxLines = 1, - fontSize = 20.sp, + fontSize = MiuixTheme.textStyles.title3.fontSize, fontWeight = FontWeight.Medium ) } @@ -544,7 +543,7 @@ private fun TopAppBarLayout( Text( text = largeTitle, maxLines = 1, - fontSize = 32.sp, + fontSize = MiuixTheme.textStyles.title1.fontSize, fontWeight = FontWeight.Normal ) } diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/extra/SuperArrow.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/extra/SuperArrow.kt index 65a097b1..b947762a 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/extra/SuperArrow.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/extra/SuperArrow.kt @@ -13,7 +13,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import top.yukonga.miuix.kmp.basic.BasicComponent import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.icon.MiuixIcons @@ -60,15 +59,15 @@ fun SuperArrow( if (rightText != null) { Text( text = rightText, - fontSize = 15.sp, + fontSize = MiuixTheme.textStyles.body2.fontSize, color = MiuixTheme.colorScheme.onSurfaceVariantActions, textAlign = TextAlign.End, ) } Image( modifier = Modifier - .size(15.dp) - .padding(start = 6.dp), + .padding(start = 8.dp) + .size(10.dp, 16.dp), imageVector = MiuixIcons.ArrowRight, contentDescription = null, colorFilter = BlendModeColorFilter(MiuixTheme.colorScheme.onSurfaceVariantActions, BlendMode.SrcIn), diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/extra/SuperDialog.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/extra/SuperDialog.kt index 086e37ba..0e17d40a 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/extra/SuperDialog.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/extra/SuperDialog.kt @@ -28,7 +28,6 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import top.yukonga.miuix.kmp.basic.Box import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.theme.MiuixTheme @@ -60,7 +59,7 @@ fun SuperDialog( title: String? = null, titleColor: Color = MiuixTheme.colorScheme.onSurface, summary: String? = null, - summaryColor: Color = MiuixTheme.colorScheme.onSurfaceVariantDialog, + summaryColor: Color = MiuixTheme.colorScheme.onSurfaceSecondary, backgroundColor: Color = MiuixTheme.colorScheme.surfaceVariant, show: MutableState, onDismissRequest: (() -> Unit)? = null, @@ -129,9 +128,10 @@ fun SuperDialog( ) { title?.let { Text( - modifier = Modifier.fillMaxWidth().padding(bottom = 20.dp), + modifier = Modifier.fillMaxWidth() + .padding(start = 36.dp, end = 36.dp, bottom = 16.dp), text = it, - fontSize = 20.sp, + fontSize = MiuixTheme.textStyles.title4.fontSize, fontWeight = FontWeight.Medium, textAlign = TextAlign.Center, color = titleColor @@ -139,8 +139,10 @@ fun SuperDialog( } summary?.let { Text( - modifier = Modifier.fillMaxWidth().padding(bottom = 20.dp), + modifier = Modifier.fillMaxWidth() + .padding(start = 28.dp, end = 28.dp, bottom = 16.dp), text = it, + fontSize = MiuixTheme.textStyles.body1.fontSize, textAlign = TextAlign.Center, color = summaryColor ) diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/extra/SuperDropdown.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/extra/SuperDropdown.kt index 9798a704..bd1eac1e 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/extra/SuperDropdown.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/extra/SuperDropdown.kt @@ -65,7 +65,7 @@ import top.yukonga.miuix.kmp.basic.BasicComponent import top.yukonga.miuix.kmp.basic.Box import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.icon.MiuixIcons -import top.yukonga.miuix.kmp.icon.icons.ArrowUpDown +import top.yukonga.miuix.kmp.icon.icons.ArrowUpDownIntegrated import top.yukonga.miuix.kmp.icon.icons.Check import top.yukonga.miuix.kmp.theme.MiuixTheme import top.yukonga.miuix.kmp.utils.BackHandler @@ -168,17 +168,18 @@ fun SuperDropdown( summaryColor = summaryColor, rightActions = { Text( - modifier = Modifier.padding(end = 6.dp), + modifier = Modifier.widthIn(max = 130.dp), text = items[selectedIndex], - fontSize = 15.sp, + fontSize = MiuixTheme.textStyles.body2.fontSize, color = actionColor, textAlign = TextAlign.End, ) Image( modifier = Modifier - .size(15.dp) + .padding(start = 8.dp) + .size(10.dp, 16.dp) .align(Alignment.CenterVertically), - imageVector = MiuixIcons.ArrowUpDown, + imageVector = MiuixIcons.ArrowUpDownIntegrated, colorFilter = BlendModeColorFilter(actionColor, BlendMode.SrcIn), contentDescription = null ) diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/icon/icons/ArrowRight.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/icon/icons/ArrowRight.kt index 7b554792..d837f2c5 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/icon/icons/ArrowRight.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/icon/icons/ArrowRight.kt @@ -14,31 +14,22 @@ import top.yukonga.miuix.kmp.icon.MiuixIcons val MiuixIcons.ArrowRight: ImageVector get() { if (_arrowRight != null) return _arrowRight!! - _arrowRight = ImageVector.Builder("ArrowRight", 26.dp, 42.dp, 26f, 42f).apply { + _arrowRight = ImageVector.Builder("ArrowRight", 10.dp, 16.dp, 10f, 16f).apply { path( fill = SolidColor(Color.Black), fillAlpha = 1f, pathFillType = PathFillType.EvenOdd ) { - moveTo(18.9982f, 20.3635f) - lineTo(6.5388f, 7.9041f) - lineTo(4.4899f, 5.8552f) - curveTo(3.8367f, 5.202f, 3.8367f, 4.143f, 4.4899f, 3.4899f) - curveTo(5.143f, 2.8367f, 6.202f, 2.8367f, 6.8552f, 3.4899f) - lineTo(8.9041f, 5.5388f) - lineTo(21.3635f, 17.9982f) - lineTo(23.4124f, 20.0471f) - curveTo(23.7596f, 20.3943f, 23.9223f, 20.8562f, 23.9003f, 21.3109f) - curveTo(23.9238f, 21.7673f, 23.7612f, 22.2315f, 23.4126f, 22.5801f) - lineTo(21.3638f, 24.629f) - lineTo(8.9043f, 37.0884f) - lineTo(6.8555f, 39.1373f) - curveTo(6.2023f, 39.7904f, 5.1433f, 39.7904f, 4.4901f, 39.1373f) - curveTo(3.837f, 38.4841f, 3.837f, 37.4251f, 4.4901f, 36.772f) - lineTo(6.539f, 34.7231f) - lineTo(18.9984f, 22.2636f) - lineTo(19.9484f, 21.3137f) - lineTo(18.9982f, 20.3635f) + moveTo(1.65f, 1.469f) + curveTo(1.929f, 1.19f, 2.381f, 1.19f, 2.66f, 1.469f) + lineTo(8.721f, 7.53f) + curveTo(9.0f, 7.809f, 9.0f, 8.261f, 8.721f, 8.54f) + lineTo(2.66f, 14.601f) + curveTo(2.381f, 14.88f, 1.929f, 14.88f, 1.65f, 14.601f) + curveTo(1.371f, 14.322f, 1.371f, 13.87f, 1.65f, 13.591f) + lineTo(7.205f, 8.035f) + lineTo(1.65f, 2.479f) + curveTo(1.371f, 2.2f, 1.371f, 1.748f, 1.65f, 1.469f) close() } }.build() diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/icon/icons/ArrowUpDown.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/icon/icons/ArrowUpDown.kt index f05c46e4..18f7b9a8 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/icon/icons/ArrowUpDown.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/icon/icons/ArrowUpDown.kt @@ -14,50 +14,51 @@ import top.yukonga.miuix.kmp.icon.MiuixIcons val MiuixIcons.ArrowUpDown: ImageVector get() { if (_arrowUpDown != null) return _arrowUpDown!! - _arrowUpDown = ImageVector.Builder("ArrowUpDown", 13.dp, 21.dp, 26f, 42f).apply { + _arrowUpDown = ImageVector.Builder("ArrowUpDown", 15.dp, 15.dp, 15f, 15f).apply { path( fill = SolidColor(Color.Black), fillAlpha = 1f, pathFillType = PathFillType.EvenOdd ) { - moveTo(5.8643f, 12.6223f) - lineTo(11.5708f, 6.9158f) - lineTo(12.7234f, 5.7632f) - lineTo(13.8245f, 6.8643f) - lineTo(19.531f, 12.5708f) - lineTo(21.9811f, 15.0208f) - curveTo(22.7621f, 15.8019f, 24.0284f, 15.8019f, 24.8095f, 15.0208f) - curveTo(25.5905f, 14.2398f, 25.5905f, 12.9734f, 24.8095f, 12.1924f) - lineTo(22.3595f, 9.7423f) - lineTo(16.6529f, 4.0358f) - lineTo(14.2029f, 1.5858f) - curveTo(13.6481f, 1.031f, 12.8484f, 0.8703f, 12.1517f, 1.1037f) - curveTo(11.8001f, 1.1854f, 11.4664f, 1.3633f, 11.1924f, 1.6373f) - lineTo(8.7424f, 4.0874f) - lineTo(3.0358f, 9.7939f) - lineTo(0.5858f, 12.2439f) - curveTo(-0.1953f, 13.025f, -0.1953f, 14.2913f, 0.5858f, 15.0724f) - curveTo(1.3668f, 15.8534f, 2.6332f, 15.8534f, 3.4142f, 15.0724f) - lineTo(5.8643f, 12.6223f) - moveTo(5.8643f, 29.7496f) - lineTo(11.5708f, 35.4562f) - lineTo(12.7234f, 36.6088f) - lineTo(13.8245f, 35.5077f) - lineTo(19.531f, 29.8012f) - lineTo(21.9811f, 27.3511f) - curveTo(22.7621f, 26.5701f, 24.0284f, 26.5701f, 24.8095f, 27.3511f) - curveTo(25.5905f, 28.1322f, 25.5905f, 29.3985f, 24.8095f, 30.1796f) - lineTo(22.3595f, 32.6296f) - lineTo(16.6529f, 38.3361f) - lineTo(14.2029f, 40.7862f) - curveTo(13.6481f, 41.341f, 12.8484f, 41.5017f, 12.1517f, 41.2683f) - curveTo(11.8001f, 41.1865f, 11.4664f, 41.0086f, 11.1924f, 40.7346f) - lineTo(8.7424f, 38.2846f) - lineTo(3.0358f, 32.5781f) - lineTo(0.5858f, 30.128f) - curveTo(-0.1953f, 29.347f, -0.1953f, 28.0806f, 0.5858f, 27.2996f) - curveTo(1.3668f, 26.5185f, 2.6332f, 26.5185f, 3.4142f, 27.2996f) - lineTo(5.8643f, 29.7496f) + moveTo(7.492f, 3.996f) + lineTo(5.629f, 5.86f) + lineTo(5.157f, 6.332f) + curveTo(4.874f, 6.615f, 4.414f, 6.615f, 4.131f, 6.332f) + curveTo(3.847f, 6.048f, 3.847f, 5.588f, 4.131f, 5.305f) + lineTo(4.603f, 4.833f) + lineTo(6.466f, 2.97f) + lineTo(6.938f, 2.498f) + curveTo(7.092f, 2.344f, 7.298f, 2.273f, 7.5f, 2.287f) + curveTo(7.701f, 2.274f, 7.907f, 2.344f, 8.061f, 2.498f) + lineTo(8.533f, 2.97f) + lineTo(10.396f, 4.833f) + lineTo(10.868f, 5.305f) + curveTo(11.152f, 5.589f, 11.152f, 6.048f, 10.868f, 6.332f) + curveTo(10.585f, 6.615f, 10.125f, 6.615f, 9.842f, 6.332f) + lineTo(9.37f, 5.86f) + lineTo(7.507f, 3.997f) + lineTo(7.499f, 3.989f) + lineTo(7.492f, 3.996f) + close() + moveTo(7.492f, 11.003f) + lineTo(5.629f, 9.14f) + lineTo(5.157f, 8.668f) + curveTo(4.874f, 8.385f, 4.414f, 8.385f, 4.131f, 8.668f) + curveTo(3.847f, 8.952f, 3.847f, 9.411f, 4.131f, 9.695f) + lineTo(4.603f, 10.167f) + lineTo(6.466f, 12.03f) + lineTo(6.938f, 12.502f) + curveTo(7.092f, 12.656f, 7.298f, 12.726f, 7.5f, 12.713f) + curveTo(7.701f, 12.726f, 7.907f, 12.656f, 8.061f, 12.502f) + lineTo(8.533f, 12.03f) + lineTo(10.396f, 10.167f) + lineTo(10.868f, 9.695f) + curveTo(11.152f, 9.411f, 11.152f, 8.952f, 10.868f, 8.668f) + curveTo(10.585f, 8.385f, 10.125f, 8.385f, 9.842f, 8.668f) + lineTo(9.37f, 9.14f) + lineTo(7.507f, 11.003f) + lineTo(7.499f, 11.01f) + lineTo(7.492f, 11.003f) close() } }.build() diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/icon/icons/ArrowUpDownIntegrated.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/icon/icons/ArrowUpDownIntegrated.kt new file mode 100644 index 00000000..3d06e328 --- /dev/null +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/icon/icons/ArrowUpDownIntegrated.kt @@ -0,0 +1,68 @@ +package top.yukonga.miuix.kmp.icon.icons + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.PathFillType +import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.vector.path +import androidx.compose.ui.unit.dp +import top.yukonga.miuix.kmp.icon.MiuixIcons + +/** + * ArrowUpDownIntegrated icon with Miuix style. + */ +val MiuixIcons.ArrowUpDownIntegrated: ImageVector + get() { + if (_arrowUpDownIntegrated != null) return _arrowUpDownIntegrated!! + _arrowUpDownIntegrated = ImageVector.Builder("ArrowUpDownIntegrated", 10.dp, 16.dp, 10f, 16f).apply { + path( + fill = SolidColor(Color.Black), + fillAlpha = 1f, + pathFillType = PathFillType.EvenOdd + ) { + moveTo(2.397f, 4.7384f) + lineTo(4.5688f, 2.5665f) + lineTo(5.0075f, 2.1278f) + lineTo(5.4266f, 2.5469f) + lineTo(7.5985f, 4.7187f) + lineTo(8.531f, 5.6512f) + curveTo(8.8282f, 5.9485f, 9.3102f, 5.9485f, 9.6075f, 5.6512f) + curveTo(9.9047f, 5.354f, 9.9047f, 4.872f, 9.6075f, 4.5747f) + lineTo(8.675f, 3.6423f) + lineTo(6.5031f, 1.4704f) + lineTo(5.5706f, 0.5379f) + curveTo(5.3595f, 0.3267f, 5.0551f, 0.2656f, 4.7899f, 0.3544f) + curveTo(4.6561f, 0.3855f, 4.5291f, 0.4532f, 4.4248f, 0.5575f) + lineTo(3.4924f, 1.49f) + lineTo(1.3205f, 3.6619f) + lineTo(0.388f, 4.5943f) + curveTo(0.0907f, 4.8916f, 0.0907f, 5.3736f, 0.388f, 5.6708f) + curveTo(0.6853f, 5.9681f, 1.1672f, 5.9681f, 1.4645f, 5.6708f) + lineTo(2.397f, 4.7384f) + close() + moveTo(2.397f, 11.257f) + lineTo(4.5688f, 13.4289f) + lineTo(5.0075f, 13.8675f) + lineTo(5.4266f, 13.4485f) + lineTo(7.5985f, 11.2766f) + lineTo(8.531f, 10.3441f) + curveTo(8.8282f, 10.0468f, 9.3102f, 10.0468f, 9.6075f, 10.3441f) + curveTo(9.9047f, 10.6414f, 9.9047f, 11.1233f, 9.6075f, 11.4206f) + lineTo(8.675f, 12.3531f) + lineTo(6.5031f, 14.525f) + lineTo(5.5706f, 15.4574f) + curveTo(5.3594f, 15.6686f, 5.0551f, 15.7298f, 4.7899f, 15.6409f) + curveTo(4.6561f, 15.6098f, 4.5291f, 15.5421f, 4.4248f, 15.4378f) + lineTo(3.4924f, 14.5053f) + lineTo(1.3205f, 12.3335f) + lineTo(0.388f, 11.401f) + curveTo(0.0907f, 11.1037f, 0.0907f, 10.6217f, 0.388f, 10.3245f) + curveTo(0.6853f, 10.0272f, 1.1672f, 10.0272f, 1.4645f, 10.3245f) + lineTo(2.397f, 11.257f) + close() + } + }.build() + return _arrowUpDownIntegrated!! + } + +private var _arrowUpDownIntegrated: ImageVector? = null \ No newline at end of file diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/theme/Colors.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/theme/Colors.kt index 3cc1749d..02716d47 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/theme/Colors.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/theme/Colors.kt @@ -43,7 +43,7 @@ import androidx.compose.ui.graphics.Color * @param surface The surface color. * @param onSurface The color of the text on surface color. * @param surfaceVariant The variant color of the surface color. - * @param onSurfaceVariantDialog The color of the dialog summary on surface variant color. + * @param onSurfaceSecondary The color of the text on surface secondary color. * @param onSurfaceVariantSummary The color of the summary on surface variant color. * @param onSurfaceVariantActions The color of the actions on surface variant color. * @param disabledOnSurface The color of the text on disabled surface color. @@ -92,7 +92,7 @@ class Colors( surface: Color, onSurface: Color, surfaceVariant: Color, - onSurfaceVariantDialog: Color, + onSurfaceSecondary: Color, onSurfaceVariantSummary: Color, onSurfaceVariantActions: Color, disabledOnSurface: Color, @@ -171,7 +171,7 @@ class Colors( internal set var surfaceVariant by mutableStateOf(surfaceVariant, structuralEqualityPolicy()) internal set - var onSurfaceVariantDialog by mutableStateOf(onSurfaceVariantDialog, structuralEqualityPolicy()) + var onSurfaceSecondary by mutableStateOf(onSurfaceSecondary, structuralEqualityPolicy()) internal set var onSurfaceVariantSummary by mutableStateOf(onSurfaceVariantSummary, structuralEqualityPolicy()) internal set @@ -233,7 +233,7 @@ class Colors( surface: Color = this.surface, onSurface: Color = this.onSurface, surfaceVariant: Color = this.surfaceVariant, - onSurfaceVariantDialog: Color = this.onSurfaceVariantDialog, + onSurfaceSecondary: Color = this.onSurfaceSecondary, onSurfaceVariantSummary: Color = this.onSurfaceVariantSummary, onSurfaceVariantActions: Color = this.onSurfaceVariantActions, disabledOnSurface: Color = this.disabledOnSurface, @@ -280,7 +280,7 @@ class Colors( surface, onSurface, surfaceVariant, - onSurfaceVariantDialog, + onSurfaceSecondary, onSurfaceVariantSummary, onSurfaceVariantActions, disabledOnSurface, @@ -330,9 +330,9 @@ fun lightColorScheme( surface: Color = Color.White, onSurface: Color = Color.Black, surfaceVariant: Color = Color.White, - onSurfaceVariantDialog: Color = Color(0xFF333333), - onSurfaceVariantSummary: Color = Color(0xFF666666), - onSurfaceVariantActions: Color = Color(0xFF999999), + onSurfaceSecondary: Color = Color(0xCC000000), + onSurfaceVariantSummary: Color = Color(0x99000000), + onSurfaceVariantActions: Color = Color(0x66000000), disabledOnSurface: Color = Color(0xFFB2B2B2), outline: Color = Color(0xFFD9D9D9), dividerLine: Color = Color(0xFFE0E0E0), @@ -377,7 +377,7 @@ fun lightColorScheme( surface, onSurface, surfaceVariant, - onSurfaceVariantDialog, + onSurfaceSecondary, onSurfaceVariantSummary, onSurfaceVariantActions, disabledOnSurface, @@ -424,11 +424,11 @@ fun darkColorScheme( onBackground: Color = Color(0xFFE8E8E8), onBackgroundVariant: Color = Color(0xFF787E96), surface: Color = Color(0xFF242424), - onSurface: Color = Color(0xFFE9E9E9), + onSurface: Color = Color(0xE6FFFFFF), surfaceVariant: Color = Color(0xFF181818), - onSurfaceVariantDialog: Color = Color(0xFFD2D2D2), - onSurfaceVariantSummary: Color = Color(0xFF929292), - onSurfaceVariantActions: Color = Color(0xFF7B7B7B), + onSurfaceSecondary: Color = Color(0xCCFFFFFF), + onSurfaceVariantSummary: Color = Color(0x80FFFFFF), + onSurfaceVariantActions: Color = Color(0x66FFFFFF), disabledOnSurface: Color = Color(0xFF666666), outline: Color = Color(0xFF404040), dividerLine: Color = Color(0xFF393939), @@ -473,7 +473,7 @@ fun darkColorScheme( surface, onSurface, surfaceVariant, - onSurfaceVariantDialog, + onSurfaceSecondary, onSurfaceVariantSummary, onSurfaceVariantActions, disabledOnSurface, @@ -522,7 +522,7 @@ internal fun Colors.updateColorsFrom(other: Colors) { surface = other.surface onSurface = other.onSurface surfaceVariant = other.surfaceVariant - onSurfaceVariantDialog = other.onSurfaceVariantDialog + onSurfaceSecondary = other.onSurfaceSecondary onSurfaceVariantSummary = other.onSurfaceVariantSummary onSurfaceVariantActions = other.onSurfaceVariantActions disabledOnSurface = other.disabledOnSurface diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/theme/MiuixTheme.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/theme/MiuixTheme.kt index 6e7b8573..63624663 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/theme/MiuixTheme.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/theme/MiuixTheme.kt @@ -10,31 +10,27 @@ import top.yukonga.miuix.kmp.utils.MiuixIndication /** * The default theme that provides color and text styles for the Miuix components. * - * @param colorScheme The color scheme for the Miuix components. + * @param colors The color scheme for the Miuix components. * @param textStyles The text styles for the Miuix components. * @param content The content of the Miuix theme. */ @Composable fun MiuixTheme( - colorScheme: Colors = MiuixTheme.colorScheme, + colors: Colors = MiuixTheme.colorScheme, textStyles: TextStyles = MiuixTheme.textStyles, content: @Composable () -> Unit ) { - val miuixColors = remember { colorScheme.copy() }.apply { updateColorsFrom(colorScheme) } - val miuixTextStyles = remember(colorScheme.onBackground) { - defaultTextStyles( - main = textStyles.main.copy(color = colorScheme.onBackground), - title = textStyles.title.copy(color = colorScheme.onBackground), - paragraph = textStyles.paragraph.copy(color = colorScheme.onBackground) - ) + val miuixColors = remember { colors.copy() }.apply { + updateColorsFrom(colors) } - val miuixRipple = remember(colorScheme.onBackground) { - MiuixIndication(backgroundColor = colorScheme.onBackground) + val miuixTextStyles = remember { textStyles } + val miuixIndication = remember(colors.onBackground) { + MiuixIndication(backgroundColor = colors.onBackground) } CompositionLocalProvider( LocalColors provides miuixColors, LocalTextStyles provides miuixTextStyles, - LocalIndication provides miuixRipple + LocalIndication provides miuixIndication ) { content() } diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/theme/TextStyles.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/theme/TextStyles.kt index fe3e68b2..ef6c41b7 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/theme/TextStyles.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/theme/TextStyles.kt @@ -13,22 +13,65 @@ import androidx.compose.ui.unit.sp * @param main The main text style. * @param title The title text style. * @param paragraph The paragraph text style. + * @param body1 dialog_message_text_size + * @param body2 preference_secondary_text_size, preference_right_text_size, spinner_text_size_integrated + * @param headline1 preference_normal_text_size, edit_text_font_size + * @param subtitle preference_category_text_size + * @param title1 action_bar_tab_expand_text_size + * @param title3 action_bar_tab_text_size + * @param title4 dialog_title_text_size */ @Immutable class TextStyles( val main: TextStyle, val title: TextStyle, - val paragraph: TextStyle + val paragraph: TextStyle, + val body1: TextStyle, + val body2: TextStyle, + val button: TextStyle, + val footnote1: TextStyle, + val footnote2: TextStyle, + val headline1: TextStyle, + val headline2: TextStyle, + val subtitle: TextStyle, + val title1: TextStyle, + val title2: TextStyle, + val title3: TextStyle, + val title4: TextStyle, ) fun defaultTextStyles( main: TextStyle = DefaultTextStyle, title: TextStyle = TitleTextStyle, - paragraph: TextStyle = ParagraphTextStyle + paragraph: TextStyle = ParagraphTextStyle, + body1: TextStyle = Body1, + body2: TextStyle = Body2, + button: TextStyle = Button, + footnote1: TextStyle = Footnote1, + footnote2: TextStyle = Footnote2, + headline1: TextStyle = Headline1, + headline2: TextStyle = Headline2, + subtitle: TextStyle = Subtitle, + title1: TextStyle = Title1, + title2: TextStyle = Title2, + title3: TextStyle = Title3, + title4: TextStyle = Title4 ): TextStyles = TextStyles( main = main, title = title, - paragraph = paragraph + paragraph = paragraph, + body1 = body1, + body2 = body2, + button = button, + footnote1 = footnote1, + footnote2 = footnote2, + headline1 = headline1, + headline2 = headline2, + subtitle = subtitle, + title1 = title1, + title2 = title2, + title3 = title3, + title4 = title4, ) private val DefaultTextStyle: TextStyle @@ -47,4 +90,64 @@ private val ParagraphTextStyle: TextStyle lineHeight = 1.2f.em ) +private val Body1: TextStyle + get() = TextStyle( + fontSize = 16.sp + ) + +private val Body2: TextStyle + get() = TextStyle( + fontSize = 14.sp + ) + +private val Button: TextStyle + get() = TextStyle( + fontSize = 17.sp + ) + +private val Footnote1: TextStyle + get() = TextStyle( + fontSize = 13.sp + ) + +private val Footnote2: TextStyle + get() = TextStyle( + fontSize = 11.sp + ) + +private val Headline1: TextStyle + get() = TextStyle( + fontSize = 17.sp + ) + +private val Headline2: TextStyle + get() = TextStyle( + fontSize = 16.sp + ) + +private val Subtitle: TextStyle + get() = TextStyle( + fontSize = 14.sp + ) + +private val Title1: TextStyle + get() = TextStyle( + fontSize = 32.sp + ) + +private val Title2: TextStyle + get() = TextStyle( + fontSize = 24.sp + ) + +private val Title3: TextStyle + get() = TextStyle( + fontSize = 20.sp + ) + +private val Title4: TextStyle + get() = TextStyle( + fontSize = 18.sp + ) + val LocalTextStyles = staticCompositionLocalOf { defaultTextStyles() } \ No newline at end of file diff --git a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/utils/MiuixIndication.kt b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/utils/MiuixIndication.kt index acbdd777..192b435c 100644 --- a/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/utils/MiuixIndication.kt +++ b/miuix/src/commonMain/kotlin/top/yukonga/miuix/kmp/utils/MiuixIndication.kt @@ -47,8 +47,7 @@ class MiuixIndication( private var pressedAnimation: Job? = null private var restingAnimation: Job? = null - private suspend fun updateStates() { - animatedAlpha.stop() + private fun updateStates() { var targetAlpha = 0.0f if (isHovered) targetAlpha += 0.06f if (isFocused) targetAlpha += 0.08f