Skip to content

[Web Import] Add Hero Icons#993

Merged
t-regbs merged 5 commits intomainfrom
feature/heroicons-svg-import
May 4, 2026
Merged

[Web Import] Add Hero Icons#993
t-regbs merged 5 commits intomainfrom
feature/heroicons-svg-import

Conversation

@t-regbs
Copy link
Copy Markdown
Collaborator

@t-regbs t-regbs commented May 4, 2026

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:

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 4, 2026

Walkthrough

Adds Heroicons web-import support and a new colored icon. Introduces ValkyrieIcons.Colored.HeroiconsLogo (ImageVector) and persists heroiconsSize. Adds web-import core types and logic: WebIconProvider, WebIconConfig, StyledWebIcon, WebIconViewModel, preview cache (SvgPreviewCache), grid and placeholder UI (IconGrid, IconLoadingPlaceholder), and renamed top actions (WebIconTopActions). Implements Heroicons-specific components: HeroiconsIndexParser, HeroiconsRepository, HeroiconsModule, HeroiconsUseCase, buildHeroicons, SvgImportScreen, and HeroiconsImportScreen. Adds i18n keys, tests for parser/path/resolver/cache/config, and a test dependency entry.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 5.26% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive The PR description includes the required changelog template but all three changelog items remain unchecked, despite clear evidence that the IntelliJ Plugin changelog was updated. Update the checklist to reflect which changelogs were actually modified; at minimum, check the IntelliJ Plugin checkbox as tools/idea-plugin/CHANGELOG.md was updated.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title '[Web Import] Add Hero Icons' clearly summarizes the main feature addition (Hero Icons support) and its context (Web Import).
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/heroicons-svg-import

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.

❤️ Share
Review rate limit: 6/8 reviews remaining, refill in 8 minutes and 36 seconds.

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 value

Unchecked cast to SvgIcon.

The cast item.icon as SvgIcon assumes all IconItem<*> instances contain SvgIcon, but the type parameter is erased. While this works correctly in the current context (since SvgIconGrid only receives SvgIcon items via the typed iconContent lambda), the cast could fail if the grid items are ever mixed.

Consider using a safe cast with a fallback or refactoring SvgIconGrid to 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

📥 Commits

Reviewing files that changed from the base of the PR and between 2127bda and bbee885.

📒 Files selected for processing (39)
  • sdk/compose/icons/api/icons.api
  • sdk/compose/icons/api/icons.klib.api
  • sdk/compose/icons/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/icons/colored/HeroiconsLogo.kt
  • tools/idea-plugin/CHANGELOG.md
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/service/PersistentSettings.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/WebImportSelectorScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/StandardImportScreenUI.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/StandardIconProvider.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/common/domain/category/InferredCategory.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StandardIcon.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StandardIconConfig.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StyledWebIcon.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/common/domain/settings/SizeSettings.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/IconGrid.kt
  • 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/ui/WebIconTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/GridFiltering.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/svg/common/data/SvgPreviewCache.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/ui/screen/webimport/svg/common/model/SvgIcon.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/svg/heroicons/data/HeroiconsIconMetadata.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIndexParser.kt
  • 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/data/HeroiconsSvgPathResolver.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/domain/HeroiconsConfigBuilder.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/domain/HeroiconsUseCase.kt
  • tools/idea-plugin/src/main/resources/messages/Valkyrie.properties
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/data/SvgPreviewCacheTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIndexParserTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsSvgPathResolverTest.kt
  • tools/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(
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cool, works smooth ❤️

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
gradle/libs.versions.toml (1)

50-50: 💤 Low value

Consider adding a comment explaining the kotlinx-coroutines-test version choice, or update to 1.11.0 once stable.

Version 1.10.2 is 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 why 1.10.2 is intentionally kept until 1.11.0 stabilizes, or plan to bump to 1.11.0 stable 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

📥 Commits

Reviewing files that changed from the base of the PR and between bbee885 and aa93832.

📒 Files selected for processing (3)
  • gradle/libs.versions.toml
  • tools/idea-plugin/build.gradle.kts
  • tools/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

@t-regbs t-regbs force-pushed the feature/heroicons-svg-import branch from 6568b76 to 5c0335b Compare May 4, 2026 20:41
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 value

Consider using a safe cast to handle both missing and malformed "files" values

If root["files"] is non-null but not a JsonArray (e.g., due to an unexpected API response), the jsonArray property throws IllegalArgumentException rather than returning null. 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 value

LGTM — filterByCategory logic 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.id by id rather than direct equality. Since InferredCategory is a data class, you can simplify this to category == InferredCategory.All for 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

📥 Commits

Reviewing files that changed from the base of the PR and between 6568b76 and 5c0335b.

📒 Files selected for processing (41)
  • gradle/libs.versions.toml
  • sdk/compose/icons/api/icons.api
  • sdk/compose/icons/api/icons.klib.api
  • sdk/compose/icons/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/icons/colored/HeroiconsLogo.kt
  • tools/idea-plugin/CHANGELOG.md
  • tools/idea-plugin/build.gradle.kts
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/service/PersistentSettings.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/WebImportSelectorScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/StandardImportScreenUI.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/StandardIconProvider.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/common/domain/category/InferredCategory.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StandardIcon.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StandardIconConfig.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/StyledWebIcon.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/common/domain/settings/SizeSettings.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/IconGrid.kt
  • 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/ui/WebIconTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/GridFiltering.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/svg/common/data/SvgPreviewCache.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/ui/screen/webimport/svg/common/model/SvgIcon.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/svg/heroicons/data/HeroiconsIconMetadata.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIndexParser.kt
  • 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/data/HeroiconsSvgPathResolver.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/domain/HeroiconsConfigBuilder.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/domain/HeroiconsUseCase.kt
  • tools/idea-plugin/src/main/resources/messages/Valkyrie.properties
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/common/data/SvgPreviewCacheTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsIndexParserTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/svg/heroicons/data/HeroiconsSvgPathResolverTest.kt
  • tools/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

@t-regbs t-regbs merged commit 8088562 into main May 4, 2026
3 checks passed
@t-regbs t-regbs deleted the feature/heroicons-svg-import branch May 4, 2026 21:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants