Skip to content

Commit ab2803b

Browse files
Arinyadav1therajanmaurya
authored andcommitted
Implement New Figma Bottom App Bar
1 parent 5c6bb70 commit ab2803b

File tree

6 files changed

+126
-8
lines changed

6 files changed

+126
-8
lines changed

cmp-navigation/src/commonMain/composeResources/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@
2424
<string name="settings">Settings</string>
2525
<string name="about">About</string>
2626
<string name="offline_sync">Offline Sync</string>
27+
<string name="powered_by">Powered By</string>
28+
2729
</resources>

cmp-navigation/src/commonMain/kotlin/cmp/navigation/components/MifosBottomBar.kt

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,67 @@
99
*/
1010
package cmp.navigation.components
1111

12+
import androidx.compose.foundation.Image
1213
import androidx.compose.foundation.background
14+
import androidx.compose.foundation.layout.Arrangement
15+
import androidx.compose.foundation.layout.Box
16+
import androidx.compose.foundation.layout.Row
17+
import androidx.compose.foundation.layout.Spacer
1318
import androidx.compose.foundation.layout.WindowInsets
19+
import androidx.compose.foundation.layout.fillMaxSize
1420
import androidx.compose.foundation.layout.fillMaxWidth
21+
import androidx.compose.foundation.layout.height
22+
import androidx.compose.foundation.layout.padding
23+
import androidx.compose.foundation.layout.size
24+
import androidx.compose.foundation.layout.width
25+
import androidx.compose.foundation.shape.RoundedCornerShape
1526
import androidx.compose.material3.BottomAppBar
1627
import androidx.compose.material3.BottomAppBarDefaults
28+
import androidx.compose.material3.CardDefaults
29+
import androidx.compose.material3.ElevatedCard
30+
import androidx.compose.material3.MaterialTheme
31+
import androidx.compose.material.*
32+
import androidx.compose.material3.Surface
33+
import androidx.compose.material3.Text
1734
import androidx.compose.runtime.Composable
35+
import androidx.compose.ui.Alignment
1836
import androidx.compose.ui.Modifier
37+
import androidx.compose.ui.draw.clip
38+
import androidx.compose.ui.draw.drawBehind
39+
import androidx.compose.ui.draw.dropShadow
40+
import androidx.compose.ui.draw.rotate
41+
import androidx.compose.ui.draw.shadow
42+
import androidx.compose.ui.geometry.CornerRadius
43+
import androidx.compose.ui.geometry.Offset
44+
import androidx.compose.ui.geometry.Rect
45+
import androidx.compose.ui.geometry.Size
46+
import androidx.compose.ui.graphics.BlendMode
47+
import androidx.compose.ui.graphics.Brush
48+
import androidx.compose.ui.graphics.Color
49+
import androidx.compose.ui.graphics.ColorFilter
50+
import androidx.compose.ui.graphics.Paint
51+
import androidx.compose.ui.graphics.drawscope.Fill
52+
import androidx.compose.ui.graphics.drawscope.drawIntoCanvas
53+
import androidx.compose.ui.graphics.graphicsLayer
54+
import androidx.compose.ui.graphics.shadow.Shadow
55+
import androidx.compose.ui.graphics.toArgb
1956
import androidx.compose.ui.platform.testTag
57+
import androidx.compose.ui.unit.Dp
58+
import androidx.compose.ui.unit.DpOffset
2059
import androidx.compose.ui.unit.dp
2160
import cmp.navigation.authenticated.NavigationItem
61+
import com.mifos.core.designsystem.component.MifosCard
2262
import com.mifos.core.designsystem.component.MifosNavigationBarItem
2363
import com.mifos.core.designsystem.theme.AppColors
64+
import com.mifos.core.designsystem.theme.DesignToken
65+
import com.mifos.core.designsystem.theme.MifosTypography
66+
import core.designsystem.generated.resources.Res
67+
import core.designsystem.generated.resources.core_designsystem_app_title
68+
import org.jetbrains.compose.resources.painterResource
69+
import org.jetbrains.compose.resources.stringResource
70+
import org.jetbrains.compose.ui.tooling.preview.Preview
71+
import org.mifos.navigation.generated.resources.powered_by
72+
import org.mifos.navigation.generated.resources.topbarlogo
2473

2574
@Composable
2675
fun MifosBottomBar(
@@ -50,3 +99,63 @@ fun MifosBottomBar(
5099
}
51100
}
52101
}
102+
103+
@Composable
104+
fun MifosBottomBar(
105+
modifier: Modifier = Modifier,
106+
windowInsets: WindowInsets = BottomAppBarDefaults.windowInsets,
107+
) {
108+
Box(
109+
modifier = Modifier.dropShadow(
110+
shape = DesignToken.shapes.bottomSheet,
111+
shadow = Shadow(
112+
radius = 10.dp,
113+
spread = 5.dp,
114+
color = Color.Gray.copy(alpha = 0.40f),
115+
offset = DpOffset(x = 4.dp, 4.dp),
116+
),
117+
)
118+
) {
119+
BottomAppBar(
120+
windowInsets = windowInsets,
121+
modifier = modifier.fillMaxWidth().height(DesignToken.sizes.bottomAppBarHeight)
122+
.clip(
123+
DesignToken.shapes.bottomSheet,
124+
),
125+
containerColor = MaterialTheme.colorScheme.surfaceContainerLowest,
126+
) {
127+
Box(
128+
modifier.fillMaxSize().padding(DesignToken.padding.small),
129+
) {
130+
Row(
131+
modifier = modifier.fillMaxWidth(),
132+
horizontalArrangement = Arrangement.Center,
133+
verticalAlignment = Alignment.CenterVertically,
134+
) {
135+
Text(
136+
text = stringResource(org.mifos.navigation.generated.resources.Res.string.powered_by) +" ",
137+
style = MifosTypography.tag,
138+
color = MaterialTheme.colorScheme.primary,
139+
)
140+
141+
Image(
142+
painter = painterResource(org.mifos.navigation.generated.resources.Res.drawable.topbarlogo),
143+
contentDescription = null,
144+
colorFilter = ColorFilter.tint(
145+
MaterialTheme.colorScheme.primary,
146+
blendMode = BlendMode.SrcIn,
147+
),
148+
modifier = Modifier.size(DesignToken.sizes.iconMiny),
149+
)
150+
151+
Text(
152+
text = " " + stringResource(Res.string.core_designsystem_app_title),
153+
style = MifosTypography.tag,
154+
color = MaterialTheme.colorScheme.primary,
155+
)
156+
}
157+
}
158+
}
159+
160+
}
161+
}

cmp-navigation/src/commonMain/kotlin/cmp/navigation/components/MifosScaffold.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,18 @@ fun MifosScaffold(
8787
containerColor = containerColor,
8888
contentColor = contentColor,
8989
bottomBar = {
90-
AnimatedVisibility(
91-
visible = isNavigationBarVisible,
92-
enter = fadeIn() + slideInVertically(initialOffsetY = { it / 2 }),
93-
exit = fadeOut() + slideOutVertically(targetOffsetY = { it / 2 }),
94-
) {
95-
ScaffoldBottomAppBar(navigationData = requireNotNull(navigationData))
90+
if(isNavigationBarVisible){
91+
AnimatedVisibility(
92+
visible = isNavigationBarVisible,
93+
enter = fadeIn() + slideInVertically(initialOffsetY = { it / 2 }),
94+
exit = fadeOut() + slideOutVertically(targetOffsetY = { it / 2 }),
95+
) {
96+
ScaffoldBottomAppBar(navigationData = requireNotNull(navigationData))
97+
}
98+
}else{
99+
MifosBottomBar()
96100
}
101+
97102
},
98103
snackbarHost = {
99104
Box(modifier = Modifier.imePadding()) {

core/designsystem/src/commonMain/kotlin/com/mifos/core/designsystem/component/MifosScaffold.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ fun MifosScaffold(
5050
) {
5151
Scaffold(
5252
topBar = {},
53-
bottomBar = bottomBar,
53+
bottomBar = {},
5454
floatingActionButton = {
5555
floatingActionButtonContent?.let { content ->
5656
FloatingActionButton(

core/designsystem/src/commonMain/kotlin/com/mifos/core/designsystem/theme/DesignToken.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ data class AppSpacing(
8989
val medium: Dp = 12.dp,
9090
val large: Dp = 16.dp,
9191
val largeIncreased: Dp = 20.dp,
92+
val largeMediumIncreased: Dp = 24.dp,
9293
val extraLarge: Dp = 28.dp,
9394
val extraLargeIncreased: Dp = 32.dp,
9495
val extraExtraLarge: Dp = 48.dp,
@@ -308,6 +309,7 @@ data class AppSizes(
308309
val topBarStandardHeight: Dp = 40.dp,
309310
val logoSizeTopAppBar: Dp = 28.dp,
310311
val topAppBarHeight: Dp = 85.dp,
312+
val bottomAppBarHeight: Dp = 70.dp,
311313
)
312314

313315
/**

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ koin = "4.0.1-RC1"
128128
koinAnnotationsVersion = "1.4.0-RC4"
129129

130130
# CMP Libraries
131-
compose-plugin = "1.8.2"
131+
compose-plugin = "1.9.0"
132132
coil = "3.2.0"
133133
backHandlerVersion = "2.1.0"
134134
constraintLayout = "0.4.0"

0 commit comments

Comments
 (0)