Conversation
WalkthroughAdds Heroicons web-import support and a new colored icon. Introduces 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Review rate limit: 6/8 reviews remaining, refill in 8 minutes and 36 seconds.Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/SvgImportScreenUI.kt (1)
362-366: 💤 Low valueUnchecked cast to
SvgIcon.The cast
item.icon as SvgIconassumes allIconItem<*>instances containSvgIcon, but the type parameter is erased. While this works correctly in the current context (sinceSvgIconGridonly receivesSvgIconitems via the typediconContentlambda), the cast could fail if the grid items are ever mixed.Consider using a safe cast with a fallback or refactoring
SvgIconGridto be generic over the icon type.♻️ Type-safe alternative
`@Composable` -private fun SvgIconGrid( - gridItems: List<GridItem>, +private fun <T : StyledWebIcon> SvgIconGrid( + gridItems: List<GridItem>, lazyGridState: LazyGridState, - iconContent: `@Composable` (SvgIcon) -> Unit, + iconContent: `@Composable` (T) -> Unit, ) { IconGrid(state = lazyGridState) { items( items = gridItems, key = { it.id }, span = { item: GridItem -> when (item) { is CategoryHeader -> GridItemSpan(maxLineSpan) is IconItem<*> -> GridItemSpan(1) } }, ) { item: GridItem -> when (item) { is CategoryHeader -> CategoryHeaderItem(title = item.categoryName) - is IconItem<*> -> iconContent(item.icon as SvgIcon) + is IconItem<*> -> { + `@Suppress`("UNCHECKED_CAST") + iconContent(item.icon as T) + } } } } }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/SvgImportScreenUI.kt` around lines 362 - 366, The unchecked cast in the Grid cell lambda inside SvgImportScreenUI (where IconItem<*> items are rendered with iconContent(item.icon as SvgIcon)) can fail; change to a safe cast and handle the null case (e.g., use item.icon as? SvgIcon and if null render a placeholder or skip rendering) or refactor SvgIconGrid/iconContent to be generic over the icon type so the compiler guarantees the correct type; update the lambda that handles IconItem to use the safe cast and a clear fallback path instead of an unchecked as cast.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/WebIconViewModel.kt`:
- Around line 91-105: The downloadIcon function swallows exceptions in the
runCatching block; add an onFailure handler to that runCatching so any exception
from provider.downloadSvg (or subsequent work) triggers _events.send with a new
error event (e.g., WebIconEvent.DownloadError) containing a user-friendly
message and/or exception.message; also add the DownloadError variant to the
WebIconEvent sealed interface so WebIconEvent.IconDownloaded and
WebIconEvent.DownloadError are both available for consumers to handle.
---
Nitpick comments:
In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/SvgImportScreenUI.kt`:
- Around line 362-366: The unchecked cast in the Grid cell lambda inside
SvgImportScreenUI (where IconItem<*> items are rendered with
iconContent(item.icon as SvgIcon)) can fail; change to a safe cast and handle
the null case (e.g., use item.icon as? SvgIcon and if null render a placeholder
or skip rendering) or refactor SvgIconGrid/iconContent to be generic over the
icon type so the compiler guarantees the correct type; update the lambda that
handles IconItem to use the safe cast and a clear fallback path instead of an
unchecked as cast.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: b0cfe6a7-1910-400f-940c-d494f3d75b1e
📒 Files selected for processing (39)
sdk/compose/icons/api/icons.apisdk/compose/icons/api/icons.klib.apisdk/compose/icons/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/icons/colored/HeroiconsLogo.kttools/idea-plugin/CHANGELOG.mdtools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/service/PersistentSettings.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/settings/InMemorySettings.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/WebImportFlow.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/WebImportSelectorScreen.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/StandardImportScreenUI.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/WebIconViewModel.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/StandardIconProvider.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/WebIconProvider.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/category/InferredCategory.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StandardIcon.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StandardIconConfig.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StyledWebIcon.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/WebIconConfig.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/settings/SizeSettings.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/IconGrid.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/IconLoadingPlaceholder.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/WebIconTopActions.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/GridFiltering.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/SvgImportScreenUI.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/data/SvgPreviewCache.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/domain/SvgIconProvider.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/model/SvgIcon.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/HeroiconsImportScreen.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIconMetadata.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIndexParser.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsRepository.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsSvgPathResolver.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/di/HeroiconsModule.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/domain/HeroiconsConfigBuilder.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/domain/HeroiconsUseCase.kttools/idea-plugin/src/main/resources/messages/Valkyrie.propertiestools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/data/SvgPreviewCacheTest.kttools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIndexParserTest.kttools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsSvgPathResolverTest.kttools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/domain/HeroiconsConfigBuilderTest.kt
💤 Files with no reviewable changes (1)
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/category/InferredCategory.kt
| import org.jetbrains.jewel.foundation.theme.LocalContentColor | ||
|
|
||
| @Composable | ||
| internal fun SvgImportScreen( |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
gradle/libs.versions.toml (1)
50-50: 💤 Low valueConsider adding a comment explaining the
kotlinx-coroutines-testversion choice, or update to1.11.0once stable.Version
1.10.2is the latest stable release for Kotlin 2.2.20. Other constrained JetBrains libraries in this file include explicit compatibility comments (e.g.,ktor,kotlinpoet,xmlutil). For consistency, either document why1.10.2is intentionally kept until1.11.0stabilizes, or plan to bump to1.11.0stable when released.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@gradle/libs.versions.toml` at line 50, Add a short comment next to the kotlin-coroutines-test entry in libs.versions.toml explaining why version "1.10.2" is used (compatibility with Kotlin 2.2.20 and waiting for kotlinx-coroutines 1.11.0 to be declared stable), or update the version value to "1.11.0" if it has already reached stable release; modify the line keyed by kotlin-coroutines-test accordingly and keep the comment style consistent with other entries like ktor/kotlinpoet/xmlutil.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@gradle/libs.versions.toml`:
- Line 50: Add a short comment next to the kotlin-coroutines-test entry in
libs.versions.toml explaining why version "1.10.2" is used (compatibility with
Kotlin 2.2.20 and waiting for kotlinx-coroutines 1.11.0 to be declared stable),
or update the version value to "1.11.0" if it has already reached stable
release; modify the line keyed by kotlin-coroutines-test accordingly and keep
the comment style consistent with other entries like ktor/kotlinpoet/xmlutil.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 6092adb0-0ae3-4526-858f-78b185e0c085
📒 Files selected for processing (3)
gradle/libs.versions.tomltools/idea-plugin/build.gradle.ktstools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/data/SvgPreviewCacheTest.kt
✅ Files skipped from review due to trivial changes (1)
- tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/data/SvgPreviewCacheTest.kt
… zoom layout to svg import screen
6568b76 to
5c0335b
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIndexParser.kt (1)
13-13: 💤 Low valueConsider using a safe cast to handle both missing and malformed
"files"valuesIf
root["files"]is non-null but not aJsonArray(e.g., due to an unexpected API response), thejsonArrayproperty throwsIllegalArgumentExceptionrather than returningnull. The safe-call operator?.only guards against a null receiver, not against property access that throws.Replacing the safe-call with a safe cast handles both cases uniformly:
Suggested change
- return root["files"]?.jsonArray.orEmpty().mapNotNull { fileElement -> + return (root["files"] as? JsonArray).orEmpty().mapNotNull { fileElement ->🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIndexParser.kt` at line 13, The code uses root["files"]?.jsonArray which still throws if root["files"] exists but is not a JsonArray; change to a safe cast so non-array or missing values are treated the same. Replace the current expression with a safe cast of root["files"] to JsonArray (e.g., root["files"] as? JsonArray) and then call orEmpty() and mapNotNull { fileElement -> ... } so malformed values won't throw; update the expression around jsonArray usage in HeroiconsIndexParser (the root["files"] access and subsequent mapNotNull block).tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/GridFiltering.kt (1)
61-84: 💤 Low valueLGTM —
filterByCategorylogic is correct.Category, style, and search filtering compose cleanly and the delegation to
filterGridItems(category = null, …)is intentionally correct after the upstream category pre-filtering is done.Optional refactor: Line 67 compares
category.id == InferredCategory.All.idby id rather than direct equality. SinceInferredCategoryis adata class, you can simplify this tocategory == InferredCategory.Allfor more idiomatic Kotlin code.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/GridFiltering.kt` around lines 61 - 84, The comparison category.id == InferredCategory.All.id should be simplified to a direct data-class equality check; inside WebIconConfig.filterByCategory replace the id-based comparison with category == InferredCategory.All so the when branch uses the idiomatic data-class equality against InferredCategory.All.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/domain/HeroiconsUseCase.kt`:
- Around line 36-39: The downloadSvg function in HeroiconsUseCase currently
accepts a style: IconStyle? parameter but does not use it; add an inline comment
in the downloadSvg implementation (near the start of the method) stating that
Heroicons does not provide style variants and the style parameter is
intentionally ignored to avoid confusion for callers; reference the function
name downloadSvg and class/implementation HeroiconsUseCase and keep the comment
concise and explicit that other providers do honor style (e.g.,
FontAwesome/MaterialSymbols/Tabler) so callers should not assume uniform
behavior.
---
Nitpick comments:
In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/GridFiltering.kt`:
- Around line 61-84: The comparison category.id == InferredCategory.All.id
should be simplified to a direct data-class equality check; inside
WebIconConfig.filterByCategory replace the id-based comparison with category ==
InferredCategory.All so the when branch uses the idiomatic data-class equality
against InferredCategory.All.
In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIndexParser.kt`:
- Line 13: The code uses root["files"]?.jsonArray which still throws if
root["files"] exists but is not a JsonArray; change to a safe cast so non-array
or missing values are treated the same. Replace the current expression with a
safe cast of root["files"] to JsonArray (e.g., root["files"] as? JsonArray) and
then call orEmpty() and mapNotNull { fileElement -> ... } so malformed values
won't throw; update the expression around jsonArray usage in
HeroiconsIndexParser (the root["files"] access and subsequent mapNotNull block).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: e9ef743f-b830-49bb-93d6-ebd1809bfd95
📒 Files selected for processing (41)
gradle/libs.versions.tomlsdk/compose/icons/api/icons.apisdk/compose/icons/api/icons.klib.apisdk/compose/icons/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/icons/colored/HeroiconsLogo.kttools/idea-plugin/CHANGELOG.mdtools/idea-plugin/build.gradle.ktstools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/service/PersistentSettings.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/settings/InMemorySettings.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/WebImportFlow.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/WebImportSelectorScreen.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/StandardImportScreenUI.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/WebIconViewModel.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/StandardIconProvider.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/WebIconProvider.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/category/InferredCategory.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StandardIcon.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StandardIconConfig.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StyledWebIcon.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/WebIconConfig.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/settings/SizeSettings.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/IconGrid.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/IconLoadingPlaceholder.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/WebIconTopActions.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/GridFiltering.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/SvgImportScreenUI.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/data/SvgPreviewCache.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/domain/SvgIconProvider.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/model/SvgIcon.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/HeroiconsImportScreen.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIconMetadata.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIndexParser.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsRepository.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsSvgPathResolver.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/di/HeroiconsModule.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/domain/HeroiconsConfigBuilder.kttools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/domain/HeroiconsUseCase.kttools/idea-plugin/src/main/resources/messages/Valkyrie.propertiestools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/data/SvgPreviewCacheTest.kttools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIndexParserTest.kttools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsSvgPathResolverTest.kttools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/domain/HeroiconsConfigBuilderTest.kt
💤 Files with no reviewable changes (1)
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/category/InferredCategory.kt
✅ Files skipped from review due to trivial changes (21)
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/settings/SizeSettings.kt
- tools/idea-plugin/build.gradle.kts
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/IconLoadingPlaceholder.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StyledWebIcon.kt
- tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIndexParserTest.kt
- sdk/compose/icons/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/icons/colored/HeroiconsLogo.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/WebIconProvider.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/model/SvgIcon.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIconMetadata.kt
- gradle/libs.versions.toml
- sdk/compose/icons/api/icons.api
- tools/idea-plugin/CHANGELOG.md
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/domain/HeroiconsConfigBuilder.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/service/PersistentSettings.kt
- tools/idea-plugin/src/main/resources/messages/Valkyrie.properties
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsRepository.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/HeroiconsImportScreen.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/WebIconConfig.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/di/HeroiconsModule.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsSvgPathResolver.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/data/SvgPreviewCache.kt
🚧 Files skipped from review as they are similar to previous changes (11)
- sdk/compose/icons/api/icons.klib.api
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/WebImportSelectorScreen.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/domain/SvgIconProvider.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/settings/InMemorySettings.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/WebImportFlow.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/StandardIconProvider.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/WebIconViewModel.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StandardIconConfig.kt
- tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/data/SvgPreviewCacheTest.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/SvgImportScreenUI.kt
- tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/WebIconTopActions.kt
Screen.Recording.2026-05-04.at.15.08.34.github.mp4
Adds Hero Icons to Web Import, could not find font files for this pack so using only svg downloads for this.
📝 Changelog
If this PR introduces user-facing changes, please update the relevant Unreleased section in changelogs: