You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ma...@apache.org on 2026/09/20 21:40:43 UTC
(solr) branch main updated: Make UI module independent sub-project (#4650)
This is an automated email from the ASF dual-hosted git repository.
malliaridis pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new c78939a620b Make UI module independent sub-project (#4650)
c78939a620b is described below
commit c78939a620be2f250f59a8ab7244f6953c5c024c
Author: Christos Malliaridis <ma...@apache.org>
AuthorDate: Mon Sep 21 00:40:38 2026 +0300
Make UI module independent sub-project (#4650)
The approach that was picked is a completely independent gradle project. Some important changes:
- Dependency resolution for the UI module is happening separately from the rest of the project, so dependencies are not aligned
- Many build configurations that apply to most `solr` modules are removed, allowing the UI module to use simpler builds
- The exclusion of many plugins and configurations means there are no default checks included
We should evaluate before merging which of the configurations or routines we want to keep and apply to this module as well. We may also keep it as is since the Admin UI is still experimental.
The module is no longer included as a configuration or task dependency as implemented before. Instead, the webapp now has to fetch the UI artifacts from https://nightlies.apache.org/solr/ui/wasm/[commit-hash]/.
Developers can call `./gradlew dev -Psolr.ui.buildFromSource=true` to build the UI module locally and include the artifacts from the current state, or alternatively define a commit (and optionally a checksum for validation) in the `gradle/solr-ui.properties` to download the UI bundle from the nightlies server.
A guard has been added for specific release tasks that prevents using a nightly build artifact, and forces the UI to be built from source.
The jenkins job https://ci-builds.apache.org/job/Solr/job/solr-ui-wasm-assemble/ is building and deploying a version of the project. Right now it is executed manually on this branch, but it can be updated once this is merged to run from main.
_I chose running the jenkins job manually so that we can pin down a commit hash and avoid spamming the nightlies with bundles. But we can switch to daily builds too if we prefer that. THe zip size is about 5MB large._
**Important Note**: This PR introduces a new flag for building the UI module from source, replacing the previously configured `production` flag in `gradle.properties`. The flag defaults to `false` requiring the user to either set it to `true` or provide a commit hash for download wasmJs. The PR uses the hash from the PR branch, which will no longer match a commit hash on main once this PR is squashed and merged.
See discussion https://lists.apache.org/thread/onc0zyyp8tjoj3fdg3bmpnh9cqsgjhy6
---
.github/labeler.yml | 1 +
.github/renovate.json | 6 +-
.github/workflows/new-ui-check.yml | 43 ++
build.gradle | 6 -
changelog/unreleased/extract-ui-module.yml | 8 +
gradle/libs.versions.toml | 69 +--
gradle/solr/solr-ui.gradle | 187 ++++++++
gradle/template.gradle.properties | 11 +
gradle/validation/dependency-analyze.gradle.kts | 12 -
gradle/validation/rat-sources.gradle | 5 +-
gradle/validation/spotless.gradle | 15 -
settings.gradle | 20 -
solr/licenses/kotlin-stdlib-jdk7-2.4.0.jar.sha1 | 1 -
solr/licenses/kotlin-stdlib-jdk7-2.4.20.jar.sha1 | 1 +
solr/licenses/kotlin-stdlib-jdk8-2.4.0.jar.sha1 | 1 -
solr/licenses/kotlin-stdlib-jdk8-2.4.20.jar.sha1 | 1 +
solr/modules/jwt-auth/gradle.lockfile | 8 +-
solr/packaging/build.gradle | 13 +
solr/server/build.gradle | 16 -
solr/server/etc/jetty-new-ui-dev.xml | 49 --
.../{jetty-new-ui-prod.xml => jetty-new-ui.xml} | 0
solr/ui/.editorconfig | 2 -
solr/ui/README.md | 55 ---
solr/ui/build.gradle.kts | 242 ----------
solr/ui/gradle.lockfile | 515 ---------------------
solr/webapp/build.gradle | 12 +-
solr/webapp/gradle.lockfile | 2 +-
ui/.gitignore | 7 +
ui/README.md | 66 +++
ui/build.gradle.kts | 59 +++
{solr/ui => ui/desktopApp}/assets/logo.ico | Bin
{solr/ui => ui/desktopApp}/assets/logo.png | Bin
ui/desktopApp/build.gradle.kts | 77 +++
.../src/main}/kotlin/org/apache/solr/ui/Main.kt | 1 -
.../src/main/kotlin/org/apache/solr/ui}/Utils.kt | 2 +-
ui/gradle.properties | 11 +
ui/gradle/libs.versions.toml | 79 ++++
ui/kotlin-js-store/wasm/yarn.lock | 13 +
{solr/ui => ui}/proguard.pro | 0
ui/settings.gradle.kts | 61 +++
ui/shared/build.gradle.kts | 94 ++++
.../commonMain/composeResources/drawable/add.xml | 0
.../composeResources/drawable/analytics.xml | 0
.../composeResources/drawable/analytics_filled.xml | 0
.../commonMain/composeResources/drawable/apps.xml | 0
.../composeResources/drawable/broken_image.xml | 0
.../composeResources/drawable/bug_report.xml | 0
.../composeResources/drawable/chevron_left.xml | 0
.../commonMain/composeResources/drawable/close.xml | 0
.../commonMain/composeResources/drawable/code.xml | 0
.../composeResources/drawable/dashboard.xml | 0
.../composeResources/drawable/dashboard_filled.xml | 0
.../commonMain/composeResources/drawable/draft.xml | 0
.../commonMain/composeResources/drawable/edit.xml | 0
.../composeResources/drawable/folder_data.xml | 0
.../drawable/folder_data_filled.xml | 0
.../composeResources/drawable/folder_zip.xml | 0
.../composeResources/drawable/groups.xml | 0
.../commonMain/composeResources/drawable/hub.xml | 0
.../composeResources/drawable/hub_filled.xml | 0
.../commonMain/composeResources/drawable/info.xml | 0
.../composeResources/drawable/logout.xml | 0
.../composeResources/drawable/memory.xml | 0
.../composeResources/drawable/memory_filled.xml | 0
.../composeResources/drawable/menu_book.xml | 0
.../composeResources/drawable/other_admission.xml | 0
.../drawable/other_admission_filled.xml | 0
.../composeResources/drawable/search.xml | 0
.../composeResources/drawable/security.xml | 0
.../composeResources/drawable/solr-logo-dark.svg | Bin
.../composeResources/drawable/solr-logo-light.svg | Bin
.../composeResources/drawable/solr-sun.svg | Bin
.../commonMain/composeResources/drawable/tag.xml | 0
.../composeResources/drawable/text_snippet.xml | 0
.../drawable/text_snippet_filled.xml | 0
.../composeResources/drawable/upload.xml | 0
.../composeResources/drawable/view_list.xml | 0
.../composeResources/drawable/view_list_filled.xml | 0
.../commonMain/composeResources/values/strings.xml | 0
.../apache/solr/ui/components/auth/AuthUtils.kt | 0
.../ui/components/auth/AuthenticationComponent.kt | 0
.../solr/ui/components/auth/BasicAuthComponent.kt | 0
.../solr/ui/components/auth/OAuthComponent.kt | 0
.../integration/DefaultAuthenticationComponent.kt | 0
.../auth/integration/DefaultBasicAuthComponent.kt | 0
.../auth/integration/DefaultOAuthComponent.kt | 0
.../auth/integration/HttpBasicAuthStoreClient.kt | 0
.../solr/ui/components/auth/integration/Mappers.kt | 6 +-
.../auth/integration/PlatformOAuthStoreClient.kt | 0
.../components/auth/store/AuthenticationStore.kt | 0
.../auth/store/AuthenticationStoreProvider.kt | 0
.../ui/components/auth/store/BasicAuthStore.kt | 0
.../auth/store/BasicAuthStoreProvider.kt | 0
.../solr/ui/components/auth/store/OAuthStore.kt | 0
.../ui/components/auth/store/OAuthStoreProvider.kt | 0
.../solr/ui/components/cluster/ClusterComponent.kt | 0
.../cluster/integration/DefaultClusterComponent.kt | 0
.../components/configsets/data/CreateConfigset.kt | 0
.../configsets/data/HttpConfigsetsRepository.kt | 0
.../components/configsets/data/ListConfigsets.kt | 0
.../configsets/di/ConfigsetsComponent.kt | 0
.../configsets/di/ConfigsetsOverviewComponent.kt | 0
.../configsets/di/DefaultConfigsetsComponent.kt | 0
.../di/DefaultConfigsetsOverviewComponent.kt | 0
.../configsets/domain/CreateConfigsetEvent.kt | 0
.../configsets/domain/CreateConfigsetUseCase.kt | 0
.../domain/DefaultCreateConfigsetUseCase.kt | 0
.../domain/DefaultImportConfigsetUseCase.kt | 0
.../domain/DefaultLoadConfigsetsUseCase.kt | 0
.../configsets/domain/ImportConfigsetUseCase.kt | 0
.../configsets/domain/LoadConfigsetsUseCase.kt | 0
.../configsets/repository/ConfigsetsRepository.kt | 0
.../viewmodel/ConfigsetsOverviewViewModel.kt | 0
.../viewmodel/ConfigsetsRouteViewModel.kt | 0
.../configsets/viewmodel/ConfigsetsStateHolder.kt | 0
.../configsets/viewmodel/ConfigsetsViewModel.kt | 0
.../viewmodel/CreateConfigsetViewModel.kt | 0
.../viewmodel/ImportConfigsetViewModel.kt | 0
.../components/environment/EnvironmentComponent.kt | 0
.../environment/data/JavaPropertiesResponse.kt | 0
.../ui/components/environment/data/JavaProperty.kt | 0
.../components/environment/data/JavaRuntimeInfo.kt | 0
.../solr/ui/components/environment/data/Jmx.kt | 0
.../solr/ui/components/environment/data/JvmData.kt | 0
.../ui/components/environment/data/JvmMemory.kt | 0
.../ui/components/environment/data/JvmMemoryRaw.kt | 0
.../components/environment/data/SecurityConfig.kt | 0
.../ui/components/environment/data/SystemData.kt | 0
.../environment/data/SystemInformation.kt | 0
.../ui/components/environment/data/SystemMode.kt | 0
.../ui/components/environment/data/Versions.kt | 0
.../integration/DefaultEnvironmentComponent.kt | 0
.../integration/HttpEnvironmentStoreClient.kt | 0
.../components/environment/integration/Mappers.kt | 0
.../environment/store/EnvironmentStore.kt | 0
.../environment/store/EnvironmentStoreProvider.kt | 0
.../files/domain/DefaultSelectFileUseCase.kt | 0
.../components/files/domain/FileSelectorEvent.kt | 0
.../components/files/domain/SelectFileUseCase.kt | 0
.../files/viewmodel/FileSelectorStateHolder.kt | 0
.../solr/ui/components/logging/LoggingComponent.kt | 0
.../logging/integration/DefaultLoggingComponent.kt | 0
.../solr/ui/components/main/MainComponent.kt | 0
.../main/integration/DefaultMainComponent.kt | 0
.../solr/ui/components/main/integration/Mappers.kt | 0
.../components/navigation/NavigationComponent.kt | 0
.../navigation/TabNavigationComponent.kt | 0
.../solr/ui/components/root/RootComponent.kt | 0
.../root/integration/SimpleRootComponent.kt | 0
.../solr/ui/components/start/StartComponent.kt | 0
.../start/integration/DefaultStartComponent.kt | 0
.../start/integration/HttpStartStoreClient.kt | 0
.../ui/components/start/integration/Mappers.kt | 8 +-
.../solr/ui/components/start/store/StartStore.kt | 0
.../components/start/store/StartStoreProvider.kt | 0
.../apache/solr/ui/data/AuthorizationResponse.kt | 0
.../solr/ui/data/AuthorizationTokenRequest.kt | 0
.../kotlin/org/apache/solr/ui/data/SolrAuthData.kt | 0
.../kotlin/org/apache/solr/ui/domain/AuthMethod.kt | 0
.../kotlin/org/apache/solr/ui/domain/AuthOption.kt | 0
.../kotlin/org/apache/solr/ui/domain/Configset.kt | 0
.../kotlin/org/apache/solr/ui/domain/OAuthData.kt | 0
.../kotlin/org/apache/solr/ui/domain/PickedFile.kt | 0
.../apache/solr/ui/errors/HostNotFoundException.kt | 0
.../solr/ui/errors/InvalidCredentialsException.kt | 0
.../solr/ui/errors/InvalidResponseException.kt | 0
.../apache/solr/ui/errors/UnauthorizedException.kt | 0
.../solr/ui/errors/UnknownResponseException.kt | 0
.../apache/solr/ui/utils/AppComponentContext.kt | 0
.../org/apache/solr/ui/utils/AppDispatchers.kt | 0
.../kotlin/org/apache/solr/ui/utils/Constants.kt | 0
.../apache/solr/ui/utils/CoroutineContextOwner.kt | 0
.../org/apache/solr/ui/utils/CoroutineScopeExt.kt | 0
.../solr/ui/utils/DefaultAppComponentContext.kt | 0
.../kotlin/org/apache/solr/ui/utils/ErrorUtils.kt | 0
.../kotlin/org/apache/solr/ui/utils/FileUtils.kt | 0
.../org/apache/solr/ui/utils/HttpClientUtils.kt | 0
.../kotlin/org/apache/solr/ui/utils/Validators.kt | 0
.../apache/solr/ui/views/auth/BasicAuthContent.kt | 14 +-
.../org/apache/solr/ui/views/auth/OAuthContent.kt | 12 +-
.../ui/views/auth/UserAuthenticationContent.kt | 18 +-
.../apache/solr/ui/views/cluster/ClusterContent.kt | 8 +-
.../apache/solr/ui/views/components/SolrButton.kt | 0
.../apache/solr/ui/views/components/SolrCard.kt | 0
.../components/SolrLinearProgressIndicator.kt | 0
.../ui/views/components/SolrOutlinedTextField.kt | 0
.../solr/ui/views/components/SolrTextButton.kt | 0
.../solr/ui/views/configsets/ConfigsetsContent.kt | 16 +-
.../solr/ui/views/configsets/ConfigsetsDropdown.kt | 10 +-
.../views/configsets/ConfigsetsOverviewContent.kt | 10 +-
.../ui/views/configsets/CreateConfigsetDialog.kt | 12 +-
.../ui/views/configsets/ImportConfigsetDialog.kt | 14 +-
.../views/environment/CommandLineArgumentsCard.kt | 0
.../ui/views/environment/EnvironmentContent.kt | 0
.../ui/views/environment/JavaPropertiesCard.kt | 0
.../solr/ui/views/environment/VersionsCard.kt | 0
.../org/apache/solr/ui/views/files/FileSelector.kt | 8 +-
.../org/apache/solr/ui/views/files/FileTypeIcon.kt | 6 +-
.../org/apache/solr/ui/views/icons/SolrLogo.kt | 8 +-
.../apache/solr/ui/views/logging/LoggingContent.kt | 0
.../org/apache/solr/ui/views/main/MainContent.kt | 0
.../org/apache/solr/ui/views/navigation/Footer.kt | 26 +-
.../apache/solr/ui/views/navigation/MainMenu.kt | 0
.../solr/ui/views/navigation/NavigationSideBar.kt | 62 +--
.../solr/ui/views/navigation/NavigationTabs.kt | 0
.../org/apache/solr/ui/views/root/RootContent.kt | 0
.../org/apache/solr/ui/views/start/StartContent.kt | 14 +-
.../org/apache/solr/ui/views/theme/ColorFamily.kt | 0
.../org/apache/solr/ui/views/theme/Colors.kt | 0
.../org/apache/solr/ui/views/theme/Shapes.kt | 0
.../kotlin/org/apache/solr/ui/views/theme/Theme.kt | 0
.../org/apache/solr/ui/views/theme/Typography.kt | 0
.../kotlin/org/apache/solr/ui/Semantics.kt | 0
.../org/apache/solr/ui/TestAppComponentContext.kt | 0
.../kotlin/org/apache/solr/ui/TestDispatchers.kt | 0
.../kotlin/org/apache/solr/ui/TestUtils.kt | 0
.../solr/ui/components/auth/AuthUtilsTest.kt | 0
...efaultAuthenticationComponentIntegrationTest.kt | 0
.../integration/DefaultBasicAuthComponentTest.kt | 0
.../ui/components/auth/store/FakeOAuthClient.kt | 0
.../auth/store/OAuthStoreProviderTest.kt | 0
.../viewmodel/ConfigsetsStateHolderTest.kt | 0
.../store/EnvironmentStoreProviderTest.kt | 0
.../store/MockedEnvironmentStoreClient.kt | 0
.../DefaultStartComponentIntegrationTest.kt | 15 +-
.../solr/ui/views/auth/BasicAuthContentTest.kt | 0
.../ui/views/auth/TestAuthenticationComponent.kt | 0
.../solr/ui/views/auth/TestBasicAuthComponent.kt | 0
.../solr/ui/views/auth/TestOAuthComponent.kt | 0
.../org/apache/solr/ui/views/auth/TestOAuthData.kt | 0
.../ui/views/auth/UserAuthenticationContentTest.kt | 6 +-
.../solr/ui/views/components/SolrCardTest.kt | 0
.../ui/views/configsets/ConfigsetsDropdownTest.kt | 0
.../views/configsets/CreateConfigsetDialogTest.kt | 0
.../views/configsets/ImportConfigsetDialogTest.kt | 0
.../ui/views/environment/EnvironmentContentTest.kt | 0
.../apache/solr/ui/views/start/StartContentTest.kt | 16 +-
.../solr/ui/views/start/TestStartComponent.kt | 0
.../solr/ui/components/auth/AuthUtils.desktop.kt | 0
.../auth/integration/PlatformOAuthStoreClient.kt | 0
.../org/apache/solr/ui/preview/PreviewContainer.kt | 0
.../auth/PreviewUserAuthenticationContent.kt | 6 +-
.../preview/configsets/PreviewConfigsetsContent.kt | 0
.../preview/navigation/PreviewNavigationSideBar.kt | 0
.../solr/ui/preview/start/PreviewStartContent.kt | 4 +-
.../org/apache/solr/ui/utils/AppDispatchers.jvm.kt | 0
.../org/apache/solr/ui/utils/ErrorUtils.desktop.kt | 0
.../org/apache/solr/ui/utils/FileUtils.desktop.kt | 0
.../org/apache/solr/ui/utils/PlatformUtils.kt | 0
.../solr/ui/components/auth/AuthUtils.wasmJs.kt | 0
.../auth/integration/PlatformOAuthStoreClient.kt | 1 +
.../org/apache/solr/ui/utils/AppDispatchers.web.kt | 0
.../kotlin/org/apache/solr/ui/utils/ErrorUtils.kt | 0
.../org/apache/solr/ui/utils/FileUtils.wasmJs.kt | 0
.../org/apache/solr/ui/utils/PlatformUtils.kt | 0
.../solr/ui/components/auth/AuthUtilsTestJs.kt | 2 +-
ui/webApp/build.gradle.kts | 101 ++++
.../src/webMain}/kotlin/org/apache/solr/ui/Main.kt | 10 +-
.../webApp/src/webMain}/resources/index.html | 12 +-
.../webApp/src/webMain}/resources/styles.css | 2 +-
.../webApp}/webpack.config.d/adjust-limits.js | 0
261 files changed, 1018 insertions(+), 1180 deletions(-)
diff --git a/.github/labeler.yml b/.github/labeler.yml
index 5997506f7d5..5322e37dff0 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -97,6 +97,7 @@ admin-ui:
- any-glob-to-any-file:
- solr/webapp/**
- solr/ui/**
+ - ui/**
# Add labels for changes to solr modules
module:analysis-extras:
diff --git a/.github/renovate.json b/.github/renovate.json
index 2422a043c71..9d3410e7195 100644
--- a/.github/renovate.json
+++ b/.github/renovate.json
@@ -7,12 +7,12 @@
"enabledManagers": ["gradle", "github-actions"],
"labels": ["exempt-stale"],
"milestone": 1,
- "includePaths": ["gradle/libs.versions.toml", "versions.*", "build.gradle", ".github/workflows/*"],
+ "includePaths": ["gradle/libs.versions.toml", "ui/gradle/libs.versions.toml", "versions.*", "build.gradle", ".github/workflows/*"],
"postUpgradeTasks": {
"commands": [
"./gradlew resolveAndLockAll --write-locks",
- "./gradlew kotlinUpgradeYarnLock",
- "./gradlew updateLicenses"
+ "./gradlew updateLicenses",
+ "./gradlew -p ui kotlinUpgradeYarnLock"
],
"fileFilters": ["solr/licenses/*.sha1", "**/gradle.lockfile", "settings-gradle.lockfile"],
"executionMode": "branch"
diff --git a/.github/workflows/new-ui-check.yml b/.github/workflows/new-ui-check.yml
new file mode 100644
index 00000000000..0aff37dcc57
--- /dev/null
+++ b/.github/workflows/new-ui-check.yml
@@ -0,0 +1,43 @@
+name: Solr UI Tests
+
+on:
+ pull_request:
+ branches:
+ - '*'
+ paths:
+ - '.github/workflows/new-ui-check.yml'
+ # the new UI
+ - 'ui/**'
+ # the v2 API contract the UI is built against
+ # - 'solr/api/**'
+ # the v2 API implementations backing the UI screens
+ - 'solr/core/src/java/org/apache/solr/handler/admin/api/**'
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ test:
+ name: Run New UI tests
+
+ # ubuntu-latest has Chrome preinstalled
+ runs-on: ubuntu-latest
+ timeout-minutes: 40
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
+
+ - uses: ./.github/actions/prepare-for-build
+
+ - name: Run the New UI checks
+ run: ./gradlew -p ui check
+
+ - name: Archive test output
+ if: ${{ failure() }}
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
+ with:
+ name: test-output
+ path: |
+ ui/shared/build/test-results/**
diff --git a/build.gradle b/build.gradle
index 789b782b1c2..35961bc3e10 100644
--- a/build.gradle
+++ b/build.gradle
@@ -25,7 +25,6 @@ plugins {
alias(libs.plugins.owasp.dependencycheck)
alias(libs.plugins.barfuin.jacocolog) apply false
alias(libs.plugins.benmanes.versions)
- alias(libs.plugins.kotlin.multiplatform) apply false
alias(libs.plugins.littlerobots.versioncatalogupdate) apply false
alias(libs.plugins.thetaphi.forbiddenapis) apply false
alias(libs.plugins.ltgt.errorprone) apply false
@@ -39,10 +38,6 @@ plugins {
rootProject.ext.minJavaVersionDefault = JavaVersion.toVersion(libs.versions.java.min.get())
rootProject.ext.minJavaVersionSolrJ = JavaVersion.toVersion(libs.versions.java.solrj.get())
-// Check development mode for entire project (defaults to true if 'production' not provided and set to true)
-rootProject.ext.development =
- !project.hasProperty('production') || project.findProperty('production') != 'true'
-
apply from: file('gradle/globals.gradle')
// General metadata.
@@ -132,7 +127,6 @@ ext {
] as Set
// Use gradle flag in root project for further referencing
- withUiModule = gradle.ext.withUiModule
withJsClient = gradle.ext.withJsClient
}
diff --git a/changelog/unreleased/extract-ui-module.yml b/changelog/unreleased/extract-ui-module.yml
new file mode 100644
index 00000000000..36a743a944a
--- /dev/null
+++ b/changelog/unreleased/extract-ui-module.yml
@@ -0,0 +1,8 @@
+title: Make the new UI module standalone and load artifacts during development to speed up builds
+type: other
+authors:
+ - name: Christos Malliaridis
+ nick: malliaridis
+links:
+ - name: GITHUB#4650
+ url: https://github.com/apache/solr/pull/4650
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 5aecbdfb22f..12a26dc3934 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,9 +15,6 @@
[versions]
adobe-testing-s3mock = "5.2.0"
amazon-awssdk = "2.54.6"
-androidx-adaptive = "1.3.0-rc01"
-androidx-lifecycle = "2.11.0"
-androidx-navigation3 = "1.1.1"
# @keep Antora version used in ref-guide
antora = "3.1.12"
# @keep Most recent commit as of 2025-08-03, this repo does not have tags
@@ -77,10 +74,8 @@ codehaus-woodstox = "4.3.0"
commons-cli = "1.11.0"
commons-codec = "1.22.1"
commons-io = "2.22.0"
-compose = "1.12.0"
cuvs-java = "26.08.1"
cuvs-lucene = "25.12.0"
-decompose = "3.5.0"
diffplug-spotless = "8.10.0"
# @keep Use for dockerfile JRE version
dockerfile-baseimage-java = "25"
@@ -89,7 +84,6 @@ eclipse-ecj = "3.46.0"
eclipse-jetty = "12.1.12"
# @keep jgit version used by git-status.gradle
eclipse-jgit = "7.7.1.202607240634-r"
-essenty = "2.6.0"
fasterxml = "2.22.2"
fasterxml-woodstox = "7.2.2"
# @keep Flexmark used in classpath
@@ -142,17 +136,8 @@ jna = "5.19.1"
# @keep for version alignment
joda-time = "2.14.3"
junit = "4.13.2"
-kotlin = "2.4.20"
-# @keep for version alignment
-kotlinx-atomicfu = "0.33.0"
# @keep for version alignment
-kotlinx-browser = "0.5.0"
-kotlinx-coroutines = "1.11.0"
-kotlinx-datetime = "0.8.0-0.6.x-compat"
-kotlinx-serialization = "1.11.0"
-# @keep used by spotless
-ktlint = "1.8.0"
-ktor = "3.5.2"
+kotlin = "2.4.20"
langchain4j-bom = "1.19.0"
# @keep Link checker version used in ref-guide
link-checker = "1.4.2"
@@ -160,16 +145,13 @@ littlerobots-versioncatalogupdate = "1.1.1"
lmax-disruptor = "4.0.0"
logchange = "1.19.16"
ltgt-errorprone = "5.1.1"
-material3 = "1.10.0-alpha05"
mockito = "5.23.0"
morethan-jmhreport = "0.9.6"
-mvikotlin = "4.4.0"
navsecurity = "6.0.2"
netty = "4.2.17.Final"
# @keep for version alignment
netty-tcnative = "2.0.82.Final"
nimbusds-josejwt = "10.9.1"
-nlopez-compose = "0.6.4"
nodegradle-node = "7.1.0"
# @keep Node JS version used in node.gradle (LTS)
nodejs = "22.18.0"
@@ -193,7 +175,6 @@ slf4j = "2.0.18"
spatial4j = "0.8"
spotbugs = "4.10.4"
squareup-okhttp3-okhttp = "5.5.0"
-squareup-okio = "3.18.1"
stephenc-jcip = "1.0-1"
swagger3 = "2.2.54"
tdunning-tdigest = "3.3"
@@ -207,11 +188,7 @@ xerial-snappy = "1.1.10.8"
[plugins]
barfuin-jacocolog = { id = "org.barfuin.gradle.jacocolog", version.ref = "barfuin-jacocolog" }
benmanes-versions = { id = "io.github.ben-manes.versions", version.ref = "benmanes-versions" }
-compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
diffplug-spotless = { id = "com.diffplug.spotless", version.ref = "diffplug-spotless" }
-jetbrains-compose = { id = "org.jetbrains.compose", version.ref = "compose" }
-kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
-kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
littlerobots-versioncatalogupdate = { id = "nl.littlerobots.version-catalog-update", version.ref = "littlerobots-versioncatalogupdate" }
logchange = { id = "dev.logchange", version.ref = "logchange" }
ltgt-errorprone = { id = "net.ltgt.errorprone", version.ref = "ltgt-errorprone" }
@@ -235,12 +212,6 @@ amazon-awssdk-retries-spi = { module = "software.amazon.awssdk:retries-spi", ver
amazon-awssdk-s3 = { module = "software.amazon.awssdk:s3", version.ref = "amazon-awssdk" }
amazon-awssdk-sdkcore = { module = "software.amazon.awssdk:sdk-core", version.ref = "amazon-awssdk" }
amazon-awssdk-sts = { module = "software.amazon.awssdk:sts", version.ref = "amazon-awssdk" }
-androidx-lifecycle-runtimeCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle" }
-androidx-lifecycle-viewModelNav3 = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "androidx-lifecycle" }
-androidx-lifecycle-viewmodelCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" }
-androidx-material3-adaptive = { module = "org.jetbrains.compose.material3.adaptive:adaptive", version.ref = "androidx-adaptive" }
-androidx-material3-adaptive-nav3 = { module = "org.jetbrains.compose.material3.adaptive:adaptive-navigation3", version.ref = "androidx-adaptive" }
-androidx-navigation3-ui = { module = "org.jetbrains.androidx.navigation3:navigation3-ui", version.ref = "androidx-navigation3" }
apache-calcite-avatica-core = { module = "org.apache.calcite.avatica:avatica-core", version.ref = "apache-calcite-avatica" }
apache-calcite-core = { module = "org.apache.calcite:calcite-core", version.ref = "apache-calcite" }
apache-calcite-linq4j = { module = "org.apache.calcite:calcite-linq4j", version.ref = "apache-calcite" }
@@ -314,17 +285,8 @@ codehaus-woodstox-stax2api = { module = "org.codehaus.woodstox:stax2-api", versi
commonscli-commonscli = { module = "commons-cli:commons-cli", version.ref = "commons-cli" }
commonscodec-commonscodec = { module = "commons-codec:commons-codec", version.ref = "commons-codec" }
commonsio-commonsio = { module = "commons-io:commons-io", version.ref = "commons-io" }
-compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "compose" }
-compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "compose" }
-compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "material3" }
-compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "compose" }
-compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "compose" }
-compose-uiTest = { module = "org.jetbrains.compose.ui:ui-test", version.ref = "compose" }
-compose-uiToolingPreview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "compose" }
cuvs-java = { module = "com.nvidia.cuvs:cuvs-java", version.ref = "cuvs-java" }
cuvs-lucene = { module = "com.nvidia.cuvs.lucene:cuvs-lucene", version.ref = "cuvs-lucene" }
-decompose-decompose = { module = "com.arkivanov.decompose:decompose", version.ref = "decompose" }
-decompose-extensions-compose = { module = "com.arkivanov.decompose:extensions-compose", version.ref = "decompose" }
dropwizard-metrics-core = { module = "io.dropwizard.metrics:metrics-core", version.ref = "dropwizard-metrics" }
eclipse-jdt-ecj = { module = "org.eclipse.jdt:ecj", version.ref = "eclipse-ecj" }
eclipse-jetty-alpnjavaclient = { module = "org.eclipse.jetty:jetty-alpn-java-client", version.ref = "eclipse-jetty" }
@@ -351,7 +313,6 @@ eclipse-jetty-start = { module = "org.eclipse.jetty:jetty-start", version.ref =
eclipse-jetty-util = { module = "org.eclipse.jetty:jetty-util", version.ref = "eclipse-jetty" }
eclipse-jetty-xml = { module = "org.eclipse.jetty:jetty-xml", version.ref = "eclipse-jetty" }
eclipse-jgit-jgit = { module = "org.eclipse.jgit:org.eclipse.jgit", version.ref = "eclipse-jgit" }
-essenty-lifecycle = { module = "com.arkivanov.essenty:lifecycle", version.ref = "essenty" }
fasterxml-jackson-bom = { module = "com.fasterxml.jackson:jackson-bom", version.ref = "fasterxml" }
fasterxml-jackson-core-annotations = { module = "com.fasterxml.jackson.core:jackson-annotations" }
fasterxml-jackson-core-core = { module = "com.fasterxml.jackson.core:jackson-core" }
@@ -432,27 +393,6 @@ jodatime-jodatime = { module = "joda-time:joda-time", version.ref = "joda-time"
junit-junit = { module = "junit:junit", version.ref = "junit" }
# @keep transitive dependency for version alignment
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" }
-# @keep transitive dependency for version alignment
-kotlinx-atomicfu = { module = "org.jetbrains.kotlinx:atomicfu", version.ref = "kotlinx-atomicfu" }
-# @keep transitive dependency for version alignment
-kotlinx-browser = { module = "org.jetbrains.kotlinx:kotlinx-browser", version.ref = "kotlinx-browser" }
-kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" }
-kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines" }
-kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" }
-kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" }
-kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinx-serialization" }
-kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" }
-ktor-bom = { module = "io.ktor:ktor-bom", version.ref = "ktor" }
-ktor-client-auth = { module = "io.ktor:ktor-client-auth" }
-ktor-client-cio = { module = "io.ktor:ktor-client-cio" }
-ktor-client-contentNegotiation = { module = "io.ktor:ktor-client-content-negotiation" }
-ktor-client-core = { module = "io.ktor:ktor-client-core" }
-ktor-client-js = { module = "io.ktor:ktor-client-js" }
-ktor-client-mock = { module = "io.ktor:ktor-client-mock" }
-ktor-client-serialization-json = { module = "io.ktor:ktor-serialization-kotlinx-json" }
-ktor-server-cio = { module = "io.ktor:ktor-server-cio" }
-ktor-server-core = { module = "io.ktor:ktor-server-core" }
-ktor-server-htmlBuilder = { module = "io.ktor:ktor-server-html-builder" }
langchain4j-anthropic = { module = "dev.langchain4j:langchain4j-anthropic" }
langchain4j-bom = { module = "dev.langchain4j:langchain4j-bom", version.ref = "langchain4j-bom" }
langchain4j-cohere = { module = "dev.langchain4j:langchain4j-cohere" }
@@ -466,10 +406,6 @@ lmax-disruptor = { module = "com.lmax:disruptor", version.ref = "lmax-disruptor"
locationtech-spatial4j = { module = "org.locationtech.spatial4j:spatial4j", version.ref = "spatial4j" }
mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" }
mockito-subclass = { module = "org.mockito:mockito-subclass", version.ref = "mockito" }
-mvikotlin-extensions-coroutines = { module = "com.arkivanov.mvikotlin:mvikotlin-extensions-coroutines", version.ref = "mvikotlin" }
-mvikotlin-logging = { module = "com.arkivanov.mvikotlin:mvikotlin-logging", version.ref = "mvikotlin" }
-mvikotlin-main = { module = "com.arkivanov.mvikotlin:mvikotlin-main", version.ref = "mvikotlin" }
-mvikotlin-mvikotlin = { module = "com.arkivanov.mvikotlin:mvikotlin", version.ref = "mvikotlin" }
navsecurity-mockoauth2server = { module = "no.nav.security:mock-oauth2-server", version.ref = "navsecurity" }
netty-bom = { module = "io.netty:netty-bom", version.ref = "netty" }
netty-codechttp = { module = "io.netty:netty-codec-http", version.ref = "netty" }
@@ -483,7 +419,6 @@ netty-transport-classes-epoll = { module = "io.netty:netty-transport-classes-epo
# @keep transitive dependency for version alignment
netty-transport-native-epoll = { module = "io.netty:netty-transport-native-epoll", version.ref = "netty" }
nimbusds-josejwt = { module = "com.nimbusds:nimbus-jose-jwt", version.ref = "nimbusds-josejwt" }
-nlopez-compose-ktlintrules = { module = "io.nlopez.compose.rules:ktlint", version.ref = "nlopez-compose" }
onnxruntime = { module = "com.microsoft.onnxruntime:onnxruntime", version.ref = "onnx" }
openjdk-jmh-core = { module = "org.openjdk.jmh:jmh-core", version.ref = "openjdk-jmh" }
openjdk-jmh-generatorannprocess = { module = "org.openjdk.jmh:jmh-generator-annprocess", version.ref = "openjdk-jmh" }
@@ -500,7 +435,6 @@ opentelemetry-sdk-extension-autoconfigure-spi = { module = "io.opentelemetry:ope
opentelemetry-sdk-metrics = { module = "io.opentelemetry:opentelemetry-sdk-metrics", version.ref = "opentelemetry" }
opentelemetry-sdk-testing = { module = "io.opentelemetry:opentelemetry-sdk-testing", version.ref = "opentelemetry" }
opentelemetry-sdk-trace = { module = "io.opentelemetry:opentelemetry-sdk-trace", version.ref = "opentelemetry" }
-oshai-logging = { module = "io.github.oshai:kotlin-logging", version.ref = "oshai-logging" }
# @keep transitive dependency for version alignment
ow2-asm-asm = { module = "org.ow2.asm:asm", version.ref = "ow2-asm" }
# @keep transitive dependency for version alignment
@@ -522,7 +456,6 @@ spotbugs-annotations = { module = "com.github.spotbugs:spotbugs-annotations", ve
squareup-okhttp3-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "squareup-okhttp3-okhttp" }
squareup-okhttp3-okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "squareup-okhttp3-okhttp" }
squareup-okhttp3-okhttp-jvm = { module = "com.squareup.okhttp3:okhttp-jvm", version.ref = "squareup-okhttp3-okhttp" }
-squareup-okio = { module = "com.squareup.okio:okio", version.ref = "squareup-okio" }
stephenc-jcip-annotations = { module = "com.github.stephenc.jcip:jcip-annotations", version.ref = "stephenc-jcip" }
swagger3-annotations-jakarta = { module = "io.swagger.core.v3:swagger-annotations-jakarta", version.ref = "swagger3" }
swagger3-jaxrs2-jakarta = { module = "io.swagger.core.v3:swagger-jaxrs2-jakarta", version.ref = "swagger3" }
diff --git a/gradle/solr/solr-ui.gradle b/gradle/solr/solr-ui.gradle
new file mode 100644
index 00000000000..e9d0a741a53
--- /dev/null
+++ b/gradle/solr/solr-ui.gradle
@@ -0,0 +1,187 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Downloads a pinned, checksum-verified Admin UI wasmJs artifact from nightlies.apache.org,
+// or builds it from source (solr.ui.buildFromSource=true), and wires the result into the
+// consuming project's resources.
+
+import java.security.MessageDigest
+import org.gradle.tooling.GradleConnector
+
+def uiProps = new Properties()
+file("$rootDir/gradle.properties").withInputStream { uiProps.load(it) }
+
+def buildFromSource = project.hasProperty('solr.ui.buildFromSource') &&
+ project.property('solr.ui.buildFromSource') == 'true'
+
+def uiCommit = uiProps.getProperty('solr.ui.commit')
+if (!uiCommit && !buildFromSource) {
+ if (project.hasProperty('solr.ui.buildFromSource')) {
+ throw new GradleException("gradle.properties is missing solr.ui.commit and is not configured to build UI from source.")
+ }
+
+ logger.warn(
+ "WARNING: gradle.properties is missing solr.ui.commit and is not configured to build UI from source; " +
+ "falling back to build from source."
+ )
+ buildFromSource = true
+}
+
+def uiSha256 = uiProps.getProperty('solr.ui.wasmSha256')?.trim()
+if (uiSha256 == '') {
+ uiSha256 = null
+}
+
+def uiWasmZip = layout.buildDirectory.file("ui-download/solr-ui-wasm-${uiCommit}.zip")
+
+def sha256Of = { File f ->
+ MessageDigest.getInstance("SHA-256").digest(f.bytes)
+ .collect { String.format("%02x", it) }.join()
+}
+
+// Skip re-download if a local copy already exists and (when configured) matches the
+// expected checksum. The zip filename is keyed on the pinned commit, so bumping the
+// commit in gradle.properties naturally invalidates any stale local copy even when
+// no checksum is configured.
+def localCopyIsValid = {
+ File f = uiWasmZip.get().asFile
+ if (!f.exists()) {
+ return false
+ }
+ if (uiSha256 == null) {
+ return true
+ }
+ return sha256Of(f).equalsIgnoreCase(uiSha256)
+}
+
+tasks.register('downloadUiWasm') {
+ group = 'Build Dependency Download'
+ description = 'Downloads the Solr UI WebAssembly archive.'
+
+ inputs.property('uiCommit', uiCommit)
+ outputs.file(uiWasmZip)
+
+ onlyIf { !localCopyIsValid() }
+
+ doLast {
+ def targetFile = file(uiWasmZip)
+
+ // Ensure the parent directory for the destination file exists
+ if (targetFile.parentFile) {
+ targetFile.parentFile.mkdirs()
+ }
+
+ ant.get(
+ src: "https://nightlies.apache.org/solr/ui/wasm/${uiCommit}/solr-ui-wasm.zip",
+ dest: targetFile,
+ skipexisting: false
+ )
+ }
+}
+
+tasks.register('verifyUiWasm') {
+ group = "verification"
+ description = 'Verifies the checksum of the downloaded Solr UI WebAssembly archive.'
+
+ dependsOn tasks.named('downloadUiWasm')
+ doLast {
+ File file = uiWasmZip.get().asFile
+ if (uiSha256 == null) {
+ logger.warn(
+ "WARNING: no checksum configured for solr-ui-wasm.zip (commit ${uiCommit}); " +
+ "skipping integrity verification. Set solr.ui.wasmSha256 in gradle.properties to enable it."
+ )
+ return
+ }
+ def actual = sha256Of(file)
+ if (!actual.equalsIgnoreCase(uiSha256)) {
+ throw new GradleException(
+ "Checksum mismatch for solr-ui-wasm.zip: expected ${uiSha256} but got ${actual}. " +
+ "The downloaded artifact does not match gradle.properties and will not be used."
+ )
+ }
+ }
+}
+
+def uiFromSourceOutputDir = file("$rootDir/ui/webApp/build/dist/wasmJs/productionExecutable")
+def uiWebResourcesDir = layout.buildDirectory.dir('generated/ui-resources')
+
+// UI module lives at solr/ui — a sibling of webapp under the same root build.
+tasks.register('buildUiFromSource') {
+ inputs.dir(file("$rootDir/ui/shared/src"))
+ inputs.dir(file("$rootDir/ui/webApp/src"))
+ outputs.dir(uiFromSourceOutputDir)
+ doLast {
+ def connector = GradleConnector.newConnector()
+ .forProjectDirectory(file("$rootDir/ui"))
+ .useGradleVersion(gradle.gradleVersion)
+
+ def connection = connector.connect()
+ try {
+ connection.newBuild()
+ .forTasks(':webApp:wasmJsBrowserDistribution')
+ .setStandardOutput(System.out)
+ .setStandardError(System.err)
+ .run()
+ } finally {
+ connection.close()
+ }
+ }
+}
+
+tasks.register('prepareUiResources', Sync) {
+ into uiWebResourcesDir
+
+ if (buildFromSource) {
+ dependsOn tasks.named('buildUiFromSource')
+ from uiFromSourceOutputDir
+ doFirst { logger.lifecycle("Solr Admin UI: building from source (solr.ui.buildFromSource=true)") }
+ } else {
+ dependsOn tasks.named('verifyUiWasm')
+ from zipTree(uiWasmZip)
+ doFirst { logger.lifecycle("Solr Admin UI: using downloaded artifact for commit ${uiCommit}") }
+ }
+}
+
+tasks.named('processResources') {
+ dependsOn tasks.named('prepareUiResources')
+}
+
+sourceSets.main.resources.srcDir(uiWebResourcesDir)
+
+// Exposed so other scripts (e.g. the RM guard in the root build) can check what
+// mode this project resolved to, without re-parsing the property themselves.
+ext.solrUiBuildFromSource = buildFromSource
+
+def wasmJsUIBundleDir = layout.buildDirectory.dir("generated/ui-resources").get().asFile
+
+configurations.create("wasmJsUIBundle") {
+ canBeConsumed = true
+ canBeResolved = false
+}
+
+tasks.register("finalizeWasmJsUIBundleDir", Sync) {
+ from(wasmJsUIBundleDir) {
+ include("**")
+ }
+}
+
+artifacts {
+ add("wasmJsUIBundle", wasmJsUIBundleDir) {
+ builtBy("prepareUiResources")
+ }
+}
diff --git a/gradle/template.gradle.properties b/gradle/template.gradle.properties
index 946c47b2fce..b72a3154f0f 100644
--- a/gradle/template.gradle.properties
+++ b/gradle/template.gradle.properties
@@ -127,6 +127,17 @@ production=false
# parameter.
disableUiModule=false
+# Commit hash under which a wasmJs distribution was published on nightlies.apache.org
+# You may find the current Solr commit under https://nightlies.apache.org/solr/
+# If a pinned hash from the history does no longer exist on nightlies, consider building from source
+# by setting solr.ui.buildFromSource=true
+solr.ui.commit=473a55ef64a9a1605e00eb6c1c386887d4cb7dac
+# sha256 of the wasmJs distribution zip published for this commit.
+# Leave blank/omit to skip verification (build will WARN, not fail).
+solr.ui.wasmSha256=654494303e4af3b8bfb26a83d250603f19033820295591d88db0597991ce8ad2
+# Whether to ignore solr.ui.commit and build Solr from source
+solr.ui.buildFromSource=false
+
# Changelog generator settings (./gradlew writeChangelog, see dev-docs/changelog.adoc)
#user.name=<preferred display name>
#user.githubid=<github id>
diff --git a/gradle/validation/dependency-analyze.gradle.kts b/gradle/validation/dependency-analyze.gradle.kts
index b7fc7489481..226ef89cb37 100644
--- a/gradle/validation/dependency-analyze.gradle.kts
+++ b/gradle/validation/dependency-analyze.gradle.kts
@@ -29,18 +29,6 @@ tasks.register("analyzeDependencies") {
configure<DependencyAnalysisExtension> {
issues {
- project(":solr:ui") {
- onUnusedDependencies {
- severity("ignore")
- }
- onUsedTransitiveDependencies {
- severity("ignore")
- }
- onIncorrectConfiguration {
- severity("ignore")
- }
- }
-
project(":solr:solrj-jetty") {
onUnusedDependencies {
exclude(":solr:solrj")
diff --git a/gradle/validation/rat-sources.gradle b/gradle/validation/rat-sources.gradle
index 06cd1183c1d..93367c13b84 100644
--- a/gradle/validation/rat-sources.gradle
+++ b/gradle/validation/rat-sources.gradle
@@ -181,12 +181,13 @@ allprojects {
// Exclude new CHANGELOG and version-summary for each release
exclude "CHANGELOG.md"
exclude "changelog"
- break
- case ":solr":
// solr/ui is a registered subproject with its own rat task, but it may be disabled
exclude "ui"
+ break
+
+ case ":solr":
exclude "licenses"
break
diff --git a/gradle/validation/spotless.gradle b/gradle/validation/spotless.gradle
index 719da568381..28be95902cd 100644
--- a/gradle/validation/spotless.gradle
+++ b/gradle/validation/spotless.gradle
@@ -90,21 +90,6 @@ configure(allprojects) {prj ->
}
}
- // Configure spotless for kotlin sources
- plugins.withId("org.jetbrains.kotlin.multiplatform") {
- prj.apply plugin: libs.plugins.diffplug.spotless.get().pluginId
-
- spotless {
- kotlin {
- // Apply to all Kotlin and Kotlin DSL files
- target "**/*.kt", "**/*.kts"
-
- ktlint(libs.versions.ktlint.get())
- .customRuleSets([libs.nlopez.compose.ktlintrules.get().toString()])
- }
- }
- }
-
// Emit a custom message about how to fix formatting errors.
tasks.matching {task -> task.name == "spotlessJavaCheck"}.configureEach {
it.runToFixMessage.set(
diff --git a/settings.gradle b/settings.gradle
index 45cd5aaa8f3..615bba1a2b6 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -21,24 +21,10 @@ pluginManagement {
includeBuild("build-tools/build-infra")
}
-// The dependency-analysis plugin (build-health) bundles a kotlin-metadata-jvm that can't yet parse
-// Kotlin 2.4.0 metadata, so it fails ExplodeJarTask on the :solr:ui (Compose/KMP) module
-// ("Provided Metadata instance has version 2.4.0, while maximum supported version is 2.3.0").
-// Tracked upstream in autonomousapps/dependency-analysis-gradle-plugin#1661; until that ships,
-// force the metadata library to match Solr's Kotlin version so DAGP can analyze the UI module.
-buildscript {
- configurations.classpath {
- resolutionStrategy {
- force "org.jetbrains.kotlin:kotlin-metadata-jvm:2.4.0"
- }
- }
-}
-
plugins {
id 'com.gradle.develocity' version '4.2.2'
id 'com.gradle.common-custom-user-data-gradle-plugin' version '2.4.0'
id 'com.autonomousapps.build-health' version '3.16.0'
- id 'org.jetbrains.kotlin.multiplatform' version '2.4.20' apply false
}
apply from: file('gradle/develocity.gradle')
@@ -80,12 +66,6 @@ include "solr:packaging"
include "solr:distribution"
include "solr:docker"
-def disableUiModuleValue = providers.gradleProperty('disableUiModule').orNull
-gradle.ext.withUiModule = disableUiModuleValue == null || disableUiModuleValue != 'true'
-if (gradle.ext.withUiModule) {
- include(":solr:ui")
-}
-
def disableJsClientValue = providers.gradleProperty('disableJsClient').orNull
gradle.ext.withJsClient = disableJsClientValue == null || disableJsClientValue != 'true'
if (gradle.ext.withJsClient) {
diff --git a/solr/licenses/kotlin-stdlib-jdk7-2.4.0.jar.sha1 b/solr/licenses/kotlin-stdlib-jdk7-2.4.0.jar.sha1
deleted file mode 100644
index 487bdaa7546..00000000000
--- a/solr/licenses/kotlin-stdlib-jdk7-2.4.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-65464dd63e7ab1b7cb29f2b2554971088deb50f3
diff --git a/solr/licenses/kotlin-stdlib-jdk7-2.4.20.jar.sha1 b/solr/licenses/kotlin-stdlib-jdk7-2.4.20.jar.sha1
new file mode 100644
index 00000000000..4f6fcbcdf43
--- /dev/null
+++ b/solr/licenses/kotlin-stdlib-jdk7-2.4.20.jar.sha1
@@ -0,0 +1 @@
+ca077bda39af7b0e27015bd066001e3ee7febaaf
diff --git a/solr/licenses/kotlin-stdlib-jdk8-2.4.0.jar.sha1 b/solr/licenses/kotlin-stdlib-jdk8-2.4.0.jar.sha1
deleted file mode 100644
index 7ef533a17e1..00000000000
--- a/solr/licenses/kotlin-stdlib-jdk8-2.4.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-ff44d8831b07b547fc0263e33304e876788d6f0d
diff --git a/solr/licenses/kotlin-stdlib-jdk8-2.4.20.jar.sha1 b/solr/licenses/kotlin-stdlib-jdk8-2.4.20.jar.sha1
new file mode 100644
index 00000000000..e30929aaa2b
--- /dev/null
+++ b/solr/licenses/kotlin-stdlib-jdk8-2.4.20.jar.sha1
@@ -0,0 +1 @@
+0233f3b1c9519c6a62adb0106facf8867bbd3075
diff --git a/solr/modules/jwt-auth/gradle.lockfile b/solr/modules/jwt-auth/gradle.lockfile
index 30cedfb55e1..f2d58a07943 100644
--- a/solr/modules/jwt-auth/gradle.lockfile
+++ b/solr/modules/jwt-auth/gradle.lockfile
@@ -177,11 +177,11 @@ org.hamcrest:hamcrest:3.0=jarValidation,testCompileClasspath,testRuntimeClasspat
org.javassist:javassist:3.30.2-GA=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-reflect:2.2.21=jarValidation,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-common:2.2.21=testRuntimeClasspath
-org.jetbrains.kotlin:kotlin-stdlib-common:2.4.0=jarValidation
-org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.4.0=jarValidation,testRuntimeClasspath
-org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.4.0=jarValidation,testRuntimeClasspath
+org.jetbrains.kotlin:kotlin-stdlib-common:2.4.20=jarValidation
+org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.4.20=jarValidation,testRuntimeClasspath
+org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.4.20=jarValidation,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib:2.2.21=testCompileClasspath,testRuntimeClasspath
-org.jetbrains.kotlin:kotlin-stdlib:2.4.0=jarValidation
+org.jetbrains.kotlin:kotlin-stdlib:2.4.20=jarValidation
org.jetbrains:annotations:26.1.0=jarValidation,testCompileClasspath,testRuntimeClasspath
org.jspecify:jspecify:1.0.1=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-api:5.6.2=jarValidation,testRuntimeClasspath
diff --git a/solr/packaging/build.gradle b/solr/packaging/build.gradle
index 63c467388ef..464ab868130 100644
--- a/solr/packaging/build.gradle
+++ b/solr/packaging/build.gradle
@@ -375,3 +375,16 @@ abstract class BatsTask extends Exec {
super.exec()
}
}
+
+tasks.matching { it.name in ['assembleDist', 'releaseArtifacts'] }.configureEach {
+ doFirst {
+ def flagIsTrue = project.hasProperty('solr.ui.buildFromSource') &&
+ project.property('solr.ui.buildFromSource') == 'true'
+ if (!flagIsTrue) {
+ throw new GradleException(
+ "Release builds must set -Psolr.ui.buildFromSource=true so the Admin UI is " +
+ "built from the voted source tree, not pulled from nightlies.apache.org."
+ )
+ }
+ }
+}
diff --git a/solr/server/build.gradle b/solr/server/build.gradle
index e1338505722..f2dfe5632ad 100644
--- a/solr/server/build.gradle
+++ b/solr/server/build.gradle
@@ -103,22 +103,6 @@ task assemblePackaging(type: Sync) {
include "scripts/**"
include "solr/**"
include "README.md"
-
- if (rootProject.ext.development) {
- // Allow duplicates to overwrite previous files
- duplicatesStrategy = DuplicatesStrategy.INCLUDE
- // Rename dev files in development
- rename {String fileName -> fileName.replace("-dev.xml", ".xml")}
-
- // Exclude production configurations
- exclude "**/*-prod.xml"
- } else {
- // Rename prod files in production
- rename {String fileName -> fileName.replace("-prod.xml", ".xml")}
-
- // Exclude dev configurations
- exclude "**/*-dev.xml"
- }
})
// Add in the intersection of serverLib and solrCore
diff --git a/solr/server/etc/jetty-new-ui-dev.xml b/solr/server/etc/jetty-new-ui-dev.xml
deleted file mode 100644
index 01e49afe0da..00000000000
--- a/solr/server/etc/jetty-new-ui-dev.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one or more
- ~ contributor license agreements. See the NOTICE file distributed with
- ~ this work for additional information regarding copyright ownership.
- ~ The ASF licenses this file to You under the Apache License, Version 2.0
- ~ (the "License"); you may not use this file except in compliance with
- ~ the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_10_0.dtd">
-
-<!-- =============================================================== -->
-<!-- Configure the Jetty Server to respond with different CSP header -->
-<!-- for new Admin UI endpoint /solr/ui/*. -->
-<!-- This configuration overrides jetty-new-ui.xml during -->
-<!-- development and is excluded from released otherwise. -->
-<!-- =============================================================== -->
-
-<Configure id="Server" class="org.eclipse.jetty.server.Server">
- <Ref refid="RewriteHandler">
- <!-- SPA fallback: redirect all /solr/ui/* routes to index.html -->
- <Call name="addRule">
- <Arg>
- <New class="org.eclipse.jetty.rewrite.handler.RewriteRegexRule">
- <Set name="regex">^(/solr/ui/[^.?]*)(\?.*)?$</Set>
- <Set name="replacement">/solr/ui/index.html</Set>
- </New>
- </Arg>
- </Call>
- <Call name="addRule">
- <Arg>
- <New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
- <Set name="pattern">/solr/ui/*</Set>
- <Set name="headerName">Content-Security-Policy</Set>
- <Set name="headerValue">default-src 'none'; base-uri 'none'; connect-src *; form-action 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self' data:; media-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-eval'; worker-src 'self';</Set>
- </New>
- </Arg>
- </Call>
- </Ref>
-</Configure>
diff --git a/solr/server/etc/jetty-new-ui-prod.xml b/solr/server/etc/jetty-new-ui.xml
similarity index 100%
rename from solr/server/etc/jetty-new-ui-prod.xml
rename to solr/server/etc/jetty-new-ui.xml
diff --git a/solr/ui/.editorconfig b/solr/ui/.editorconfig
deleted file mode 100644
index 14a74d777f8..00000000000
--- a/solr/ui/.editorconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-[{*.kt,*.kts}]
-indent_size = 4
\ No newline at end of file
diff --git a/solr/ui/README.md b/solr/ui/README.md
deleted file mode 100644
index a9ebef64d27..00000000000
--- a/solr/ui/README.md
+++ /dev/null
@@ -1,55 +0,0 @@
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
-# Compose Admin UI
-
-> **⚠️ EXPERIMENTAL ⚠️**
->
-> This is an experimental module developed as a proof-of-concept. Many parts of the UI
-> are under development, use wrong colors, may not work or have limited functionality.
-
-This module contains the code for the new Admin UI written in Kotlin / Compose Multiplatform.
-
-## Supported Targets
-
-The module is available for desktop / JVM targets and web (WebAssembly).
-
-## Build and Run
-
-> **IMPORTANT**
->
-> Before you try to build your project, make sure you update your `gradle.properties` files to
-> reflect the module's configuration requirements. Review the differences between your file and
-> `gradle/template.gradle.properties` and update accordingly.
-
-To build and run the desktop client simply run `./gradlew :solr:ui:run`.
-
-Make sure that you have a Solr development instance running on `localhost:8983`, as the current
-implementation uses hardcoded values.
-
-The WebAssembly app is built and deployed together with the current webapp. To run and access it,
-you can build the project as usual (see [Quickstart](../../README.md#quickstart)) and then access
-[`http://localhost:8983/solr/compose`](http://localhost:8983/solr/compose).
-
-Various references are included in the webapp for already migrated pages.
-
-> Note that the standalone WebAssembly app executed via
-> `./gradlew :solr:ui:wasmJsBrowserRun` runs on port `8080` and will run
-> into CORS exceptions. Therefore, the usage of it for development is
-> discouraged.
->
-> Consider one of the above options instead.
diff --git a/solr/ui/build.gradle.kts b/solr/ui/build.gradle.kts
deleted file mode 100644
index 0d76bafc4d8..00000000000
--- a/solr/ui/build.gradle.kts
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.jetbrains.compose.desktop.application.dsl.TargetFormat
-import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
-import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
-
-repositories {
- google {
- mavenContent {
- includeGroupAndSubgroups("androidx")
- includeGroupAndSubgroups("com.android")
- includeGroupAndSubgroups("com.google")
- }
- }
-}
-// mavenCentral / enterprise mirror, shared with the rest of the build.
-apply(from = rootProject.file("build-tools/build-infra/declare-repositories.gradle"))
-
-plugins {
- alias(libs.plugins.kotlin.multiplatform)
- alias(libs.plugins.kotlin.serialization)
- alias(libs.plugins.jetbrains.compose)
- alias(libs.plugins.compose.compiler)
-}
-
-kotlin {
-
- // Add targets to support
- @OptIn(ExperimentalWasmDsl::class)
- wasmJs {
- outputModuleName = provider { "composeApp" }
- browser {
- commonWebpackConfig {
- outputFileName = "composeApp.js"
- devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply {
- // Serve sources to debug inside browser
- static(directory = project.projectDir.path)
- }
- // Note that webpack.config.d/ contains additional configuration
- }
- testTask {
- // Explicitly disable the wasmJs browser tests, as we do not have the suitable
- // environments right now (running only tests for JVM)
- enabled = false
- }
- }
- binaries.executable()
- }
-
- jvm()
-
- sourceSets {
- // Shared multiplatform dependencies
- commonMain.dependencies {
- implementation(project.dependencies.platform(project(":platform")))
- implementation(libs.compose.runtime)
- implementation(libs.compose.foundation)
- implementation(libs.compose.material3)
- implementation(libs.compose.ui)
- implementation(libs.compose.components.resources)
- implementation(libs.compose.uiToolingPreview)
- implementation(libs.androidx.lifecycle.viewmodelCompose)
- implementation(libs.androidx.lifecycle.viewModelNav3)
- implementation(libs.androidx.navigation3.ui)
- implementation(libs.androidx.material3.adaptive.asProvider())
- implementation(libs.androidx.material3.adaptive.nav3)
-
- implementation(libs.kotlinx.serialization.core)
- implementation(libs.kotlinx.serialization.json)
- implementation(libs.kotlinx.coroutines.core)
-
- implementation(libs.decompose.decompose)
- implementation(libs.essenty.lifecycle)
- implementation(libs.decompose.extensions.compose)
- implementation(libs.mvikotlin.extensions.coroutines)
- implementation(libs.mvikotlin.mvikotlin)
- implementation(libs.mvikotlin.main)
-
- implementation(project.dependencies.platform(libs.ktor.bom))
- implementation(libs.ktor.client.auth)
- implementation(libs.ktor.client.core)
- implementation(libs.ktor.client.contentNegotiation)
- implementation(libs.ktor.client.serialization.json)
- implementation(libs.squareup.okio)
-
- implementation(libs.oshai.logging)
- }
-
- commonTest.dependencies {
- implementation(kotlin("test"))
- implementation(libs.kotlinx.coroutines.test)
- implementation(libs.compose.uiTest)
- implementation(libs.ktor.client.mock)
- }
-
- wasmJsMain.dependencies {
- implementation(libs.ktor.client.js)
- }
-
- jvmMain.dependencies {
- implementation(libs.ktor.client.cio)
- implementation(libs.ktor.server.core)
- implementation(libs.ktor.server.cio)
- implementation(libs.ktor.server.htmlBuilder)
- implementation(compose.desktop.currentOs)
- runtimeOnly(libs.kotlinx.coroutines.swing)
- }
- }
-}
-
-configurations {
- all {
- // Exclude old material dependencies
- exclude(group = "org.jetbrains.compose.material", module = "material")
- }
-}
-
-compose.desktop {
- application {
- mainClass = "org.apache.solr.ui.MainKt"
-
- buildTypes.release.proguard {
- version.set("7.6.0")
- configurationFiles.from("proguard.pro")
- }
-
- nativeDistributions {
- targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
-
- packageVersion = "1.0.0"
-
- windows {
- packageName = "Apache Solr Desktop"
- // App icon (needs to be .ico)
- iconFile.set(project.file("assets/logo.ico"))
- // Directory name (if not per user "C:\Program Files\[installationPath]")
- installationPath = "Apache Solr Desktop"
- // Create desktop shortcut
- shortcut = true
- }
-
- linux {
- packageName = "solr-desktop"
- iconFile.set(project.file("assets/logo.png"))
- }
-
- macOS {
- packageName = "ApacheSolrDesktop"
- iconFile.set(project.file("assets/logo.png"))
- }
- }
- }
-}
-
-// Compose resource accessor generation is not reliably wired to all Kotlin
-// compile tasks (notably wasmJs), causing intermittent "source file not found"
-// for generated accessors. Wire it explicitly.
-val resourceAccessorTasks = tasks.matching { it.name.startsWith("generateResourceAccessorsFor") }
-tasks.matching { it.name.startsWith("compileKotlin") }.configureEach {
- dependsOn(resourceAccessorTasks)
-}
-
-tasks.matching { task ->
- task.name in listOf(
- "allTests",
- "jvmTest",
- "wasmJsTest",
- "wasmJsBrowserTest",
- )
-}.configureEach {
- // These kotlin multiplatform test tasks are not excluded on "gradlew ... -x test",
- // so we disable them explicitly
- onlyIf { !gradle.startParameter.excludedTaskNames.contains("test") }
-
- // Note that "gradlew check -x test --dry-run" does not correctly resolve this exclusion rule,
- // and you will see the test tasks being listed there as well, but they will be skipped as
- // expected
-}
-
-// Explicitly enable or disable development tasks based on the build variant
-// This prevents any invalid task dependencies on assemble task execution
-tasks.matching {
- val taskName = it.name.lowercase()
- taskName.contains("wasmjs") && taskName.contains("development")
-}.configureEach {
- onlyIf { rootProject.ext["development"] as Boolean }
-}
-
-// Explicitly enable or disable production tasks based on the build variant
-// This prevents any invalid task dependencies on assemble task execution
-tasks.matching {
- val taskName = it.name.lowercase()
- taskName.contains("wasmjs") && taskName.contains("production")
-}.configureEach {
- onlyIf { !(rootProject.ext["development"] as Boolean) }
-}
-
-val wasmJsUIBundleDir = layout.buildDirectory.dir(
- if (rootProject.ext["development"] as Boolean) {
- "dist/wasmJs/developmentExecutable"
- } else {
- "dist/wasmJs/productionExecutable"
- },
-).get().asFile
-
-val wasmJsUIBundle = configurations.create("wasmJsUIBundle") {
- isCanBeConsumed = true
- isCanBeResolved = false
-}
-
-val finalizeWasmJsUIBundleDir = tasks.register<Sync>("finalizeWasmJsUIBundleDir") {
- from(wasmJsUIBundleDir) {
- include("**")
- }
-}
-
-artifacts {
- add("wasmJsUIBundle", wasmJsUIBundleDir) {
- builtBy(
- if (rootProject.ext["development"] as Boolean) {
- ":solr:ui:wasmJsBrowserDevelopmentExecutableDistribution"
- } else {
- ":solr:ui:wasmJsBrowserDistribution"
- },
- )
- }
-}
diff --git a/solr/ui/gradle.lockfile b/solr/ui/gradle.lockfile
deleted file mode 100644
index 4502d38cfc6..00000000000
--- a/solr/ui/gradle.lockfile
+++ /dev/null
@@ -1,515 +0,0 @@
-# This is a Gradle generated file for dependency locking.
-# Manual edits can break the build and are not advised.
-# This file is expected to be part of source control.
-# To regenerate this file, run: ./gradlew :solr:ui:dependencies --write-locks
-androidx.annotation:annotation-jvm:1.9.1=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.annotation:annotation-wasm-js:1.9.1=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.annotation:annotation:1.9.1=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeC [...]
-androidx.arch.core:core-common:2.2.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeC [...]
-androidx.collection:collection-jvm:1.5.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.collection:collection-wasm-js:1.5.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.collection:collection:1.5.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeC [...]
-androidx.compose.runtime:runtime-annotation-jvm:1.11.2=composeHotReloadDevTools
-androidx.compose.runtime:runtime-annotation-jvm:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.compose.runtime:runtime-annotation-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.compose.runtime:runtime-annotation:1.11.2=composeHotReloadDevTools
-androidx.compose.runtime:runtime-annotation:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jv [...]
-androidx.compose.runtime:runtime-desktop:1.11.2=composeHotReloadDevTools
-androidx.compose.runtime:runtime-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.compose.runtime:runtime-retain-desktop:1.11.2=composeHotReloadDevTools
-androidx.compose.runtime:runtime-retain-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.compose.runtime:runtime-retain-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.compose.runtime:runtime-retain:1.11.2=composeHotReloadDevTools
-androidx.compose.runtime:runtime-retain:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMai [...]
-androidx.compose.runtime:runtime-saveable-desktop:1.11.2=composeHotReloadDevTools
-androidx.compose.runtime:runtime-saveable-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.compose.runtime:runtime-saveable-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.compose.runtime:runtime-saveable:1.11.2=composeHotReloadDevTools
-androidx.compose.runtime:runtime-saveable:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmM [...]
-androidx.compose.runtime:runtime-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.compose.runtime:runtime:1.11.2=composeHotReloadDevTools
-androidx.compose.runtime:runtime:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompil [...]
-androidx.graphics:graphics-shapes-desktop:1.1.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.graphics:graphics-shapes-wasm-js:1.1.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.graphics:graphics-shapes:1.1.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompil [...]
-androidx.lifecycle:lifecycle-common-jvm:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.lifecycle:lifecycle-common-jvm:2.9.4=composeHotReloadDevTools
-androidx.lifecycle:lifecycle-common-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.lifecycle:lifecycle-common:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCom [...]
-androidx.lifecycle:lifecycle-common:2.9.4=composeHotReloadDevTools
-androidx.lifecycle:lifecycle-runtime-compose-desktop:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.lifecycle:lifecycle-runtime-compose-desktop:2.9.4=composeHotReloadDevTools
-androidx.lifecycle:lifecycle-runtime-compose-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.lifecycle:lifecycle-runtime-compose:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,j [...]
-androidx.lifecycle:lifecycle-runtime-compose:2.9.4=composeHotReloadDevTools
-androidx.lifecycle:lifecycle-runtime-desktop:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.lifecycle:lifecycle-runtime-desktop:2.9.4=composeHotReloadDevTools
-androidx.lifecycle:lifecycle-runtime-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.lifecycle:lifecycle-runtime:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCo [...]
-androidx.lifecycle:lifecycle-runtime:2.9.4=composeHotReloadDevTools
-androidx.lifecycle:lifecycle-viewmodel-compose-desktop:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.lifecycle:lifecycle-viewmodel-compose-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.lifecycle:lifecycle-viewmodel-compose:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath [...]
-androidx.lifecycle:lifecycle-viewmodel-desktop:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.lifecycle:lifecycle-viewmodel-desktop:2.9.4=composeHotReloadDevTools
-androidx.lifecycle:lifecycle-viewmodel-navigation3-desktop:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.lifecycle:lifecycle-viewmodel-navigation3-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.lifecycle:lifecycle-viewmodel-navigation3:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClass [...]
-androidx.lifecycle:lifecycle-viewmodel-savedstate-desktop:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.lifecycle:lifecycle-viewmodel-savedstate-desktop:2.9.4=composeHotReloadDevTools
-androidx.lifecycle:lifecycle-viewmodel-savedstate-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.lifecycle:lifecycle-viewmodel-savedstate:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClassp [...]
-androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.4=composeHotReloadDevTools
-androidx.lifecycle:lifecycle-viewmodel-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.lifecycle:lifecycle-viewmodel:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMain [...]
-androidx.lifecycle:lifecycle-viewmodel:2.9.4=composeHotReloadDevTools
-androidx.navigation3:navigation3-runtime-desktop:1.1.1=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.navigation3:navigation3-runtime-wasm-js:1.1.1=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.navigation3:navigation3-runtime:1.1.1=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMai [...]
-androidx.navigationevent:navigationevent-compose-desktop:1.1.1=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevRuntimeClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestRuntimeClasspath
-androidx.navigationevent:navigationevent-compose-wasm-js:1.1.1=wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.navigationevent:navigationevent-compose:1.1.1=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainResolvableDependenciesMetadata,jvm [...]
-androidx.navigationevent:navigationevent-desktop:1.0.1=composeHotReloadDevTools
-androidx.navigationevent:navigationevent-desktop:1.0.2=jvmCompileClasspath,jvmDevCompileClasspath,jvmMainCompileClasspath,jvmTestCompileClasspath
-androidx.navigationevent:navigationevent-desktop:1.1.1=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevRuntimeClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestRuntimeClasspath
-androidx.navigationevent:navigationevent-wasm-js:1.0.2=wasmJsCompileClasspath,wasmJsTestCompileClasspath
-androidx.navigationevent:navigationevent-wasm-js:1.1.1=wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.navigationevent:navigationevent:1.0.1=composeHotReloadDevTools
-androidx.navigationevent:navigationevent:1.0.2=jvmCompileClasspath,jvmDevCompileClasspath,jvmMainCompileClasspath,jvmTestCompileClasspath,wasmJsCompileClasspath,wasmJsTestCompileClasspath
-androidx.navigationevent:navigationevent:1.1.1=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainResolvableDependenciesMetadata,jvmMainRunt [...]
-androidx.savedstate:savedstate-compose-desktop:1.4.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.savedstate:savedstate-compose-wasm-js:1.4.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.savedstate:savedstate-compose:1.4.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDev [...]
-androidx.savedstate:savedstate-desktop:1.4.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.savedstate:savedstate-wasm-js:1.4.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.savedstate:savedstate:1.4.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeC [...]
-androidx.window:window-core-jvm:1.5.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-androidx.window:window-core-wasm-js:1.5.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-androidx.window:window-core:1.5.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClass [...]
-com.arkivanov.decompose:decompose-jvm:3.5.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-com.arkivanov.decompose:decompose-wasm-js:3.5.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-com.arkivanov.decompose:decompose:3.5.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompil [...]
-com.arkivanov.decompose:extensions-compose-jvm:3.5.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-com.arkivanov.decompose:extensions-compose-wasm-js:3.5.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-com.arkivanov.decompose:extensions-compose:3.5.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmM [...]
-com.arkivanov.essenty:back-handler-jvm:2.5.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-com.arkivanov.essenty:back-handler-wasm-js:2.5.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-com.arkivanov.essenty:back-handler:2.5.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompi [...]
-com.arkivanov.essenty:instance-keeper-jvm:2.5.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-com.arkivanov.essenty:instance-keeper-wasm-js:2.5.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-com.arkivanov.essenty:instance-keeper:2.5.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCo [...]
-com.arkivanov.essenty:lifecycle-jvm:2.6.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-com.arkivanov.essenty:lifecycle-wasm-js:2.6.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-com.arkivanov.essenty:lifecycle:2.6.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileC [...]
-com.arkivanov.essenty:state-keeper-jvm:2.5.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-com.arkivanov.essenty:state-keeper-wasm-js:2.5.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-com.arkivanov.essenty:state-keeper:2.5.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompi [...]
-com.arkivanov.essenty:utils-internal-jvm:2.6.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevRuntimeClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestRuntimeClasspath
-com.arkivanov.essenty:utils-internal-wasm-js:2.6.0=wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-com.arkivanov.essenty:utils-internal:2.6.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainResolvableDependenciesMetadata,jvmMainRuntimeC [...]
-com.arkivanov.mvikotlin:mvikotlin-extensions-coroutines-jvm:4.4.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-com.arkivanov.mvikotlin:mvikotlin-extensions-coroutines-wasm-js:4.4.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-com.arkivanov.mvikotlin:mvikotlin-extensions-coroutines:4.4.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeC [...]
-com.arkivanov.mvikotlin:mvikotlin-jvm:4.4.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-com.arkivanov.mvikotlin:mvikotlin-main-jvm:4.4.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-com.arkivanov.mvikotlin:mvikotlin-main-wasm-js:4.4.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-com.arkivanov.mvikotlin:mvikotlin-main:4.4.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainC [...]
-com.arkivanov.mvikotlin:mvikotlin-wasm-js:4.4.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-com.arkivanov.mvikotlin:mvikotlin:4.4.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompil [...]
-com.squareup.okio:okio-jvm:3.18.1=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-com.squareup.okio:okio-wasm-js:3.18.1=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-com.squareup.okio:okio:3.18.1=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath [...]
-com.typesafe:config:1.4.5=composeHotReloadMcp
-com.typesafe:config:1.4.9=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.github.oshai:kotlin-logging-jvm:8.0.03=composeHotReloadMcp
-io.github.oshai:kotlin-logging-jvm:8.0.4=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.github.oshai:kotlin-logging-wasm-js:8.0.4=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.github.oshai:kotlin-logging:8.0.03=composeHotReloadMcp
-io.github.oshai:kotlin-logging:8.0.4=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileCl [...]
-io.ktor:ktor-bom:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMai [...]
-io.ktor:ktor-client-auth-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-client-auth-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-client-auth:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspat [...]
-io.ktor:ktor-client-cio-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-client-cio:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainResolvableDependenciesMetadata,jvmMainRuntimeClasspath,jvmRuntimeClasspath [...]
-io.ktor:ktor-client-content-negotiation-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-client-content-negotiation-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-client-content-negotiation:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMain [...]
-io.ktor:ktor-client-core-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-client-core-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-client-core:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspat [...]
-io.ktor:ktor-client-js-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-client-js:3.5.2=allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,wasmJsCompileClasspath,wasmJsMainResolvableDependenciesMetadata,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestResolvableDependenciesMetadata,wasmJsTestRuntimeClasspath,webTestResolvableDependenciesMetadata
-io.ktor:ktor-client-mock-jvm:3.5.2=composeHotReloadDevJvmTestRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-client-mock-wasm-js:3.5.2=wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-client-mock:3.5.2=allTestSourceSetsCompileDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmTestRuntimeClasspath,jvmTestCompileClasspath,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestResolvableDependenciesMetadata,wasmJsTestRuntimeClasspath,webTestResolvableDependenciesMetadata
-io.ktor:ktor-events-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-events-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-events-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-events:3.4.3=composeHotReloadMcp
-io.ktor:ktor-events:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvm [...]
-io.ktor:ktor-http-cio-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-http-cio-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-http-cio-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-http-cio:3.4.3=composeHotReloadMcp
-io.ktor:ktor-http-cio:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,j [...]
-io.ktor:ktor-http-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-http-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-http-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-http:3.4.3=composeHotReloadMcp
-io.ktor:ktor-http:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMa [...]
-io.ktor:ktor-io-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-io-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-io-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-io:3.4.3=composeHotReloadMcp
-io.ktor:ktor-io:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMain [...]
-io.ktor:ktor-network-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-network-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-network-tls-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-network-tls:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainResolvableDependenciesMetadata,jvmMainRuntimeClasspath,jvmRuntimeClasspat [...]
-io.ktor:ktor-network:3.4.3=composeHotReloadMcp
-io.ktor:ktor-network:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainResolvableDependenciesMetadata,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jv [...]
-io.ktor:ktor-serialization-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-serialization-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-serialization-kotlinx-json-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-serialization-kotlinx-json-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-serialization-kotlinx-json-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-serialization-kotlinx-json:3.4.3=composeHotReloadMcp
-io.ktor:ktor-serialization-kotlinx-json:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMain [...]
-io.ktor:ktor-serialization-kotlinx-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-serialization-kotlinx-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-serialization-kotlinx-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-serialization-kotlinx:3.4.3=composeHotReloadMcp
-io.ktor:ktor-serialization-kotlinx:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompi [...]
-io.ktor:ktor-serialization-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-serialization:3.4.3=composeHotReloadMcp
-io.ktor:ktor-serialization:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClassp [...]
-io.ktor:ktor-server-cio-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-server-cio:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainResolvableDependenciesMetadata,jvmMainRuntimeClasspath,jvmRuntimeClasspath [...]
-io.ktor:ktor-server-content-negotiation-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-server-content-negotiation:3.4.3=composeHotReloadMcp
-io.ktor:ktor-server-core-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-server-core-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-server-core:3.4.3=composeHotReloadMcp
-io.ktor:ktor-server-core:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainResolvableDependenciesMetadata,jvmMainRuntimeClasspath,jvmRuntimeClasspat [...]
-io.ktor:ktor-server-html-builder-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-server-html-builder:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainResolvableDependenciesMetadata,jvmMainRuntimeClasspath,jvmRuntime [...]
-io.ktor:ktor-server-sse-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-server-sse:3.4.3=composeHotReloadMcp
-io.ktor:ktor-server-websockets-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-server-websockets:3.4.3=composeHotReloadMcp
-io.ktor:ktor-sse-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-sse-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-sse-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-sse:3.4.3=composeHotReloadMcp
-io.ktor:ktor-sse:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMai [...]
-io.ktor:ktor-utils-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-utils-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-utils-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-utils:3.4.3=composeHotReloadMcp
-io.ktor:ktor-utils:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmM [...]
-io.ktor:ktor-websocket-serialization-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-websocket-serialization-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-websocket-serialization-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-websocket-serialization:3.4.3=composeHotReloadMcp
-io.ktor:ktor-websocket-serialization:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCom [...]
-io.ktor:ktor-websockets-jvm:3.4.3=composeHotReloadMcp
-io.ktor:ktor-websockets-jvm:3.5.2=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-io.ktor:ktor-websockets-wasm-js:3.5.2=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-io.ktor:ktor-websockets:3.4.3=composeHotReloadMcp
-io.ktor:ktor-websockets:3.5.2=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath [...]
-io.modelcontextprotocol:kotlin-sdk-core-jvm:0.13.0=composeHotReloadMcp
-io.modelcontextprotocol:kotlin-sdk-core:0.13.0=composeHotReloadMcp
-io.modelcontextprotocol:kotlin-sdk-server-jvm:0.13.0=composeHotReloadMcp
-io.modelcontextprotocol:kotlin-sdk-server:0.13.0=composeHotReloadMcp
-io.sellmair:evas-compose-jvm:1.4.0=composeHotReloadDevTools
-io.sellmair:evas-compose:1.4.0=composeHotReloadDevTools
-io.sellmair:evas-jvm:1.4.0=composeHotReloadDevTools
-io.sellmair:evas:1.4.0=composeHotReloadDevTools
-junit:junit:4.13.2=composeHotReloadDevJvmTestRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.fusesource.jansi:jansi:2.4.2=composeHotReloadMcp
-org.hamcrest:hamcrest-core:1.3=composeHotReloadDevJvmTestRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.javassist:javassist:3.30.2-GA=composeHotReloadAgent
-org.jetbrains.androidx.lifecycle:lifecycle-common-jvm:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-common-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-common:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClassp [...]
-org.jetbrains.androidx.lifecycle:lifecycle-common:2.9.6=composeHotReloadDevTools
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose-desktop:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose-desktop:2.9.6=composeHotReloadDevTools
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRunt [...]
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose:2.9.6=composeHotReloadDevTools
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-desktop:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-runtime-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClass [...]
-org.jetbrains.androidx.lifecycle:lifecycle-runtime:2.9.6=composeHotReloadDevTools
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose-desktop:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRu [...]
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-desktop:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-navigation3-desktop:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-navigation3-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-navigation3:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmD [...]
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate-desktop:2.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDe [...]
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-savedstate:2.9.6=composeHotReloadDevTools
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-wasm-js:2.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeCla [...]
-org.jetbrains.androidx.lifecycle:lifecycle-viewmodel:2.9.6=composeHotReloadDevTools
-org.jetbrains.androidx.navigation3:navigation3-ui-desktop:1.1.1=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.androidx.navigation3:navigation3-ui-wasm-js:1.1.1=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.androidx.navigation3:navigation3-ui:1.1.1=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspa [...]
-org.jetbrains.androidx.navigationevent:navigationevent-compose-desktop:1.0.1=jvmCompileClasspath,jvmDevCompileClasspath,jvmMainCompileClasspath,jvmTestCompileClasspath
-org.jetbrains.androidx.navigationevent:navigationevent-compose-desktop:1.1.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevRuntimeClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestRuntimeClasspath
-org.jetbrains.androidx.navigationevent:navigationevent-compose-wasm-js:1.0.1=wasmJsCompileClasspath,wasmJsTestCompileClasspath
-org.jetbrains.androidx.navigationevent:navigationevent-compose-wasm-js:1.1.0=wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.androidx.navigationevent:navigationevent-compose:1.0.1=jvmCompileClasspath,jvmDevCompileClasspath,jvmMainCompileClasspath,jvmTestCompileClasspath,wasmJsCompileClasspath,wasmJsTestCompileClasspath
-org.jetbrains.androidx.navigationevent:navigationevent-compose:1.1.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainResolvableDependenci [...]
-org.jetbrains.androidx.savedstate:savedstate-compose-desktop:1.3.6=composeHotReloadDevTools
-org.jetbrains.androidx.savedstate:savedstate-compose-desktop:1.4.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.androidx.savedstate:savedstate-compose-wasm-js:1.4.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.androidx.savedstate:savedstate-compose:1.3.6=composeHotReloadDevTools
-org.jetbrains.androidx.savedstate:savedstate-compose:1.4.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClas [...]
-org.jetbrains.androidx.savedstate:savedstate-wasm-js:1.4.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.androidx.savedstate:savedstate:1.3.6=composeHotReloadDevTools
-org.jetbrains.androidx.savedstate:savedstate:1.4.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jv [...]
-org.jetbrains.androidx.window:window-core-desktop:1.5.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.androidx.window:window-core-wasm-js:1.5.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.androidx.window:window-core:1.5.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMa [...]
-org.jetbrains.compose.animation:animation-core-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.animation:animation-core-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.animation:animation-core-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.animation:animation-core:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.animation:animation-core:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath [...]
-org.jetbrains.compose.animation:animation-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.animation:animation-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.animation:animation-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.animation:animation:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.animation:animation:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmM [...]
-org.jetbrains.compose.annotation-internal:annotation-wasm-js:1.10.0=wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.annotation-internal:annotation:1.10.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmDevResolvableDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCommonMainCompileClasspath,metadataCompileClasspath,wasmJsMainResolvableDependenciesMetadata,wasmJs [...]
-org.jetbrains.compose.annotation-internal:annotation:1.9.1=composeHotReloadDevTools
-org.jetbrains.compose.collection-internal:collection-wasm-js:1.10.0=wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.collection-internal:collection:1.10.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmDevResolvableDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCommonMainCompileClasspath,metadataCompileClasspath,wasmJsMainResolvableDependenciesMetadata,wasmJs [...]
-org.jetbrains.compose.collection-internal:collection:1.9.1=composeHotReloadDevTools
-org.jetbrains.compose.collection-internal:collection:1.9.3=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevRuntimeClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.components:components-resources-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.components:components-resources-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.components:components-resources-wasmJs:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.components:components-resources:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.components:components-resources:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeCl [...]
-org.jetbrains.compose.desktop:desktop-jvm:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.desktop:desktop-jvm:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.desktop:desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.desktop:desktop:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainResolvableDependenciesMetadata,jvmMainRuntimeClasspath,jvmR [...]
-org.jetbrains.compose.foundation:foundation-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.foundation:foundation-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.foundation:foundation-layout-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.foundation:foundation-layout-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.foundation:foundation-layout-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.foundation:foundation-layout:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.foundation:foundation-layout:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClass [...]
-org.jetbrains.compose.foundation:foundation-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.foundation:foundation:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.foundation:foundation:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jv [...]
-org.jetbrains.compose.hot-reload:hot-reload-agent:1.2.0=composeHotReloadAgent
-org.jetbrains.compose.hot-reload:hot-reload-analysis:1.2.0=composeHotReloadAgent
-org.jetbrains.compose.hot-reload:hot-reload-annotations-jvm:1.2.0=composeHotReloadAgent,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,composeHotReloadMcp,composeHotReloadRuntime,jvmDevCompileClasspath,jvmDevRuntimeClasspath
-org.jetbrains.compose.hot-reload:hot-reload-annotations:1.2.0=allDevSourceSetsCompileDependenciesMetadata,composeHotReloadAgent,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,composeHotReloadMcp,composeHotReloadRuntime,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath
-org.jetbrains.compose.hot-reload:hot-reload-core:1.2.0=composeHotReloadAgent,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,composeHotReloadMcp,composeHotReloadRuntime
-org.jetbrains.compose.hot-reload:hot-reload-devtools-api:1.2.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,composeHotReloadMcp,composeHotReloadRuntime
-org.jetbrains.compose.hot-reload:hot-reload-devtools:1.2.0=composeHotReloadDevTools
-org.jetbrains.compose.hot-reload:hot-reload-mcp:1.2.0=composeHotReloadMcp
-org.jetbrains.compose.hot-reload:hot-reload-orchestration:1.2.0=composeHotReloadAgent,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,composeHotReloadMcp,composeHotReloadRuntime
-org.jetbrains.compose.hot-reload:hot-reload-runtime-api-jvm:1.2.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevTools,jvmDevCompileClasspath,jvmDevRuntimeClasspath
-org.jetbrains.compose.hot-reload:hot-reload-runtime-api:1.2.0=allDevSourceSetsCompileDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevTools,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath
-org.jetbrains.compose.hot-reload:hot-reload-runtime-jvm:1.2.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadRuntime
-org.jetbrains.compose.material3.adaptive:adaptive-desktop:1.3.0-rc01=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.material3.adaptive:adaptive-layout-desktop:1.3.0-rc01=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.material3.adaptive:adaptive-layout-wasm-js:1.3.0-rc01=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.material3.adaptive:adaptive-layout:1.3.0-rc01=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRu [...]
-org.jetbrains.compose.material3.adaptive:adaptive-navigation-desktop:1.3.0-rc01=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.material3.adaptive:adaptive-navigation-wasm-js:1.3.0-rc01=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.material3.adaptive:adaptive-navigation3-desktop:1.3.0-rc01=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.material3.adaptive:adaptive-navigation3-wasm-js:1.3.0-rc01=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.material3.adaptive:adaptive-navigation3:1.3.0-rc01=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvm [...]
-org.jetbrains.compose.material3.adaptive:adaptive-navigation:1.3.0-rc01=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmD [...]
-org.jetbrains.compose.material3.adaptive:adaptive-wasm-js:1.3.0-rc01=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.material3.adaptive:adaptive:1.3.0-rc01=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeCl [...]
-org.jetbrains.compose.material3:material3-desktop:1.10.0-alpha05=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.material3:material3-desktop:1.9.0=composeHotReloadDevTools
-org.jetbrains.compose.material3:material3-wasm-js:1.10.0-alpha05=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.material3:material3:1.10.0-alpha05=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClassp [...]
-org.jetbrains.compose.material3:material3:1.9.0=composeHotReloadDevTools
-org.jetbrains.compose.material:material-icons-core-desktop:1.7.3=composeHotReloadDevTools
-org.jetbrains.compose.material:material-icons-core:1.7.3=composeHotReloadDevTools
-org.jetbrains.compose.material:material-ripple-desktop:1.9.1=composeHotReloadDevTools
-org.jetbrains.compose.material:material-ripple-desktop:1.9.3=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.material:material-ripple-wasm-js:1.9.3=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.material:material-ripple:1.9.1=composeHotReloadDevTools
-org.jetbrains.compose.material:material-ripple:1.9.3=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath, [...]
-org.jetbrains.compose.runtime:runtime-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.runtime:runtime-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.runtime:runtime-saveable-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.runtime:runtime-saveable-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.runtime:runtime-saveable-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.runtime:runtime-saveable:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.runtime:runtime-saveable:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath [...]
-org.jetbrains.compose.runtime:runtime-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.runtime:runtime:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.runtime:runtime:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainC [...]
-org.jetbrains.compose.ui:ui-backhandler-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-backhandler-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevRuntimeClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-backhandler-wasm-js:1.12.0=wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-backhandler:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-backhandler:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainResolvableDependenciesMetadata,jvmMainRunt [...]
-org.jetbrains.compose.ui:ui-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-geometry-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-geometry-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-geometry-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-geometry:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-geometry:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCo [...]
-org.jetbrains.compose.ui:ui-graphics-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-graphics-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-graphics-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-graphics:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-graphics:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCo [...]
-org.jetbrains.compose.ui:ui-test-desktop:1.12.0=composeHotReloadDevJvmTestRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-test-wasm-js:1.12.0=wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-test:1.12.0=allTestSourceSetsCompileDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmTestRuntimeClasspath,jvmTestCompileClasspath,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestResolvableDependenciesMetadata,wasmJsTestRuntimeClasspath,webTestResolvableDependenciesMetadata
-org.jetbrains.compose.ui:ui-text-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-text-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-text-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-text:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-text:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompil [...]
-org.jetbrains.compose.ui:ui-tooling-preview-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-tooling-preview-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-tooling-preview-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-tooling-preview:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-tooling-preview:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jv [...]
-org.jetbrains.compose.ui:ui-uikit:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmDevResolvableDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCommonMainCompileClasspath,metadataCompileClasspath,wasmJsMainResolvableDependenciesMetadata,wasmJsTestResolvableDepen [...]
-org.jetbrains.compose.ui:ui-unit-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-unit-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-unit-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-unit:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-unit:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompil [...]
-org.jetbrains.compose.ui:ui-util-desktop:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-util-desktop:1.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-util-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.ui:ui-util:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui-util:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompil [...]
-org.jetbrains.compose.ui:ui-wasm-js:1.12.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.compose.ui:ui:1.11.1=composeHotReloadDevTools
-org.jetbrains.compose.ui:ui:1.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClas [...]
-org.jetbrains.kotlin:kotlin-build-tools-api:2.4.0=kotlinAbiValidationCompatClasspath
-org.jetbrains.kotlin:kotlin-build-tools-api:2.4.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
-org.jetbrains.kotlin:kotlin-build-tools-compat:2.4.20=kotlinAbiValidationCompatClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
-org.jetbrains.kotlin:kotlin-build-tools-cri-impl:2.4.0=kotlinAbiValidationCompatClasspath
-org.jetbrains.kotlin:kotlin-build-tools-cri-impl:2.4.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
-org.jetbrains.kotlin:kotlin-build-tools-impl:2.4.0=kotlinAbiValidationCompatClasspath
-org.jetbrains.kotlin:kotlin-build-tools-impl:2.4.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
-org.jetbrains.kotlin:kotlin-compiler-embeddable:2.4.0=kotlinAbiValidationCompatClasspath
-org.jetbrains.kotlin:kotlin-compiler-embeddable:2.4.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
-org.jetbrains.kotlin:kotlin-compiler-runner:2.4.0=kotlinAbiValidationCompatClasspath
-org.jetbrains.kotlin:kotlin-compiler-runner:2.4.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
-org.jetbrains.kotlin:kotlin-compose-compiler-plugin-embeddable:2.4.0=kotlinCompilerPluginClasspathDesktopDev,kotlinCompilerPluginClasspathDesktopMain,kotlinCompilerPluginClasspathDesktopTest
-org.jetbrains.kotlin:kotlin-compose-compiler-plugin-embeddable:2.4.20=kotlinCompilerPluginClasspathJvmDev,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest
-org.jetbrains.kotlin:kotlin-daemon-client:2.4.0=kotlinAbiValidationCompatClasspath
-org.jetbrains.kotlin:kotlin-daemon-client:2.4.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
-org.jetbrains.kotlin:kotlin-daemon-embeddable:2.4.0=kotlinAbiValidationCompatClasspath
-org.jetbrains.kotlin:kotlin-daemon-embeddable:2.4.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
-org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.4.20=kotlinKlibCommonizerClasspath
-org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinAbiValidationCompatClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
-org.jetbrains.kotlin:kotlin-reflect:2.3.0=composeHotReloadMcp
-org.jetbrains.kotlin:kotlin-reflect:2.3.21=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,composeHotReloadDevDesktopDevRuntimeClasspath,composeHotReloadDevDesktopRuntimeClasspath,composeHotReloadDevDesktopTestRuntimeClasspath,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,desktopCompileClasspath,desktopDevCompileClasspath,desktopD [...]
-org.jetbrains.kotlin:kotlin-script-runtime:2.4.0=kotlinAbiValidationCompatClasspath,kotlinCompilerPluginClasspathDesktopDev,kotlinCompilerPluginClasspathDesktopMain,kotlinCompilerPluginClasspathDesktopTest
-org.jetbrains.kotlin:kotlin-script-runtime:2.4.20=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmDev,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinKlibCommonizerClasspath
-org.jetbrains.kotlin:kotlin-scripting-common:2.4.0=kotlinCompilerPluginClasspathDesktopDev,kotlinCompilerPluginClasspathDesktopMain,kotlinCompilerPluginClasspathDesktopTest
-org.jetbrains.kotlin:kotlin-scripting-common:2.4.20=kotlinCompilerPluginClasspathJvmDev,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest
-org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.4.0=kotlinCompilerPluginClasspathDesktopDev,kotlinCompilerPluginClasspathDesktopMain,kotlinCompilerPluginClasspathDesktopTest
-org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.4.20=kotlinCompilerPluginClasspathJvmDev,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest
-org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.4.0=kotlinCompilerPluginClasspathDesktopDev,kotlinCompilerPluginClasspathDesktopMain,kotlinCompilerPluginClasspathDesktopTest
-org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.4.20=kotlinCompilerPluginClasspathJvmDev,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest
-org.jetbrains.kotlin:kotlin-scripting-jvm:2.4.0=kotlinCompilerPluginClasspathDesktopDev,kotlinCompilerPluginClasspathDesktopMain,kotlinCompilerPluginClasspathDesktopTest
-org.jetbrains.kotlin:kotlin-scripting-jvm:2.4.20=kotlinCompilerPluginClasspathJvmDev,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest
-org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable:2.4.0=kotlinCompilerPluginClasspathDesktopDev,kotlinCompilerPluginClasspathDesktopMain,kotlinCompilerPluginClasspathDesktopTest
-org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable:2.4.20=kotlinCompilerPluginClasspathJvmDev,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest
-org.jetbrains.kotlin:kotlin-stdlib-common:2.3.20=composeHotReloadDevTools
-org.jetbrains.kotlin:kotlin-stdlib-wasm-js:2.4.20=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.kotlin:kotlin-stdlib:2.1.21=composeHotReloadRuntime
-org.jetbrains.kotlin:kotlin-stdlib:2.3.20=composeHotReloadDevTools
-org.jetbrains.kotlin:kotlin-stdlib:2.3.21=composeHotReloadMcp
-org.jetbrains.kotlin:kotlin-stdlib:2.4.0=composeHotReloadDevDesktopDevRuntimeClasspath,composeHotReloadDevDesktopRuntimeClasspath,composeHotReloadDevDesktopTestRuntimeClasspath,desktopCompileClasspath,desktopDevCompileClasspath,desktopDevResolvableDependenciesMetadata,desktopDevRuntimeClasspath,desktopMainCompileClasspath,desktopMainResolvableDependenciesMetadata,desktopMainRuntimeClasspath,desktopRuntimeClasspath,desktopTestCompileClasspath,desktopTestResolvableDependenciesMetadata,desk [...]
-org.jetbrains.kotlin:kotlin-stdlib:2.4.20=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainComp [...]
-org.jetbrains.kotlin:kotlin-test-junit:2.4.0=composeHotReloadDevDesktopTestRuntimeClasspath,desktopTestCompileClasspath,desktopTestRuntimeClasspath
-org.jetbrains.kotlin:kotlin-test-junit:2.4.20=composeHotReloadDevJvmTestRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlin:kotlin-test-wasm-js:2.4.20=wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.kotlin:kotlin-test:2.4.20=allTestSourceSetsCompileDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmTestRuntimeClasspath,jvmTestCompileClasspath,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestResolvableDependenciesMetadata,wasmJsTestRuntimeClasspath,webTestResolvableDependenciesMetadata
-org.jetbrains.kotlin:kotlin-tooling-core:2.4.20=kotlinAbiValidationCompatClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath
-org.jetbrains.kotlinx:atomicfu-jvm:0.28.0=composeHotReloadDevTools
-org.jetbrains.kotlinx:atomicfu-jvm:0.33.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevRuntimeClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:atomicfu-wasm-js:0.33.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.kotlinx:atomicfu:0.28.0=composeHotReloadDevTools
-org.jetbrains.kotlinx:atomicfu:0.33.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainResolvableDependenciesMetadata,jvmMainRuntimeClassp [...]
-org.jetbrains.kotlinx:kotlinx-browser-wasm-js:0.5.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-browser:0.5.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,jvmDevResolvableDependenciesMetadata,jvmMainResolvableDependenciesMetadata,jvmTestResolvableDependenciesMetadata,metadataCommonMainCompileClasspath,metadataCompileClasspath,wasmJsCompileClasspath,wasmJsMainResolvableDependenciesMetadata [...]
-org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.4.0=composeHotReloadMcp
-org.jetbrains.kotlinx:kotlinx-collections-immutable:0.4.0=composeHotReloadMcp
-org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,composeHotReloadMcp,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,composeHotReloadMcp,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.0=kotlinAbiValidationCompatClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath
-org.jetbrains.kotlinx:kotlinx-coroutines-core-wasm-js:1.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,composeHotReloadMcp,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvabl [...]
-org.jetbrains.kotlinx:kotlinx-coroutines-slf4j:1.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevRuntimeClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,jvmDevRuntimeClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm:1.11.0=composeHotReloadDevJvmTestRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-coroutines-test-wasm-js:1.11.0=wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-coroutines-test:1.11.0=allTestSourceSetsCompileDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmTestRuntimeClasspath,jvmTestCompileClasspath,jvmTestResolvableDependenciesMetadata,jvmTestRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestResolvableDependenciesMetadata,wasmJsTestRuntimeClasspath,webTestResolvableDependenciesMetadata
-org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.8.0=composeHotReloadDevTools
-org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.8.0-0.6.x-compat=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevRuntimeClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-datetime-wasm-js:0.8.0-0.6.x-compat=wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-datetime:0.8.0=composeHotReloadDevTools
-org.jetbrains.kotlinx:kotlinx-datetime:0.8.0-0.6.x-compat=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainResolvableDependenciesMetadata, [...]
-org.jetbrains.kotlinx:kotlinx-html-jvm:0.12.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-html:0.12.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainResolvableDependenciesMetadata,jvmMainRuntimeClasspath,jvmRunt [...]
-org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.9.0=composeHotReloadMcp
-org.jetbrains.kotlinx:kotlinx-io-bytestring-jvm:0.9.1=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-io-bytestring-wasm-js:0.9.1=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-io-bytestring:0.9.0=composeHotReloadMcp
-org.jetbrains.kotlinx:kotlinx-io-bytestring:0.9.1=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvm [...]
-org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.9.0=composeHotReloadMcp
-org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.9.1=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-io-core-wasm-js:0.9.1=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-io-core:0.9.0=composeHotReloadMcp
-org.jetbrains.kotlinx:kotlinx-io-core:0.9.1=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCo [...]
-org.jetbrains.kotlinx:kotlinx-serialization-bom:1.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadMcp,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.3=composeHotReloadDevTools
-org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadMcp,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.3=composeHotReloadDevTools
-org.jetbrains.kotlinx:kotlinx-serialization-core-wasm-js:1.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-serialization-core:1.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadMcp,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata, [...]
-org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3=composeHotReloadDevTools
-org.jetbrains.kotlinx:kotlinx-serialization-json-io-jvm:1.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadMcp,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-serialization-json-io-wasm-js:1.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadMcp,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetada [...]
-org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.11.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadMcp,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-serialization-json-wasm-js:1.11.0=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.kotlinx:kotlinx-serialization-json:1.11.0=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadMcp,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata, [...]
-org.jetbrains.runtime:jbr-api:1.9.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,jvmDevRuntimeClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestRuntimeClasspath
-org.jetbrains.skiko:skiko-awt:0.144.6=composeHotReloadDevTools
-org.jetbrains.skiko:skiko-awt:0.150.1=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jetbrains.skiko:skiko-js-wasm-runtime:0.150.1=COMPOSE_SKIKO_JS_WASM_RUNTIME,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.skiko:skiko-wasm-js:0.150.1=wasmJsCompileClasspath,wasmJsNpmAggregated,wasmJsRuntimeClasspath,wasmJsTestCompileClasspath,wasmJsTestNpmAggregated,wasmJsTestRuntimeClasspath
-org.jetbrains.skiko:skiko:0.144.6=composeHotReloadDevTools
-org.jetbrains.skiko:skiko:0.150.1=allDevSourceSetsCompileDependenciesMetadata,allSourceSetsCompileDependenciesMetadata,allTestSourceSetsCompileDependenciesMetadata,commonMainResolvableDependenciesMetadata,commonTestResolvableDependenciesMetadata,composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevResolvableDependenciesMetadata,jvmDevRuntimeClasspath,jvmMainCompileClass [...]
-org.jetbrains:annotations:13.0=composeHotReloadRuntime,kotlinAbiValidationCompatClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathJvmDev,kotlinCompilerPluginClasspathJvmMain,kotlinCompilerPluginClasspathJvmTest,kotlinCompilerPluginClasspathMetadataCommonMain,kotlinCompilerPluginClasspathMetadataMain,kotlinCompilerPluginClasspathWasmJsMain,kotlinCompilerPluginClasspathWasmJsTest,kotlinKlibCommonizerClasspath
-org.jetbrains:annotations:23.0.0=composeHotReloadDevTools,composeHotReloadMcp
-org.jetbrains:annotations:26.1.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.jspecify:jspecify:1.0.0=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,composeHotReloadDevTools,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-org.ow2.asm:asm-tree:9.10.1=composeHotReloadAgent
-org.ow2.asm:asm:9.10.1=composeHotReloadAgent
-org.slf4j:slf4j-api:2.0.17=composeHotReloadMcp
-org.slf4j:slf4j-api:2.0.18=composeHotReloadDevJvmDevRuntimeClasspath,composeHotReloadDevJvmRuntimeClasspath,composeHotReloadDevJvmTestRuntimeClasspath,jvmCompileClasspath,jvmDevCompileClasspath,jvmDevRuntimeClasspath,jvmMainCompileClasspath,jvmMainRuntimeClasspath,jvmRuntimeClasspath,jvmTestCompileClasspath,jvmTestRuntimeClasspath
-empty=commonMainImplementationDependenciesMetadata,commonTestImplementationDependenciesMetadata,devKotlinScriptDefExtensions,jarValidation,jvmDevAnnotationProcessor,jvmDevImplementationDependenciesMetadata,jvmMainAnnotationProcessor,jvmMainImplementationDependenciesMetadata,jvmTestAnnotationProcessor,jvmTestImplementationDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDefExtensions,swiftPMDependenciesMetadataClasspath,testKotlinScriptDef [...]
diff --git a/solr/webapp/build.gradle b/solr/webapp/build.gradle
index 184391590c5..02b60ad323c 100644
--- a/solr/webapp/build.gradle
+++ b/solr/webapp/build.gradle
@@ -20,6 +20,8 @@ plugins {
id 'war'
}
+apply from: "$rootDir/gradle/solr/solr-ui.gradle"
+
description = 'Solr webapp'
ext {
@@ -38,7 +40,7 @@ configurations {
serverLib
solrCore
generatedJSClientBundle
- generatedUIBundle
+ uiBundle
}
dependencies {
@@ -50,10 +52,7 @@ dependencies {
if (gradle.ext.withJsClient) {
generatedJSClientBundle project(path: ":solr:webapp:js-client", configuration: "jsClientBundle")
}
-
- if (gradle.ext.withUiModule) {
- generatedUIBundle project(path: ":solr:ui", configuration: "wasmJsUIBundle")
- }
+ uiBundle files(layout.buildDirectory.dir("generated/ui-resources")) { builtBy tasks.named('prepareUiResources') }
// Browser-based tests of the AngularJS Admin UI (see src/test)
testImplementation project(':solr:core')
@@ -119,8 +118,7 @@ war {
into "libs/solr"
})
- // note: nonetheless may be disabled, copying nothing
- from(configurations.generatedUIBundle, {
+ from(configurations.uiBundle, {
into "ui"
})
}
diff --git a/solr/webapp/gradle.lockfile b/solr/webapp/gradle.lockfile
index d0833bbe87a..ce4881bc128 100644
--- a/solr/webapp/gradle.lockfile
+++ b/solr/webapp/gradle.lockfile
@@ -197,4 +197,4 @@ org.slf4j:jcl-over-slf4j:2.0.18=jarValidation,serverLib,solrCore,testRuntimeClas
org.slf4j:jul-to-slf4j:2.0.18=serverLib
org.slf4j:slf4j-api:2.0.18=jarValidation,serverLib,solrCore,testCompileClasspath,testRuntimeClasspath
org.xerial.snappy:snappy-java:1.1.10.8=jarValidation,solrCore,testRuntimeClasspath
-empty=compileClasspath,generatedJSClientBundle,generatedUIBundle,missingdoclet,providedCompile,providedRuntime,runtimeClasspath,war
+empty=compileClasspath,generatedJSClientBundle,generatedUIBundle,missingdoclet,providedCompile,providedRuntime,runtimeClasspath,uiBundle,war
diff --git a/ui/.gitignore b/ui/.gitignore
new file mode 100644
index 00000000000..13390b0848b
--- /dev/null
+++ b/ui/.gitignore
@@ -0,0 +1,7 @@
+# Ignore gradle wrapper since it may be added by default
+# when loading as separate module in IDE. We basically
+# use the root project's gradle wrapper and therefore
+# don't have to add a second one into the project
+gradle/wrapper
+gradlew
+gradlew.bat
diff --git a/ui/README.md b/ui/README.md
new file mode 100644
index 00000000000..734d8576f58
--- /dev/null
+++ b/ui/README.md
@@ -0,0 +1,66 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+# Compose Admin UI
+
+> **⚠️ EXPERIMENTAL ⚠️**
+>
+> This is an experimental module because of its early state. Many parts of the UI
+> are under development and may not work or have limited functionality.
+
+This module contains the code for the new Admin UI written in Kotlin / Compose Multiplatform.
+
+## Supported Targets
+
+The module is available for desktop / JVM and web (WebAssembly).
+
+## Build and Run
+
+> **IMPORTANT**
+>
+> Before you try to build the project, make sure you update your `gradle.properties` file to
+> reflect the module's configuration requirements. Review the differences between your file and
+> `gradle/template.gradle.properties` and update accordingly.
+
+This module is provided as an independent sub-module. Therefore, if you use the terminal you have to prefix any
+task targeting this module with `-p ui`, like `./gradlew -p ui check`.
+
+If you load the module in your IDE, the IDE may create a new gradle wrapper under `ui/gradle/wrapper` and
+gradlew/gradle.bat files under `ui/`. In this case make sure the wrapper is on the same version as the root project
+(see `gradle/wrapper/gradle-wrapper.properties`) to avoid any build issues later on CI.
+
+To build and run the desktop client simply run from the root directory `./gradlew -p :desktopApp:run`, or if you
+loaded the module separately from inside `ui/` (new root) `./gradlew :desktopApp:run`.
+
+The desktop app is running a standalone client and therefore need a solr instance / backend to connect with.
+
+> Note: The current implementation may be limited to run only with locally hosted solr instances.
+
+The WebAssembly app is built and published at [Apache nightlies](https://nightlies.apache.org/solr/ui/wasm/)
+and bundled during the Solr build (see [README.md](../README.md)) into the current webapp.
+You can choose the built to include by setting `solr.ui.commit` in the `gradle.properties`,
+or build from source by setting `solr.ui.buildFromSource=true`. Once the Solr project then access
+[`http://127.0.0.1:8983/solr/ui/`](http://127.0.0.1:8983/solr/ui/).
+
+Various references are included in the webapp for already migrated pages.
+
+> Note that the standalone WebAssembly app executed via
+> `./gradlew :webApp:wasmJsBrowserRun` runs on port `8080` and will run
+> into CORS exceptions. Therefore, the usage of it for development is
+> discouraged.
+>
+> Consider one of the above options instead.
diff --git a/ui/build.gradle.kts b/ui/build.gradle.kts
new file mode 100644
index 00000000000..4064b1e06e2
--- /dev/null
+++ b/ui/build.gradle.kts
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import com.diffplug.gradle.spotless.SpotlessExtension
+
+plugins {
+ alias(libs.plugins.kotlin.multiplatform) apply false
+ alias(libs.plugins.kotlin.jvm) apply false
+ alias(libs.plugins.compose.multiplatform) apply false
+ alias(libs.plugins.compose.compiler) apply false
+ alias(libs.plugins.ktor) apply false
+ alias(rootLibs.plugins.diffplug.spotless) apply false
+}
+
+group = "org.apache.solr.ui"
+version = "0.1.0"
+
+subprojects {
+ repositories {
+ google {
+ mavenContent {
+ includeGroupAndSubgroups("androidx")
+ includeGroupAndSubgroups("com.android")
+ includeGroupAndSubgroups("com.google")
+ }
+ }
+ }
+ // mavenCentral / enterprise mirror, shared with the rest of the build.
+ apply(from = rootProject.file("../build-tools/build-infra/declare-repositories.gradle"))
+
+ // Configure spotless for kotlin sources
+ plugins.apply(rootProject.rootLibs.plugins.diffplug.spotless.get().pluginId)
+
+ project.extensions.getByType<SpotlessExtension>().apply {
+ kotlin {
+ // Apply to all Kotlin and Kotlin DSL files
+ target("**/*.kt", "**/*.kts")
+
+ // TODO Enable ktlint in the UI module
+// ktlint(rootProject.rootLibs.versions.ktlint.get())
+// .setEditorConfigPath(rootProject.file("../.editorconfig"))
+// .customRuleSets(listOf(libs.nlopez.compose.ktlintrules.get().toString()))
+ }
+ }
+}
diff --git a/solr/ui/assets/logo.ico b/ui/desktopApp/assets/logo.ico
similarity index 100%
rename from solr/ui/assets/logo.ico
rename to ui/desktopApp/assets/logo.ico
diff --git a/solr/ui/assets/logo.png b/ui/desktopApp/assets/logo.png
similarity index 100%
rename from solr/ui/assets/logo.png
rename to ui/desktopApp/assets/logo.png
diff --git a/ui/desktopApp/build.gradle.kts b/ui/desktopApp/build.gradle.kts
new file mode 100644
index 00000000000..097d51cfdad
--- /dev/null
+++ b/ui/desktopApp/build.gradle.kts
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.jetbrains.compose.desktop.application.dsl.TargetFormat
+
+plugins {
+ alias(libs.plugins.kotlin.jvm)
+ alias(libs.plugins.compose.multiplatform)
+ alias(libs.plugins.compose.compiler)
+}
+
+dependencies {
+ implementation(projects.shared)
+
+ implementation(compose.desktop.currentOs)
+ implementation(libs.kotlinx.coroutines.swing)
+ implementation(libs.compose.material3)
+
+ implementation(libs.essenty.lifecycle)
+ implementation(libs.decompose.decompose)
+ implementation(libs.decompose.extensions.compose)
+ implementation(libs.mvikotlin.main)
+ implementation(libs.mvikotlin.mvikotlin)
+
+ implementation(libs.compose.uiToolingPreview)
+}
+
+compose.desktop {
+ application {
+ mainClass = "org.apache.solr.ui.MainKt"
+
+ buildTypes.release.proguard {
+ version.set("7.6.0")
+ configurationFiles.from("proguard.pro")
+ }
+
+ nativeDistributions {
+ targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
+
+ packageVersion = "1.0.0"
+
+ windows {
+ packageName = "Apache Solr Desktop"
+ // App icon (needs to be .ico)
+ iconFile.set(project.file("assets/logo.ico"))
+ // Directory name (if not per user "C:\Program Files\[installationPath]")
+ installationPath = "Apache Solr Desktop"
+ // Create desktop shortcut
+ shortcut = true
+ }
+
+ linux {
+ packageName = "solr-desktop"
+ iconFile.set(project.file("assets/logo.png"))
+ }
+
+ macOS {
+ packageName = "ApacheSolrDesktop"
+ iconFile.set(project.file("assets/logo.png"))
+ }
+ }
+ }
+}
diff --git a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/Main.kt b/ui/desktopApp/src/main/kotlin/org/apache/solr/ui/Main.kt
similarity index 98%
rename from solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/Main.kt
rename to ui/desktopApp/src/main/kotlin/org/apache/solr/ui/Main.kt
index dc59bc2886c..9da8c84fdc3 100644
--- a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/Main.kt
+++ b/ui/desktopApp/src/main/kotlin/org/apache/solr/ui/Main.kt
@@ -34,7 +34,6 @@ import org.apache.solr.ui.components.root.RootComponent
import org.apache.solr.ui.components.root.integration.SimpleRootComponent
import org.apache.solr.ui.utils.DefaultAppComponentContext
import org.apache.solr.ui.utils.getDefaultClient
-import org.apache.solr.ui.utils.runOnUiThread
import org.apache.solr.ui.views.root.RootContent
import org.apache.solr.ui.views.theme.SolrTheme
diff --git a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/utils/Utils.kt b/ui/desktopApp/src/main/kotlin/org/apache/solr/ui/Utils.kt
similarity index 97%
rename from solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/utils/Utils.kt
rename to ui/desktopApp/src/main/kotlin/org/apache/solr/ui/Utils.kt
index 7aa77e9810b..5e8d1193f32 100644
--- a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/utils/Utils.kt
+++ b/ui/desktopApp/src/main/kotlin/org/apache/solr/ui/Utils.kt
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.solr.ui.utils
+package org.apache.solr.ui
import javax.swing.SwingUtilities
diff --git a/ui/gradle.properties b/ui/gradle.properties
new file mode 100644
index 00000000000..696b805cdb0
--- /dev/null
+++ b/ui/gradle.properties
@@ -0,0 +1,11 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+#Kotlin
+kotlin.code.style=official
+kotlin.daemon.jvmargs=-Xmx4096M
+
+#Gradle
+org.gradle.jvmargs=-Xmx4096M -Dfile.encoding=UTF-8
+# Configuration cache is not supported by org.gradle.api.Project
+org.gradle.configuration-cache=false
+org.gradle.caching=true
diff --git a/ui/gradle/libs.versions.toml b/ui/gradle/libs.versions.toml
new file mode 100644
index 00000000000..0c6e03868a4
--- /dev/null
+++ b/ui/gradle/libs.versions.toml
@@ -0,0 +1,79 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+[versions]
+androidx-adaptive = "1.3.0-rc01"
+androidx-lifecycle = "2.11.0"
+androidx-navigation3 = "1.1.1"
+compose = "1.12.0"
+decompose = "3.5.0"
+essenty = "2.6.0"
+kotlin = "2.4.20"
+kotlinx-coroutines = "1.11.0"
+kotlinx-serialization = "1.11.0"
+ktor = "3.5.2"
+material3 = "1.12.0-alpha03"
+mvikotlin = "4.4.0"
+nlopez-compose = "0.6.2"
+oshai-logging = "8.0.4"
+squareup-okio = "3.18.1"
+
+[plugins]
+compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
+compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "compose" }
+kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
+kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
+kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
+ktor = { id = "io.ktor.plugin", version.ref = "ktor" }
+
+[libraries]
+androidx-lifecycle-runtimeCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle" }
+androidx-lifecycle-viewModelNav3 = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "androidx-lifecycle" }
+androidx-lifecycle-viewmodelCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" }
+androidx-material3-adaptive = { module = "org.jetbrains.compose.material3.adaptive:adaptive", version.ref = "androidx-adaptive" }
+androidx-material3-adaptive-nav3 = { module = "org.jetbrains.compose.material3.adaptive:adaptive-navigation3", version.ref = "androidx-adaptive" }
+androidx-navigation3-ui = { module = "org.jetbrains.androidx.navigation3:navigation3-ui", version.ref = "androidx-navigation3" }
+compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "compose" }
+compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "compose" }
+compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "material3" }
+compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "compose" }
+compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "compose" }
+compose-uiTest = { module = "org.jetbrains.compose.ui:ui-test", version.ref = "compose" }
+compose-uiToolingPreview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "compose" }
+decompose-decompose = { module = "com.arkivanov.decompose:decompose", version.ref = "decompose" }
+decompose-extensions-compose = { module = "com.arkivanov.decompose:extensions-compose", version.ref = "decompose" }
+essenty-lifecycle = { module = "com.arkivanov.essenty:lifecycle", version.ref = "essenty" }
+kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" }
+kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines" }
+kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" }
+kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinx-serialization" }
+kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" }
+ktor-bom = { module = "io.ktor:ktor-bom", version.ref = "ktor" }
+ktor-client-auth = { module = "io.ktor:ktor-client-auth" }
+ktor-client-cio = { module = "io.ktor:ktor-client-cio" }
+ktor-client-contentNegotiation = { module = "io.ktor:ktor-client-content-negotiation" }
+ktor-client-core = { module = "io.ktor:ktor-client-core" }
+ktor-client-js = { module = "io.ktor:ktor-client-js" }
+ktor-client-mock = { module = "io.ktor:ktor-client-mock" }
+ktor-client-serialization-json = { module = "io.ktor:ktor-serialization-kotlinx-json" }
+ktor-server-cio = { module = "io.ktor:ktor-server-cio" }
+ktor-server-core = { module = "io.ktor:ktor-server-core" }
+ktor-server-htmlBuilder = { module = "io.ktor:ktor-server-html-builder" }
+mvikotlin-extensions-coroutines = { module = "com.arkivanov.mvikotlin:mvikotlin-extensions-coroutines", version.ref = "mvikotlin" }
+mvikotlin-logging = { module = "com.arkivanov.mvikotlin:mvikotlin-logging", version.ref = "mvikotlin" }
+mvikotlin-main = { module = "com.arkivanov.mvikotlin:mvikotlin-main", version.ref = "mvikotlin" }
+mvikotlin-mvikotlin = { module = "com.arkivanov.mvikotlin:mvikotlin", version.ref = "mvikotlin" }
+nlopez-compose-ktlintrules = { module = "io.nlopez.compose.rules:ktlint", version.ref = "nlopez-compose" }
+oshai-logging = { module = "io.github.oshai:kotlin-logging", version.ref = "oshai-logging" }
+squareup-okio = { module = "com.squareup.okio:okio", version.ref = "squareup-okio" }
diff --git a/ui/kotlin-js-store/wasm/yarn.lock b/ui/kotlin-js-store/wasm/yarn.lock
new file mode 100644
index 00000000000..4c1723e30ec
--- /dev/null
+++ b/ui/kotlin-js-store/wasm/yarn.lock
@@ -0,0 +1,13 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@js-joda/core@3.2.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@js-joda/core/-/core-3.2.0.tgz#3e61e21b7b2b8a6be746df1335cf91d70db2a273"
+ integrity sha512-PMqgJ0sw5B7FKb2d5bWYIoxjri+QlW/Pys7+Rw82jSH0QN3rB05jZ/VrrsUdh1w4+i2kw9JOejXGq/KhDOX7Kg==
+
+ws@8.20.1:
+ version "8.20.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.20.1.tgz#91a9ae2b312ccf98e0a85ec499b48cef45ab0ddb"
+ integrity sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==
diff --git a/solr/ui/proguard.pro b/ui/proguard.pro
similarity index 100%
rename from solr/ui/proguard.pro
rename to ui/proguard.pro
diff --git a/ui/settings.gradle.kts b/ui/settings.gradle.kts
new file mode 100644
index 00000000000..a29b722b408
--- /dev/null
+++ b/ui/settings.gradle.kts
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+pluginManagement {
+ repositories {
+ google {
+ mavenContent {
+ includeGroupAndSubgroups("androidx")
+ includeGroupAndSubgroups("com.android")
+ includeGroupAndSubgroups("com.google")
+ }
+ }
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+
+dependencyResolutionManagement {
+ repositories {
+ google {
+ mavenContent {
+ includeGroupAndSubgroups("androidx")
+ includeGroupAndSubgroups("com.android")
+ includeGroupAndSubgroups("com.google")
+ }
+ }
+ mavenCentral()
+ }
+
+ // Use root project's version catalog for project-wide dependencies
+ versionCatalogs {
+ create("rootLibs") {
+ from(files("../gradle/libs.versions.toml"))
+ }
+ }
+}
+
+plugins {
+ id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
+}
+
+rootProject.name = "solr-ui"
+enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
+
+include(":shared")
+include(":desktopApp")
+include(":webApp")
diff --git a/ui/shared/build.gradle.kts b/ui/shared/build.gradle.kts
new file mode 100644
index 00000000000..6ab3255f623
--- /dev/null
+++ b/ui/shared/build.gradle.kts
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
+
+group = "org.apache.solr.ui"
+
+plugins {
+ alias(libs.plugins.kotlin.multiplatform)
+ alias(libs.plugins.kotlin.serialization)
+ alias(libs.plugins.compose.multiplatform)
+ alias(libs.plugins.compose.compiler)
+}
+
+kotlin {
+
+ @OptIn(ExperimentalWasmDsl::class)
+ wasmJs {
+ browser()
+ // Required for testing
+ binaries.executable()
+ }
+ jvm()
+
+ sourceSets {
+ // Shared multiplatform dependencies
+ commonMain.dependencies {
+ implementation(libs.compose.runtime)
+ implementation(libs.compose.foundation)
+ implementation(libs.compose.material3)
+ implementation(libs.compose.ui)
+ implementation(libs.compose.components.resources)
+ implementation(libs.compose.uiToolingPreview)
+ implementation(libs.androidx.lifecycle.viewmodelCompose)
+ implementation(libs.androidx.lifecycle.viewModelNav3)
+ implementation(libs.androidx.navigation3.ui)
+ implementation(libs.androidx.material3.adaptive.asProvider())
+ implementation(libs.androidx.material3.adaptive.nav3)
+
+ implementation(libs.kotlinx.serialization.core)
+ implementation(libs.kotlinx.serialization.json)
+ implementation(libs.kotlinx.coroutines.core)
+
+ implementation(libs.decompose.decompose)
+ implementation(libs.essenty.lifecycle)
+ implementation(libs.decompose.extensions.compose)
+ implementation(libs.mvikotlin.extensions.coroutines)
+ implementation(libs.mvikotlin.mvikotlin)
+ implementation(libs.mvikotlin.main)
+
+ api(project.dependencies.platform(libs.ktor.bom))
+ api(libs.ktor.client.core)
+ implementation(libs.ktor.client.auth)
+ implementation(libs.ktor.client.contentNegotiation)
+ implementation(libs.ktor.client.serialization.json)
+ implementation(libs.squareup.okio)
+
+ implementation(libs.oshai.logging)
+ }
+
+ commonTest.dependencies {
+ implementation(kotlin("test"))
+ implementation(libs.kotlinx.coroutines.test)
+ implementation(libs.compose.uiTest)
+ implementation(libs.ktor.client.mock)
+ }
+
+ wasmJsMain.dependencies {
+ implementation(libs.ktor.client.js)
+ }
+
+ jvmMain.dependencies {
+ implementation(compose.desktop.currentOs)
+ implementation(libs.ktor.client.cio)
+ implementation(libs.ktor.server.cio)
+ implementation(libs.ktor.server.core)
+ implementation(libs.ktor.server.htmlBuilder)
+ }
+ }
+}
diff --git a/solr/ui/src/commonMain/composeResources/drawable/add.xml b/ui/shared/src/commonMain/composeResources/drawable/add.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/add.xml
rename to ui/shared/src/commonMain/composeResources/drawable/add.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/analytics.xml b/ui/shared/src/commonMain/composeResources/drawable/analytics.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/analytics.xml
rename to ui/shared/src/commonMain/composeResources/drawable/analytics.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/analytics_filled.xml b/ui/shared/src/commonMain/composeResources/drawable/analytics_filled.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/analytics_filled.xml
rename to ui/shared/src/commonMain/composeResources/drawable/analytics_filled.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/apps.xml b/ui/shared/src/commonMain/composeResources/drawable/apps.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/apps.xml
rename to ui/shared/src/commonMain/composeResources/drawable/apps.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/broken_image.xml b/ui/shared/src/commonMain/composeResources/drawable/broken_image.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/broken_image.xml
rename to ui/shared/src/commonMain/composeResources/drawable/broken_image.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/bug_report.xml b/ui/shared/src/commonMain/composeResources/drawable/bug_report.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/bug_report.xml
rename to ui/shared/src/commonMain/composeResources/drawable/bug_report.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/chevron_left.xml b/ui/shared/src/commonMain/composeResources/drawable/chevron_left.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/chevron_left.xml
rename to ui/shared/src/commonMain/composeResources/drawable/chevron_left.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/close.xml b/ui/shared/src/commonMain/composeResources/drawable/close.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/close.xml
rename to ui/shared/src/commonMain/composeResources/drawable/close.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/code.xml b/ui/shared/src/commonMain/composeResources/drawable/code.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/code.xml
rename to ui/shared/src/commonMain/composeResources/drawable/code.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/dashboard.xml b/ui/shared/src/commonMain/composeResources/drawable/dashboard.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/dashboard.xml
rename to ui/shared/src/commonMain/composeResources/drawable/dashboard.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/dashboard_filled.xml b/ui/shared/src/commonMain/composeResources/drawable/dashboard_filled.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/dashboard_filled.xml
rename to ui/shared/src/commonMain/composeResources/drawable/dashboard_filled.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/draft.xml b/ui/shared/src/commonMain/composeResources/drawable/draft.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/draft.xml
rename to ui/shared/src/commonMain/composeResources/drawable/draft.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/edit.xml b/ui/shared/src/commonMain/composeResources/drawable/edit.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/edit.xml
rename to ui/shared/src/commonMain/composeResources/drawable/edit.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/folder_data.xml b/ui/shared/src/commonMain/composeResources/drawable/folder_data.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/folder_data.xml
rename to ui/shared/src/commonMain/composeResources/drawable/folder_data.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/folder_data_filled.xml b/ui/shared/src/commonMain/composeResources/drawable/folder_data_filled.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/folder_data_filled.xml
rename to ui/shared/src/commonMain/composeResources/drawable/folder_data_filled.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/folder_zip.xml b/ui/shared/src/commonMain/composeResources/drawable/folder_zip.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/folder_zip.xml
rename to ui/shared/src/commonMain/composeResources/drawable/folder_zip.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/groups.xml b/ui/shared/src/commonMain/composeResources/drawable/groups.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/groups.xml
rename to ui/shared/src/commonMain/composeResources/drawable/groups.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/hub.xml b/ui/shared/src/commonMain/composeResources/drawable/hub.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/hub.xml
rename to ui/shared/src/commonMain/composeResources/drawable/hub.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/hub_filled.xml b/ui/shared/src/commonMain/composeResources/drawable/hub_filled.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/hub_filled.xml
rename to ui/shared/src/commonMain/composeResources/drawable/hub_filled.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/info.xml b/ui/shared/src/commonMain/composeResources/drawable/info.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/info.xml
rename to ui/shared/src/commonMain/composeResources/drawable/info.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/logout.xml b/ui/shared/src/commonMain/composeResources/drawable/logout.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/logout.xml
rename to ui/shared/src/commonMain/composeResources/drawable/logout.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/memory.xml b/ui/shared/src/commonMain/composeResources/drawable/memory.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/memory.xml
rename to ui/shared/src/commonMain/composeResources/drawable/memory.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/memory_filled.xml b/ui/shared/src/commonMain/composeResources/drawable/memory_filled.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/memory_filled.xml
rename to ui/shared/src/commonMain/composeResources/drawable/memory_filled.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/menu_book.xml b/ui/shared/src/commonMain/composeResources/drawable/menu_book.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/menu_book.xml
rename to ui/shared/src/commonMain/composeResources/drawable/menu_book.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/other_admission.xml b/ui/shared/src/commonMain/composeResources/drawable/other_admission.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/other_admission.xml
rename to ui/shared/src/commonMain/composeResources/drawable/other_admission.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/other_admission_filled.xml b/ui/shared/src/commonMain/composeResources/drawable/other_admission_filled.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/other_admission_filled.xml
rename to ui/shared/src/commonMain/composeResources/drawable/other_admission_filled.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/search.xml b/ui/shared/src/commonMain/composeResources/drawable/search.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/search.xml
rename to ui/shared/src/commonMain/composeResources/drawable/search.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/security.xml b/ui/shared/src/commonMain/composeResources/drawable/security.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/security.xml
rename to ui/shared/src/commonMain/composeResources/drawable/security.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/solr-logo-dark.svg b/ui/shared/src/commonMain/composeResources/drawable/solr-logo-dark.svg
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/solr-logo-dark.svg
rename to ui/shared/src/commonMain/composeResources/drawable/solr-logo-dark.svg
diff --git a/solr/ui/src/commonMain/composeResources/drawable/solr-logo-light.svg b/ui/shared/src/commonMain/composeResources/drawable/solr-logo-light.svg
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/solr-logo-light.svg
rename to ui/shared/src/commonMain/composeResources/drawable/solr-logo-light.svg
diff --git a/solr/ui/src/commonMain/composeResources/drawable/solr-sun.svg b/ui/shared/src/commonMain/composeResources/drawable/solr-sun.svg
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/solr-sun.svg
rename to ui/shared/src/commonMain/composeResources/drawable/solr-sun.svg
diff --git a/solr/ui/src/commonMain/composeResources/drawable/tag.xml b/ui/shared/src/commonMain/composeResources/drawable/tag.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/tag.xml
rename to ui/shared/src/commonMain/composeResources/drawable/tag.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/text_snippet.xml b/ui/shared/src/commonMain/composeResources/drawable/text_snippet.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/text_snippet.xml
rename to ui/shared/src/commonMain/composeResources/drawable/text_snippet.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/text_snippet_filled.xml b/ui/shared/src/commonMain/composeResources/drawable/text_snippet_filled.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/text_snippet_filled.xml
rename to ui/shared/src/commonMain/composeResources/drawable/text_snippet_filled.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/upload.xml b/ui/shared/src/commonMain/composeResources/drawable/upload.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/upload.xml
rename to ui/shared/src/commonMain/composeResources/drawable/upload.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/view_list.xml b/ui/shared/src/commonMain/composeResources/drawable/view_list.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/view_list.xml
rename to ui/shared/src/commonMain/composeResources/drawable/view_list.xml
diff --git a/solr/ui/src/commonMain/composeResources/drawable/view_list_filled.xml b/ui/shared/src/commonMain/composeResources/drawable/view_list_filled.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/drawable/view_list_filled.xml
rename to ui/shared/src/commonMain/composeResources/drawable/view_list_filled.xml
diff --git a/solr/ui/src/commonMain/composeResources/values/strings.xml b/ui/shared/src/commonMain/composeResources/values/strings.xml
similarity index 100%
rename from solr/ui/src/commonMain/composeResources/values/strings.xml
rename to ui/shared/src/commonMain/composeResources/values/strings.xml
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/AuthUtils.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/AuthUtils.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/AuthUtils.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/AuthUtils.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/AuthenticationComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/AuthenticationComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/AuthenticationComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/AuthenticationComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/BasicAuthComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/BasicAuthComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/BasicAuthComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/BasicAuthComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/OAuthComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/OAuthComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/OAuthComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/OAuthComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/DefaultAuthenticationComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/DefaultAuthenticationComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/DefaultAuthenticationComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/DefaultAuthenticationComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/DefaultBasicAuthComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/DefaultBasicAuthComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/DefaultBasicAuthComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/DefaultBasicAuthComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/DefaultOAuthComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/DefaultOAuthComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/DefaultOAuthComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/DefaultOAuthComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/HttpBasicAuthStoreClient.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/HttpBasicAuthStoreClient.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/HttpBasicAuthStoreClient.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/HttpBasicAuthStoreClient.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/Mappers.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/Mappers.kt
similarity index 91%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/Mappers.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/Mappers.kt
index 51cd7df8e8f..dbc2b513142 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/Mappers.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/Mappers.kt
@@ -24,9 +24,9 @@ import org.apache.solr.ui.components.auth.store.AuthenticationStore
import org.apache.solr.ui.components.auth.store.BasicAuthStore
import org.apache.solr.ui.components.auth.store.OAuthStore
import org.apache.solr.ui.errors.InvalidCredentialsException
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.error_invalid_credentials
-import org.apache.solr.ui.generated.resources.error_unknown
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.error_invalid_credentials
+import org.apache.solr.ui.shared.generated.resources.error_unknown
internal val authStateToModel: (AuthenticationStore.State) -> AuthenticationComponent.Model = {
AuthenticationComponent.Model(
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/AuthenticationStore.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/AuthenticationStore.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/AuthenticationStore.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/AuthenticationStore.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/AuthenticationStoreProvider.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/AuthenticationStoreProvider.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/AuthenticationStoreProvider.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/AuthenticationStoreProvider.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/BasicAuthStore.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/BasicAuthStore.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/BasicAuthStore.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/BasicAuthStore.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/BasicAuthStoreProvider.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/BasicAuthStoreProvider.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/BasicAuthStoreProvider.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/BasicAuthStoreProvider.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/OAuthStore.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/OAuthStore.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/OAuthStore.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/OAuthStore.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/OAuthStoreProvider.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/OAuthStoreProvider.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/OAuthStoreProvider.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/auth/store/OAuthStoreProvider.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/cluster/ClusterComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/cluster/ClusterComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/cluster/ClusterComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/cluster/ClusterComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/cluster/integration/DefaultClusterComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/cluster/integration/DefaultClusterComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/cluster/integration/DefaultClusterComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/cluster/integration/DefaultClusterComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/data/CreateConfigset.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/data/CreateConfigset.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/data/CreateConfigset.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/data/CreateConfigset.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/data/HttpConfigsetsRepository.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/data/HttpConfigsetsRepository.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/data/HttpConfigsetsRepository.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/data/HttpConfigsetsRepository.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/data/ListConfigsets.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/data/ListConfigsets.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/data/ListConfigsets.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/data/ListConfigsets.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/ConfigsetsComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/ConfigsetsComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/ConfigsetsComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/ConfigsetsComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/ConfigsetsOverviewComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/ConfigsetsOverviewComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/ConfigsetsOverviewComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/ConfigsetsOverviewComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/DefaultConfigsetsComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/DefaultConfigsetsComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/DefaultConfigsetsComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/DefaultConfigsetsComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/DefaultConfigsetsOverviewComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/DefaultConfigsetsOverviewComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/DefaultConfigsetsOverviewComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/di/DefaultConfigsetsOverviewComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/CreateConfigsetEvent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/CreateConfigsetEvent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/CreateConfigsetEvent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/CreateConfigsetEvent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/CreateConfigsetUseCase.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/CreateConfigsetUseCase.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/CreateConfigsetUseCase.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/CreateConfigsetUseCase.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/DefaultCreateConfigsetUseCase.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/DefaultCreateConfigsetUseCase.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/DefaultCreateConfigsetUseCase.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/DefaultCreateConfigsetUseCase.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/DefaultImportConfigsetUseCase.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/DefaultImportConfigsetUseCase.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/DefaultImportConfigsetUseCase.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/DefaultImportConfigsetUseCase.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/DefaultLoadConfigsetsUseCase.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/DefaultLoadConfigsetsUseCase.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/DefaultLoadConfigsetsUseCase.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/DefaultLoadConfigsetsUseCase.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/ImportConfigsetUseCase.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/ImportConfigsetUseCase.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/ImportConfigsetUseCase.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/ImportConfigsetUseCase.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/LoadConfigsetsUseCase.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/LoadConfigsetsUseCase.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/LoadConfigsetsUseCase.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/domain/LoadConfigsetsUseCase.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/repository/ConfigsetsRepository.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/repository/ConfigsetsRepository.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/repository/ConfigsetsRepository.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/repository/ConfigsetsRepository.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsOverviewViewModel.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsOverviewViewModel.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsOverviewViewModel.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsOverviewViewModel.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsRouteViewModel.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsRouteViewModel.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsRouteViewModel.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsRouteViewModel.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsStateHolder.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsStateHolder.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsStateHolder.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsStateHolder.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsViewModel.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsViewModel.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsViewModel.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsViewModel.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/CreateConfigsetViewModel.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/CreateConfigsetViewModel.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/CreateConfigsetViewModel.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/CreateConfigsetViewModel.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ImportConfigsetViewModel.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ImportConfigsetViewModel.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ImportConfigsetViewModel.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ImportConfigsetViewModel.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/EnvironmentComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/EnvironmentComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/EnvironmentComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/EnvironmentComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JavaPropertiesResponse.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JavaPropertiesResponse.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JavaPropertiesResponse.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JavaPropertiesResponse.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JavaProperty.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JavaProperty.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JavaProperty.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JavaProperty.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JavaRuntimeInfo.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JavaRuntimeInfo.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JavaRuntimeInfo.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JavaRuntimeInfo.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/Jmx.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/Jmx.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/Jmx.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/Jmx.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JvmData.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JvmData.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JvmData.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JvmData.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JvmMemory.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JvmMemory.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JvmMemory.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JvmMemory.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JvmMemoryRaw.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JvmMemoryRaw.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JvmMemoryRaw.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/JvmMemoryRaw.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SecurityConfig.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SecurityConfig.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SecurityConfig.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SecurityConfig.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SystemData.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SystemData.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SystemData.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SystemData.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SystemInformation.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SystemInformation.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SystemInformation.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SystemInformation.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SystemMode.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SystemMode.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SystemMode.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/SystemMode.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/Versions.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/Versions.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/Versions.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/data/Versions.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/integration/DefaultEnvironmentComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/integration/DefaultEnvironmentComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/integration/DefaultEnvironmentComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/integration/DefaultEnvironmentComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/integration/HttpEnvironmentStoreClient.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/integration/HttpEnvironmentStoreClient.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/integration/HttpEnvironmentStoreClient.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/integration/HttpEnvironmentStoreClient.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/integration/Mappers.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/integration/Mappers.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/integration/Mappers.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/integration/Mappers.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/store/EnvironmentStore.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/store/EnvironmentStore.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/store/EnvironmentStore.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/store/EnvironmentStore.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/store/EnvironmentStoreProvider.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/store/EnvironmentStoreProvider.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/environment/store/EnvironmentStoreProvider.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/environment/store/EnvironmentStoreProvider.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/files/domain/DefaultSelectFileUseCase.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/files/domain/DefaultSelectFileUseCase.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/files/domain/DefaultSelectFileUseCase.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/files/domain/DefaultSelectFileUseCase.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/files/domain/FileSelectorEvent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/files/domain/FileSelectorEvent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/files/domain/FileSelectorEvent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/files/domain/FileSelectorEvent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/files/domain/SelectFileUseCase.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/files/domain/SelectFileUseCase.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/files/domain/SelectFileUseCase.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/files/domain/SelectFileUseCase.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/files/viewmodel/FileSelectorStateHolder.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/files/viewmodel/FileSelectorStateHolder.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/files/viewmodel/FileSelectorStateHolder.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/files/viewmodel/FileSelectorStateHolder.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/logging/LoggingComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/logging/LoggingComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/logging/LoggingComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/logging/LoggingComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/logging/integration/DefaultLoggingComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/logging/integration/DefaultLoggingComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/logging/integration/DefaultLoggingComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/logging/integration/DefaultLoggingComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/main/MainComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/main/MainComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/main/MainComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/main/MainComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/main/integration/DefaultMainComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/main/integration/DefaultMainComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/main/integration/DefaultMainComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/main/integration/DefaultMainComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/main/integration/Mappers.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/main/integration/Mappers.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/main/integration/Mappers.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/main/integration/Mappers.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/navigation/NavigationComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/navigation/NavigationComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/navigation/NavigationComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/navigation/NavigationComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/navigation/TabNavigationComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/navigation/TabNavigationComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/navigation/TabNavigationComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/navigation/TabNavigationComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/root/RootComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/root/RootComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/root/RootComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/root/RootComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/root/integration/SimpleRootComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/root/integration/SimpleRootComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/root/integration/SimpleRootComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/root/integration/SimpleRootComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/start/StartComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/start/StartComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/start/StartComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/start/StartComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/DefaultStartComponent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/DefaultStartComponent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/DefaultStartComponent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/DefaultStartComponent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/HttpStartStoreClient.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/HttpStartStoreClient.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/HttpStartStoreClient.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/HttpStartStoreClient.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/Mappers.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/Mappers.kt
similarity index 90%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/Mappers.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/Mappers.kt
index 2c9df684fa6..798a3a86bfb 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/Mappers.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/start/integration/Mappers.kt
@@ -26,10 +26,10 @@ import org.apache.solr.ui.data.SolrAuthData
import org.apache.solr.ui.domain.AuthorizationFlow
import org.apache.solr.ui.domain.OAuthData
import org.apache.solr.ui.errors.HostNotFoundException
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.error_invalid_url
-import org.apache.solr.ui.generated.resources.error_solr_host_not_found
-import org.apache.solr.ui.generated.resources.error_unknown
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.error_invalid_url
+import org.apache.solr.ui.shared.generated.resources.error_solr_host_not_found
+import org.apache.solr.ui.shared.generated.resources.error_unknown
internal val startStateToModel: (StartStore.State) -> StartComponent.Model = {
StartComponent.Model(
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/start/store/StartStore.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/start/store/StartStore.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/start/store/StartStore.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/start/store/StartStore.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/start/store/StartStoreProvider.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/start/store/StartStoreProvider.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/components/start/store/StartStoreProvider.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/components/start/store/StartStoreProvider.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/data/AuthorizationResponse.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/data/AuthorizationResponse.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/data/AuthorizationResponse.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/data/AuthorizationResponse.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/data/AuthorizationTokenRequest.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/data/AuthorizationTokenRequest.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/data/AuthorizationTokenRequest.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/data/AuthorizationTokenRequest.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/data/SolrAuthData.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/data/SolrAuthData.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/data/SolrAuthData.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/data/SolrAuthData.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/domain/AuthMethod.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/domain/AuthMethod.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/domain/AuthMethod.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/domain/AuthMethod.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/domain/AuthOption.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/domain/AuthOption.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/domain/AuthOption.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/domain/AuthOption.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/domain/Configset.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/domain/Configset.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/domain/Configset.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/domain/Configset.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/domain/OAuthData.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/domain/OAuthData.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/domain/OAuthData.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/domain/OAuthData.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/domain/PickedFile.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/domain/PickedFile.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/domain/PickedFile.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/domain/PickedFile.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/errors/HostNotFoundException.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/errors/HostNotFoundException.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/errors/HostNotFoundException.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/errors/HostNotFoundException.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/errors/InvalidCredentialsException.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/errors/InvalidCredentialsException.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/errors/InvalidCredentialsException.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/errors/InvalidCredentialsException.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/errors/InvalidResponseException.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/errors/InvalidResponseException.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/errors/InvalidResponseException.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/errors/InvalidResponseException.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/errors/UnauthorizedException.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/errors/UnauthorizedException.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/errors/UnauthorizedException.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/errors/UnauthorizedException.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/errors/UnknownResponseException.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/errors/UnknownResponseException.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/errors/UnknownResponseException.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/errors/UnknownResponseException.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/AppComponentContext.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/AppComponentContext.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/AppComponentContext.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/AppComponentContext.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/AppDispatchers.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/AppDispatchers.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/AppDispatchers.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/AppDispatchers.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/Constants.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/Constants.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/Constants.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/Constants.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/CoroutineContextOwner.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/CoroutineContextOwner.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/CoroutineContextOwner.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/CoroutineContextOwner.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/CoroutineScopeExt.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/CoroutineScopeExt.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/CoroutineScopeExt.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/CoroutineScopeExt.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/DefaultAppComponentContext.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/DefaultAppComponentContext.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/DefaultAppComponentContext.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/DefaultAppComponentContext.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/ErrorUtils.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/ErrorUtils.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/ErrorUtils.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/ErrorUtils.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/FileUtils.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/FileUtils.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/FileUtils.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/FileUtils.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/HttpClientUtils.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/HttpClientUtils.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/HttpClientUtils.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/HttpClientUtils.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/Validators.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/Validators.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/utils/Validators.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/utils/Validators.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/auth/BasicAuthContent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/auth/BasicAuthContent.kt
similarity index 88%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/auth/BasicAuthContent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/auth/BasicAuthContent.kt
index 3cb87fbba3d..8c9cdcae90a 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/auth/BasicAuthContent.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/auth/BasicAuthContent.kt
@@ -32,13 +32,13 @@ import androidx.compose.ui.platform.testTag
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.unit.dp
import org.apache.solr.ui.components.auth.BasicAuthComponent
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.action_sign_in_with_credentials
-import org.apache.solr.ui.generated.resources.authenticating
-import org.apache.solr.ui.generated.resources.desc_sign_in_with_credentials
-import org.apache.solr.ui.generated.resources.desc_sign_in_with_credentials_to_realm
-import org.apache.solr.ui.generated.resources.label_password
-import org.apache.solr.ui.generated.resources.label_username
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.action_sign_in_with_credentials
+import org.apache.solr.ui.shared.generated.resources.authenticating
+import org.apache.solr.ui.shared.generated.resources.desc_sign_in_with_credentials
+import org.apache.solr.ui.shared.generated.resources.desc_sign_in_with_credentials_to_realm
+import org.apache.solr.ui.shared.generated.resources.label_password
+import org.apache.solr.ui.shared.generated.resources.label_username
import org.apache.solr.ui.views.components.SolrButton
import org.jetbrains.compose.resources.stringResource
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/auth/OAuthContent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/auth/OAuthContent.kt
similarity index 90%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/auth/OAuthContent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/auth/OAuthContent.kt
index a56aab87ff1..14b75bbf6d2 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/auth/OAuthContent.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/auth/OAuthContent.kt
@@ -33,12 +33,12 @@ import androidx.compose.ui.platform.testTag
import androidx.compose.ui.unit.dp
import org.apache.solr.ui.components.auth.OAuthComponent
import org.apache.solr.ui.components.auth.store.OAuthStore
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.action_sign_in_with_identity_provider
-import org.apache.solr.ui.generated.resources.action_sign_in_with_realm
-import org.apache.solr.ui.generated.resources.authenticating
-import org.apache.solr.ui.generated.resources.desc_sign_in_with_oauth
-import org.apache.solr.ui.generated.resources.desc_sign_in_with_oauth_to_realm
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.action_sign_in_with_identity_provider
+import org.apache.solr.ui.shared.generated.resources.action_sign_in_with_realm
+import org.apache.solr.ui.shared.generated.resources.authenticating
+import org.apache.solr.ui.shared.generated.resources.desc_sign_in_with_oauth
+import org.apache.solr.ui.shared.generated.resources.desc_sign_in_with_oauth_to_realm
import org.apache.solr.ui.views.components.SolrButton
import org.jetbrains.compose.resources.stringResource
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/auth/UserAuthenticationContent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/auth/UserAuthenticationContent.kt
similarity index 90%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/auth/UserAuthenticationContent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/auth/UserAuthenticationContent.kt
index 3cae6b27a28..4fda3172ff5 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/auth/UserAuthenticationContent.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/auth/UserAuthenticationContent.kt
@@ -41,15 +41,15 @@ import androidx.compose.ui.platform.testTag
import androidx.compose.ui.unit.dp
import com.arkivanov.decompose.extensions.compose.subscribeAsState
import org.apache.solr.ui.components.auth.AuthenticationComponent
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.action_go_back
-import org.apache.solr.ui.generated.resources.cd_back_navigation
-import org.apache.solr.ui.generated.resources.cd_solr_logo
-import org.apache.solr.ui.generated.resources.chevron_left
-import org.apache.solr.ui.generated.resources.desc_solr_instance_with_auth
-import org.apache.solr.ui.generated.resources.seperator_or
-import org.apache.solr.ui.generated.resources.solr_sun
-import org.apache.solr.ui.generated.resources.title_sign_in_to_solr
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.action_go_back
+import org.apache.solr.ui.shared.generated.resources.cd_back_navigation
+import org.apache.solr.ui.shared.generated.resources.cd_solr_logo
+import org.apache.solr.ui.shared.generated.resources.chevron_left
+import org.apache.solr.ui.shared.generated.resources.desc_solr_instance_with_auth
+import org.apache.solr.ui.shared.generated.resources.seperator_or
+import org.apache.solr.ui.shared.generated.resources.solr_sun
+import org.apache.solr.ui.shared.generated.resources.title_sign_in_to_solr
import org.apache.solr.ui.views.components.SolrCard
import org.apache.solr.ui.views.components.SolrTextButton
import org.jetbrains.compose.resources.painterResource
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/cluster/ClusterContent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/cluster/ClusterContent.kt
similarity index 88%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/cluster/ClusterContent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/cluster/ClusterContent.kt
index bc875b427b0..04e52af7335 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/cluster/ClusterContent.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/cluster/ClusterContent.kt
@@ -24,10 +24,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import org.apache.solr.ui.components.cluster.ClusterComponent
import org.apache.solr.ui.components.cluster.ClusterComponent.ClusterTab
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.cores
-import org.apache.solr.ui.generated.resources.nodes
-import org.apache.solr.ui.generated.resources.zookeeper
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.cores
+import org.apache.solr.ui.shared.generated.resources.nodes
+import org.apache.solr.ui.shared.generated.resources.zookeeper
import org.apache.solr.ui.views.navigation.NavigationTabs
import org.jetbrains.compose.resources.StringResource
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrButton.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrButton.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrButton.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrButton.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrCard.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrCard.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrCard.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrCard.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrLinearProgressIndicator.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrLinearProgressIndicator.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrLinearProgressIndicator.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrLinearProgressIndicator.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrOutlinedTextField.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrOutlinedTextField.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrOutlinedTextField.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrOutlinedTextField.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrTextButton.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrTextButton.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrTextButton.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/components/SolrTextButton.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsContent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsContent.kt
similarity index 87%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsContent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsContent.kt
index 88449d9be04..323cb5c8951 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsContent.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsContent.kt
@@ -34,14 +34,14 @@ import androidx.navigation3.ui.NavDisplay
import org.apache.solr.ui.components.configsets.di.ConfigsetsComponent
import org.apache.solr.ui.components.configsets.viewmodel.ConfigsetsScene
import org.apache.solr.ui.components.configsets.viewmodel.ConfigsetsTab
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.configsets_index_query
-import org.apache.solr.ui.generated.resources.configsets_request_handlers
-import org.apache.solr.ui.generated.resources.configsets_search_components
-import org.apache.solr.ui.generated.resources.configsets_update_configuration
-import org.apache.solr.ui.generated.resources.files
-import org.apache.solr.ui.generated.resources.overview
-import org.apache.solr.ui.generated.resources.schema
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.configsets_index_query
+import org.apache.solr.ui.shared.generated.resources.configsets_request_handlers
+import org.apache.solr.ui.shared.generated.resources.configsets_search_components
+import org.apache.solr.ui.shared.generated.resources.configsets_update_configuration
+import org.apache.solr.ui.shared.generated.resources.files
+import org.apache.solr.ui.shared.generated.resources.overview
+import org.apache.solr.ui.shared.generated.resources.schema
import org.apache.solr.ui.views.navigation.NavigationTabs
@OptIn(ExperimentalLayoutApi::class)
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsDropdown.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsDropdown.kt
similarity index 93%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsDropdown.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsDropdown.kt
index 4f4a032e386..267f334b238 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsDropdown.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsDropdown.kt
@@ -35,11 +35,11 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import org.apache.solr.ui.components.configsets.viewmodel.ConfigsetsViewModel
import org.apache.solr.ui.domain.Configset
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.cd_clear_field
-import org.apache.solr.ui.generated.resources.close
-import org.apache.solr.ui.generated.resources.nav_configsets
-import org.apache.solr.ui.generated.resources.no_configsets
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.cd_clear_field
+import org.apache.solr.ui.shared.generated.resources.close
+import org.apache.solr.ui.shared.generated.resources.nav_configsets
+import org.apache.solr.ui.shared.generated.resources.no_configsets
import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.resources.stringResource
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsOverviewContent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsOverviewContent.kt
similarity index 95%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsOverviewContent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsOverviewContent.kt
index d0ecf4a2729..1b749efe211 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsOverviewContent.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsOverviewContent.kt
@@ -48,11 +48,11 @@ import org.apache.solr.ui.components.configsets.viewmodel.ConfigsetsOverviewEntr
import org.apache.solr.ui.components.configsets.viewmodel.ConfigsetsOverviewEntry.ConfigsetsOverviewDialog.ImportConfigsetDialog
import org.apache.solr.ui.components.configsets.viewmodel.ConfigsetsViewModel
import org.apache.solr.ui.domain.Configset
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.action_create_configset
-import org.apache.solr.ui.generated.resources.action_edit_solrconfig
-import org.apache.solr.ui.generated.resources.add
-import org.apache.solr.ui.generated.resources.edit
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.action_create_configset
+import org.apache.solr.ui.shared.generated.resources.action_edit_solrconfig
+import org.apache.solr.ui.shared.generated.resources.add
+import org.apache.solr.ui.shared.generated.resources.edit
import org.apache.solr.ui.views.components.SolrTextButton
import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.resources.stringResource
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/CreateConfigsetDialog.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/CreateConfigsetDialog.kt
similarity index 90%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/CreateConfigsetDialog.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/CreateConfigsetDialog.kt
index f6a6426baa6..73665a3971f 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/CreateConfigsetDialog.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/CreateConfigsetDialog.kt
@@ -34,12 +34,12 @@ import androidx.compose.ui.platform.testTag
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import org.apache.solr.ui.components.configsets.viewmodel.CreateConfigsetViewModel
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.action_cancel
-import org.apache.solr.ui.generated.resources.action_create_configset
-import org.apache.solr.ui.generated.resources.action_import_configset
-import org.apache.solr.ui.generated.resources.label_configset_name
-import org.apache.solr.ui.generated.resources.title_create_configset
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.action_cancel
+import org.apache.solr.ui.shared.generated.resources.action_create_configset
+import org.apache.solr.ui.shared.generated.resources.action_import_configset
+import org.apache.solr.ui.shared.generated.resources.label_configset_name
+import org.apache.solr.ui.shared.generated.resources.title_create_configset
import org.apache.solr.ui.views.components.SolrButton
import org.apache.solr.ui.views.components.SolrCard
import org.apache.solr.ui.views.components.SolrTextButton
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ImportConfigsetDialog.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ImportConfigsetDialog.kt
similarity index 90%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ImportConfigsetDialog.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ImportConfigsetDialog.kt
index 696a073889c..b17afb0d8bb 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ImportConfigsetDialog.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/configsets/ImportConfigsetDialog.kt
@@ -33,13 +33,13 @@ import androidx.compose.ui.platform.testTag
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import org.apache.solr.ui.components.configsets.viewmodel.ImportConfigsetViewModel
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.action_cancel
-import org.apache.solr.ui.generated.resources.action_create_configset
-import org.apache.solr.ui.generated.resources.action_import_configset
-import org.apache.solr.ui.generated.resources.label_configset_name
-import org.apache.solr.ui.generated.resources.label_select_configset_file
-import org.apache.solr.ui.generated.resources.title_import_configset
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.action_cancel
+import org.apache.solr.ui.shared.generated.resources.action_create_configset
+import org.apache.solr.ui.shared.generated.resources.action_import_configset
+import org.apache.solr.ui.shared.generated.resources.label_configset_name
+import org.apache.solr.ui.shared.generated.resources.label_select_configset_file
+import org.apache.solr.ui.shared.generated.resources.title_import_configset
import org.apache.solr.ui.views.components.SolrButton
import org.apache.solr.ui.views.components.SolrCard
import org.apache.solr.ui.views.components.SolrTextButton
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/environment/CommandLineArgumentsCard.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/environment/CommandLineArgumentsCard.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/environment/CommandLineArgumentsCard.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/environment/CommandLineArgumentsCard.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/environment/EnvironmentContent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/environment/EnvironmentContent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/environment/EnvironmentContent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/environment/EnvironmentContent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/environment/JavaPropertiesCard.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/environment/JavaPropertiesCard.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/environment/JavaPropertiesCard.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/environment/JavaPropertiesCard.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/environment/VersionsCard.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/environment/VersionsCard.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/environment/VersionsCard.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/environment/VersionsCard.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/files/FileSelector.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/files/FileSelector.kt
similarity index 91%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/files/FileSelector.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/files/FileSelector.kt
index 4f18f09cfca..f55ad77494a 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/files/FileSelector.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/files/FileSelector.kt
@@ -28,10 +28,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.unit.dp
import org.apache.solr.ui.domain.PickedFile
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.cd_clear_field
-import org.apache.solr.ui.generated.resources.close
-import org.apache.solr.ui.generated.resources.upload
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.cd_clear_field
+import org.apache.solr.ui.shared.generated.resources.close
+import org.apache.solr.ui.shared.generated.resources.upload
import org.apache.solr.ui.views.components.SolrTextButton
import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.resources.stringResource
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/files/FileTypeIcon.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/files/FileTypeIcon.kt
similarity index 88%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/files/FileTypeIcon.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/files/FileTypeIcon.kt
index f394702842f..cbb38f0e2ef 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/files/FileTypeIcon.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/files/FileTypeIcon.kt
@@ -20,9 +20,9 @@ package org.apache.solr.ui.views.files
import androidx.compose.material3.Icon
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.draft
-import org.apache.solr.ui.generated.resources.folder_zip
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.draft
+import org.apache.solr.ui.shared.generated.resources.folder_zip
import org.jetbrains.compose.resources.painterResource
@Composable
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/icons/SolrLogo.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/icons/SolrLogo.kt
similarity index 86%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/icons/SolrLogo.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/icons/SolrLogo.kt
index 62aff93233a..3de4cfdaa24 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/icons/SolrLogo.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/icons/SolrLogo.kt
@@ -21,10 +21,10 @@ import androidx.compose.foundation.Image
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.cd_solr_logo
-import org.apache.solr.ui.generated.resources.solr_logo_dark
-import org.apache.solr.ui.generated.resources.solr_logo_light
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.cd_solr_logo
+import org.apache.solr.ui.shared.generated.resources.solr_logo_dark
+import org.apache.solr.ui.shared.generated.resources.solr_logo_light
import org.jetbrains.compose.resources.painterResource
import org.jetbrains.compose.resources.stringResource
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/logging/LoggingContent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/logging/LoggingContent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/logging/LoggingContent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/logging/LoggingContent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/main/MainContent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/main/MainContent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/main/MainContent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/main/MainContent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/Footer.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/Footer.kt
similarity index 86%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/Footer.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/Footer.kt
index e9881fd712f..29c12105255 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/Footer.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/Footer.kt
@@ -38,19 +38,19 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.broken_image
-import org.apache.solr.ui.generated.resources.bug_report
-import org.apache.solr.ui.generated.resources.code
-import org.apache.solr.ui.generated.resources.community
-import org.apache.solr.ui.generated.resources.documentation
-import org.apache.solr.ui.generated.resources.groups
-import org.apache.solr.ui.generated.resources.info
-import org.apache.solr.ui.generated.resources.issue_tracker
-import org.apache.solr.ui.generated.resources.menu_book
-import org.apache.solr.ui.generated.resources.slack
-import org.apache.solr.ui.generated.resources.solr_query_syntax
-import org.apache.solr.ui.generated.resources.support
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.broken_image
+import org.apache.solr.ui.shared.generated.resources.bug_report
+import org.apache.solr.ui.shared.generated.resources.code
+import org.apache.solr.ui.shared.generated.resources.community
+import org.apache.solr.ui.shared.generated.resources.documentation
+import org.apache.solr.ui.shared.generated.resources.groups
+import org.apache.solr.ui.shared.generated.resources.info
+import org.apache.solr.ui.shared.generated.resources.issue_tracker
+import org.apache.solr.ui.shared.generated.resources.menu_book
+import org.apache.solr.ui.shared.generated.resources.slack
+import org.apache.solr.ui.shared.generated.resources.solr_query_syntax
+import org.apache.solr.ui.shared.generated.resources.support
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.StringResource
import org.jetbrains.compose.resources.painterResource
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/MainMenu.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/MainMenu.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/MainMenu.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/MainMenu.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/NavigationSideBar.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/NavigationSideBar.kt
similarity index 78%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/NavigationSideBar.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/NavigationSideBar.kt
index b551eb6ae71..86a5ada0eb4 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/NavigationSideBar.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/NavigationSideBar.kt
@@ -37,37 +37,37 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.unit.dp
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.action_logout
-import org.apache.solr.ui.generated.resources.analytics
-import org.apache.solr.ui.generated.resources.analytics_filled
-import org.apache.solr.ui.generated.resources.apps
-import org.apache.solr.ui.generated.resources.dashboard
-import org.apache.solr.ui.generated.resources.dashboard_filled
-import org.apache.solr.ui.generated.resources.folder_data
-import org.apache.solr.ui.generated.resources.folder_data_filled
-import org.apache.solr.ui.generated.resources.hub
-import org.apache.solr.ui.generated.resources.hub_filled
-import org.apache.solr.ui.generated.resources.logout
-import org.apache.solr.ui.generated.resources.memory
-import org.apache.solr.ui.generated.resources.memory_filled
-import org.apache.solr.ui.generated.resources.nav_cluster
-import org.apache.solr.ui.generated.resources.nav_collections
-import org.apache.solr.ui.generated.resources.nav_configsets
-import org.apache.solr.ui.generated.resources.nav_dashboard
-import org.apache.solr.ui.generated.resources.nav_environment
-import org.apache.solr.ui.generated.resources.nav_logging
-import org.apache.solr.ui.generated.resources.nav_metrics
-import org.apache.solr.ui.generated.resources.nav_queries_and_operations
-import org.apache.solr.ui.generated.resources.nav_security
-import org.apache.solr.ui.generated.resources.nav_thread_dump
-import org.apache.solr.ui.generated.resources.other_admission
-import org.apache.solr.ui.generated.resources.other_admission_filled
-import org.apache.solr.ui.generated.resources.security
-import org.apache.solr.ui.generated.resources.text_snippet
-import org.apache.solr.ui.generated.resources.text_snippet_filled
-import org.apache.solr.ui.generated.resources.view_list
-import org.apache.solr.ui.generated.resources.view_list_filled
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.action_logout
+import org.apache.solr.ui.shared.generated.resources.analytics
+import org.apache.solr.ui.shared.generated.resources.analytics_filled
+import org.apache.solr.ui.shared.generated.resources.apps
+import org.apache.solr.ui.shared.generated.resources.dashboard
+import org.apache.solr.ui.shared.generated.resources.dashboard_filled
+import org.apache.solr.ui.shared.generated.resources.folder_data
+import org.apache.solr.ui.shared.generated.resources.folder_data_filled
+import org.apache.solr.ui.shared.generated.resources.hub
+import org.apache.solr.ui.shared.generated.resources.hub_filled
+import org.apache.solr.ui.shared.generated.resources.logout
+import org.apache.solr.ui.shared.generated.resources.memory
+import org.apache.solr.ui.shared.generated.resources.memory_filled
+import org.apache.solr.ui.shared.generated.resources.nav_cluster
+import org.apache.solr.ui.shared.generated.resources.nav_collections
+import org.apache.solr.ui.shared.generated.resources.nav_configsets
+import org.apache.solr.ui.shared.generated.resources.nav_dashboard
+import org.apache.solr.ui.shared.generated.resources.nav_environment
+import org.apache.solr.ui.shared.generated.resources.nav_logging
+import org.apache.solr.ui.shared.generated.resources.nav_metrics
+import org.apache.solr.ui.shared.generated.resources.nav_queries_and_operations
+import org.apache.solr.ui.shared.generated.resources.nav_security
+import org.apache.solr.ui.shared.generated.resources.nav_thread_dump
+import org.apache.solr.ui.shared.generated.resources.other_admission
+import org.apache.solr.ui.shared.generated.resources.other_admission_filled
+import org.apache.solr.ui.shared.generated.resources.security
+import org.apache.solr.ui.shared.generated.resources.text_snippet
+import org.apache.solr.ui.shared.generated.resources.text_snippet_filled
+import org.apache.solr.ui.shared.generated.resources.view_list
+import org.apache.solr.ui.shared.generated.resources.view_list_filled
import org.apache.solr.ui.views.icons.SolrLogo
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.painterResource
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/NavigationTabs.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/NavigationTabs.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/NavigationTabs.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/navigation/NavigationTabs.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/root/RootContent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/root/RootContent.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/root/RootContent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/root/RootContent.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/start/StartContent.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/start/StartContent.kt
similarity index 91%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/start/StartContent.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/start/StartContent.kt
index eeb2c87d735..9b2332a79c1 100644
--- a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/start/StartContent.kt
+++ b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/start/StartContent.kt
@@ -37,13 +37,13 @@ import androidx.compose.ui.draw.scale
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.unit.dp
import org.apache.solr.ui.components.start.StartComponent
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.action_connect
-import org.apache.solr.ui.generated.resources.cd_solr_logo
-import org.apache.solr.ui.generated.resources.connecting
-import org.apache.solr.ui.generated.resources.desc_to_get_started
-import org.apache.solr.ui.generated.resources.solr_sun
-import org.apache.solr.ui.generated.resources.title_welcome_to_solr
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.action_connect
+import org.apache.solr.ui.shared.generated.resources.cd_solr_logo
+import org.apache.solr.ui.shared.generated.resources.connecting
+import org.apache.solr.ui.shared.generated.resources.desc_to_get_started
+import org.apache.solr.ui.shared.generated.resources.solr_sun
+import org.apache.solr.ui.shared.generated.resources.title_welcome_to_solr
import org.apache.solr.ui.utils.defaultSolrUrl
import org.apache.solr.ui.views.components.SolrButton
import org.apache.solr.ui.views.components.SolrCard
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/theme/ColorFamily.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/theme/ColorFamily.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/theme/ColorFamily.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/theme/ColorFamily.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Colors.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Colors.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Colors.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Colors.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Shapes.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Shapes.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Shapes.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Shapes.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Theme.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Theme.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Theme.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Theme.kt
diff --git a/solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Typography.kt b/ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Typography.kt
similarity index 100%
rename from solr/ui/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Typography.kt
rename to ui/shared/src/commonMain/kotlin/org/apache/solr/ui/views/theme/Typography.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/Semantics.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/Semantics.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/Semantics.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/Semantics.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/TestAppComponentContext.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/TestAppComponentContext.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/TestAppComponentContext.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/TestAppComponentContext.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/TestDispatchers.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/TestDispatchers.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/TestDispatchers.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/TestDispatchers.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/TestUtils.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/TestUtils.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/TestUtils.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/TestUtils.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/auth/AuthUtilsTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/auth/AuthUtilsTest.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/auth/AuthUtilsTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/auth/AuthUtilsTest.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/auth/integration/DefaultAuthenticationComponentIntegrationTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/auth/integration/DefaultAuthenticationComponentIntegrationTest.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/auth/integration/DefaultAuthenticationComponentIntegrationTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/auth/integration/DefaultAuthenticationComponentIntegrationTest.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/auth/integration/DefaultBasicAuthComponentTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/auth/integration/DefaultBasicAuthComponentTest.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/auth/integration/DefaultBasicAuthComponentTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/auth/integration/DefaultBasicAuthComponentTest.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/auth/store/FakeOAuthClient.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/auth/store/FakeOAuthClient.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/auth/store/FakeOAuthClient.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/auth/store/FakeOAuthClient.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/auth/store/OAuthStoreProviderTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/auth/store/OAuthStoreProviderTest.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/auth/store/OAuthStoreProviderTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/auth/store/OAuthStoreProviderTest.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsStateHolderTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsStateHolderTest.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsStateHolderTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/configsets/viewmodel/ConfigsetsStateHolderTest.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/environment/store/EnvironmentStoreProviderTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/environment/store/EnvironmentStoreProviderTest.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/environment/store/EnvironmentStoreProviderTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/environment/store/EnvironmentStoreProviderTest.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/environment/store/MockedEnvironmentStoreClient.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/environment/store/MockedEnvironmentStoreClient.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/environment/store/MockedEnvironmentStoreClient.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/environment/store/MockedEnvironmentStoreClient.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/start/integration/DefaultStartComponentIntegrationTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/start/integration/DefaultStartComponentIntegrationTest.kt
similarity index 94%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/start/integration/DefaultStartComponentIntegrationTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/start/integration/DefaultStartComponentIntegrationTest.kt
index 028fc01de2b..9df174840aa 100644
--- a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/components/start/integration/DefaultStartComponentIntegrationTest.kt
+++ b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/components/start/integration/DefaultStartComponentIntegrationTest.kt
@@ -30,6 +30,7 @@ import io.ktor.client.engine.mock.respond
import io.ktor.client.request.HttpRequestData
import io.ktor.http.HttpStatusCode
import io.ktor.http.URLBuilder
+import io.ktor.http.fullPath
import io.ktor.http.path
import kotlin.test.AfterTest
import kotlin.test.BeforeTest
@@ -48,8 +49,8 @@ import kotlinx.coroutines.test.runTest
import org.apache.solr.ui.components.start.StartComponent
import org.apache.solr.ui.components.start.StartComponent.Output
import org.apache.solr.ui.createMockEngine
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.error_invalid_url
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.error_invalid_url
import org.apache.solr.ui.utils.AppComponentContext
import org.apache.solr.ui.utils.DEFAULT_SOLR_URL
import org.apache.solr.ui.utils.DefaultAppComponentContext
@@ -95,11 +96,11 @@ class DefaultStartComponentIntegrationTest {
message = "Expected one request in history",
)
assertEquals(
- expected = URLBuilder(DEFAULT_SOLR_URL).apply {
- // As of now connection is established by calling this endpoint
- path("api/node/system")
- }.build(),
- actual = engine.requestHistory[0].url,
+ // As of now connection is established by calling this endpoint
+ // Note that the default host is the window.location.url (localhost:9876) on wasmJs
+ // and 127.0.0.1:8983 on JVM
+ expected = "/api/node/system",
+ actual = engine.requestHistory[0].url.fullPath,
)
}
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/auth/BasicAuthContentTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/auth/BasicAuthContentTest.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/auth/BasicAuthContentTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/auth/BasicAuthContentTest.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestAuthenticationComponent.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestAuthenticationComponent.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestAuthenticationComponent.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestAuthenticationComponent.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestBasicAuthComponent.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestBasicAuthComponent.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestBasicAuthComponent.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestBasicAuthComponent.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestOAuthComponent.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestOAuthComponent.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestOAuthComponent.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestOAuthComponent.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestOAuthData.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestOAuthData.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestOAuthData.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/auth/TestOAuthData.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/auth/UserAuthenticationContentTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/auth/UserAuthenticationContentTest.kt
similarity index 88%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/auth/UserAuthenticationContentTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/auth/UserAuthenticationContentTest.kt
index f55fd7421bf..afba9e18fec 100644
--- a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/auth/UserAuthenticationContentTest.kt
+++ b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/auth/UserAuthenticationContentTest.kt
@@ -21,15 +21,17 @@ import androidx.compose.ui.test.ExperimentalTestApi
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.v2.runComposeUiTest
+import kotlin.test.Ignore
import kotlin.test.Test
import org.apache.solr.ui.components.auth.AuthenticationComponent.Model
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.error_invalid_credentials
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.error_invalid_credentials
@OptIn(ExperimentalTestApi::class)
class UserAuthenticationContentTest {
@Test
+ @Ignore // TODO Currently fails on wasmJs
fun `GIVEN error THEN error displayed`() = runComposeUiTest {
val error = Res.string.error_invalid_credentials
setContent {
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/components/SolrCardTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/components/SolrCardTest.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/components/SolrCardTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/components/SolrCardTest.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsDropdownTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsDropdownTest.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsDropdownTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/configsets/ConfigsetsDropdownTest.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/configsets/CreateConfigsetDialogTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/configsets/CreateConfigsetDialogTest.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/configsets/CreateConfigsetDialogTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/configsets/CreateConfigsetDialogTest.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/configsets/ImportConfigsetDialogTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/configsets/ImportConfigsetDialogTest.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/configsets/ImportConfigsetDialogTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/configsets/ImportConfigsetDialogTest.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/environment/EnvironmentContentTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/environment/EnvironmentContentTest.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/environment/EnvironmentContentTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/environment/EnvironmentContentTest.kt
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/start/StartContentTest.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/start/StartContentTest.kt
similarity index 86%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/start/StartContentTest.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/start/StartContentTest.kt
index ec5dcbb7924..e934cf8a78d 100644
--- a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/start/StartContentTest.kt
+++ b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/start/StartContentTest.kt
@@ -17,21 +17,25 @@
package org.apache.solr.ui.views.start
+import androidx.compose.ui.semantics.SemanticsNode
import androidx.compose.ui.semantics.SemanticsProperties
import androidx.compose.ui.test.ExperimentalTestApi
+import androidx.compose.ui.test.assertAny
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.assertIsNotEnabled
import androidx.compose.ui.test.isDisplayed
+import androidx.compose.ui.test.onAllNodesWithText
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
import androidx.compose.ui.test.v2.runComposeUiTest
+import kotlin.test.Ignore
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
import org.apache.solr.ui.components.start.StartComponent.Model
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.error_invalid_url
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.error_invalid_url
import org.jetbrains.compose.resources.stringResource
@OptIn(ExperimentalTestApi::class)
@@ -54,15 +58,13 @@ class StartContentTest {
}
@Test
+ @Ignore // TODO Currently fails on wasmJs
fun `GIVEN input error THEN error text shown`() = runComposeUiTest {
- val errorRes = Res.string.error_invalid_url
- lateinit var errorText: String
setContent {
- StartContent(createComponent(Model(error = errorRes)))
- errorText = stringResource(errorRes)
+ StartContent(createComponent(Model(error = Res.string.error_invalid_url)))
}
- onNodeWithText(errorText).isDisplayed()
+ onNodeWithTag("input_error").assertIsDisplayed()
}
@Test
diff --git a/solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/start/TestStartComponent.kt b/ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/start/TestStartComponent.kt
similarity index 100%
rename from solr/ui/src/commonTest/kotlin/org/apache/solr/ui/views/start/TestStartComponent.kt
rename to ui/shared/src/commonTest/kotlin/org/apache/solr/ui/views/start/TestStartComponent.kt
diff --git a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/components/auth/AuthUtils.desktop.kt b/ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/components/auth/AuthUtils.desktop.kt
similarity index 100%
rename from solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/components/auth/AuthUtils.desktop.kt
rename to ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/components/auth/AuthUtils.desktop.kt
diff --git a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt b/ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt
similarity index 100%
rename from solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt
rename to ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt
diff --git a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/preview/PreviewContainer.kt b/ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/preview/PreviewContainer.kt
similarity index 100%
rename from solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/preview/PreviewContainer.kt
rename to ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/preview/PreviewContainer.kt
diff --git a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/preview/auth/PreviewUserAuthenticationContent.kt b/ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/preview/auth/PreviewUserAuthenticationContent.kt
similarity index 97%
rename from solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/preview/auth/PreviewUserAuthenticationContent.kt
rename to ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/preview/auth/PreviewUserAuthenticationContent.kt
index ac3a88a6f90..bd44956b9a8 100644
--- a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/preview/auth/PreviewUserAuthenticationContent.kt
+++ b/ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/preview/auth/PreviewUserAuthenticationContent.kt
@@ -93,9 +93,9 @@ private class PreviewAuthenticationComponentWithBasicAuth(
clientId = "",
authorizationFlow = AuthorizationFlow.CodePKCE,
scope = "",
- redirectUris = listOf(Url("http://localhost")),
- authorizationEndpoint = Url("http://localhost"),
- tokenEndpoint = Url("http://localhost"),
+ redirectUris = listOf(Url("http://127.0.0.1")),
+ authorizationEndpoint = Url("http://127.0.0.1"),
+ tokenEndpoint = Url("http://127.0.0.1"),
),
)
} else {
diff --git a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/preview/configsets/PreviewConfigsetsContent.kt b/ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/preview/configsets/PreviewConfigsetsContent.kt
similarity index 100%
rename from solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/preview/configsets/PreviewConfigsetsContent.kt
rename to ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/preview/configsets/PreviewConfigsetsContent.kt
diff --git a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/preview/navigation/PreviewNavigationSideBar.kt b/ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/preview/navigation/PreviewNavigationSideBar.kt
similarity index 100%
rename from solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/preview/navigation/PreviewNavigationSideBar.kt
rename to ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/preview/navigation/PreviewNavigationSideBar.kt
diff --git a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/preview/start/PreviewStartContent.kt b/ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/preview/start/PreviewStartContent.kt
similarity index 95%
rename from solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/preview/start/PreviewStartContent.kt
rename to ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/preview/start/PreviewStartContent.kt
index a50108bd4f4..0a0912bccf2 100644
--- a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/preview/start/PreviewStartContent.kt
+++ b/ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/preview/start/PreviewStartContent.kt
@@ -22,8 +22,8 @@ import androidx.compose.ui.tooling.preview.Preview
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import org.apache.solr.ui.components.start.StartComponent
-import org.apache.solr.ui.generated.resources.Res
-import org.apache.solr.ui.generated.resources.error_invalid_url
+import org.apache.solr.ui.shared.generated.resources.Res
+import org.apache.solr.ui.shared.generated.resources.error_invalid_url
import org.apache.solr.ui.preview.PreviewContainer
import org.apache.solr.ui.views.start.StartContent
diff --git a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/utils/AppDispatchers.jvm.kt b/ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/utils/AppDispatchers.jvm.kt
similarity index 100%
rename from solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/utils/AppDispatchers.jvm.kt
rename to ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/utils/AppDispatchers.jvm.kt
diff --git a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/utils/ErrorUtils.desktop.kt b/ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/utils/ErrorUtils.desktop.kt
similarity index 100%
rename from solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/utils/ErrorUtils.desktop.kt
rename to ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/utils/ErrorUtils.desktop.kt
diff --git a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/utils/FileUtils.desktop.kt b/ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/utils/FileUtils.desktop.kt
similarity index 100%
rename from solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/utils/FileUtils.desktop.kt
rename to ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/utils/FileUtils.desktop.kt
diff --git a/solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/utils/PlatformUtils.kt b/ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/utils/PlatformUtils.kt
similarity index 100%
rename from solr/ui/src/jvmMain/kotlin/org/apache/solr/ui/utils/PlatformUtils.kt
rename to ui/shared/src/jvmMain/kotlin/org/apache/solr/ui/utils/PlatformUtils.kt
diff --git a/solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/components/auth/AuthUtils.wasmJs.kt b/ui/shared/src/wasmJsMain/kotlin/org/apache/solr/ui/components/auth/AuthUtils.wasmJs.kt
similarity index 100%
rename from solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/components/auth/AuthUtils.wasmJs.kt
rename to ui/shared/src/wasmJsMain/kotlin/org/apache/solr/ui/components/auth/AuthUtils.wasmJs.kt
diff --git a/solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt b/ui/shared/src/wasmJsMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt
similarity index 99%
rename from solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt
rename to ui/shared/src/wasmJsMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt
index 1f4a632103a..c7e91224c1f 100644
--- a/solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt
+++ b/ui/shared/src/wasmJsMain/kotlin/org/apache/solr/ui/components/auth/integration/PlatformOAuthStoreClient.kt
@@ -58,6 +58,7 @@ private val logger = KotlinLogging.logger {}
* @property httpClient A preconfigured HTTP client that has the base URL of a Solr instance
* already set.
*/
+@OptIn(ExperimentalWasmJsInterop::class)
actual class PlatformOAuthStoreClient actual constructor(private val httpClient: HttpClient) : OAuthStoreProvider.Client {
actual override suspend fun authenticate(
diff --git a/solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/AppDispatchers.web.kt b/ui/shared/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/AppDispatchers.web.kt
similarity index 100%
rename from solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/AppDispatchers.web.kt
rename to ui/shared/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/AppDispatchers.web.kt
diff --git a/solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/ErrorUtils.kt b/ui/shared/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/ErrorUtils.kt
similarity index 100%
rename from solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/ErrorUtils.kt
rename to ui/shared/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/ErrorUtils.kt
diff --git a/solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/FileUtils.wasmJs.kt b/ui/shared/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/FileUtils.wasmJs.kt
similarity index 100%
rename from solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/FileUtils.wasmJs.kt
rename to ui/shared/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/FileUtils.wasmJs.kt
diff --git a/solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/PlatformUtils.kt b/ui/shared/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/PlatformUtils.kt
similarity index 100%
rename from solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/PlatformUtils.kt
rename to ui/shared/src/wasmJsMain/kotlin/org/apache/solr/ui/utils/PlatformUtils.kt
diff --git a/solr/ui/src/wasmJsTest/kotlin/org/apache/solr/ui/components/auth/AuthUtilsTestJs.kt b/ui/shared/src/wasmJsTest/kotlin/org/apache/solr/ui/components/auth/AuthUtilsTestJs.kt
similarity index 97%
rename from solr/ui/src/wasmJsTest/kotlin/org/apache/solr/ui/components/auth/AuthUtilsTestJs.kt
rename to ui/shared/src/wasmJsTest/kotlin/org/apache/solr/ui/components/auth/AuthUtilsTestJs.kt
index 326b6a37aa2..df609bb321e 100644
--- a/solr/ui/src/wasmJsTest/kotlin/org/apache/solr/ui/components/auth/AuthUtilsTestJs.kt
+++ b/ui/shared/src/wasmJsTest/kotlin/org/apache/solr/ui/components/auth/AuthUtilsTestJs.kt
@@ -44,7 +44,7 @@ class AuthUtilsTestJs {
@Test
fun `WHEN generate redirect URI with defaults THEN no double slash exists`() {
- val redirectUri = getRedirectUri()
+ val redirectUri = getRedirectUri().removePrefix("http://")
assertFalse(
actual = redirectUri.contains("//"),
diff --git a/ui/webApp/build.gradle.kts b/ui/webApp/build.gradle.kts
new file mode 100644
index 00000000000..e857720145b
--- /dev/null
+++ b/ui/webApp/build.gradle.kts
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.gradle.api.tasks.bundling.Zip
+import java.security.MessageDigest
+import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
+import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
+
+plugins {
+ alias(libs.plugins.kotlin.multiplatform)
+ alias(libs.plugins.compose.multiplatform)
+ alias(libs.plugins.compose.compiler)
+ alias(libs.plugins.kotlin.serialization)
+}
+
+kotlin {
+// js {
+// browser()
+// binaries.executable()
+// }
+
+ @OptIn(ExperimentalWasmDsl::class)
+ wasmJs {
+ browser {
+ commonWebpackConfig {
+ outputFileName = "webApp.js"
+ devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply {
+ // Serve sources to debug inside browser
+ static(directory = project.projectDir.path)
+ }
+ // Note that webpack.config.d/ contains additional configuration
+ }
+ testTask {
+ // Explicitly disable the wasmJs browser tests, as we do not have the suitable
+ // environments right now (running only tests for JVM)
+ enabled = false
+ }
+ }
+ binaries.executable()
+ }
+
+ sourceSets {
+ commonMain.dependencies {
+ implementation(projects.shared)
+ implementation(libs.kotlinx.serialization.json)
+
+ implementation(libs.compose.ui)
+
+ implementation(project.dependencies.platform(libs.ktor.bom))
+ implementation(libs.ktor.client.core)
+ implementation(libs.compose.foundation)
+ implementation(libs.compose.material3)
+ implementation(libs.decompose.decompose)
+ implementation(libs.mvikotlin.main)
+ implementation(libs.mvikotlin.mvikotlin)
+ }
+ }
+}
+
+// package as a plain zip and upload to nightlies by CI
+val wasmJsBrowserDistribution = tasks.named("wasmJsBrowserDistribution")
+
+val zipWasmDist = tasks.register<Zip>("zipWasmDist") {
+ dependsOn(wasmJsBrowserDistribution)
+ from(wasmJsBrowserDistribution.map { it.outputs.files.singleFile })
+ archiveFileName.set("solr-ui-wasm.zip")
+ destinationDirectory.set(layout.buildDirectory.dir("dist"))
+ finalizedBy("checksumWasmDist")
+}
+
+tasks.register("checksumWasmDist") {
+ dependsOn(zipWasmDist)
+
+ val archiveFile = zipWasmDist.flatMap { it.archiveFile }
+ val checksumFile = archiveFile.map { it.asFile.parentFile.resolve("${it.asFile.name}.sha256") }
+
+ inputs.file(archiveFile)
+ outputs.file(checksumFile)
+
+ doLast {
+ val file = archiveFile.get().asFile
+ val checksum = MessageDigest.getInstance("SHA-256")
+ .digest(file.readBytes())
+ .joinToString("") { b -> "%02x".format(b) }
+ checksumFile.get().writeText(checksum)
+ }
+}
diff --git a/solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/Main.kt b/ui/webApp/src/webMain/kotlin/org/apache/solr/ui/Main.kt
similarity index 90%
rename from solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/Main.kt
rename to ui/webApp/src/webMain/kotlin/org/apache/solr/ui/Main.kt
index 7fb3703656b..ca3585f1a07 100644
--- a/solr/ui/src/wasmJsMain/kotlin/org/apache/solr/ui/Main.kt
+++ b/ui/webApp/src/webMain/kotlin/org/apache/solr/ui/Main.kt
@@ -39,13 +39,7 @@ import org.apache.solr.ui.views.root.RootContent
import org.apache.solr.ui.views.theme.SolrTheme
import org.w3c.dom.Window
-/**
- * Entry point of the Compose application for all wasmJs (browser) targets.
- *
- * This function sets up the lifecycle management and instantiates the [RootComponent] with the
- * [DefaultAppComponentContext] that is used by all child components.
- */
-@OptIn(ExperimentalComposeUiApi::class)
+@OptIn(ExperimentalComposeUiApi::class, ExperimentalWasmJsInterop::class)
fun main() {
val lifecycle = LifecycleRegistry()
val componentContext = DefaultAppComponentContext(
@@ -77,7 +71,7 @@ fun main() {
destination = destination,
)
- ComposeViewport(document.body!!) {
+ ComposeViewport {
SolrTheme(useDarkTheme = false) {
Surface(modifier = Modifier.fillMaxSize()) {
RootContent(component)
diff --git a/solr/ui/src/wasmJsMain/resources/index.html b/ui/webApp/src/webMain/resources/index.html
similarity index 62%
rename from solr/ui/src/wasmJsMain/resources/index.html
rename to ui/webApp/src/webMain/resources/index.html
index c84db4ede45..f3d74a93078 100644
--- a/solr/ui/src/wasmJsMain/resources/index.html
+++ b/ui/webApp/src/webMain/resources/index.html
@@ -22,8 +22,16 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Solr Admin UI</title>
<link type="text/css" rel="stylesheet" href="styles.css">
- <script type="application/javascript" src="composeApp.js"></script>
</head>
-<body>
+<body style="text-align: center; align-content: center">
+ <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 50 50" role="presentation">
+ <circle cx="25" cy="25" r="20" stroke="#ccc" stroke-width="4" fill="none"/>
+ <circle cx="25" cy="25" r="20" stroke="#333" stroke-width="4" fill="none" stroke-linecap="round"
+ stroke-dasharray="90 125">
+ <animateTransform attributeName="transform" type="rotate" from="0 25 25" to="360 25 25" dur="1s"
+ repeatCount="indefinite"/>
+ </circle>
+ </svg>
+ <script type="application/javascript" src="webApp.js"></script>
</body>
</html>
diff --git a/solr/ui/src/wasmJsMain/resources/styles.css b/ui/webApp/src/webMain/resources/styles.css
similarity index 99%
rename from solr/ui/src/wasmJsMain/resources/styles.css
rename to ui/webApp/src/webMain/resources/styles.css
index e22cca50a17..b94bc3a6e6a 100644
--- a/solr/ui/src/wasmJsMain/resources/styles.css
+++ b/ui/webApp/src/webMain/resources/styles.css
@@ -21,4 +21,4 @@ html, body {
margin: 0;
padding: 0;
overflow: hidden;
-}
\ No newline at end of file
+}
diff --git a/solr/ui/webpack.config.d/adjust-limits.js b/ui/webApp/webpack.config.d/adjust-limits.js
similarity index 100%
rename from solr/ui/webpack.config.d/adjust-limits.js
rename to ui/webApp/webpack.config.d/adjust-limits.js