diff --git a/sdds-core/uikit-compose/src/main/kotlin/com/sdds/compose/uikit/graphics/Blur.kt b/sdds-core/uikit-compose/src/main/kotlin/com/sdds/compose/uikit/graphics/Blur.kt index 000fcbb0f3..f15607e8df 100644 --- a/sdds-core/uikit-compose/src/main/kotlin/com/sdds/compose/uikit/graphics/Blur.kt +++ b/sdds-core/uikit-compose/src/main/kotlin/com/sdds/compose/uikit/graphics/Blur.kt @@ -62,6 +62,11 @@ interface BlurStyle { */ val tint: Color + /** + * Кисть размытия. Если не null, то приоритетнее [tint] + */ + val tintBrush: Brush? + /** * Интенсивность шума для имитации матового эффекта */ @@ -86,6 +91,8 @@ interface BlurStyle { * @param tint цветовой оттенок, накладываемый поверх блюра * @param noiseFactor интенсивность шума для имитации матового эффекта * @param fallbackBackground фон, используемый при отсутствии blur + * @param tintBrush кисть для цветового оттенка, накладываемый поверх блюра. + * Если не null, то приоритетнее [tint] */ fun create( shape: Shape = RectangleShape, @@ -93,12 +100,14 @@ interface BlurStyle { tint: Color = Color.Unspecified, noiseFactor: Float = 0f, fallbackBackground: Brush = FallbackBackground, + tintBrush: Brush? = null, ): BlurStyle = BlurStyleImpl( shape = shape, blurRadius = blurRadius, tint = tint, noiseFactor = noiseFactor, fallbackBackground = fallbackBackground, + tintBrush = tintBrush, ) } } @@ -121,6 +130,8 @@ fun rememberBlurState(): BlurState { * @param blurRadius радиус размытия * @param tint цветовой оттенок, накладываемый поверх блюра * @param fallbackBackground фон, используемый при отсутствии blur + * @param tintBrush кисть для цветового оттенка, накладываемый поверх блюра. + * Если не null, то приоритетнее [tint] */ @Composable fun rememberBlurStyle( @@ -128,6 +139,7 @@ fun rememberBlurStyle( blurRadius: Dp = 20.dp, tint: Color = Color.Unspecified, fallbackBackground: Brush = FallbackBackground, + tintBrush: Brush? = null, ): BlurStyle { return remember( shape, @@ -140,6 +152,7 @@ fun rememberBlurStyle( blurRadius = blurRadius, tint = tint, fallbackBackground = fallbackBackground, + tintBrush = tintBrush, ) } } diff --git a/sdds-core/uikit-compose/src/main/kotlin/com/sdds/compose/uikit/internal/common/Blur.kt b/sdds-core/uikit-compose/src/main/kotlin/com/sdds/compose/uikit/internal/common/Blur.kt index 705a381ef0..3895c7183c 100644 --- a/sdds-core/uikit-compose/src/main/kotlin/com/sdds/compose/uikit/internal/common/Blur.kt +++ b/sdds-core/uikit-compose/src/main/kotlin/com/sdds/compose/uikit/internal/common/Blur.kt @@ -37,6 +37,7 @@ internal data class BlurStyleImpl( override val tint: Color = Color.Unspecified, override val noiseFactor: Float = 0f, override val fallbackBackground: Brush = FallbackBackground, + override val tintBrush: Brush? = null, ) : BlurStyle internal class HazeBlurState(val hazeState: HazeState) : BlurState @@ -81,7 +82,9 @@ internal fun Modifier.applyBackgroundBlur( private fun BlurStyle.toHazeStyle(): HazeBlurStyle = HazeBlurStyle( - colorEffect = HazeColorEffect.tint(tint), + colorEffect = tintBrush?.let { + HazeColorEffect.tint(it) + } ?: HazeColorEffect.tint(tint), blurRadius = blurRadius, noiseFactor = noiseFactor, fallbackColorEffect = HazeColorEffect.tint(fallbackBackground), diff --git a/third-party/sdds-haze/haze/src/commonMain/kotlin/com/sdds/haze/blur/BlurVisualEffect.kt b/third-party/sdds-haze/haze/src/commonMain/kotlin/com/sdds/haze/blur/BlurVisualEffect.kt index a0a53738c4..fd83a8b406 100644 --- a/third-party/sdds-haze/haze/src/commonMain/kotlin/com/sdds/haze/blur/BlurVisualEffect.kt +++ b/third-party/sdds-haze/haze/src/commonMain/kotlin/com/sdds/haze/blur/BlurVisualEffect.kt @@ -8,6 +8,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.draw.BlurredEdgeTreatment import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.geometry.isUnspecified import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Outline @@ -80,7 +81,7 @@ public class BlurVisualEffect : VisualEffect { private fun VisualEffectContext.createClipPathIfNeeded(): Path? { val clipShape = shape - if (clipShape === RectangleShape) return null + if (clipShape === RectangleShape || size.isUnspecified) return null val outline = clipShape.createOutline( size = size, diff --git a/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSIconHasDisclosureDisclosureText_dark.png b/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSIconHasDisclosureDisclosureText_dark.png index 63aaff53ea..5549925c34 100644 Binary files a/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSIconHasDisclosureDisclosureText_dark.png and b/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSIconHasDisclosureDisclosureText_dark.png differ diff --git a/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSIconHasDisclosureDisclosureText_light.png b/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSIconHasDisclosureDisclosureText_light.png index d7f1ad3255..317c953f1f 100644 Binary files a/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSIconHasDisclosureDisclosureText_light.png and b/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSIconHasDisclosureDisclosureText_light.png differ diff --git a/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSSubtitleHasDisclosure_dark.png b/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSSubtitleHasDisclosure_dark.png index a0d34a3f7f..5d31ac578b 100644 Binary files a/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSSubtitleHasDisclosure_dark.png and b/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSSubtitleHasDisclosure_dark.png differ diff --git a/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSSubtitleHasDisclosure_light.png b/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSSubtitleHasDisclosure_light.png index 6e9d0137f7..d1f99fcb4b 100644 Binary files a/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSSubtitleHasDisclosure_light.png and b/tokens/plasma.homeds.compose/screenshots-compose/testCellSizeSSubtitleHasDisclosure_light.png differ diff --git a/tokens/plasma.homeds.compose/src/main/kotlin/com/sdds/plasma/homeds/styles/cell/CellStyles.kt b/tokens/plasma.homeds.compose/src/main/kotlin/com/sdds/plasma/homeds/styles/cell/CellStyles.kt index 685194587a..01d6a08288 100644 --- a/tokens/plasma.homeds.compose/src/main/kotlin/com/sdds/plasma/homeds/styles/cell/CellStyles.kt +++ b/tokens/plasma.homeds.compose/src/main/kotlin/com/sdds/plasma/homeds/styles/cell/CellStyles.kt @@ -149,7 +149,7 @@ public val Cell.S: WrapperCellS .titleStyle(PlasmaHomeDsTheme.typography.bodySNormal) .subtitleStyle(PlasmaHomeDsTheme.typography.bodyXsNormal) .disclosureTextStyle(PlasmaHomeDsTheme.typography.bodyXsNormal) - .disclosureIcon(com.sdds.icons.R.drawable.ic_disclosure_right_outline_16) + .disclosureIcon(com.sdds.icons.R.drawable.ic_disclosure_right_outline_24) .dimensions { contentPaddingStart(6.0.dp) contentPaddingEnd(6.0.dp) diff --git a/tokens/plasma.homeds.compose/src/main/kotlin/com/sdds/plasma/homeds/tokens/ColorTokens.kt b/tokens/plasma.homeds.compose/src/main/kotlin/com/sdds/plasma/homeds/tokens/ColorTokens.kt index 037116526a..e6dcc31f7e 100644 --- a/tokens/plasma.homeds.compose/src/main/kotlin/com/sdds/plasma/homeds/tokens/ColorTokens.kt +++ b/tokens/plasma.homeds.compose/src/main/kotlin/com/sdds/plasma/homeds/tokens/ColorTokens.kt @@ -1075,7 +1075,7 @@ public object DarkColorTokens { /** * Основной прозрачный фон поверхности/контрола */ - public val SurfaceDefaultTransparentPrimary: Color = Color(0x0FFFFFFF) + public val SurfaceDefaultTransparentPrimary: Color = Color(0x0FF9F9F9) /** * Основной прозрачный фон поверхности/контрола