diff --git a/build.gradle.kts b/build.gradle.kts index 5510ac9..5051d88 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -31,7 +31,7 @@ subprojects { ) .customRuleSets( listOf( - "io.nlopez.compose.rules:ktlint:0.3.11", + "io.nlopez.compose.rules:ktlint:0.6.1", ), ) licenseHeaderFile(rootProject.file("spotless/copyright.kt")) diff --git a/gradle.properties b/gradle.properties index e0231de..03fd10e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,6 @@ kotlin.incremental.js=true kotlin.incremental.wasm=true # KMP kotlin.mpp.enableCInteropCommonization=true -kotlin.mpp.androidSourceSetLayoutVersion=2 org.jetbrains.compose.experimental.jscanvas.enabled=true # Before publishing to central the library should be tested in local: # ./gradlew publishToMavenLocal. This will generate sources for our source sets @@ -28,4 +27,4 @@ mavenCentralUsername= mavenCentralPassword= signing.keyId= signing.password= -signing.secretKeyRingFile= \ No newline at end of file +signing.secretKeyRingFile= diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index bd5586a..3c4ba0a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,17 +1,17 @@ [versions] -kotlin = "2.3.20" +kotlin = "2.4.0" agp = "8.13.1" activityCompose = "1.13.0" compose-plugin = "1.10.3" -kotlinxCollectionsImmutable = "0.4.0" +kotlinxCollectionsImmutable = "0.5.0" truth = "1.4.5" vanniktech = "0.36.0" dokka = "2.2.0" -spotless = "8.4.0" +spotless = "8.6.0" report = "1.5.0" junitVersion = "1.3.0" androidxTest = "1.7.0" -composeBom = "2026.04.00" +composeBom = "2026.05.01" [libraries] androidx-junit = { module = "androidx.test.ext:junit", version.ref = "junitVersion" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c2de385..788d60d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ #Thu Feb 29 20:52:44 CST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/jetlime/build.gradle.kts b/jetlime/build.gradle.kts index 0047494..8a14f04 100644 --- a/jetlime/build.gradle.kts +++ b/jetlime/build.gradle.kts @@ -33,7 +33,7 @@ kotlin { } } - js(IR) { + js { browser() binaries.library() } @@ -74,6 +74,7 @@ kotlin { implementation(compose.material3) implementation(compose.ui) implementation(compose.components.uiToolingPreview) + implementation(compose.preview) api(libs.kotlinx.collections.immutable) } desktopMain.dependencies { diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock index ee67980..b45c515 100644 --- a/kotlin-js-store/yarn.lock +++ b/kotlin-js-store/yarn.lock @@ -2917,7 +2917,16 @@ streamroller@^3.1.5: debug "^4.3.4" fs-extra "^8.1.0" -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2949,7 +2958,14 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -3305,7 +3321,16 @@ workerpool@^9.2.0: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-9.3.4.tgz#f6c92395b2141afd78e2a889e80cb338fe9fca41" integrity sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== diff --git a/sample/composeApp/build.gradle.kts b/sample/composeApp/build.gradle.kts index 9f261a0..079588b 100644 --- a/sample/composeApp/build.gradle.kts +++ b/sample/composeApp/build.gradle.kts @@ -13,7 +13,7 @@ plugins { } kotlin { - js(IR) { + js { browser() binaries.executable() } @@ -27,11 +27,8 @@ kotlin { outputFileName = "composeApp.js" devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply { - static = - (static ?: mutableListOf()).apply { - // Serve sources to debug inside browser - add(project.projectDir.path) - } + // Serve sources to debug inside browser + static(project.projectDir.path) } } } @@ -85,6 +82,7 @@ kotlin { implementation(compose.components.resources) implementation(compose.materialIconsExtended) implementation(compose.components.uiToolingPreview) + implementation(compose.preview) // Local library implementation(project(":jetlime")) diff --git a/sample/composeApp/src/commonMain/kotlin/Home.kt b/sample/composeApp/src/commonMain/kotlin/Home.kt index 674fbcd..f739fc9 100644 --- a/sample/composeApp/src/commonMain/kotlin/Home.kt +++ b/sample/composeApp/src/commonMain/kotlin/Home.kt @@ -147,8 +147,8 @@ fun HomeContent(modifier: Modifier = Modifier) { @Composable fun HomeAppBar( isDarkTheme: Boolean, - modifier: Modifier = Modifier, onThemeChange: ((Boolean) -> Unit)?, + modifier: Modifier = Modifier, ) { TopAppBar( title = { @@ -167,7 +167,7 @@ fun HomeAppBar( ) } -@Preview +@androidx.compose.ui.tooling.preview.Preview @Composable private fun PreviewHomeScreen() { HomeScreen()