From e19c9837002bc0f5b2142783ac3d9477b3a66f9c Mon Sep 17 00:00:00 2001 From: jeongjaino Date: Mon, 30 Dec 2024 22:35:31 +0900 Subject: [PATCH] =?UTF-8?q?feature=20:=20=EB=AF=B8=EC=82=AC=EC=9A=A9=20?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=86=8C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designsystem/component/WSBottomSheet.kt | 67 ------ .../web/designsystem/component/WSDialog.kt | 147 ------------ .../designsystem/component/WSHomeTabRow.kt | 89 -------- .../web/designsystem/component/WSListItem.kt | 68 ------ .../web/designsystem/component/WSTextField.kt | 212 ------------------ .../web/designsystem/component/WSTopBar.kt | 66 ------ 6 files changed, 649 deletions(-) delete mode 100644 designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSBottomSheet.kt delete mode 100644 designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSDialog.kt delete mode 100644 designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSHomeTabRow.kt delete mode 100644 designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSListItem.kt delete mode 100644 designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSTextField.kt delete mode 100644 designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSTopBar.kt diff --git a/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSBottomSheet.kt b/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSBottomSheet.kt deleted file mode 100644 index 30151dc..0000000 --- a/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSBottomSheet.kt +++ /dev/null @@ -1,67 +0,0 @@ -package com.wespot.web.designsystem.component - -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.navigationBarsPadding -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.HorizontalDivider -import androidx.compose.material3.ModalBottomSheet -import androidx.compose.material3.SheetState -import androidx.compose.material3.Text -import androidx.compose.material3.rememberModalBottomSheetState -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.unit.dp -import com.wespot.web.designsystem.theme.StaticTypography -import com.wespot.web.designsystem.theme.WeSpotThemeManager - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -fun WSBottomSheet( - closeSheet: () -> Unit, - sheetState: SheetState = rememberModalBottomSheetState( - skipPartiallyExpanded = true, - ), - content: @Composable () -> Unit, -) { - ModalBottomSheet( - onDismissRequest = closeSheet, - sheetState = sheetState, - shape = RoundedCornerShape(topStart = 25.dp, topEnd = 25.dp), - containerColor = WeSpotThemeManager.colors.bottomSheetColor, - dragHandle = null, - modifier = Modifier.navigationBarsPadding(), - ) { - content.invoke() - } -} - -@Composable -fun BottomSheetText( - text: String, - showDivider: Boolean = true, - onClick: () -> Unit, -) { - Text( - modifier = Modifier - .fillMaxWidth() - .clickable { onClick() } - .padding(16.dp), - text = text, - style = StaticTypography().body4, - color = Color(0xFFF7F7F8), - textAlign = TextAlign.Center, - ) - - if (showDivider) { - HorizontalDivider( - modifier = Modifier.fillMaxWidth(), - thickness = 1.dp, - color = Color(0xFF4F5157), - ) - } -} diff --git a/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSDialog.kt b/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSDialog.kt deleted file mode 100644 index d7432d4..0000000 --- a/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSDialog.kt +++ /dev/null @@ -1,147 +0,0 @@ -package com.wespot.web.designsystem.component - -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.unit.dp -import androidx.compose.ui.window.Dialog -import com.wespot.web.designsystem.theme.StaticTypography -import com.wespot.web.designsystem.theme.WeSpotThemeManager - -@Composable -fun WSDialog( - dialogType: WSDialogType = WSDialogType.TwoButton, - title: String, - subTitle: String = "", - okButtonText: String = "", - cancelButtonText: String = "", - textFieldText: String = "", - okButtonClick: () -> Unit = {}, - cancelButtonClick: () -> Unit = {}, - onTextFieldTextChanged: (String) -> Unit = {}, - onDismissRequest: () -> Unit, -) { - Dialog(onDismissRequest = onDismissRequest) { - Column( - modifier = Modifier - .clip(WeSpotThemeManager.shapes.medium) - .background(WeSpotThemeManager.colors.modalColor) - .padding(top = 32.dp, start = 20.dp, end = 20.dp, bottom = 20.dp), - verticalArrangement = Arrangement.spacedBy(20.dp), - ) { - WSDialogContent(title = title, subTitle = subTitle) - - when (dialogType) { - is WSDialogType.TwoButton -> { - WSDialogTwoButton( - okButtonText = okButtonText, - cancelButtonText = cancelButtonText, - okButtonClick = okButtonClick, - cancelButtonClick = cancelButtonClick, - ) - } - - is WSDialogType.OneButton -> { - WSButton( - text = okButtonText, - onClick = okButtonClick, - buttonType = WSButtonType.Primary, - paddingValues = PaddingValues(0.dp), - content = { it() }, - ) - } - - is WSDialogType.TextField -> { - WSTextField( - value = textFieldText, - onValueChange = onTextFieldTextChanged, - textFieldType = WsTextFieldType.Normal, - placeholder = "", - ) - - WSButton( - text = okButtonText, - onClick = okButtonClick, - buttonType = WSButtonType.Primary, - paddingValues = PaddingValues(0.dp), - content = { it() }, - ) - } - } - } - } -} - -@Composable -private fun WSDialogContent( - title: String, - subTitle: String, -) { - Column( - verticalArrangement = Arrangement.spacedBy(8.dp), - ) { - Text( - text = title, - style = StaticTypography().header1, - color = WeSpotThemeManager.colors.txtTitleColor, - ) - - if (subTitle.isNotEmpty()) { - Text( - text = subTitle, - style = StaticTypography().body6, - color = WeSpotThemeManager.colors.txtSubColor, - ) - } - } -} - -@Composable -private fun WSDialogTwoButton( - okButtonText: String, - cancelButtonText: String, - okButtonClick: () -> Unit, - cancelButtonClick: () -> Unit, -) { - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.spacedBy(8.dp), - ) { - Box(modifier = Modifier.weight(1f)) { - WSButton( - onClick = cancelButtonClick, - buttonType = WSButtonType.Secondary, - text = cancelButtonText, - paddingValues = PaddingValues(0.dp), - ) { - it() - } - } - - Box(modifier = Modifier.weight(1f)) { - WSButton( - onClick = okButtonClick, - buttonType = WSButtonType.Primary, - text = okButtonText, - paddingValues = PaddingValues(0.dp), - ) { - it() - } - } - } -} - -sealed interface WSDialogType { - data object TwoButton : WSDialogType - data object OneButton : WSDialogType - data object TextField : WSDialogType -} diff --git a/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSHomeTabRow.kt b/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSHomeTabRow.kt deleted file mode 100644 index 6af5027..0000000 --- a/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSHomeTabRow.kt +++ /dev/null @@ -1,89 +0,0 @@ -package com.wespot.web.designsystem.component - -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.padding -import androidx.compose.material.ripple.RippleAlpha -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.HorizontalDivider -import androidx.compose.material3.LocalRippleConfiguration -import androidx.compose.material3.RippleConfiguration -import androidx.compose.material3.Tab -import androidx.compose.material3.TabRow -import androidx.compose.material3.TabRowDefaults -import androidx.compose.material3.TabRowDefaults.tabIndicatorOffset -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.unit.dp -import com.wespot.web.designsystem.theme.StaticTypography -import com.wespot.web.designsystem.theme.WeSpotThemeManager -import kotlinx.collections.immutable.ImmutableList - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -fun WSHomeTabRow( - selectedTabIndex: Int, - tabList: ImmutableList, - onTabSelected: (Int) -> Unit, -) { - val paddingModifier = when (selectedTabIndex) { - 0 -> Modifier.padding(start = 20.dp) - 1 -> Modifier.padding(end = 20.dp) - else -> Modifier - } - - TabRow( - selectedTabIndex = selectedTabIndex, - containerColor = WeSpotThemeManager.colors.backgroundColor, - contentColor = WeSpotThemeManager.colors.disableIcnColor, - indicator = { tabPositions -> - TabRowDefaults.SecondaryIndicator( - modifier = Modifier - .tabIndicatorOffset(tabPositions[selectedTabIndex]) - .then(paddingModifier), - color = WeSpotThemeManager.colors.abledTxtColor, - ) - }, - divider = { - HorizontalDivider(color = WeSpotThemeManager.colors.tertiaryBtnColor) - }, - ) { - tabList.forEachIndexed { index, tab -> - val selected = selectedTabIndex == index - CompositionLocalProvider(LocalRippleConfiguration provides MyRippleConfiguration) { - Tab( - selected = selected, - onClick = { onTabSelected(index) }, - modifier = Modifier - .padding(vertical = 11.dp), - ) { - Text( - text = tab, - style = StaticTypography().body3, - color = if (selected) { - WeSpotThemeManager.colors.abledTxtColor - } else { - WeSpotThemeManager.colors.disableIcnColor - }, - modifier = Modifier.padding( - if (index == 0) { - PaddingValues(start = 20.dp) - } else { - PaddingValues(end = 20.dp) - }, - ), - ) - } - } - } - } -} - -@OptIn(ExperimentalMaterial3Api::class) -internal val MyRippleConfiguration = - RippleConfiguration( - color = Color.Unspecified, - rippleAlpha = RippleAlpha(0.0f, 0.0f, 0.0f, 0.0f) - ) diff --git a/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSListItem.kt b/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSListItem.kt deleted file mode 100644 index 6f350a7..0000000 --- a/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSListItem.kt +++ /dev/null @@ -1,68 +0,0 @@ -package com.wespot.web.designsystem.component - -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 -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.wrapContentHeight -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.unit.dp -import com.wespot.web.designsystem.theme.StaticTypography -import com.wespot.web.designsystem.theme.WeSpotThemeManager - -@Composable -fun WSListItem( - title: String, - subTitle: String, - selected: Boolean, - isMultiLine: Boolean = false, - onClick: () -> Unit = { }, -) { - Box( - modifier = Modifier - .fillMaxWidth() - .wrapContentHeight() - .padding(vertical = 8.dp) - .clip(WeSpotThemeManager.shapes.medium) - .border( - width = 1.dp, - color = if (selected) { - WeSpotThemeManager.colors.primaryColor - } else { - WeSpotThemeManager.colors.cardBackgroundColor - }, - shape = WeSpotThemeManager.shapes.medium, - ) - .background(WeSpotThemeManager.colors.cardBackgroundColor) - .clickable { onClick.invoke() }, - ) { - Column( - modifier = Modifier.padding(horizontal = 24.dp, vertical = 16.dp), - verticalArrangement = Arrangement.spacedBy(4.dp), - ) { - Text( - text = title, - style = StaticTypography().body2, - color = WeSpotThemeManager.colors.txtTitleColor, - maxLines = if (isMultiLine) Int.MAX_VALUE else 1, - overflow = if (isMultiLine) TextOverflow.Clip else TextOverflow.Ellipsis, - ) - - Text( - text = subTitle, - style = StaticTypography().body5, - color = WeSpotThemeManager.colors.txtSubColor, - maxLines = if (isMultiLine) Int.MAX_VALUE else 1, - overflow = if (isMultiLine) TextOverflow.Clip else TextOverflow.Ellipsis, - ) - } - } -} diff --git a/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSTextField.kt b/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSTextField.kt deleted file mode 100644 index ca15b88..0000000 --- a/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSTextField.kt +++ /dev/null @@ -1,212 +0,0 @@ -package com.wespot.web.designsystem.component - -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.heightIn -import androidx.compose.foundation.layout.wrapContentSize -import androidx.compose.foundation.text.BasicTextField -import androidx.compose.foundation.text.KeyboardActions -import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.foundation.text.selection.LocalTextSelectionColors -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon -import androidx.compose.material3.OutlinedTextFieldDefaults -import androidx.compose.material3.Text -import androidx.compose.material3.TextFieldDefaults -import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.State -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberUpdatedState -import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier -import androidx.compose.ui.focus.FocusRequester -import androidx.compose.ui.focus.FocusState -import androidx.compose.ui.focus.focusRequester -import androidx.compose.ui.focus.onFocusChanged -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.SolidColor -import androidx.compose.ui.graphics.painter.Painter -import androidx.compose.ui.text.input.TextFieldValue -import androidx.compose.ui.text.input.VisualTransformation -import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.dp -import com.wespot.web.designsystem.theme.Gray400 -import com.wespot.web.designsystem.theme.Primary400 -import com.wespot.web.designsystem.theme.StaticTypography -import com.wespot.web.designsystem.theme.WeSpotThemeManager -import org.jetbrains.compose.resources.painterResource -import wespot_web.designsystem.generated.resources.Res -import wespot_web.designsystem.generated.resources.search - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -fun WSTextField( - value: String, - onValueChange: (String) -> Unit, - placeholder: String, - isError: Boolean = false, - singleLine: Boolean = false, - readOnly: Boolean = false, - focusRequester: FocusRequester = remember { FocusRequester() }, - onFocusChanged: (FocusState) -> Unit = { }, - keyBoardOption: KeyboardOptions = KeyboardOptions.Default, - keyboardActions: KeyboardActions = KeyboardActions.Default, - textFieldType: WsTextFieldType = WsTextFieldType.Normal, -) { - var textFieldValueState by remember { mutableStateOf(TextFieldValue(text = value)) } - val interactionSource = remember { MutableInteractionSource() } - LaunchedEffect(value) { - if (value != textFieldValueState.text) { - textFieldValueState = textFieldValueState.copy(text = value) - } - } - - val colors = OutlinedTextFieldDefaults.colors( - focusedContainerColor = WeSpotThemeManager.colors.cardBackgroundColor, - unfocusedContainerColor = WeSpotThemeManager.colors.cardBackgroundColor, - focusedPlaceholderColor = WeSpotThemeManager.colors.disableBtnTxtColor, - unfocusedPlaceholderColor = WeSpotThemeManager.colors.disableBtnTxtColor, - focusedBorderColor = if (textFieldType == WsTextFieldType.Message) { - WeSpotThemeManager.colors.cardBackgroundColor - } else { - Primary400 - }, - unfocusedBorderColor = WeSpotThemeManager.colors.cardBackgroundColor, - errorBorderColor = WeSpotThemeManager.colors.dangerColor, - errorContainerColor = WeSpotThemeManager.colors.cardBackgroundColor, - errorPlaceholderColor = WeSpotThemeManager.colors.disableBtnTxtColor, - ) - - Box(modifier = Modifier.wrapContentSize()) { - CompositionLocalProvider(LocalTextSelectionColors provides colors.textSelectionColors) { - BasicTextField( - value = textFieldValueState, - modifier = Modifier - .heightIn( - min = textFieldType.minHeight(), - max = textFieldType.maxHeight(), - ) - .fillMaxWidth() - .focusRequester(focusRequester) - .onFocusChanged { focusState -> onFocusChanged(focusState) }, - onValueChange = { newTextFieldValue -> - textFieldValueState = newTextFieldValue - onValueChange(newTextFieldValue.text) - }, - enabled = textFieldType.isEnabled(), - readOnly = readOnly, - textStyle = StaticTypography().body4.copy( - color = WeSpotThemeManager.colors.txtTitleColor, - ), - cursorBrush = SolidColor(cursorColor(isError).value), - visualTransformation = VisualTransformation.None, - keyboardOptions = keyBoardOption, - keyboardActions = keyboardActions, - interactionSource = interactionSource, - singleLine = singleLine, - decorationBox = @Composable { innerTextField -> - OutlinedTextFieldDefaults.DecorationBox( - value = textFieldValueState.text, - visualTransformation = VisualTransformation.None, - innerTextField = innerTextField, - placeholder = { - Text( - text = placeholder, - style = StaticTypography().body4, - color = Gray400, - ) - }, - leadingIcon = if (textFieldType.leadingIcon() != null) { - { - Icon( - painter = textFieldType.leadingIcon()!!, - contentDescription = "", - ) - } - } else { - null - }, - trailingIcon = if (textFieldType.trailingIcon() != null) { - { - Icon( - painter = textFieldType.trailingIcon()!!, - contentDescription = "lock.xml", - ) - } - } else { - null - }, - singleLine = singleLine, - enabled = textFieldType.isEnabled(), - isError = isError, - interactionSource = interactionSource, - colors = colors, - container = { - OutlinedTextFieldDefaults.ContainerBox( - textFieldType.isEnabled(), - isError, - interactionSource, - colors, - WeSpotThemeManager.shapes.small, - focusedBorderThickness = 1.dp, - ) - }, - ) - }, - ) - } - } -} - -@Composable -private fun cursorColor(isError: Boolean): State { - val color = TextFieldDefaults.colors() - return rememberUpdatedState(if (isError) color.errorCursorColor else color.cursorColor) -} - -sealed interface WsTextFieldType { - @Composable - fun trailingIcon(): Painter? - - @Composable - fun leadingIcon(): Painter? - - fun minHeight(): Dp = Dp.Unspecified - - fun maxHeight(): Dp = Dp.Unspecified - - fun isEnabled(): Boolean = true - - data object Normal : WsTextFieldType { - @Composable - override fun trailingIcon() = null - - @Composable - override fun leadingIcon() = null - } - - data object Search : WsTextFieldType { - @Composable - override fun trailingIcon() = null - - @Composable - override fun leadingIcon() = painterResource(Res.drawable.search) - } - - data object Message : WsTextFieldType { - @Composable - override fun trailingIcon() = null - - @Composable - override fun leadingIcon() = null - - override fun minHeight() = 170.dp - - override fun maxHeight() = 228.dp - } -} diff --git a/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSTopBar.kt b/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSTopBar.kt deleted file mode 100644 index ec19020..0000000 --- a/designsystem/src/commonMain/kotlin/com/wespot/web/designsystem/component/WSTopBar.kt +++ /dev/null @@ -1,66 +0,0 @@ -package com.wespot.web.designsystem.component - -import androidx.compose.foundation.layout.RowScope -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.CenterAlignedTopAppBar -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton -import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBarDefaults -import androidx.compose.material3.TopAppBarScrollBehavior -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.unit.dp -import com.wespot.web.designsystem.theme.Gray400 -import com.wespot.web.designsystem.theme.StaticTypography -import com.wespot.web.designsystem.theme.WeSpotThemeManager -import org.jetbrains.compose.resources.painterResource -import wespot_web.designsystem.generated.resources.Res -import wespot_web.designsystem.generated.resources.left_arrow - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -fun WSTopBar( - title: String, - navigation: @Composable () -> Unit = {}, - canNavigateBack: Boolean = false, - navigateUp: () -> Unit = {}, - action: @Composable RowScope.(textStyle: TextStyle) -> Unit = { }, - scrollBehavior: TopAppBarScrollBehavior? = null, -) { - CenterAlignedTopAppBar( - title = { - Text( - text = title, - style = StaticTypography().header2, - color = WeSpotThemeManager.colors.txtTitleColor, - ) - }, - navigationIcon = { - if (canNavigateBack) { - IconButton( - modifier = Modifier.padding(start = 4.dp), - onClick = { navigateUp.invoke() }, - ) { - Icon( - painter = painterResource(Res.drawable.left_arrow), - contentDescription = "back_icon", - ) - } - } else { - navigation() - } - }, - actions = { - action(StaticTypography().body4) - }, - scrollBehavior = scrollBehavior, - colors = TopAppBarDefaults.topAppBarColors( - containerColor = WeSpotThemeManager.colors.backgroundColor, - navigationIconContentColor = Gray400, - actionIconContentColor = Gray400, - ), - ) -}