Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.unit.Dp
import com.zomato.sushi.compose.atoms.color.ColorSpec
import com.zomato.sushi.compose.atoms.color.SushiGradientColorData
import com.zomato.sushi.compose.atoms.color.asColorSpec
import com.zomato.sushi.compose.atoms.icon.SushiIconProps
import com.zomato.sushi.compose.atoms.text.TextTypeSpec
Expand Down Expand Up @@ -43,6 +44,7 @@ data class SushiButtonProps(
val fontColor: ColorSpec = SushiUnspecified.asColorSpec(),
val fontType: TextTypeSpec? = null,
val color: ColorSpec = SushiUnspecified.asColorSpec(),
val gradient: SushiGradientColorData? = null,
val borderColor: ColorSpec = SushiUnspecified.asColorSpec(),
val suffixIcon: SushiIconProps? = null,
val prefixIcon: SushiIconProps? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ import com.zomato.sushi.compose.atoms.color.ColorName
import com.zomato.sushi.compose.atoms.color.ColorSpec
import com.zomato.sushi.compose.atoms.color.ColorVariation
import com.zomato.sushi.compose.atoms.color.SushiColorData
import com.zomato.sushi.compose.atoms.color.toBrush
import com.zomato.sushi.compose.atoms.icon.SushiIcon
import com.zomato.sushi.compose.atoms.icon.SushiIconCodes
import com.zomato.sushi.compose.atoms.icon.SushiIconProps
Expand Down Expand Up @@ -143,7 +144,7 @@ private fun SushiTextImpl(
val prefixSpacing = props.prefixSpacing ?: SushiTextDefaults.prefixSpacing
val suffixSpacing = props.suffixSpacing ?: SushiTextDefaults.suffixSpacing
val fontSizeMultiplier = SushiTheme.fontSizeMultiplier
val textBrush = props.textBrush
val textBrush = props.textBrush ?: props.textGradient?.toBrush()

val underlineColor = (textDecoration
as? SushiTextDecoration.Underline)?.color?.takeIfSpecified() ?: textColor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.TextUnit
import com.zomato.sushi.compose.atoms.color.ColorSpec
import com.zomato.sushi.compose.atoms.color.SushiGradientColorData
import com.zomato.sushi.compose.atoms.color.asColorSpec
import com.zomato.sushi.compose.atoms.icon.SushiIconProps
import com.zomato.sushi.compose.foundation.SushiUnspecified
Expand Down Expand Up @@ -38,6 +39,7 @@ import com.zomato.sushi.compose.foundation.SushiUnspecified
* @property horizontalArrangement How to arrange content horizontally
* @property verticalAlignment How to align content vertically
* @property textBrush Optional brush for creating gradient or other effects on text
* @property textGradient Optional sushi gradient color data for creating gradient or other effects on text (takes priority over textBrush)
*
*/
@Immutable
Expand All @@ -61,7 +63,8 @@ data class SushiTextProps(
val suffixSpacing: Dp? = null,
val horizontalArrangement: Arrangement.Horizontal? = null,
val verticalAlignment: Alignment.Vertical? = null,
val textBrush: Brush? = null
val textBrush: Brush? = null,
val textGradient: SushiGradientColorData? = null
)

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package com.zomato.sushi.compose.components.scaffold

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.ScaffoldDefaults
import androidx.compose.material3.contentColorFor
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import com.zomato.sushi.compose.internal.SushiPreview

/**
* SushiScaffold composable: a Sushi wrapper for Material3 Scaffold using slot-based architecture.
* All parameters are passed as direct arguments to maximize Compose stability and recomposition performance.
*/
@Composable
fun SushiScaffold(
modifier: Modifier = Modifier,
topBar: @Composable () -> Unit = {},
bottomBar: @Composable () -> Unit = {},
containerColor: Color = MaterialTheme.colorScheme.background,
contentColor: Color = contentColorFor(containerColor),
contentWindowInsets: WindowInsets = ScaffoldDefaults.contentWindowInsets,
content: @Composable (PaddingValues) -> Unit
) {
Scaffold(
modifier = modifier,
topBar = topBar,
bottomBar = bottomBar,
containerColor = containerColor,
contentColor = contentColor,
contentWindowInsets = contentWindowInsets,
content = content
)
}

/**
* Preview for SushiScaffold.
*/
@SushiPreview
@Composable
fun SushiScaffoldPreview() {
SushiPreview {
SushiScaffold(
topBar = {
},
bottomBar = {
},
content = { padding ->
}
)
}
}