diff --git a/examples/jetsnack/README.md b/examples/jetsnack/README.md index 872969974a..a6ea26c1c0 100755 --- a/examples/jetsnack/README.md +++ b/examples/jetsnack/README.md @@ -6,7 +6,7 @@ Check it out: [![Static Badge](https://img.shields.io/badge/online%20demo%20%F0%9F%9A%80-6b57ff?style=for-the-badge)](https://zal.im/wasm/jetsnack). -![](screenshots/jetsnack.png) +![](screenshots/jetsnack_mpp.png) > **Note:** > To learn more about the Jetsnack application, visit the [Jetsnack README.md](https://github.com/android/compose-samples/tree/main/Jetsnack). diff --git a/examples/jetsnack/build.gradle.kts b/examples/jetsnack/build.gradle.kts index e68882e7fe..cf226a956a 100644 --- a/examples/jetsnack/build.gradle.kts +++ b/examples/jetsnack/build.gradle.kts @@ -8,16 +8,6 @@ allprojects { google() mavenCentral() } - - afterEvaluate { - extensions.findByType(ComposeExtension::class.java)?.apply { - val kotlinGeneration = project.property("kotlin.generation") - val composeCompilerVersion = project.property("compose.compiler.version.$kotlinGeneration") as String - kotlinCompilerPlugin.set(composeCompilerVersion) - val kotlinVersion = project.property("kotlin.version.$kotlinGeneration") as String - kotlinCompilerPluginArgs.add("suppressKotlinVersionCompatibilityCheck=$kotlinVersion") - } - } } plugins { diff --git a/examples/jetsnack/common/src/androidMain/kotlin/com/example/jetsnack/ui/snackdetail/jetSnackNavigationBarsPadding.kt b/examples/jetsnack/common/src/androidMain/kotlin/com/example/jetsnack/ui/snackdetail/jetSnackNavigationBarsPadding.kt index c2a4b7224f..de2c3375fe 100644 --- a/examples/jetsnack/common/src/androidMain/kotlin/com/example/jetsnack/ui/snackdetail/jetSnackNavigationBarsPadding.kt +++ b/examples/jetsnack/common/src/androidMain/kotlin/com/example/jetsnack/ui/snackdetail/jetSnackNavigationBarsPadding.kt @@ -3,8 +3,12 @@ package com.example.jetsnack.ui.snackdetail import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.systemBarsPadding +import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +@Composable actual fun Modifier.jetSnackNavigationBarsPadding(): Modifier = this.navigationBarsPadding() +@Composable actual fun Modifier.jetSnackStatusBarsPadding(): Modifier = this.statusBarsPadding() +@Composable actual fun Modifier.jetSnackSystemBarsPadding(): Modifier = this.systemBarsPadding() \ No newline at end of file diff --git a/examples/jetsnack/common/src/commonMain/kotlin/com/example/jetsnack/ui/home/Feed.kt b/examples/jetsnack/common/src/commonMain/kotlin/com/example/jetsnack/ui/home/Feed.kt index 14db005d06..65669ed650 100644 --- a/examples/jetsnack/common/src/commonMain/kotlin/com/example/jetsnack/ui/home/Feed.kt +++ b/examples/jetsnack/common/src/commonMain/kotlin/com/example/jetsnack/ui/home/Feed.kt @@ -26,6 +26,7 @@ import androidx.compose.animation.slideInVertically import androidx.compose.animation.slideOutVertically //import androidx.compose.desktop.ui.tooling.preview.Preview import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize @@ -48,6 +49,7 @@ import com.example.jetsnack.ui.components.FilterBar import com.example.jetsnack.ui.components.JetsnackDivider import com.example.jetsnack.ui.components.JetsnackSurface import com.example.jetsnack.ui.components.SnackCollection +import com.example.jetsnack.ui.snackdetail.jetSnackStatusBarsPadding import com.example.jetsnack.ui.theme.JetsnackTheme @Composable @@ -74,9 +76,9 @@ private fun Feed( ) { JetsnackSurface(modifier = modifier.fillMaxSize()) { - Box { + Column { + DestinationBar(modifier = Modifier.jetSnackStatusBarsPadding()) SnackCollectionList(snackCollections, filters, onSnackClick) - DestinationBar() } } } @@ -94,9 +96,6 @@ private fun SnackCollectionList( LazyColumn { item { - Spacer( - Modifier.windowInsetsTopHeight(snackCollectionListItemWindowInsets()) - ) FilterBar(filters, onShowFilters = { filtersVisible = true }) } itemsIndexed(snackCollections) { index, snackCollection -> diff --git a/examples/jetsnack/common/src/commonMain/kotlin/com/example/jetsnack/ui/snackdetail/SnackDetail.kt b/examples/jetsnack/common/src/commonMain/kotlin/com/example/jetsnack/ui/snackdetail/SnackDetail.kt index 9dca0c5776..122fe679f1 100644 --- a/examples/jetsnack/common/src/commonMain/kotlin/com/example/jetsnack/ui/snackdetail/SnackDetail.kt +++ b/examples/jetsnack/common/src/commonMain/kotlin/com/example/jetsnack/ui/snackdetail/SnackDetail.kt @@ -389,8 +389,11 @@ private fun CartBottomBar(modifier: Modifier = Modifier) { } } +@Composable expect fun Modifier.jetSnackNavigationBarsPadding(): Modifier +@Composable expect fun Modifier.jetSnackStatusBarsPadding(): Modifier +@Composable expect fun Modifier.jetSnackSystemBarsPadding(): Modifier //@Preview diff --git a/examples/jetsnack/common/src/nonAndroidMain/kotlin/com/example/jetsnack/ui/home/snackCollectionListItemWindowInsets.kt b/examples/jetsnack/common/src/nonAndroidMain/kotlin/com/example/jetsnack/ui/home/snackCollectionListItemWindowInsets.kt index 0db2843f9b..ea94ef244e 100644 --- a/examples/jetsnack/common/src/nonAndroidMain/kotlin/com/example/jetsnack/ui/home/snackCollectionListItemWindowInsets.kt +++ b/examples/jetsnack/common/src/nonAndroidMain/kotlin/com/example/jetsnack/ui/home/snackCollectionListItemWindowInsets.kt @@ -1,12 +1,12 @@ package com.example.jetsnack.ui.home import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.add +import androidx.compose.foundation.layout.statusBars import androidx.compose.runtime.Composable import androidx.compose.ui.unit.dp @Composable actual fun snackCollectionListItemWindowInsets(): WindowInsets { - // TODO: implement - // WindowInsets.statusBars.add(WindowInsets(top = 56.dp)) - return WindowInsets(top = 56.dp) + return WindowInsets.statusBars.add(WindowInsets(top = 56.dp)) } \ No newline at end of file diff --git a/examples/jetsnack/common/src/nonAndroidMain/kotlin/com/example/jetsnack/ui/snackdetail/jetSnackNavigationBarsPadding.kt b/examples/jetsnack/common/src/nonAndroidMain/kotlin/com/example/jetsnack/ui/snackdetail/jetSnackNavigationBarsPadding.kt index 4d61b581f0..62e5979e2d 100644 --- a/examples/jetsnack/common/src/nonAndroidMain/kotlin/com/example/jetsnack/ui/snackdetail/jetSnackNavigationBarsPadding.kt +++ b/examples/jetsnack/common/src/nonAndroidMain/kotlin/com/example/jetsnack/ui/snackdetail/jetSnackNavigationBarsPadding.kt @@ -1,11 +1,21 @@ package com.example.jetsnack.ui.snackdetail +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.navigationBars +import androidx.compose.foundation.layout.statusBars +import androidx.compose.foundation.layout.systemBars +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -actual fun Modifier.jetSnackNavigationBarsPadding(): Modifier = this -// .navigationBarsPadding() +@Composable +actual fun Modifier.jetSnackNavigationBarsPadding(): Modifier = + this.windowInsetsPadding(WindowInsets.navigationBars) -actual fun Modifier.jetSnackStatusBarsPadding(): Modifier = this -// statusBarsPadding() -actual fun Modifier.jetSnackSystemBarsPadding(): Modifier = this -// Modifier.systemBarsPadding() \ No newline at end of file +@Composable +actual fun Modifier.jetSnackStatusBarsPadding(): Modifier = + this.windowInsetsPadding(WindowInsets.statusBars) + +@Composable +actual fun Modifier.jetSnackSystemBarsPadding(): Modifier = + this.windowInsetsPadding(WindowInsets.systemBars) \ No newline at end of file diff --git a/examples/jetsnack/gradle.properties b/examples/jetsnack/gradle.properties index a0e0f57cae..a68705549b 100644 --- a/examples/jetsnack/gradle.properties +++ b/examples/jetsnack/gradle.properties @@ -2,28 +2,8 @@ org.gradle.jvmargs=-Xmx3g kotlin.code.style=official android.useAndroidX=true agp.version=8.0.2 +kotlin.version=1.9.23 +compose.version=1.6.2 #Compose for Web is Experimental org.jetbrains.compose.experimental.wasm.enabled=true - -# region Versions for Kotlin 1.9.x Generation -kotlin.version.1.9.x=1.9.23 -compose.compiler.version.1.9.x=1.5.8 -compose.wasm.version.1.9.x=1.6.0 - -# To enable K2 Kotlin compiler uncomment the next line -#kotlin.experimental.tryK2=true - -# endregion - -# region Versions for Kotlin 2.0.0 Generation -kotlin.version.2.0.0=2.0.0-Beta4 -compose.compiler.version.2.0.0=1.5.9-kt-2.0.0-Beta4 -compose.wasm.version.2.0.0=1.6.0 - - -# endregion - -# -kotlin.generation=1.9.x -#kotlin.generation=2.0.0 diff --git a/examples/jetsnack/screenshots/jetsnack_mpp.png b/examples/jetsnack/screenshots/jetsnack_mpp.png new file mode 100644 index 0000000000..31bccbaf9b Binary files /dev/null and b/examples/jetsnack/screenshots/jetsnack_mpp.png differ diff --git a/examples/jetsnack/settings.gradle.kts b/examples/jetsnack/settings.gradle.kts index 42d3f0abeb..762a290097 100644 --- a/examples/jetsnack/settings.gradle.kts +++ b/examples/jetsnack/settings.gradle.kts @@ -6,12 +6,15 @@ pluginManagement { } plugins { - val kotlinGeneration = extra["kotlin.generation"] - kotlin("multiplatform").version(extra["kotlin.version.$kotlinGeneration"] as String) - kotlin("android").version(extra["kotlin.version.$kotlinGeneration"] as String) - id("com.android.application").version(extra["agp.version"] as String) - id("com.android.library").version(extra["agp.version"] as String) - id("org.jetbrains.compose").version(extra["compose.wasm.version.$kotlinGeneration"] as String) + val kotlinVersion = extra["kotlin.version"] as String + val agpVersion = extra["agp.version"] as String + val composeVersion = extra["compose.version"] as String + + kotlin("multiplatform").version(kotlinVersion) + kotlin("android").version(kotlinVersion) + id("com.android.application").version(agpVersion) + id("com.android.library").version(agpVersion) + id("org.jetbrains.compose").version(composeVersion) } } diff --git a/examples/jetsnack/web/src/wasmJsMain/resources/load.mjs b/examples/jetsnack/web/src/wasmJsMain/resources/load.mjs deleted file mode 100644 index 67510ce7da..0000000000 --- a/examples/jetsnack/web/src/wasmJsMain/resources/load.mjs +++ /dev/null @@ -1,5 +0,0 @@ -import { instantiate } from './jetsnackwasmapp.uninstantiated.mjs'; - -await wasmSetup; - -instantiate({ skia: Module['asm'] }); diff --git a/examples/jetsnack/web/webpack.config.d/boilerplate.js b/examples/jetsnack/web/webpack.config.d/boilerplate.js deleted file mode 100644 index e88b7f938c..0000000000 --- a/examples/jetsnack/web/webpack.config.d/boilerplate.js +++ /dev/null @@ -1,7 +0,0 @@ -config.entry = { - main: [require('path').resolve(__dirname, "kotlin/load.mjs")] -}; - -config.resolve ?? (config.resolve = {}); -config.resolve.alias ?? (config.resolve.alias = {}); -config.resolve.alias.skia = false; diff --git a/examples/validateExamples.sh b/examples/validateExamples.sh index 085bd4e5f0..91c1dcdfee 100755 --- a/examples/validateExamples.sh +++ b/examples/validateExamples.sh @@ -27,3 +27,4 @@ runGradle notepad packageDistributionForCurrentOS runGradle todoapp-lite packageDistributionForCurrentOS runGradle graphics-2d packageDistributionForCurrentOS runGradle widgets-gallery packageDistributionForCurrentOS +runGradle jetsnack packageDistributionForCurrentOS diff --git a/examples/validateExamplesAndroid.sh b/examples/validateExamplesAndroid.sh index c7a581a657..e40dd3caed 100644 --- a/examples/validateExamplesAndroid.sh +++ b/examples/validateExamplesAndroid.sh @@ -28,3 +28,4 @@ runGradle graphics-2d installDebug runGradle todoapp-lite installDebug runGradle widgets-gallery installDebug runGradle todoapp installDebug +runGradle jetsnack installDebug diff --git a/examples/validateExamplesIos.sh b/examples/validateExamplesIos.sh index 3efc7b4a63..8853bb7f63 100755 --- a/examples/validateExamplesIos.sh +++ b/examples/validateExamplesIos.sh @@ -37,3 +37,4 @@ runGradle imageviewer runGradle todoapp-lite runGradle widgets-gallery runGradle graphics-2d +runGradle jetsnack diff --git a/examples/validateExamplesWithJs.sh b/examples/validateExamplesWithJs.sh index abc3f9a1b0..c1b0b80344 100755 --- a/examples/validateExamplesWithJs.sh +++ b/examples/validateExamplesWithJs.sh @@ -22,3 +22,4 @@ runGradle() { runGradle html/compose-bird build runGradle html/landing build runGradle html/with-react build +runGradle jetsnack :web:wasmJsBrowserDistribution