From 07fa590b641be0c0594d5b803fed3580136b0075 Mon Sep 17 00:00:00 2001 From: Sebastiano Poggi Date: Tue, 2 Sep 2025 18:22:45 +0200 Subject: [PATCH] [JEWEL-1000] Update standalone theme defs, fix generator This updates the ThemeDefinition dumps for standalone for the main branch, fixes the Gradle generator to generate them in the correct folder, makes sure they're properly formatted. It also adds a step to the release guide to make sure we update them. Bonus changes: * Removed unused `ijp.target` property and relative logic from the Gradle build and docs. * Bumped target IJP to 252.1 in Gradle build * Bump IJP Gradle Plugin to 2.8.0 closes https://github.com/JetBrains/intellij-community/pull/3215 (cherry picked from commit f101aa8994c72b6db52118fb9942b1a2fad28944) GitOrigin-RevId: 9ac97d38d9b83d95d18106782834d2a3f6fb90f9 --- .../buildSrc/src/main/kotlin/jewel.gradle.kts | 12 +- .../ideversion/ApiIdeaReleasesItem.kt | 19 - .../ideversion/CheckIdeaVersionTask.kt | 186 ------- .../buildlogic/ideversion/CurrentIjpTarget.kt | 15 - .../ideversion/IJPVersionsFetcher.kt | 97 ---- .../theme/IntUiThemeDescriptorReader.kt | 27 +- .../theme/IntelliJThemeGeneratorPlugin.kt | 36 +- platform/jewel/docs/releasing-guide.md | 13 +- platform/jewel/gradle.properties | 1 - platform/jewel/gradle/libs.versions.toml | 6 +- .../int-ui/int-ui-standalone/build.gradle.kts | 39 +- .../jewel/intui/core/theme/IntUiDarkTheme.kt | 515 ++++++++--------- .../jewel/intui/core/theme/IntUiLightTheme.kt | 516 +++++++++--------- .../jewel/scripts/compare-branches.main.kts | 3 +- .../scripts/extract-release-notes.main.kts | 16 +- .../scripts/jewel-version-updater.main.kts | 1 - .../scripts/metalava-signatures.main.kts | 33 +- 17 files changed, 661 insertions(+), 874 deletions(-) delete mode 100644 platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/ApiIdeaReleasesItem.kt delete mode 100644 platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/CheckIdeaVersionTask.kt delete mode 100644 platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/CurrentIjpTarget.kt delete mode 100644 platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/IJPVersionsFetcher.kt diff --git a/platform/jewel/buildSrc/src/main/kotlin/jewel.gradle.kts b/platform/jewel/buildSrc/src/main/kotlin/jewel.gradle.kts index 7b4a189dc363..f4514089db83 100644 --- a/platform/jewel/buildSrc/src/main/kotlin/jewel.gradle.kts +++ b/platform/jewel/buildSrc/src/main/kotlin/jewel.gradle.kts @@ -56,13 +56,17 @@ kotlin { } tasks { - detektMain { exclude { it.file.absolutePath.startsWith(layout.buildDirectory.asFile.get().absolutePath) } } + // We need to use relative paths for patterns. + // Exclude does not work; this is how the Kotlinter plugin docs recommend doing it, and it works... + val buildDir = layout.buildDirectory.asFile.get().relativeTo(project.projectDir).path + detektMain { source = (source - fileTree(buildDir)).asFileTree } - formatKotlinMain { exclude { it.file.absolutePath.replace('\\', '/').contains("build/generated") } } - withType { exclude { it.file.absolutePath.contains("build/generated") } } + formatKotlinMain { source = (source - fileTree(buildDir)).asFileTree } + + withType { source = (source - fileTree(buildDir)).asFileTree } lintKotlinMain { - exclude { it.file.absolutePath.replace('\\', '/').contains("build/generated") } + source = (source - fileTree(buildDir)).asFileTree reports = provider { mapOf( diff --git a/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/ApiIdeaReleasesItem.kt b/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/ApiIdeaReleasesItem.kt deleted file mode 100644 index 29fec60d7094..000000000000 --- a/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/ApiIdeaReleasesItem.kt +++ /dev/null @@ -1,19 +0,0 @@ -package org.jetbrains.jewel.buildlogic.ideversion - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -internal data class ApiIdeaReleasesItem( - @SerialName("code") val code: String, - @SerialName("releases") val releases: List, -) { - - @Serializable - internal data class Release( - @SerialName("build") val build: String, - @SerialName("type") val type: String, - @SerialName("version") val version: String, - @SerialName("majorVersion") val majorVersion: String, - ) -} diff --git a/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/CheckIdeaVersionTask.kt b/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/CheckIdeaVersionTask.kt deleted file mode 100644 index 9945a907392b..000000000000 --- a/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/CheckIdeaVersionTask.kt +++ /dev/null @@ -1,186 +0,0 @@ -package org.jetbrains.jewel.buildlogic.ideversion - -import java.io.File -import org.gradle.api.DefaultTask -import org.gradle.api.GradleException -import org.gradle.api.tasks.TaskAction - -open class CheckIdeaVersionTask : DefaultTask() { - - private val releasesUrl = - "https://data.services.jetbrains.com/products?" + - "fields=code,releases,releases.version,releases.build,releases.type,releases.majorVersion&" + - "code=IC" - - private val ideaVersionRegex = "202\\d\\.(\\d\\.)?\\d".toRegex(RegexOption.IGNORE_CASE) - - private val intelliJPlatformBuildRegex = "2\\d{2}\\.\\d+\\.\\d+(?:-EAP-SNAPSHOT)?".toRegex(RegexOption.IGNORE_CASE) - - private val currentIjpVersion = project.currentIjpVersion - - init { - group = "jewel" - } - - @TaskAction - fun generate() { - logger.lifecycle("Fetching IntelliJ Platform releases from $releasesUrl...") - val ideaVersion = readCurrentVersionInfo() - validateIdeaVersion(ideaVersion) - - val platformBuildsForThisMajorVersion = - IJPVersionsFetcher.fetchBuildsForCurrentMajorVersion(releasesUrl, ideaVersion.majorVersion, logger) - - if (platformBuildsForThisMajorVersion == null) { - logger.error("Cannot check platform version, no builds found for current version $ideaVersion") - return - } - - val latestAvailableBuild = platformBuildsForThisMajorVersion.last() - logger.info("The latest IntelliJ Platform ${ideaVersion.version} build is ${latestAvailableBuild.build}") - - val isCurrentBuildStable = ideaVersion.type.lowercase() != "eap" - if (IJPVersionsFetcher.compare(ideaVersion, latestAvailableBuild) < 0) { - throw GradleException( - buildString { - appendLine("IntelliJ Platform version dependency is out of date.") - appendLine() - - append("Current build: ${ideaVersion.build}") - if (!isCurrentBuildStable) append("-EAP-SNAPSHOT") - appendLine() - appendLine("Current version: ${ideaVersion.version}") - append("Detected channel: ") - appendLine(latestAvailableBuild.type) - appendLine() - - append("Latest build: ${latestAvailableBuild.build}") - if (!isCurrentBuildStable) append("-EAP-SNAPSHOT") - appendLine() - - append("Latest version: ") - if (isCurrentBuildStable) { - appendLine(latestAvailableBuild.version) - } else { - appendLine(latestAvailableBuild.build.removeSuffix("-EAP-SNAPSHOT")) - } - - appendLine( - "Please update the 'idea' and 'intelliJPlatformBuild' " + "versions in the catalog accordingly." - ) - } - ) - } - - logger.lifecycle( - "No IntelliJ Platform version updates available. " + - "Current: ${ideaVersion.build} (${ideaVersion.version})" - ) - } - - private fun readCurrentVersionInfo(): ApiIdeaReleasesItem.Release { - val catalogFile = project.rootProject.file("gradle/libs.versions.toml") - val ideaVersion = readIdeaVersion(catalogFile) - val isStableBuild = !ideaVersion.matches(intelliJPlatformBuildRegex) - - val platformBuild = readPlatformBuild(catalogFile) - val majorVersion = - if (isStableBuild) { - asMajorPlatformVersion(ideaVersion) - } else { - inferMajorPlatformVersion(platformBuild) - } - - return ApiIdeaReleasesItem.Release( - build = platformBuild.removeSuffix("-EAP-SNAPSHOT"), - version = ideaVersion, - majorVersion = majorVersion, - type = if (isStableBuild) "release" else "eap", - ) - } - - private fun asMajorPlatformVersion(rawVersion: String) = rawVersion.take(6) - - private fun inferMajorPlatformVersion(rawBuildNumber: String) = - "20${rawBuildNumber.take(2)}.${rawBuildNumber.substringBefore('.').last()}" - - private fun readIdeaVersion(catalogFile: File): String { - val versionName = "idea" - - val catalogDependencyLine = - catalogFile.useLines { lines -> lines.find { it.startsWith(versionName) } } - ?: throw GradleException( - "Unable to find IJP dependency '$versionName' in the catalog file '${catalogFile.path}'" - ) - - val dependencyVersion = - catalogDependencyLine.substringAfter(versionName).trimStart(' ', '=').trimEnd().trim('"') - - if (!dependencyVersion.matches(ideaVersionRegex) && !dependencyVersion.matches(intelliJPlatformBuildRegex)) { - throw GradleException("Invalid IJ IDEA version found in version catalog: '$dependencyVersion'") - } - - return dependencyVersion - } - - private fun readPlatformBuild(catalogFile: File): String { - val versionName = "intelliJPlatformBuild" - - val catalogDependencyLine = - catalogFile.useLines { lines -> lines.find { it.startsWith(versionName) } } - ?: throw GradleException( - "Unable to find IJP dependency '$versionName' in the catalog file '${catalogFile.path}'" - ) - - val declaredPlatformBuild = - catalogDependencyLine.substringAfter(versionName).trimStart(' ', '=').trimEnd().trim('"') - - if (!declaredPlatformBuild.matches(intelliJPlatformBuildRegex)) { - throw GradleException("Invalid IJP build found in version catalog: '$declaredPlatformBuild'") - } - - return declaredPlatformBuild - } - - private fun validateIdeaVersion(currentVersion: ApiIdeaReleasesItem.Release) { - val candidateMatches = - IJPVersionsFetcher.fetchIJPVersions(releasesUrl, logger) - ?: throw GradleException("Can't fetch all IJP releases.") - - val match = - candidateMatches.find { it.build == currentVersion.build } - ?: throw GradleException("IJ build ${currentVersion.build} seemingly does not exist") - - if (currentVersion.type != "eap" && match.version != currentVersion.version) { - throw GradleException( - buildString { - appendLine("The 'idea' and 'intelliJPlatformBuild' properties in the catalog don't match.") - append("'idea' = ") - append(currentVersion.version) - append(", 'intelliJPlatformBuild' = ") - appendLine(currentVersion.build) - appendLine() - appendLine("That build number is for version ${match.version}.") - appendLine("Adjust the values so they're aligned correctly.") - } - ) - } - - // The match's build doesn't contain the -EAP-SNAPSHOT SUFFIX - if (currentVersion.type == "eap" && currentVersion.version != match.build) { - throw GradleException( - buildString { - appendLine("The 'idea' and 'intelliJPlatformBuild' properties in the catalog don't match.") - append("'idea' = ") - append(currentVersion.version) - append(", 'intelliJPlatformBuild' = ") - appendLine(currentVersion.build + "-EAP-SNAPSHOT") - appendLine() - appendLine("For non-stable IJP versions, the version and build should match,") - appendLine("minus the '-EAP-SNAPSHOT' suffix in the build number.") - appendLine("Adjust the values so they're aligned correctly.") - } - ) - } - } -} diff --git a/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/CurrentIjpTarget.kt b/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/CurrentIjpTarget.kt deleted file mode 100644 index 04adba0fac56..000000000000 --- a/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/CurrentIjpTarget.kt +++ /dev/null @@ -1,15 +0,0 @@ -package org.jetbrains.jewel.buildlogic.ideversion - -import org.gradle.api.Project - -val Project.currentIjpVersion: String - get() { - val rawValue = - property("ijp.target") as? String ?: error("Property ijp.target not defined. Check your gradle.properties!") - - if (rawValue.length != 3 || rawValue.toIntOrNull()?.let { it < 0 } == true) { - error("Invalid ijp.target property value: '$rawValue'") - } - - return rawValue - } diff --git a/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/IJPVersionsFetcher.kt b/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/IJPVersionsFetcher.kt deleted file mode 100644 index 749d70caab20..000000000000 --- a/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/ideversion/IJPVersionsFetcher.kt +++ /dev/null @@ -1,97 +0,0 @@ -package org.jetbrains.jewel.buildlogic.ideversion - -import java.io.IOException -import java.net.URI -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.decodeFromStream -import org.gradle.api.logging.Logger - -internal object IJPVersionsFetcher { - - fun fetchIJPVersions(releasesUrl: String, logger: Logger): List? { - val json = Json { - ignoreUnknownKeys = true - isLenient = true - } - - val icReleases = - try { - URI.create(releasesUrl) - .toURL() - .openStream() - .use { json.decodeFromStream>(it) } - .first() - } catch (e: IOException) { - logger.warn( - "Couldn't fetch IJ Platform releases, can't check for updates.\n" + - "Cause: ${e::class.qualifiedName} — ${e.message}" - ) - return null - } catch (e: RuntimeException) { - logger.error("Unexpected error while fetching IJ Platform releases, can't check for updates.", e) - return null - } - - check(icReleases.code == "IIC") { "Was expecting code IIC but was ${icReleases.code}" } - check(icReleases.releases.isNotEmpty()) { "Was expecting to have releases but the list is empty" } - - return icReleases.releases - } - - fun fetchBuildsForCurrentMajorVersion( - releasesUrl: String, - majorPlatformVersion: String, - logger: Logger, - ): List? { - val releases = fetchIJPVersions(releasesUrl, logger) ?: return null - - return releases - .asSequence() - .filter { it.majorVersion == majorPlatformVersion } - .sortedWith(ReleaseComparator) - .toList() - } - - fun fetchLatestBuildForCurrentMajorVersion(releasesUrl: String, majorPlatformVersion: String, logger: Logger) = - fetchBuildsForCurrentMajorVersion(releasesUrl, majorPlatformVersion, logger)?.last() - - fun compare(first: ApiIdeaReleasesItem.Release, second: ApiIdeaReleasesItem.Release): Int = - VersionComparator.compare(first.build, second.build) - - private object ReleaseComparator : Comparator { - - override fun compare(o1: ApiIdeaReleasesItem.Release?, o2: ApiIdeaReleasesItem.Release?): Int { - if (o1 == o2) return 0 - if (o1 == null) return -1 - if (o2 == null) return 1 - - return VersionComparator.compare(o1.build, o2.build) - } - } - - private object VersionComparator : Comparator { - - override fun compare(o1: String?, o2: String?): Int { - if (o1 == o2) return 0 - if (o1 == null) return -1 - if (o2 == null) return 1 - - require(o1.isNotEmpty() && o1.all { it.isDigit() || it == '.' }) { "The first version is invalid: '$o1'" } - require(o2.isNotEmpty() && o2.all { it.isDigit() || it == '.' }) { "The first version is invalid: '$o2'" } - - val firstGroups = o1.split('.') - val secondGroups = o2.split('.') - - require(firstGroups.size == 3) { "The first version is invalid: '$o1'" } - require(secondGroups.size == 3) { "The second version is invalid: '$o2'" } - - val firstComparison = firstGroups[0].toInt().compareTo(secondGroups[0].toInt()) - if (firstComparison != 0) return firstComparison - - val secondComparison = firstGroups[1].toInt().compareTo(secondGroups[1].toInt()) - if (secondComparison != 0) return secondComparison - - return firstGroups[2].toInt().compareTo(secondGroups[2].toInt()) - } - } -} diff --git a/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/theme/IntUiThemeDescriptorReader.kt b/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/theme/IntUiThemeDescriptorReader.kt index 3b7e5d89c95b..ff6e24161479 100644 --- a/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/theme/IntUiThemeDescriptorReader.kt +++ b/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/theme/IntUiThemeDescriptorReader.kt @@ -7,22 +7,24 @@ import com.squareup.kotlinpoet.KModifier import com.squareup.kotlinpoet.PropertySpec import com.squareup.kotlinpoet.TypeSpec import com.squareup.kotlinpoet.joinToCode -import java.time.ZoneOffset -import java.time.ZonedDateTime import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonPrimitive internal object IntUiThemeDescriptorReader { - private val colorGroups = setOf("Gray", "Blue", "Green", "Red", "Yellow", "Orange", "Purple", "Teal") private val colorClassName = ClassName("androidx.compose.ui.graphics", "Color") - fun readThemeFrom(themeDescriptor: IntellijThemeDescriptor, className: ClassName, sourcePath: String) = + fun readThemeFrom( + themeDescriptor: IntellijThemeDescriptor, + className: ClassName, + sourcePath: String, + ijpMajor: String, + ) = FileSpec.builder(className) .apply { indent(" ") - val todayUtc = ZonedDateTime.now().withZoneSameInstant(ZoneOffset.UTC).toLocalDate() - addFileComment("Generated by the Jewel Int UI Palette Generator on $todayUtc\n") + addFileComment("Generated by the Jewel Int UI Palette Generator for IJP $ijpMajor\n") + addFileComment("*** DO NOT EDIT MANUALLY! Use generateThemes task to update. ***\n") addFileComment("Source: $sourcePath") addImport(colorClassName.packageName, colorClassName.simpleName) @@ -104,7 +106,9 @@ internal object IntUiThemeDescriptorReader { val pairValue = it.value if (pairValue is JsonPrimitive && pairValue.isString) { it.key to pairValue.content - } else null + } else { + null + } } .forEach { colorPalette[it.first] = it.second } } @@ -117,7 +121,7 @@ internal object IntUiThemeDescriptorReader { PropertySpec.builder("iconData", iconDataClassName, KModifier.OVERRIDE) .initializer( CodeBlock.of( - "ThemeIconData(iconOverrides = \n%L,colorPalette = \n%L,\nselectionColorPalette = %L\n)", + "ThemeIconData(\niconOverrides = \n%L,\ncolorPalette = \n%L,\nselectionColorPalette = %L\n)", iconOverridesBlock, colorPalette.toMapCodeBlock(), selectionColorPaletteBlock, @@ -127,8 +131,11 @@ internal object IntUiThemeDescriptorReader { ) } - private inline fun Map.toMapCodeBlock() = - entries + private inline fun Map.toMapCodeBlock(): CodeBlock { + if (entries.isEmpty()) return CodeBlock.of("emptyMap()") + + return entries .map { (key, value) -> CodeBlock.of("\"%L\" to \"%L\"", key, value) } .joinToCode(prefix = "mapOf(", separator = ",\n", suffix = ")") + } } diff --git a/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/theme/IntelliJThemeGeneratorPlugin.kt b/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/theme/IntelliJThemeGeneratorPlugin.kt index 39d153c4d51b..4a25176baa93 100644 --- a/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/theme/IntelliJThemeGeneratorPlugin.kt +++ b/platform/jewel/buildSrc/src/main/kotlin/org/jetbrains/jewel/buildlogic/theme/IntelliJThemeGeneratorPlugin.kt @@ -24,7 +24,6 @@ class ThemeGeneratorContainer(container: NamedDomainObjectContainer by container class ThemeGeneration(val name: String, project: Project) { - val targetDir: DirectoryProperty = project.objects.directoryProperty().convention(project.layout.buildDirectory.dir("generated/theme")) val themeClassName = project.objects.property() @@ -33,15 +32,11 @@ class ThemeGeneration(val name: String, project: Project) { @CacheableTask abstract class IntelliJThemeGeneratorTask : DefaultTask() { - @get:OutputFile abstract val outputFile: RegularFileProperty - @get:InputFile - @get:PathSensitive(PathSensitivity.RELATIVE) - abstract val themeFile: RegularFileProperty + @get:InputFile @get:PathSensitive(PathSensitivity.RELATIVE) abstract val themeFile: RegularFileProperty - @get:Input - abstract val themeFilePath: Property + @get:Input abstract val themeFilePath: Property @get:Input abstract val themeClassName: Property @@ -59,7 +54,19 @@ abstract class IntelliJThemeGeneratorTask : DefaultTask() { val themeDescriptor = themeFile.inputStream().use { json.decodeFromStream(it) } val className = ClassName.bestGuess(themeClassName.get()) - val file = IntUiThemeDescriptorReader.readThemeFrom(themeDescriptor, className, themeFilePath.get()) + val buildNumberFile = project.rootDir.resolve("../../build.txt") + check(buildNumberFile.isFile) { "The build.txt file must exist in the community root" } + + val buildNumber = buildNumberFile.readText().trim() + check(validateBuildNumber(buildNumber)) { "The build number in build.txt does not seem valid: '$buildNumber'" } + + val file = + IntUiThemeDescriptorReader.readThemeFrom( + themeDescriptor, + className, + themeFilePath.get(), + buildNumber.substringBefore('.'), + ) val outputFile = outputFile.get().asFile logger.lifecycle( @@ -67,6 +74,19 @@ abstract class IntelliJThemeGeneratorTask : DefaultTask() { ) outputFile.bufferedWriter().use { file.writeTo(it) } } + + private fun validateBuildNumber(buildNumber: String): Boolean { + // Examples: + // * 253.1234.567 + // * 241.SNAPSHOT + if (buildNumber.isBlank()) return false + if (buildNumber.length < 5) return false + if (buildNumber.take(3).toIntOrNull()?.takeIf { it > 240 } == null) return false + if (buildNumber[3] != '.') return false + + val afterDot = buildNumber.drop(4) + return afterDot == "SNAPSHOT" || afterDot.all { it.isDigit() || it == '.' } + } } @Serializable diff --git a/platform/jewel/docs/releasing-guide.md b/platform/jewel/docs/releasing-guide.md index 3f54f2d2af27..39957fd6e120 100644 --- a/platform/jewel/docs/releasing-guide.md +++ b/platform/jewel/docs/releasing-guide.md @@ -24,9 +24,9 @@ High-level steps: ``` 5. Cherry-pick the changes to the target release branches (e.g., `252`) 1. Make sure you've not included IJP major release-specific changes - 2. Update the `ijp.target` entry in [`gradle.properties`](../gradle.properties) - 3. Update the Kotlin version in the [Gradle version catalog](../gradle/libs.versions.toml) to match the IJP's Kotlin version - 4. Update other related versions if needed + 2. Update the Kotlin version in the [Gradle version catalog](../gradle/libs.versions.toml) to match the IJ Platform's Kotlin version + 3. Update other related versions if needed + 4. Run `./gradlew generateThemes --rerun-tasks` to update the standalone theme definitions 5. Run all Gradle-based checks 6. Run all IJ tests (e.g., via the `tests.cmd` script) 7. Verify everything works in the Jewel Standalone sample (components, Markdown rendering) @@ -36,8 +36,11 @@ High-level steps: ```shell ./scripts/metalava-signatures.sh --validate --release ``` - 11. Open a MR for each cherry-pick branch on Space -6. When both MRs are approved and merged, run the TeamCity job to publish the artefacts to Maven Central + 11. Open a merge request for each cherry-pick branch on Space +6. When both MRs are approved and merged: + 1. Run the TeamCity job to publish the artefacts to Maven Central + 2. Tag the commits the releases were cut from, with this format: `JEWEL-[Jewel version]-[major IJP version]`. For + example, for Jewel 0.30.0, `JEWEL-0.30.0-251` on the 251 branch and `JEWEL-0.30.0-252` on the 252 branch. ## Testing publishing locally diff --git a/platform/jewel/gradle.properties b/platform/jewel/gradle.properties index 7c7c1d8ea8bb..4ed88f159914 100644 --- a/platform/jewel/gradle.properties +++ b/platform/jewel/gradle.properties @@ -8,5 +8,4 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true jdk.level=21 -ijp.target=251 jewel.release.version=0.30.0 diff --git a/platform/jewel/gradle/libs.versions.toml b/platform/jewel/gradle/libs.versions.toml index 426c58fcfa7b..a4d3fff41c19 100644 --- a/platform/jewel/gradle/libs.versions.toml +++ b/platform/jewel/gradle/libs.versions.toml @@ -6,9 +6,9 @@ composeDesktop = "1.9.0-beta03" detekt = "1.23.8" dokka = "2.0.0" filepicker = "3.1.0" -idea = "2025.2" -intelliJPlatformBuild = "252.23892.409" -ideaPlugin = "2.6.0" +idea = "2025.2.1" +intelliJPlatformBuild = "252.25557.131" +ideaPlugin = "2.8.0" jbr = "1.6.0" jna = "5.17.0" junitJupiter = "5.13.4" diff --git a/platform/jewel/int-ui/int-ui-standalone/build.gradle.kts b/platform/jewel/int-ui/int-ui-standalone/build.gradle.kts index 4d2fc7013a65..86744dbe707b 100644 --- a/platform/jewel/int-ui/int-ui-standalone/build.gradle.kts +++ b/platform/jewel/int-ui/int-ui-standalone/build.gradle.kts @@ -1,3 +1,4 @@ +import io.gitlab.arturbosch.detekt.Detekt import org.jetbrains.jewel.buildlogic.metalava.GenerateMetalavaApiTask import org.jetbrains.jewel.buildlogic.theme.IntelliJThemeGeneratorTask @@ -18,14 +19,50 @@ intelliJThemeGenerator { register("intUiLight") { themeClassName = "org.jetbrains.jewel.intui.core.theme.IntUiLightTheme" themeFilePath = "../../platform/platform-resources/src/themes/expUI/expUI_light.theme.json" + targetDir = project.file("generated/theme/") } + register("intUiDark") { themeClassName = "org.jetbrains.jewel.intui.core.theme.IntUiDarkTheme" themeFilePath = "../../platform/platform-resources/src/themes/expUI/expUI_dark.theme.json" + targetDir = project.file("generated/theme/") } } tasks { val themeGeneratorTasks = withType() - withType { dependsOn(themeGeneratorTasks) } + themeGeneratorTasks.configureEach { finalizedBy(ktfmtFormatMain) } + + ktfmtFormatMain { + // Ensure the ktfmtFormatMain task is not considered UP-TO-DATE when + // we've regenerated the theme definitions (it doesn't always pick + // it up for some reason) + outputs.upToDateWhen { themeGeneratorTasks.none { it.state.executed } } + } + + val generateThemes by + register("generateThemes") { + description = "Updates the ThemeDescription dumps and reformats them." + dependsOn(themeGeneratorTasks) + dependsOn(ktfmtFormatMain) + } + + withType { dependsOn(generateThemes) } + + ktfmtCheckMain { + mustRunAfter(generateThemes) + mustRunAfter(ktfmtFormatMain) + } + lintKotlinMain { + mustRunAfter(generateThemes) + mustRunAfter(ktfmtFormatMain) + } + withType().configureEach { + mustRunAfter(generateThemes) + mustRunAfter(ktfmtFormatMain) + } + detektMain { + mustRunAfter(generateThemes) + mustRunAfter(ktfmtFormatMain) + } } diff --git a/platform/jewel/int-ui/int-ui-standalone/generated/theme/org/jetbrains/jewel/intui/core/theme/IntUiDarkTheme.kt b/platform/jewel/int-ui/int-ui-standalone/generated/theme/org/jetbrains/jewel/intui/core/theme/IntUiDarkTheme.kt index dec708d7f71b..c978323b875d 100644 --- a/platform/jewel/int-ui/int-ui-standalone/generated/theme/org/jetbrains/jewel/intui/core/theme/IntUiDarkTheme.kt +++ b/platform/jewel/int-ui/int-ui-standalone/generated/theme/org/jetbrains/jewel/intui/core/theme/IntUiDarkTheme.kt @@ -1,6 +1,6 @@ -// Generated by the Jewel Int UI Palette Generator -// Generated from the IntelliJ Platform version idea/243.19420.21 -// Source: https://raw.githubusercontent.com/JetBrains/intellij-community/idea/243.19420.21/platform/platform-resources/src/themes/expUI/expUI_dark.theme.json +// Generated by the Jewel Int UI Palette Generator for IJP 253 +// *** DO NOT EDIT MANUALLY! Use generateThemes task to update. *** +// Source: ../../platform/platform-resources/src/themes/expUI/expUI_dark.theme.json package org.jetbrains.jewel.intui.core.theme import androidx.compose.ui.graphics.Color @@ -15,254 +15,265 @@ public object IntUiDarkTheme : ThemeDescriptor { override val name: String = "Dark (Int UI)" - override val colors: ThemeColorPalette = ThemeColorPalette( - gray = listOf( - Color(0xFF1E1F22), - Color(0xFF2B2D30), - Color(0xFF393B40), - Color(0xFF43454A), - Color(0xFF4E5157), - Color(0xFF5A5D63), - Color(0xFF6F737A), - Color(0xFF868A91), - Color(0xFF9DA0A8), - Color(0xFFB4B8BF), - Color(0xFFCED0D6), - Color(0xFFDFE1E5), - Color(0xFFF0F1F2), - Color(0xFFFFFFFF) - ), - blue = listOf( - Color(0xFF25324D), - Color(0xFF2E436E), - Color(0xFF35538F), - Color(0xFF375FAD), - Color(0xFF366ACE), - Color(0xFF3574F0), - Color(0xFF467FF2), - Color(0xFF548AF7), - Color(0xFF6B9BFA), - Color(0xFF83ACFC), - Color(0xFF99BBFF), - Color(0xFFB5CEFF), - Color(0xFFD1E0FF) - ), - green = listOf( - Color(0xFF253627), - Color(0xFF273828), - Color(0xFF375239), - Color(0xFF436946), - Color(0xFF4E8052), - Color(0xFF57965C), - Color(0xFF5FAD65), - Color(0xFF73BD79), - Color(0xFF89CC8E), - Color(0xFFA0DBA5), - Color(0xFFB9EBBD), - Color(0xFFD4FAD7) - ), - yellow = listOf( - Color(0xFF3D3223), - Color(0xFF5E4D33), - Color(0xFF826A41), - Color(0xFF9E814A), - Color(0xFFBA9752), - Color(0xFFD6AE58), - Color(0xFFF2C55C), - Color(0xFFF5D273), - Color(0xFFF7DE8B), - Color(0xFFFCEBA4), - Color(0xFFFFF6BD) - ), - red = listOf( - Color(0xFF402929), - Color(0xFF472B2B), - Color(0xFF5E3838), - Color(0xFF7A4343), - Color(0xFF9C4E4E), - Color(0xFFBD5757), - Color(0xFFDB5C5C), - Color(0xFFE37774), - Color(0xFFEB938D), - Color(0xFFF2B1AA), - Color(0xFFF7CCC6), - Color(0xFFFAE3DE) - ), - orange = listOf( - Color(0xFF45322B), - Color(0xFF614438), - Color(0xFF825845), - Color(0xFFA36B4E), - Color(0xFFC27A53), - Color(0xFFE08855), - Color(0xFFE5986C), - Color(0xFFF0AC81), - Color(0xFFF5BD98), - Color(0xFFFACEAF), - Color(0xFFFFDFC7) - ), - purple = listOf( - Color(0xFF2F2936), - Color(0xFF3B3147), - Color(0xFF433358), - Color(0xFF583D7A), - Color(0xFF6C469C), - Color(0xFF8150BE), - Color(0xFF955AE0), - Color(0xFFA571E6), - Color(0xFFB589EC), - Color(0xFFC4A0F3), - Color(0xFFD4B8F9), - Color(0xFFE4CEFF) - ), - teal = listOf( - Color(0xFF1D3838), - Color(0xFF1D3D3B), - Color(0xFF1E4D4A), - Color(0xFF20635D), - Color(0xFF21786F), - Color(0xFF238E82), - Color(0xFF24A394), - Color(0xFF42B1A4), - Color(0xFF60C0B5), - Color(0xFF7DCEC5), - Color(0xFF9BDDD6), - Color(0xFFB9EBE6) - ), + override val colors: ThemeColorPalette = + ThemeColorPalette( + gray = + listOf( + Color(0xFF1E1F22), + Color(0xFF2B2D30), + Color(0xFF393B40), + Color(0xFF43454A), + Color(0xFF4E5157), + Color(0xFF5A5D63), + Color(0xFF6F737A), + Color(0xFF868A91), + Color(0xFF9DA0A8), + Color(0xFFB4B8BF), + Color(0xFFCED0D6), + Color(0xFFDFE1E5), + Color(0xFFF0F1F2), + Color(0xFFFFFFFF), + ), + blue = + listOf( + Color(0xFF25324D), + Color(0xFF2E436E), + Color(0xFF35538F), + Color(0xFF375FAD), + Color(0xFF366ACE), + Color(0xFF3574F0), + Color(0xFF467FF2), + Color(0xFF548AF7), + Color(0xFF6B9BFA), + Color(0xFF83ACFC), + Color(0xFF99BBFF), + Color(0xFFB5CEFF), + Color(0xFFD1E0FF), + ), + green = + listOf( + Color(0xFF253627), + Color(0xFF273828), + Color(0xFF375239), + Color(0xFF436946), + Color(0xFF4E8052), + Color(0xFF57965C), + Color(0xFF5FAD65), + Color(0xFF73BD79), + Color(0xFF89CC8E), + Color(0xFFA0DBA5), + Color(0xFFB9EBBD), + Color(0xFFD4FAD7), + ), + yellow = + listOf( + Color(0xFF3D3223), + Color(0xFF5E4D33), + Color(0xFF826A41), + Color(0xFF9E814A), + Color(0xFFBA9752), + Color(0xFFD6AE58), + Color(0xFFF2C55C), + Color(0xFFF5D273), + Color(0xFFF7DE8B), + Color(0xFFFCEBA4), + Color(0xFFFFF6BD), + ), + red = + listOf( + Color(0xFF402929), + Color(0xFF472B2B), + Color(0xFF5E3838), + Color(0xFF7A4343), + Color(0xFF9C4E4E), + Color(0xFFBD5757), + Color(0xFFDB5C5C), + Color(0xFFE37774), + Color(0xFFEB938D), + Color(0xFFF2B1AA), + Color(0xFFF7CCC6), + Color(0xFFFAE3DE), + ), + orange = + listOf( + Color(0xFF45322B), + Color(0xFF614438), + Color(0xFF825845), + Color(0xFFA36B4E), + Color(0xFFC27A53), + Color(0xFFE08855), + Color(0xFFE5986C), + Color(0xFFF0AC81), + Color(0xFFF5BD98), + Color(0xFFFACEAF), + Color(0xFFFFDFC7), + ), + purple = + listOf( + Color(0xFF2F2936), + Color(0xFF3B3147), + Color(0xFF433358), + Color(0xFF583D7A), + Color(0xFF6C469C), + Color(0xFF8150BE), + Color(0xFF955AE0), + Color(0xFFA571E6), + Color(0xFFB589EC), + Color(0xFFC4A0F3), + Color(0xFFD4B8F9), + Color(0xFFE4CEFF), + ), + teal = + listOf( + Color(0xFF1D3838), + Color(0xFF1D3D3B), + Color(0xFF1E4D4A), + Color(0xFF20635D), + Color(0xFF21786F), + Color(0xFF238E82), + Color(0xFF24A394), + Color(0xFF42B1A4), + Color(0xFF60C0B5), + Color(0xFF7DCEC5), + Color(0xFF9BDDD6), + Color(0xFFB9EBE6), + ), + rawMap = + mapOf( + "Gray1" to Color(0xFF1E1F22), + "Gray2" to Color(0xFF2B2D30), + "Gray3" to Color(0xFF393B40), + "Gray4" to Color(0xFF43454A), + "Gray5" to Color(0xFF4E5157), + "Gray6" to Color(0xFF5A5D63), + "Gray7" to Color(0xFF6F737A), + "Gray8" to Color(0xFF868A91), + "Gray9" to Color(0xFF9DA0A8), + "Gray10" to Color(0xFFB4B8BF), + "Gray11" to Color(0xFFCED0D6), + "Gray12" to Color(0xFFDFE1E5), + "Gray13" to Color(0xFFF0F1F2), + "Gray14" to Color(0xFFFFFFFF), + "Blue1" to Color(0xFF25324D), + "Blue2" to Color(0xFF2E436E), + "Blue3" to Color(0xFF35538F), + "Blue4" to Color(0xFF375FAD), + "Blue5" to Color(0xFF366ACE), + "Blue6" to Color(0xFF3574F0), + "Blue7" to Color(0xFF467FF2), + "Blue8" to Color(0xFF548AF7), + "Blue9" to Color(0xFF6B9BFA), + "Blue10" to Color(0xFF83ACFC), + "Blue11" to Color(0xFF99BBFF), + "Blue12" to Color(0xFFB5CEFF), + "Blue13" to Color(0xFFD1E0FF), + "Green1" to Color(0xFF253627), + "Green2" to Color(0xFF273828), + "Green3" to Color(0xFF375239), + "Green4" to Color(0xFF436946), + "Green5" to Color(0xFF4E8052), + "Green6" to Color(0xFF57965C), + "Green7" to Color(0xFF5FAD65), + "Green8" to Color(0xFF73BD79), + "Green9" to Color(0xFF89CC8E), + "Green10" to Color(0xFFA0DBA5), + "Green11" to Color(0xFFB9EBBD), + "Green12" to Color(0xFFD4FAD7), + "Yellow1" to Color(0xFF3D3223), + "Yellow2" to Color(0xFF5E4D33), + "Yellow3" to Color(0xFF826A41), + "Yellow4" to Color(0xFF9E814A), + "Yellow5" to Color(0xFFBA9752), + "Yellow6" to Color(0xFFD6AE58), + "Yellow7" to Color(0xFFF2C55C), + "Yellow8" to Color(0xFFF5D273), + "Yellow9" to Color(0xFFF7DE8B), + "Yellow10" to Color(0xFFFCEBA4), + "Yellow11" to Color(0xFFFFF6BD), + "Red1" to Color(0xFF402929), + "Red2" to Color(0xFF472B2B), + "Red3" to Color(0xFF5E3838), + "Red4" to Color(0xFF7A4343), + "Red5" to Color(0xFF9C4E4E), + "Red6" to Color(0xFFBD5757), + "Red7" to Color(0xFFDB5C5C), + "Red8" to Color(0xFFE37774), + "Red9" to Color(0xFFEB938D), + "Red10" to Color(0xFFF2B1AA), + "Red11" to Color(0xFFF7CCC6), + "Red12" to Color(0xFFFAE3DE), + "Orange1" to Color(0xFF45322B), + "Orange2" to Color(0xFF614438), + "Orange3" to Color(0xFF825845), + "Orange4" to Color(0xFFA36B4E), + "Orange5" to Color(0xFFC27A53), + "Orange6" to Color(0xFFE08855), + "Orange7" to Color(0xFFE5986C), + "Orange8" to Color(0xFFF0AC81), + "Orange9" to Color(0xFFF5BD98), + "Orange10" to Color(0xFFFACEAF), + "Orange11" to Color(0xFFFFDFC7), + "Purple1" to Color(0xFF2F2936), + "Purple2" to Color(0xFF3B3147), + "Purple3" to Color(0xFF433358), + "Purple4" to Color(0xFF583D7A), + "Purple5" to Color(0xFF6C469C), + "Purple6" to Color(0xFF8150BE), + "Purple7" to Color(0xFF955AE0), + "Purple8" to Color(0xFFA571E6), + "Purple9" to Color(0xFFB589EC), + "Purple10" to Color(0xFFC4A0F3), + "Purple11" to Color(0xFFD4B8F9), + "Purple12" to Color(0xFFE4CEFF), + "Teal1" to Color(0xFF1D3838), + "Teal2" to Color(0xFF1D3D3B), + "Teal3" to Color(0xFF1E4D4A), + "Teal4" to Color(0xFF20635D), + "Teal5" to Color(0xFF21786F), + "Teal6" to Color(0xFF238E82), + "Teal7" to Color(0xFF24A394), + "Teal8" to Color(0xFF42B1A4), + "Teal9" to Color(0xFF60C0B5), + "Teal10" to Color(0xFF7DCEC5), + "Teal11" to Color(0xFF9BDDD6), + "Teal12" to Color(0xFFB9EBE6), + ), + ) - rawMap = mapOf( - "Gray1" to Color(0xFF1E1F22), - "Gray2" to Color(0xFF2B2D30), - "Gray3" to Color(0xFF393B40), - "Gray4" to Color(0xFF43454A), - "Gray5" to Color(0xFF4E5157), - "Gray6" to Color(0xFF5A5D63), - "Gray7" to Color(0xFF6F737A), - "Gray8" to Color(0xFF868A91), - "Gray9" to Color(0xFF9DA0A8), - "Gray10" to Color(0xFFB4B8BF), - "Gray11" to Color(0xFFCED0D6), - "Gray12" to Color(0xFFDFE1E5), - "Gray13" to Color(0xFFF0F1F2), - "Gray14" to Color(0xFFFFFFFF), - "Blue1" to Color(0xFF25324D), - "Blue2" to Color(0xFF2E436E), - "Blue3" to Color(0xFF35538F), - "Blue4" to Color(0xFF375FAD), - "Blue5" to Color(0xFF366ACE), - "Blue6" to Color(0xFF3574F0), - "Blue7" to Color(0xFF467FF2), - "Blue8" to Color(0xFF548AF7), - "Blue9" to Color(0xFF6B9BFA), - "Blue10" to Color(0xFF83ACFC), - "Blue11" to Color(0xFF99BBFF), - "Blue12" to Color(0xFFB5CEFF), - "Blue13" to Color(0xFFD1E0FF), - "Green1" to Color(0xFF253627), - "Green2" to Color(0xFF273828), - "Green3" to Color(0xFF375239), - "Green4" to Color(0xFF436946), - "Green5" to Color(0xFF4E8052), - "Green6" to Color(0xFF57965C), - "Green7" to Color(0xFF5FAD65), - "Green8" to Color(0xFF73BD79), - "Green9" to Color(0xFF89CC8E), - "Green10" to Color(0xFFA0DBA5), - "Green11" to Color(0xFFB9EBBD), - "Green12" to Color(0xFFD4FAD7), - "Yellow1" to Color(0xFF3D3223), - "Yellow2" to Color(0xFF5E4D33), - "Yellow3" to Color(0xFF826A41), - "Yellow4" to Color(0xFF9E814A), - "Yellow5" to Color(0xFFBA9752), - "Yellow6" to Color(0xFFD6AE58), - "Yellow7" to Color(0xFFF2C55C), - "Yellow8" to Color(0xFFF5D273), - "Yellow9" to Color(0xFFF7DE8B), - "Yellow10" to Color(0xFFFCEBA4), - "Yellow11" to Color(0xFFFFF6BD), - "Red1" to Color(0xFF402929), - "Red2" to Color(0xFF472B2B), - "Red3" to Color(0xFF5E3838), - "Red4" to Color(0xFF7A4343), - "Red5" to Color(0xFF9C4E4E), - "Red6" to Color(0xFFBD5757), - "Red7" to Color(0xFFDB5C5C), - "Red8" to Color(0xFFE37774), - "Red9" to Color(0xFFEB938D), - "Red10" to Color(0xFFF2B1AA), - "Red11" to Color(0xFFF7CCC6), - "Red12" to Color(0xFFFAE3DE), - "Orange1" to Color(0xFF45322B), - "Orange2" to Color(0xFF614438), - "Orange3" to Color(0xFF825845), - "Orange4" to Color(0xFFA36B4E), - "Orange5" to Color(0xFFC27A53), - "Orange6" to Color(0xFFE08855), - "Orange7" to Color(0xFFE5986C), - "Orange8" to Color(0xFFF0AC81), - "Orange9" to Color(0xFFF5BD98), - "Orange10" to Color(0xFFFACEAF), - "Orange11" to Color(0xFFFFDFC7), - "Purple1" to Color(0xFF2F2936), - "Purple2" to Color(0xFF3B3147), - "Purple3" to Color(0xFF433358), - "Purple4" to Color(0xFF583D7A), - "Purple5" to Color(0xFF6C469C), - "Purple6" to Color(0xFF8150BE), - "Purple7" to Color(0xFF955AE0), - "Purple8" to Color(0xFFA571E6), - "Purple9" to Color(0xFFB589EC), - "Purple10" to Color(0xFFC4A0F3), - "Purple11" to Color(0xFFD4B8F9), - "Purple12" to Color(0xFFE4CEFF), - "Teal1" to Color(0xFF1D3838), - "Teal2" to Color(0xFF1D3D3B), - "Teal3" to Color(0xFF1E4D4A), - "Teal4" to Color(0xFF20635D), - "Teal5" to Color(0xFF21786F), - "Teal6" to Color(0xFF238E82), - "Teal7" to Color(0xFF24A394), - "Teal8" to Color(0xFF42B1A4), - "Teal9" to Color(0xFF60C0B5), - "Teal10" to Color(0xFF7DCEC5), - "Teal11" to Color(0xFF9BDDD6), - "Teal12" to Color(0xFFB9EBE6) - ) - ) - - override val iconData: ThemeIconData = ThemeIconData(iconOverrides = - mapOf("/com/intellij/ide/ui/laf/icons/darcula/checkBox.svg" to - "/themes/expUI/icons/dark/checkBox.svg", - "/com/intellij/ide/ui/laf/icons/darcula/checkBoxDisabled.svg" to - "/themes/expUI/icons/dark/checkBoxDisabled.svg", - "/com/intellij/ide/ui/laf/icons/darcula/checkBoxFocused.svg" to - "/themes/expUI/icons/dark/checkBoxFocused.svg", - "/com/intellij/ide/ui/laf/icons/darcula/checkBoxIndeterminateSelected.svg" to - "/themes/expUI/icons/dark/checkBoxIndeterminateSelected.svg", - "/com/intellij/ide/ui/laf/icons/darcula/checkBoxIndeterminateSelectedDisabled.svg" to - "/themes/expUI/icons/dark/checkBoxIndeterminateSelectedDisabled.svg", - "/com/intellij/ide/ui/laf/icons/darcula/checkBoxIndeterminateSelectedFocused.svg" to - "/themes/expUI/icons/dark/checkBoxIndeterminateSelectedFocused.svg", - "/com/intellij/ide/ui/laf/icons/darcula/checkBoxSelected.svg" to - "/themes/expUI/icons/dark/checkBoxSelected.svg", - "/com/intellij/ide/ui/laf/icons/darcula/checkBoxSelectedDisabled.svg" to - "/themes/expUI/icons/dark/checkBoxSelectedDisabled.svg", - "/com/intellij/ide/ui/laf/icons/darcula/checkBoxSelectedFocused.svg" to - "/themes/expUI/icons/dark/checkBoxSelectedFocused.svg", - "/com/intellij/ide/ui/laf/icons/darcula/radio.svg" to - "/themes/expUI/icons/dark/radio.svg", - "/com/intellij/ide/ui/laf/icons/darcula/radioDisabled.svg" to - "/themes/expUI/icons/dark/radioDisabled.svg", - "/com/intellij/ide/ui/laf/icons/darcula/radioFocused.svg" to - "/themes/expUI/icons/dark/radioFocused.svg", - "/com/intellij/ide/ui/laf/icons/darcula/radioSelected.svg" to - "/themes/expUI/icons/dark/radioSelected.svg", - "/com/intellij/ide/ui/laf/icons/darcula/radioSelectedDisabled.svg" to - "/themes/expUI/icons/dark/radioSelectedDisabled.svg", - "/com/intellij/ide/ui/laf/icons/darcula/radioSelectedFocused.svg" to - "/themes/expUI/icons/dark/radioSelectedFocused.svg"), colorPalette = - mapOf(), - selectionColorPalette = mapOf() - ) + override val iconData: ThemeIconData = + ThemeIconData( + iconOverrides = + mapOf( + "/com/intellij/ide/ui/laf/icons/darcula/checkBox.svg" to "/themes/expUI/icons/dark/checkBox.svg", + "/com/intellij/ide/ui/laf/icons/darcula/checkBoxDisabled.svg" to + "/themes/expUI/icons/dark/checkBoxDisabled.svg", + "/com/intellij/ide/ui/laf/icons/darcula/checkBoxFocused.svg" to + "/themes/expUI/icons/dark/checkBoxFocused.svg", + "/com/intellij/ide/ui/laf/icons/darcula/checkBoxIndeterminateSelected.svg" to + "/themes/expUI/icons/dark/checkBoxIndeterminateSelected.svg", + "/com/intellij/ide/ui/laf/icons/darcula/checkBoxIndeterminateSelectedDisabled.svg" to + "/themes/expUI/icons/dark/checkBoxIndeterminateSelectedDisabled.svg", + "/com/intellij/ide/ui/laf/icons/darcula/checkBoxIndeterminateSelectedFocused.svg" to + "/themes/expUI/icons/dark/checkBoxIndeterminateSelectedFocused.svg", + "/com/intellij/ide/ui/laf/icons/darcula/checkBoxSelected.svg" to + "/themes/expUI/icons/dark/checkBoxSelected.svg", + "/com/intellij/ide/ui/laf/icons/darcula/checkBoxSelectedDisabled.svg" to + "/themes/expUI/icons/dark/checkBoxSelectedDisabled.svg", + "/com/intellij/ide/ui/laf/icons/darcula/checkBoxSelectedFocused.svg" to + "/themes/expUI/icons/dark/checkBoxSelectedFocused.svg", + "/com/intellij/ide/ui/laf/icons/darcula/radio.svg" to "/themes/expUI/icons/dark/radio.svg", + "/com/intellij/ide/ui/laf/icons/darcula/radioDisabled.svg" to + "/themes/expUI/icons/dark/radioDisabled.svg", + "/com/intellij/ide/ui/laf/icons/darcula/radioFocused.svg" to + "/themes/expUI/icons/dark/radioFocused.svg", + "/com/intellij/ide/ui/laf/icons/darcula/radioSelected.svg" to + "/themes/expUI/icons/dark/radioSelected.svg", + "/com/intellij/ide/ui/laf/icons/darcula/radioSelectedDisabled.svg" to + "/themes/expUI/icons/dark/radioSelectedDisabled.svg", + "/com/intellij/ide/ui/laf/icons/darcula/radioSelectedFocused.svg" to + "/themes/expUI/icons/dark/radioSelectedFocused.svg", + ), + colorPalette = emptyMap(), + selectionColorPalette = emptyMap(), + ) } diff --git a/platform/jewel/int-ui/int-ui-standalone/generated/theme/org/jetbrains/jewel/intui/core/theme/IntUiLightTheme.kt b/platform/jewel/int-ui/int-ui-standalone/generated/theme/org/jetbrains/jewel/intui/core/theme/IntUiLightTheme.kt index 74b1b653fa61..0ebb0e0adc0c 100644 --- a/platform/jewel/int-ui/int-ui-standalone/generated/theme/org/jetbrains/jewel/intui/core/theme/IntUiLightTheme.kt +++ b/platform/jewel/int-ui/int-ui-standalone/generated/theme/org/jetbrains/jewel/intui/core/theme/IntUiLightTheme.kt @@ -1,6 +1,6 @@ -// Generated by the Jewel Int UI Palette Generator -// Generated from the IntelliJ Platform version idea/243.19420.21 -// Source: https://raw.githubusercontent.com/JetBrains/intellij-community/idea/243.19420.21/platform/platform-resources/src/themes/expUI/expUI_light.theme.json +// Generated by the Jewel Int UI Palette Generator for IJP 253 +// *** DO NOT EDIT MANUALLY! Use generateThemes task to update. *** +// Source: ../../platform/platform-resources/src/themes/expUI/expUI_light.theme.json package org.jetbrains.jewel.intui.core.theme import androidx.compose.ui.graphics.Color @@ -15,253 +15,267 @@ public object IntUiLightTheme : ThemeDescriptor { override val name: String = "Light (Int UI)" - override val colors: ThemeColorPalette = ThemeColorPalette( - gray = listOf( - Color(0xFF000000), - Color(0xFF27282E), - Color(0xFF383A42), - Color(0xFF494B57), - Color(0xFF5A5D6B), - Color(0xFF6C707E), - Color(0xFF818594), - Color(0xFFA8ADBD), - Color(0xFFC9CCD6), - Color(0xFFD3D5DB), - Color(0xFFDFE1E5), - Color(0xFFEBECF0), - Color(0xFFF7F8FA), - Color(0xFFFFFFFF) - ), - blue = listOf( - Color(0xFF2E55A3), - Color(0xFF315FBD), - Color(0xFF3369D6), - Color(0xFF3574F0), - Color(0xFF4682FA), - Color(0xFF588CF3), - Color(0xFF709CF5), - Color(0xFF88ADF7), - Color(0xFFA0BDF8), - Color(0xFFC2D6FC), - Color(0xFFD4E2FF), - Color(0xFFEDF3FF), - Color(0xFFF5F8FE) - ), - green = listOf( - Color(0xFF1E6B33), - Color(0xFF1F7536), - Color(0xFF1F8039), - Color(0xFF208A3C), - Color(0xFF369650), - Color(0xFF55A76A), - Color(0xFF89C398), - Color(0xFFAFDBB8), - Color(0xFFC5E5CC), - Color(0xFFE3F7E7), - Color(0xFFF2FCF3) - ), - yellow = listOf( - Color(0xFFA46704), - Color(0xFFC27D04), - Color(0xFFDF9303), - Color(0xFFFFAF0F), - Color(0xFFFDBD3D), - Color(0xFFFED277), - Color(0xFFFEE6B1), - Color(0xFFFFF1D1), - Color(0xFFFFF5DB), - Color(0xFFFFFAEB) - ), - red = listOf( - Color(0xFFAD2B38), - Color(0xFFBC303E), - Color(0xFFCC3645), - Color(0xFFDB3B4B), - Color(0xFFE55765), - Color(0xFFE46A76), - Color(0xFFED99A1), - Color(0xFFF2B6BB), - Color(0xFFFAD4D8), - Color(0xFFFFEBEC), - Color(0xFFFFF2F3), - Color(0xFFFFF7F7) - ), - orange = listOf( - Color(0xFFA14916), - Color(0xFFB85516), - Color(0xFFCE6117), - Color(0xFFE56D17), - Color(0xFFEC8F4C), - Color(0xFFF2B181), - Color(0xFFF9D2B6), - Color(0xFFFFEFE3), - Color(0xFFFFF4EB) - ), - teal = listOf( - Color(0xFF096A6E), - Color(0xFF077A7F), - Color(0xFF058B90), - Color(0xFF039BA1), - Color(0xFF3FB3B8), - Color(0xFF7BCCCF), - Color(0xFFB6E4E5), - Color(0xFFDAF4F5), - Color(0xFFF2FCFC) - ), - purple = listOf( - Color(0xFF55339C), - Color(0xFF643CB8), - Color(0xFF7444D4), - Color(0xFF834DF0), - Color(0xFFA177F4), - Color(0xFFBFA1F8), - Color(0xFFDCCBFB), - Color(0xFFEFE5FF), - Color(0xFFF5EDFF), - Color(0xFFFAF5FF) - ), + override val colors: ThemeColorPalette = + ThemeColorPalette( + gray = + listOf( + Color(0xFF000000), + Color(0xFF27282E), + Color(0xFF383A42), + Color(0xFF494B57), + Color(0xFF5A5D6B), + Color(0xFF6C707E), + Color(0xFF818594), + Color(0xFFA8ADBD), + Color(0xFFC9CCD6), + Color(0xFFD3D5DB), + Color(0xFFDFE1E5), + Color(0xFFEBECF0), + Color(0xFFF7F8FA), + Color(0xFFFFFFFF), + ), + blue = + listOf( + Color(0xFF2E55A3), + Color(0xFF315FBD), + Color(0xFF3369D6), + Color(0xFF3574F0), + Color(0xFF4682FA), + Color(0xFF588CF3), + Color(0xFF709CF5), + Color(0xFF88ADF7), + Color(0xFFA0BDF8), + Color(0xFFC2D6FC), + Color(0xFFD4E2FF), + Color(0xFFEDF3FF), + Color(0xFFF5F8FE), + ), + green = + listOf( + Color(0xFF1E6B33), + Color(0xFF1F7536), + Color(0xFF1F8039), + Color(0xFF208A3C), + Color(0xFF369650), + Color(0xFF55A76A), + Color(0xFF89C398), + Color(0xFFAFDBB8), + Color(0xFFC5E5CC), + Color(0xFFE3F7E7), + Color(0xFFF2FCF3), + ), + yellow = + listOf( + Color(0xFFA46704), + Color(0xFFC27D04), + Color(0xFFDF9303), + Color(0xFFFFAF0F), + Color(0xFFFDBD3D), + Color(0xFFFED277), + Color(0xFFFEE6B1), + Color(0xFFFFF1D1), + Color(0xFFFFF5DB), + Color(0xFFFFFAEB), + ), + red = + listOf( + Color(0xFFAD2B38), + Color(0xFFBC303E), + Color(0xFFCC3645), + Color(0xFFDB3B4B), + Color(0xFFE55765), + Color(0xFFE46A76), + Color(0xFFED99A1), + Color(0xFFF2B6BB), + Color(0xFFFAD4D8), + Color(0xFFFFEBEC), + Color(0xFFFFF2F3), + Color(0xFFFFF7F7), + ), + orange = + listOf( + Color(0xFFA14916), + Color(0xFFB85516), + Color(0xFFCE6117), + Color(0xFFE56D17), + Color(0xFFEC8F4C), + Color(0xFFF2B181), + Color(0xFFF9D2B6), + Color(0xFFFFEFE3), + Color(0xFFFFF4EB), + ), + teal = + listOf( + Color(0xFF096A6E), + Color(0xFF077A7F), + Color(0xFF058B90), + Color(0xFF039BA1), + Color(0xFF3FB3B8), + Color(0xFF7BCCCF), + Color(0xFFB6E4E5), + Color(0xFFDAF4F5), + Color(0xFFF2FCFC), + ), + purple = + listOf( + Color(0xFF55339C), + Color(0xFF643CB8), + Color(0xFF7444D4), + Color(0xFF834DF0), + Color(0xFFA177F4), + Color(0xFFBFA1F8), + Color(0xFFDCCBFB), + Color(0xFFEFE5FF), + Color(0xFFF5EDFF), + Color(0xFFFAF5FF), + ), + rawMap = + mapOf( + "Gray1" to Color(0xFF000000), + "Gray2" to Color(0xFF27282E), + "Gray3" to Color(0xFF383A42), + "Gray4" to Color(0xFF494B57), + "Gray5" to Color(0xFF5A5D6B), + "Gray6" to Color(0xFF6C707E), + "Gray7" to Color(0xFF818594), + "Gray8" to Color(0xFFA8ADBD), + "Gray9" to Color(0xFFC9CCD6), + "Gray10" to Color(0xFFD3D5DB), + "Gray11" to Color(0xFFDFE1E5), + "Gray12" to Color(0xFFEBECF0), + "Gray13" to Color(0xFFF7F8FA), + "Gray14" to Color(0xFFFFFFFF), + "windowsPopupBorder" to Color(0xFFB9BDC9), + "Blue1" to Color(0xFF2E55A3), + "Blue2" to Color(0xFF315FBD), + "Blue3" to Color(0xFF3369D6), + "Blue4" to Color(0xFF3574F0), + "Blue5" to Color(0xFF4682FA), + "Blue6" to Color(0xFF588CF3), + "Blue7" to Color(0xFF709CF5), + "Blue8" to Color(0xFF88ADF7), + "Blue9" to Color(0xFFA0BDF8), + "Blue10" to Color(0xFFC2D6FC), + "Blue11" to Color(0xFFD4E2FF), + "Blue12" to Color(0xFFEDF3FF), + "Blue13" to Color(0xFFF5F8FE), + "Green1" to Color(0xFF1E6B33), + "Green2" to Color(0xFF1F7536), + "Green3" to Color(0xFF1F8039), + "Green4" to Color(0xFF208A3C), + "Green5" to Color(0xFF369650), + "Green6" to Color(0xFF55A76A), + "Green7" to Color(0xFF89C398), + "Green8" to Color(0xFFAFDBB8), + "Green9" to Color(0xFFC5E5CC), + "Green10" to Color(0xFFE3F7E7), + "Green11" to Color(0xFFF2FCF3), + "Yellow1" to Color(0xFFA46704), + "Yellow2" to Color(0xFFC27D04), + "Yellow3" to Color(0xFFDF9303), + "Yellow4" to Color(0xFFFFAF0F), + "Yellow5" to Color(0xFFFDBD3D), + "Yellow6" to Color(0xFFFED277), + "Yellow7" to Color(0xFFFEE6B1), + "Yellow8" to Color(0xFFFFF1D1), + "Yellow9" to Color(0xFFFFF5DB), + "Yellow10" to Color(0xFFFFFAEB), + "Red1" to Color(0xFFAD2B38), + "Red2" to Color(0xFFBC303E), + "Red3" to Color(0xFFCC3645), + "Red4" to Color(0xFFDB3B4B), + "Red5" to Color(0xFFE55765), + "Red6" to Color(0xFFE46A76), + "Red7" to Color(0xFFED99A1), + "Red8" to Color(0xFFF2B6BB), + "Red9" to Color(0xFFFAD4D8), + "Red10" to Color(0xFFFFEBEC), + "Red11" to Color(0xFFFFF2F3), + "Red12" to Color(0xFFFFF7F7), + "Orange1" to Color(0xFFA14916), + "Orange2" to Color(0xFFB85516), + "Orange3" to Color(0xFFCE6117), + "Orange4" to Color(0xFFE56D17), + "Orange5" to Color(0xFFEC8F4C), + "Orange6" to Color(0xFFF2B181), + "Orange7" to Color(0xFFF9D2B6), + "Orange8" to Color(0xFFFFEFE3), + "Orange9" to Color(0xFFFFF4EB), + "Teal1" to Color(0xFF096A6E), + "Teal2" to Color(0xFF077A7F), + "Teal3" to Color(0xFF058B90), + "Teal4" to Color(0xFF039BA1), + "Teal5" to Color(0xFF3FB3B8), + "Teal6" to Color(0xFF7BCCCF), + "Teal7" to Color(0xFFB6E4E5), + "Teal8" to Color(0xFFDAF4F5), + "Teal9" to Color(0xFFF2FCFC), + "Purple1" to Color(0xFF55339C), + "Purple2" to Color(0xFF643CB8), + "Purple3" to Color(0xFF7444D4), + "Purple4" to Color(0xFF834DF0), + "Purple5" to Color(0xFFA177F4), + "Purple6" to Color(0xFFBFA1F8), + "Purple7" to Color(0xFFDCCBFB), + "Purple8" to Color(0xFFEFE5FF), + "Purple9" to Color(0xFFF5EDFF), + "Purple10" to Color(0xFFFAF5FF), + ), + ) - rawMap = mapOf( - "Gray1" to Color(0xFF000000), - "Gray2" to Color(0xFF27282E), - "Gray3" to Color(0xFF383A42), - "Gray4" to Color(0xFF494B57), - "Gray5" to Color(0xFF5A5D6B), - "Gray6" to Color(0xFF6C707E), - "Gray7" to Color(0xFF818594), - "Gray8" to Color(0xFFA8ADBD), - "Gray9" to Color(0xFFC9CCD6), - "Gray10" to Color(0xFFD3D5DB), - "Gray11" to Color(0xFFDFE1E5), - "Gray12" to Color(0xFFEBECF0), - "Gray13" to Color(0xFFF7F8FA), - "Gray14" to Color(0xFFFFFFFF), - "windowsPopupBorder" to Color(0xFFB9BDC9), - "Blue1" to Color(0xFF2E55A3), - "Blue2" to Color(0xFF315FBD), - "Blue3" to Color(0xFF3369D6), - "Blue4" to Color(0xFF3574F0), - "Blue5" to Color(0xFF4682FA), - "Blue6" to Color(0xFF588CF3), - "Blue7" to Color(0xFF709CF5), - "Blue8" to Color(0xFF88ADF7), - "Blue9" to Color(0xFFA0BDF8), - "Blue10" to Color(0xFFC2D6FC), - "Blue11" to Color(0xFFD4E2FF), - "Blue12" to Color(0xFFEDF3FF), - "Blue13" to Color(0xFFF5F8FE), - "Green1" to Color(0xFF1E6B33), - "Green2" to Color(0xFF1F7536), - "Green3" to Color(0xFF1F8039), - "Green4" to Color(0xFF208A3C), - "Green5" to Color(0xFF369650), - "Green6" to Color(0xFF55A76A), - "Green7" to Color(0xFF89C398), - "Green8" to Color(0xFFAFDBB8), - "Green9" to Color(0xFFC5E5CC), - "Green10" to Color(0xFFE3F7E7), - "Green11" to Color(0xFFF2FCF3), - "Yellow1" to Color(0xFFA46704), - "Yellow2" to Color(0xFFC27D04), - "Yellow3" to Color(0xFFDF9303), - "Yellow4" to Color(0xFFFFAF0F), - "Yellow5" to Color(0xFFFDBD3D), - "Yellow6" to Color(0xFFFED277), - "Yellow7" to Color(0xFFFEE6B1), - "Yellow8" to Color(0xFFFFF1D1), - "Yellow9" to Color(0xFFFFF5DB), - "Yellow10" to Color(0xFFFFFAEB), - "Red1" to Color(0xFFAD2B38), - "Red2" to Color(0xFFBC303E), - "Red3" to Color(0xFFCC3645), - "Red4" to Color(0xFFDB3B4B), - "Red5" to Color(0xFFE55765), - "Red6" to Color(0xFFE46A76), - "Red7" to Color(0xFFED99A1), - "Red8" to Color(0xFFF2B6BB), - "Red9" to Color(0xFFFAD4D8), - "Red10" to Color(0xFFFFEBEC), - "Red11" to Color(0xFFFFF2F3), - "Red12" to Color(0xFFFFF7F7), - "Orange1" to Color(0xFFA14916), - "Orange2" to Color(0xFFB85516), - "Orange3" to Color(0xFFCE6117), - "Orange4" to Color(0xFFE56D17), - "Orange5" to Color(0xFFEC8F4C), - "Orange6" to Color(0xFFF2B181), - "Orange7" to Color(0xFFF9D2B6), - "Orange8" to Color(0xFFFFEFE3), - "Orange9" to Color(0xFFFFF4EB), - "Teal1" to Color(0xFF096A6E), - "Teal2" to Color(0xFF077A7F), - "Teal3" to Color(0xFF058B90), - "Teal4" to Color(0xFF039BA1), - "Teal5" to Color(0xFF3FB3B8), - "Teal6" to Color(0xFF7BCCCF), - "Teal7" to Color(0xFFB6E4E5), - "Teal8" to Color(0xFFDAF4F5), - "Teal9" to Color(0xFFF2FCFC), - "Purple1" to Color(0xFF55339C), - "Purple2" to Color(0xFF643CB8), - "Purple3" to Color(0xFF7444D4), - "Purple4" to Color(0xFF834DF0), - "Purple5" to Color(0xFFA177F4), - "Purple6" to Color(0xFFBFA1F8), - "Purple7" to Color(0xFFDCCBFB), - "Purple8" to Color(0xFFEFE5FF), - "Purple9" to Color(0xFFF5EDFF), - "Purple10" to Color(0xFFFAF5FF) - ) - ) - - override val iconData: ThemeIconData = ThemeIconData(iconOverrides = - mapOf("/windows/minimize.svg" to "/expui/windows/minimize.svg", - "/windows/minimizeInactive.svg" to "/expui/windows/minimizeInactive.svg", - "/windows/maximize.svg" to "/expui/windows/maximize.svg", - "/windows/maximizeInactive.svg" to "/expui/windows/maximizeInactive.svg", - "/windows/closeActive.svg" to "/expui/windows/closeActive.svg", - "/windows/closeInactive.svg" to "/expui/windows/closeInactive.svg", - "/windows/restore.svg" to "/expui/windows/restore.svg", - "/windows/restoreInactive.svg" to "/expui/windows/restoreInactive.svg", - "/com/intellij/ide/ui/laf/icons/intellij/checkBox.svg" to - "/themes/expUI/icons/dark/checkBox.svg", - "/com/intellij/ide/ui/laf/icons/intellij/checkBoxDisabled.svg" to - "/themes/expUI/icons/dark/checkBoxDisabled.svg", - "/com/intellij/ide/ui/laf/icons/intellij/checkBoxFocused.svg" to - "/themes/expUI/icons/dark/checkBoxFocused.svg", - "/com/intellij/ide/ui/laf/icons/intellij/checkBoxIndeterminateSelected.svg" to - "/themes/expUI/icons/dark/checkBoxIndeterminateSelected.svg", - "/com/intellij/ide/ui/laf/icons/intellij/checkBoxIndeterminateSelectedDisabled.svg" to - "/themes/expUI/icons/dark/checkBoxIndeterminateSelectedDisabled.svg", - "/com/intellij/ide/ui/laf/icons/intellij/checkBoxIndeterminateSelectedFocused.svg" to - "/themes/expUI/icons/dark/checkBoxIndeterminateSelectedFocused.svg", - "/com/intellij/ide/ui/laf/icons/intellij/checkBoxSelected.svg" to - "/themes/expUI/icons/dark/checkBoxSelected.svg", - "/com/intellij/ide/ui/laf/icons/intellij/checkBoxSelectedDisabled.svg" to - "/themes/expUI/icons/dark/checkBoxSelectedDisabled.svg", - "/com/intellij/ide/ui/laf/icons/intellij/checkBoxSelectedFocused.svg" to - "/themes/expUI/icons/dark/checkBoxSelectedFocused.svg", - "/com/intellij/ide/ui/laf/icons/intellij/radio.svg" to - "/themes/expUI/icons/dark/radio.svg", - "/com/intellij/ide/ui/laf/icons/intellij/radioDisabled.svg" to - "/themes/expUI/icons/dark/radioDisabled.svg", - "/com/intellij/ide/ui/laf/icons/intellij/radioFocused.svg" to - "/themes/expUI/icons/dark/radioFocused.svg", - "/com/intellij/ide/ui/laf/icons/intellij/radioSelected.svg" to - "/themes/expUI/icons/dark/radioSelected.svg", - "/com/intellij/ide/ui/laf/icons/intellij/radioSelectedDisabled.svg" to - "/themes/expUI/icons/dark/radioSelectedDisabled.svg", - "/com/intellij/ide/ui/laf/icons/intellij/radioSelectedFocused.svg" to - "/themes/expUI/icons/dark/radioSelectedFocused.svg"), colorPalette = - mapOf("Checkbox.Background.Default" to "Gray14", - "Checkbox.Border.Default" to "Gray8", - "Checkbox.Foreground.Selected" to "Gray14", - "Checkbox.Background.Selected" to "Blue4", - "Checkbox.Border.Selected" to "Blue4", - "Checkbox.Focus.Wide" to "Blue4", - "Checkbox.Foreground.Disabled" to "Gray9", - "Checkbox.Background.Disabled" to "Gray13", - "Checkbox.Border.Disabled" to "Gray11"), - selectionColorPalette = mapOf() - ) + override val iconData: ThemeIconData = + ThemeIconData( + iconOverrides = + mapOf( + "/windows/minimize.svg" to "/expui/windows/minimize.svg", + "/windows/minimizeInactive.svg" to "/expui/windows/minimizeInactive.svg", + "/windows/maximize.svg" to "/expui/windows/maximize.svg", + "/windows/maximizeInactive.svg" to "/expui/windows/maximizeInactive.svg", + "/windows/closeActive.svg" to "/expui/windows/closeActive.svg", + "/windows/closeInactive.svg" to "/expui/windows/closeInactive.svg", + "/windows/restore.svg" to "/expui/windows/restore.svg", + "/windows/restoreInactive.svg" to "/expui/windows/restoreInactive.svg", + "/com/intellij/ide/ui/laf/icons/intellij/checkBox.svg" to "/themes/expUI/icons/dark/checkBox.svg", + "/com/intellij/ide/ui/laf/icons/intellij/checkBoxDisabled.svg" to + "/themes/expUI/icons/dark/checkBoxDisabled.svg", + "/com/intellij/ide/ui/laf/icons/intellij/checkBoxFocused.svg" to + "/themes/expUI/icons/dark/checkBoxFocused.svg", + "/com/intellij/ide/ui/laf/icons/intellij/checkBoxIndeterminateSelected.svg" to + "/themes/expUI/icons/dark/checkBoxIndeterminateSelected.svg", + "/com/intellij/ide/ui/laf/icons/intellij/checkBoxIndeterminateSelectedDisabled.svg" to + "/themes/expUI/icons/dark/checkBoxIndeterminateSelectedDisabled.svg", + "/com/intellij/ide/ui/laf/icons/intellij/checkBoxIndeterminateSelectedFocused.svg" to + "/themes/expUI/icons/dark/checkBoxIndeterminateSelectedFocused.svg", + "/com/intellij/ide/ui/laf/icons/intellij/checkBoxSelected.svg" to + "/themes/expUI/icons/dark/checkBoxSelected.svg", + "/com/intellij/ide/ui/laf/icons/intellij/checkBoxSelectedDisabled.svg" to + "/themes/expUI/icons/dark/checkBoxSelectedDisabled.svg", + "/com/intellij/ide/ui/laf/icons/intellij/checkBoxSelectedFocused.svg" to + "/themes/expUI/icons/dark/checkBoxSelectedFocused.svg", + "/com/intellij/ide/ui/laf/icons/intellij/radio.svg" to "/themes/expUI/icons/dark/radio.svg", + "/com/intellij/ide/ui/laf/icons/intellij/radioDisabled.svg" to + "/themes/expUI/icons/dark/radioDisabled.svg", + "/com/intellij/ide/ui/laf/icons/intellij/radioFocused.svg" to + "/themes/expUI/icons/dark/radioFocused.svg", + "/com/intellij/ide/ui/laf/icons/intellij/radioSelected.svg" to + "/themes/expUI/icons/dark/radioSelected.svg", + "/com/intellij/ide/ui/laf/icons/intellij/radioSelectedDisabled.svg" to + "/themes/expUI/icons/dark/radioSelectedDisabled.svg", + "/com/intellij/ide/ui/laf/icons/intellij/radioSelectedFocused.svg" to + "/themes/expUI/icons/dark/radioSelectedFocused.svg", + ), + colorPalette = + mapOf( + "Checkbox.Background.Default" to "Gray14", + "Checkbox.Border.Default" to "Gray8", + "Checkbox.Foreground.Selected" to "Gray14", + "Checkbox.Background.Selected" to "Blue4", + "Checkbox.Border.Selected" to "Blue4", + "Checkbox.Focus.Wide" to "Blue4", + "Checkbox.Foreground.Disabled" to "Gray9", + "Checkbox.Background.Disabled" to "Gray13", + "Checkbox.Border.Disabled" to "Gray11", + ), + selectionColorPalette = emptyMap(), + ) } diff --git a/platform/jewel/scripts/compare-branches.main.kts b/platform/jewel/scripts/compare-branches.main.kts index ca665852ef0b..d6792501fc33 100755 --- a/platform/jewel/scripts/compare-branches.main.kts +++ b/platform/jewel/scripts/compare-branches.main.kts @@ -105,7 +105,8 @@ class CompareBranchesCommand : SuspendingCliktCommand() { if (anyPathMissing) exitProcess(1) println( - "🔍 Comparing commits for paths '${Config.PATHS_TO_CHECK.joinToString()}' between '$branch1' and '$branch2' since $sinceDate..." + "🔍 Comparing commits for paths '${Config.PATHS_TO_CHECK.joinToString()}' between " + + "'$branch1' and '$branch2' since $sinceDate..." ) val pathsArg = Config.PATHS_TO_CHECK.joinToString(separator = " ") { "-- $it" } diff --git a/platform/jewel/scripts/extract-release-notes.main.kts b/platform/jewel/scripts/extract-release-notes.main.kts index 6faf57344e14..9d7da8010f30 100755 --- a/platform/jewel/scripts/extract-release-notes.main.kts +++ b/platform/jewel/scripts/extract-release-notes.main.kts @@ -50,7 +50,8 @@ class ExtractReleaseNotesCommand : CliktCommand() { val latestReleaseDate = getLatestReleaseDate() if (latestReleaseDate.isNullOrBlank()) { printlnErr( - "Error: --start-date is required if ${Config.RELEASE_NOTES_FILE} does not exist or contain a release date." + "Error: --start-date is required if ${Config.RELEASE_NOTES_FILE} " + + "does not exist or contain a release date." ) exitProcess(1) } @@ -224,9 +225,9 @@ class ExtractReleaseNotesCommand : CliktCommand() { val sectionOrder = listOf("⚠️ Important Changes", "New features", "Bug fixes", "Deprecated API", "Other") val sortedSections = - allReleaseNotes.keys.sortedWith( - compareBy { sectionKey -> sectionOrder.indexOf(sectionKey).let { if (it == -1) Int.MAX_VALUE else it } } - ) + allReleaseNotes.keys.sortedBy{ sectionKey -> + sectionOrder.indexOf(sectionKey).takeIf { it >= 0 } ?: Int.MAX_VALUE + } sortedSections.forEach { sectionHeader -> val notes = allReleaseNotes[sectionHeader]!! @@ -273,7 +274,12 @@ class ExtractReleaseNotesCommand : CliktCommand() { private val workingDir = File("").absoluteFile // --- Data Structures --- - private data class ReleaseNoteItem(val issueId: String?, val description: String, val prId: String, val prUrl: String) + private data class ReleaseNoteItem( + val issueId: String?, + val description: String, + val prId: String, + val prUrl: String, + ) private enum class PrProcessingStatus { Extracted, diff --git a/platform/jewel/scripts/jewel-version-updater.main.kts b/platform/jewel/scripts/jewel-version-updater.main.kts index b260e00cca28..886859aebd65 100755 --- a/platform/jewel/scripts/jewel-version-updater.main.kts +++ b/platform/jewel/scripts/jewel-version-updater.main.kts @@ -50,7 +50,6 @@ private val jewelApiVersionTemplate = |/** The Jewel API version for this build, expressed as a string. E.g.: "0.30.0" */ |public val JewelBuild.apiVersionString: String | get() = "%%JEWEL_VERSION%%" - | """ .trimMargin() diff --git a/platform/jewel/scripts/metalava-signatures.main.kts b/platform/jewel/scripts/metalava-signatures.main.kts index 60749e554a32..c61a13e20c75 100755 --- a/platform/jewel/scripts/metalava-signatures.main.kts +++ b/platform/jewel/scripts/metalava-signatures.main.kts @@ -11,22 +11,21 @@ import kotlin.time.Duration.Companion.minutes private fun printHelp() { println( """ - Usage: kotlin metalava-signatures.main.kts [options] - Commands: - update Generate and update API signature dumps. - validate Validate the current signatures against previously generated ones. - - Options: - --release Tells Metalava to create a versioned release archival dump (or validate against one). - If omitted, it will use the current Jewel API version from gradle.properties. - --module Only checks/generates the dump for one module (e.g., ':ui'). - --stable-only Only run tasks for the stable API surface. - --experimental-only Only run tasks for the experimental API surface. - --force Forces a clean build before running the tasks. - --help Display this help and exit. + |Usage: kotlin metalava-signatures.main.kts [options] + |Commands: + | update Generate and update API signature dumps. + | validate Validate the current signatures against previously generated ones. + | + |Options: + | --release Tells Metalava to create a versioned release archival dump (or validate against one). + | If omitted, it will use the current Jewel API version from gradle.properties. + | --module Only checks/generates the dump for one module (e.g., ':ui'). + | --stable-only Only run tasks for the stable API surface. + | --experimental-only Only run tasks for the experimental API surface. + | --force Forces a clean build before running the tasks. + | --help Display this help and exit. """ - .trimIndent() - ) + .trimMargin()) } print("⏳ Locating Jewel folder...") @@ -99,6 +98,10 @@ while (argIterator.hasNext()) { exitProcess(1) } taskPath = "$modulePath:" + + if (!taskPath.startsWith(":")) { + taskPath = ":$taskPath" + } } "--stable-only" -> { if (apiSurface != null) {