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