1+ @file:OptIn(ExperimentalMaterial3ExpressiveApi ::class )
2+
13package com.dede.android_eggs.views.settings.compose.prefs
24
3- import androidx.compose.foundation.layout.padding
4- import androidx.compose.material3.Card
5- import androidx.compose.material3.CardDefaults
5+ import androidx.compose.foundation.layout.Box
6+ import androidx.compose.foundation.layout.size
7+ import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
68import androidx.compose.material3.Icon
9+ import androidx.compose.material3.IconButtonDefaults
710import androidx.compose.material3.MaterialTheme.colorScheme
11+ import androidx.compose.material3.Surface
812import androidx.compose.runtime.Composable
13+ import androidx.compose.runtime.Immutable
914import androidx.compose.runtime.LaunchedEffect
1015import androidx.compose.runtime.getValue
1116import androidx.compose.runtime.mutableStateOf
1217import androidx.compose.runtime.remember
1318import androidx.compose.runtime.setValue
19+ import androidx.compose.ui.Alignment
1420import androidx.compose.ui.Modifier
21+ import androidx.compose.ui.graphics.Color
1522import androidx.compose.ui.graphics.Shape
1623import androidx.compose.ui.graphics.vector.ImageVector
17- import androidx.compose.ui.unit.dp
1824import androidx.graphics.shapes.RoundedPolygon
1925import com.dede.android_eggs.views.settings.compose.basic.SettingPrefUtil
2026import com.dede.android_eggs.views.settings.compose.prefs.IconShapePrefUtil.toShapePlus
@@ -38,22 +44,42 @@ fun SettingPrefIcon(
3844 )
3945}
4046
47+ object SettingPrefIconDefaults {
48+ @Composable
49+ fun defaultColors () = SettingPrefIconColors (
50+ containerColor = colorScheme.secondaryContainer,
51+ contentColor = colorScheme.onSecondaryContainer,
52+ )
53+ }
54+
55+ @Immutable
56+ class SettingPrefIconColors (
57+ val containerColor : Color ,
58+ val contentColor : Color ,
59+ )
60+
4161@Composable
4262fun SettingPrefIcon (
4363 icon : ImageVector ,
4464 shape : Shape ,
4565 modifier : Modifier = Modifier ,
4666 contentDescription : String? = null,
67+ colors : SettingPrefIconColors = SettingPrefIconDefaults .defaultColors(),
4768) {
48- Card (
69+ Surface (
4970 modifier = modifier,
5071 shape = shape,
51- colors = CardDefaults .cardColors(containerColor = colorScheme.primaryContainer)
72+ color = colors.containerColor,
73+ contentColor = colors.contentColor,
5274 ) {
53- Icon (
54- imageVector = icon,
55- contentDescription = contentDescription,
56- modifier = Modifier .padding(6 .dp)
57- )
75+ Box (
76+ modifier = Modifier .size(IconButtonDefaults .smallContainerSize()),
77+ contentAlignment = Alignment .Center ,
78+ ) {
79+ Icon (
80+ imageVector = icon,
81+ contentDescription = contentDescription,
82+ )
83+ }
5884 }
5985}
0 commit comments