Skip to content

Migrate Material symbols to standart StandardImport approach, move common files in new package#991

Merged
egorikftp merged 2 commits intomainfrom
feature/idea/material-import-to-standart
May 4, 2026
Merged

Migrate Material symbols to standart StandardImport approach, move common files in new package#991
egorikftp merged 2 commits intomainfrom
feature/idea/material-import-to-standart

Conversation

@egorikftp
Copy link
Copy Markdown
Member


📝 Changelog

If this PR introduces user-facing changes, please update the relevant Unreleased section in changelogs:

@egorikftp egorikftp requested a review from t-regbs May 3, 2026 10:41
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 3, 2026

Walkthrough

The PR reorganizes and centralizes web-import domain types and UI into shared packages. A @Stable StandardIconProvider interface and VariableFontConfig, IconStyle, StandardIcon, and related domain models were added under webimport.common.domain.*. Many source-specific providers and models were moved or removed and replaced with common equivalents; Material Symbols was migrated into webimport.standard.materialsymbols with a provider-style use case and repository updates. StandardImportScreen was extended to accept optional customization content and variable-font configuration. Numerous imports across use-cases, repositories, screens, and tests were updated to the new package layout.

✨ 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/idea/material-import-to-standart

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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/CodepointGlyphTest.kt (1)

1-7: ⚠️ Potential issue | 🔴 Critical

Missing import for Codepoint — test will not compile.

The test file references Codepoint at lines 13, 18, 23, and 24, but the class is in a different package. After the refactor:

  • Test package: io.github.composegears.valkyrie.ui.screen.webimport.common.domain
  • Codepoint package: io.github.composegears.valkyrie.ui.screen.webimport.common.domain.font

Kotlin requires an explicit import when accessing symbols in different packages. Add the missing import:

Fix
 import org.junit.jupiter.api.Test
+import io.github.composegears.valkyrie.ui.screen.webimport.common.domain.font.Codepoint
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/CodepointGlyphTest.kt`
around lines 1 - 7, The test fails to compile because Codepoint is in a
different package; add an explicit import for Codepoint in CodepointGlyphTest.kt
so the test can reference the class from
io.github.composegears.valkyrie.ui.screen.webimport.common.domain.font; update
the imports at the top of the file (where other imports like assertk and Test
are declared) to include Codepoint so references to Codepoint in the test
methods resolve.
tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/StandardIconViewModel.kt (1)

133-144: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Handle font-load failures after clearing the preview state.

Line 134 sets fontByteArray = null, but any exception from provider.loadFontBytes(...) is swallowed. A transient repository/network failure will leave StandardState.Success stuck in the skeleton state with no recovery path.

Suggested failure handling
             if (cachedFont == null) {
                 updateSuccess { it.copy(fontByteArray = null) }
                 // Yield so Compose renders the skeleton before font bytes arrive.
                 // Without this, providers with in-memory caches (suspendLazy) return
                 // instantly — both state updates are batched into one frame and the
                 // skeleton is never visible.
                 yield()
-                runCatching {
-                    val bytes = provider.loadFontBytes(resolvedStyle)
-                    fontCache[styleKey] = bytes
-                    updateSuccess { it.copy(fontByteArray = bytes) }
-                }
+                runCatching { provider.loadFontBytes(resolvedStyle) }
+                    .onSuccess { bytes ->
+                        fontCache[styleKey] = bytes
+                        updateSuccess { it.copy(fontByteArray = bytes) }
+                    }
+                    .onFailure { error ->
+                        stateRecord.value = StandardState.Error(
+                            "Error loading ${provider.providerName} font: ${error.message}",
+                        )
+                    }
             } else {
🤖 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/common/StandardIconViewModel.kt`
around lines 133 - 144, The code clears the preview via updateSuccess {
it.copy(fontByteArray = null) } then calls provider.loadFontBytes(...) inside
runCatching but swallows failures, leaving StandardState.Success stuck; change
the runCatching usage to handle failures explicitly: when calling
provider.loadFontBytes(resolvedStyle) (and updating fontCache[styleKey]), add an
onFailure block that updates state to an error/retry-aware state (e.g., call the
existing error updater or updateSuccess with an error marker/previous state) so
consumers can recover or show an error, and ensure the cache is not populated on
failure; keep updateSuccess, fontCache, cachedFont and provider.loadFontBytes
references so you update the same logic path.
tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/StandardImportScreenUI.kt (1)

354-360: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Unchecked cast item.icon as StandardIcon will produce a compiler warning.

With item: IconItem<*>, the star projection makes item.icon of type Any? — Kotlin emits an UNCHECKED_CAST warning for the as StandardIcon coercion. While it's safe here since StandardIconGrid is private and all inputs are typed StandardIcon, a safe cast is cleaner and avoids the warning.

🛡️ Proposed fix
-is IconItem<*> -> iconContent(item.icon as StandardIcon)
+is IconItem<*> -> (item.icon as? StandardIcon)?.let { iconContent(it) }
🤖 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/common/StandardImportScreenUI.kt`
around lines 354 - 360, Replace the unchecked cast of item.icon with a safe cast
and only call iconContent when the cast succeeds: in the lambda that handles
IconItem inside StandardImportScreenUI (the when block that checks GridItem /
CategoryHeader / IconItem), change the unchecked "item.icon as StandardIcon"
cast to a safe cast (item.icon as? StandardIcon) and invoke iconContent only if
the result is non-null (e.g., using let or an if check) so the compiler warning
is removed and you avoid a potential ClassCastException.
🧹 Nitpick comments (3)
sdk/compose/foundation/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/foundation/animation/RememberShimmer.kt (1)

22-26: ⚡ Quick win

@Stable is correct; rememberShimmer should memoize the returned instance to honor the contract

@Stable is the right choice here (@Immutable would be incorrect because State<Float> mutates). The annotation is valid.

However, rememberShimmer (line 51) returns Shimmer(translateState, gradientWidthFactor) without remember {}. With @Stable + default reference equality, every parent recomposition creates a fresh Shimmer instance that Compose treats as "changed", defeating the skippability that @Stable enables for any composable receiving Shimmer as a parameter.

translateState already has a stable reference (it comes from transition.animateFloat, which is internally remembered), so a remember(gradientWidthFactor) key is sufficient:

♻️ Proposed fix in rememberShimmer
-    return Shimmer(translateState, gradientWidthFactor)
+    return remember(gradientWidthFactor) { Shimmer(translateState, gradientWidthFactor) }
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@sdk/compose/foundation/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/foundation/animation/RememberShimmer.kt`
around lines 22 - 26, The rememberShimmer factory currently returns a new
Shimmer instance on each recomposition, defeating the `@Stable` contract; update
rememberShimmer to memoize the returned Shimmer using Compose's remember keyed
by gradientWidthFactor so the same Shimmer instance is reused across
recompositions (e.g., remember(gradientWidthFactor) { Shimmer(translateState,
gradientWidthFactor) }), referencing the Shimmer class, rememberShimmer
function, translateState and gradientWidthFactor symbols.
tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/VariableFontConfig.kt (1)

19-42: ⚡ Quick win

Prefer List<FontWeight> over Array<FontWeight> to uphold the @Stable contract

Array<FontWeight> is mutable: any caller holding the reference can write config.weights[0] = … in-place without going through Compose's snapshot system, so Compose will never detect the mutation and recomposition will be silently skipped — breaking the @Stable guarantee. List<FontWeight> is structurally immutable, has value-based equals/hashCode by default, and removes the need for the manual overrides entirely.

♻️ Proposed refactor
 `@Stable`
 data class VariableFontConfig(
     val variation: FontVariation.Settings,
-    val weights: Array<FontWeight>,
+    val weights: List<FontWeight>,
     val weight: FontWeight,
     val opticalSize: Float? = null,
-) {
-    override fun equals(other: Any?): Boolean {
-        if (this === other) return true
-        if (other !is VariableFontConfig) return false
-        if (variation != other.variation) return false
-        if (!weights.contentEquals(other.weights)) return false
-        if (weight != other.weight) return false
-        if (opticalSize != other.opticalSize) return false
-        return true
-    }
-
-    override fun hashCode(): Int {
-        var result = variation.hashCode()
-        result = 31 * result + weights.contentHashCode()
-        result = 31 * result + weight.hashCode()
-        result = 31 * result + (opticalSize?.hashCode() ?: 0)
-        return result
-    }
-}
+)

Call sites constructing with an array literal (arrayOf(…)) should switch to listOf(…). Any call to rememberStandardFont(weights = variableFontConfig?.weights, …) that expects Array<FontWeight> would need a matching signature update or a .toTypedArray() conversion there.

🤖 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/common/domain/font/VariableFontConfig.kt`
around lines 19 - 42, VariableFontConfig currently exposes a mutable
Array<FontWeight> via the weights property which breaks Compose's `@Stable`
contract and necessitated manual equals/hashCode; change weights from
Array<FontWeight> to List<FontWeight> (update the data class VariableFontConfig
signature), remove the custom equals/hashCode overrides (the data class will get
correct value-based implementations), and update all call sites that pass
arrayOf(...) to use listOf(...) (or call .toTypedArray() only where an actual
Array is required, e.g., in legacy APIs like rememberStandardFont if kept).
tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/StandardIconProvider.kt (1)

24-25: ⚡ Quick win

variableFontConfig default getter allocates a new MutableStateFlow on every access.

Kotlin interface properties with get() bodies are re-evaluated on every read. Any Compose consumer using collectAsState() or any LaunchedEffect(provider.variableFontConfig) will see a new Flow reference each recomposition and restart the coroutine unnecessarily. Fix by returning a shared singleton from the companion object:

♻️ Proposed fix
+    companion object {
+        private val nullVariableFontConfig: StateFlow<VariableFontConfig?> = MutableStateFlow(null)
+    }
+
     val variableFontConfig: StateFlow<VariableFontConfig?>
-        get() = MutableStateFlow(null)
+        get() = nullVariableFontConfig
🤖 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/common/domain/StandardIconProvider.kt`
around lines 24 - 25, The getter for StandardIconProvider.variableFontConfig
currently creates a new MutableStateFlow(null) on each access which causes
consumers to see a different Flow instance each read; change it to return a
single shared StateFlow instance (e.g., a private val sharedVariableFontConfig =
MutableStateFlow<VariableFontConfig?>(null) declared in the companion object)
and have the variableFontConfig getter return that shared StateFlow so consumers
reuse the same Flow instead of reallocating on every access.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/StandardIconViewModel.kt`:
- Around line 133-144: The code clears the preview via updateSuccess {
it.copy(fontByteArray = null) } then calls provider.loadFontBytes(...) inside
runCatching but swallows failures, leaving StandardState.Success stuck; change
the runCatching usage to handle failures explicitly: when calling
provider.loadFontBytes(resolvedStyle) (and updating fontCache[styleKey]), add an
onFailure block that updates state to an error/retry-aware state (e.g., call the
existing error updater or updateSuccess with an error marker/previous state) so
consumers can recover or show an error, and ensure the cache is not populated on
failure; keep updateSuccess, fontCache, cachedFont and provider.loadFontBytes
references so you update the same logic path.

In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/StandardImportScreenUI.kt`:
- Around line 354-360: Replace the unchecked cast of item.icon with a safe cast
and only call iconContent when the cast succeeds: in the lambda that handles
IconItem inside StandardImportScreenUI (the when block that checks GridItem /
CategoryHeader / IconItem), change the unchecked "item.icon as StandardIcon"
cast to a safe cast (item.icon as? StandardIcon) and invoke iconContent only if
the result is non-null (e.g., using let or an if check) so the compiler warning
is removed and you avoid a potential ClassCastException.

In
`@tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/CodepointGlyphTest.kt`:
- Around line 1-7: The test fails to compile because Codepoint is in a different
package; add an explicit import for Codepoint in CodepointGlyphTest.kt so the
test can reference the class from
io.github.composegears.valkyrie.ui.screen.webimport.common.domain.font; update
the imports at the top of the file (where other imports like assertk and Test
are declared) to include Codepoint so references to Codepoint in the test
methods resolve.

---

Nitpick comments:
In
`@sdk/compose/foundation/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/foundation/animation/RememberShimmer.kt`:
- Around line 22-26: The rememberShimmer factory currently returns a new Shimmer
instance on each recomposition, defeating the `@Stable` contract; update
rememberShimmer to memoize the returned Shimmer using Compose's remember keyed
by gradientWidthFactor so the same Shimmer instance is reused across
recompositions (e.g., remember(gradientWidthFactor) { Shimmer(translateState,
gradientWidthFactor) }), referencing the Shimmer class, rememberShimmer
function, translateState and gradientWidthFactor symbols.

In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/VariableFontConfig.kt`:
- Around line 19-42: VariableFontConfig currently exposes a mutable
Array<FontWeight> via the weights property which breaks Compose's `@Stable`
contract and necessitated manual equals/hashCode; change weights from
Array<FontWeight> to List<FontWeight> (update the data class VariableFontConfig
signature), remove the custom equals/hashCode overrides (the data class will get
correct value-based implementations), and update all call sites that pass
arrayOf(...) to use listOf(...) (or call .toTypedArray() only where an actual
Array is required, e.g., in legacy APIs like rememberStandardFont if kept).

In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/StandardIconProvider.kt`:
- Around line 24-25: The getter for StandardIconProvider.variableFontConfig
currently creates a new MutableStateFlow(null) on each access which causes
consumers to see a different Flow instance each read; change it to return a
single shared StateFlow instance (e.g., a private val sharedVariableFontConfig =
MutableStateFlow<VariableFontConfig?>(null) declared in the companion object)
and have the variableFontConfig getter return that shared StateFlow so consumers
reuse the same Flow instead of reallocating on every access.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: a57280cc-51a2-4555-a58e-1af6d9708824

📥 Commits

Reviewing files that changed from the base of the PR and between a12f032 and 71b52cc.

📒 Files selected for processing (89)
  • sdk/compose/foundation/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/foundation/animation/RememberShimmer.kt
  • 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/StandardIconViewModel.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/data/CodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/data/RegexCssCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/CategoryInferrer.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/category/InferredCategory.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/category/WebCategory.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/Codepoint.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/FontByteArray.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/VariableFontConfig.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/GridItem.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/IconStyle.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/WebIcon.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/settings/IconSettings.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/IconSizeCustomization.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/SidePanel.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/StandardTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/WebImportScreenComponents.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/DisplayNameFormatter.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/common/util/StandardGridFiltering.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/SvgSizeCustomizer.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/MaterialSymbolsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/MaterialSymbolsViewModel.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/MaterialSymbolsConfigUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/model/Category.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/model/MaterialConfig.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/ui/MaterialFontFamilyDropdown.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/ui/MaterialTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/BootstrapImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/data/BootstrapCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/data/BootstrapRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/domain/BootstrapUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/BoxIconsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/data/BoxCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/data/BoxIconsRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/domain/BoxIconsUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/common/domain/StandardIconProvider.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/common/model/IconStyle.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/EvaImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/data/EvaCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/data/EvaRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/domain/EvaUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/FeatherImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/FontAwesomeImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeCategoriesYamlParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/domain/FontAwesomeUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/IoniconsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/domain/IoniconsIconConfigBuilder.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/domain/IoniconsUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/LucideImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/data/LucideCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/data/LucideRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/domain/LucideUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/MaterialSymbolsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/config/MaterialIconsMetadata.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/config/MaterialSymbolsConfigRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/font/MaterialFontRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/di/MaterialSymbolsModule.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/MaterialSymbolsConfigUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/model/MaterialFontSettings.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/model/MaterialIconFontFamily.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/ui/MaterialFontCustomization.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/RemixImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/data/RemixCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/data/RemixRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/domain/RemixUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/TablerImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/domain/TablerUseCase.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/CodepointGlyphTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/domain/EvaIconNameTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherIconConfigBuilderTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeCategoriesYamlParserTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/domain/IoniconsIconConfigBuilderTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerSvgPathResolverTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/domain/TablerIconConfigBuilderTest.kt
💤 Files with no reviewable changes (10)
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/model/MaterialConfig.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/model/Category.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/common/model/IconStyle.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/ui/MaterialFontFamilyDropdown.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/common/domain/StandardIconProvider.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/MaterialSymbolsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/ui/MaterialTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/MaterialSymbolsConfigUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/MaterialSymbolsViewModel.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/WebImportScreenComponents.kt

@egorikftp egorikftp force-pushed the feature/idea/material-import-to-standart branch from 71b52cc to 6e396d2 Compare May 3, 2026 13:49
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: 3

🧹 Nitpick comments (2)
tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/settings/InMemorySettings.kt (1)

13-16: ⚖️ Poor tradeoff

Optional: consider locating Material font defaults closer to PersistentSettings rather than a screen-scoped model.

InMemorySettings lives in the root-level io.github.composegears.valkyrie.settings package and currently depends on ui.screen.webimport.standard.materialsymbols.domain.model.MaterialFontSettings solely for four reset-to-default constants. This couples a general application-settings class to a specific screen domain model, reversing the typical dependency direction (settings → screen detail). Defining these defaults directly on PersistentSettings.ValkyrieState (or a sibling defaults object in the settings package) would eliminate the cross-layer import.

🤖 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/settings/InMemorySettings.kt`
around lines 13 - 16, InMemorySettings currently imports
MaterialFontSettings.Companion.DEFAULT_FILL/DEFAULT_GRADE/DEFAULT_OPTICAL_SIZE/DEFAULT_WEIGHT
from the screen domain; remove those imports and instead define the same default
constants closer to the settings layer (either as companion constants on
PersistentSettings.ValkyrieState or in a new SettingsDefaults object in the
settings package), then update InMemorySettings to reference the new
PersistentSettings.ValkyrieState (or SettingsDefaults) constants; ensure no
other UI-screen packages are referenced from the settings package so the
dependency direction is corrected.
tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/service/PersistentSettings.kt (1)

13-17: ⚡ Quick win

Service layer importing from ui.screen.* — consider inlining the primitive defaults.

PersistentSettings is a persistence-layer IntelliJ @State service. These five new imports pull DEFAULT_SIZE, DEFAULT_FILL, DEFAULT_WEIGHT, DEFAULT_GRADE, and DEFAULT_OPTICAL_SIZE from UI-feature packages (ui.screen.webimport.*), creating a downward dependency from the service layer into UI screen domain models. Any future rename, move, or split of SizeSettings / MaterialFontSettings will silently break this service at compile time.

Because all five constants are primitive literals, the simplest fix is to inline them directly:

♻️ Proposed refactor — inline the primitive defaults
-import io.github.composegears.valkyrie.ui.screen.webimport.common.domain.settings.SizeSettings.Companion.DEFAULT_SIZE
-import io.github.composegears.valkyrie.ui.screen.webimport.standard.materialsymbols.domain.model.MaterialFontSettings.Companion.DEFAULT_FILL
-import io.github.composegears.valkyrie.ui.screen.webimport.standard.materialsymbols.domain.model.MaterialFontSettings.Companion.DEFAULT_GRADE
-import io.github.composegears.valkyrie.ui.screen.webimport.standard.materialsymbols.domain.model.MaterialFontSettings.Companion.DEFAULT_OPTICAL_SIZE
-import io.github.composegears.valkyrie.ui.screen.webimport.standard.materialsymbols.domain.model.MaterialFontSettings.Companion.DEFAULT_WEIGHT
         // MaterialSymbols
-        var materialFontFill: Boolean by property(DEFAULT_FILL)
-        var materialFontWeight: Int by property(DEFAULT_WEIGHT)
-        var materialFontGrade: Int by property(DEFAULT_GRADE)
-        var materialFontOpticalSize: Float by property(DEFAULT_OPTICAL_SIZE)
+        var materialFontFill: Boolean by property(false)
+        var materialFontWeight: Int by property(400)
+        var materialFontGrade: Int by property(0)
+        var materialFontOpticalSize: Float by property(24f)

         // Lucide
-        var lucideSize: Int by property(DEFAULT_SIZE)
+        var lucideSize: Int by property(24)
         // … and so on for the remaining size properties

Alternatively, if a single source of truth is desired across the codebase, these constants could be hoisted to a shared (non-UI) constants file so the dependency direction is correct without requiring duplication.

🤖 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/service/PersistentSettings.kt`
around lines 13 - 17, PersistentSettings currently imports UI-layer constants
DEFAULT_SIZE, DEFAULT_FILL, DEFAULT_WEIGHT, DEFAULT_GRADE, and
DEFAULT_OPTICAL_SIZE from SizeSettings and MaterialFontSettings (creating a
downward dependency); replace those imports by inlining the primitive literal
values directly into PersistentSettings (or alternatively move those constants
into a shared non-UI constants object and import that instead) so the service no
longer depends on ui.screen.webimport.*; update references to DEFAULT_SIZE,
DEFAULT_FILL, DEFAULT_WEIGHT, DEFAULT_GRADE, and DEFAULT_OPTICAL_SIZE inside
PersistentSettings accordingly.
🤖 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/StandardIconViewModel.kt`:
- Line 71: The export currently relies on provider-global mutable style state
updated by provider.onStyleChanged which causes downloadIcon/downloadSvg (and
MaterialSymbolsConfigUseCase.currentFontFamily) to read a possibly-stale value;
instead modify the call path to pass the selected style explicitly (or
capture/snapshot the selected style when the user triggers export) through
StandardIconViewModel -> downloadIcon -> downloadSvg (and into
MaterialSymbolsConfigUseCase methods) so each export uses the style argument
provided rather than reading the mutable currentFontFamily; remove or avoid
relying on provider-global reads for export and use the passed-in style
parameter for all downstream logic.
- Around line 135-145: The runCatching around provider.loadFontBytes in
StandardIconViewModel is swallowing CancellationException causing a cancelled
fontLoadJob to run its onFailure branch and clear fontByteArray; change the
error handling so CancellationException is re-thrown instead of being treated as
a failure: when catching errors from provider.loadFontBytes (the
runCatching/onFailure block), detect if the throwable is a CancellationException
and rethrow it, otherwise proceed to updateSuccess and fontCache as before
(affecting fontCache[styleKey] and updateSuccess { it.copy(fontByteArray = ...)
}).

In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/StandardImportScreenUI.kt`:
- Line 58: There is a name collision between the domain model CategoryHeader and
the UI composable CategoryHeader; fix it by aliasing one import (e.g., import
io.github.composegears.valkyrie.ui.screen.webimport.common.domain.icon.CategoryHeader
as CategoryHeaderModel) and leave the composable import as-is, then update all
usages: replace type checks and references like "is CategoryHeader" and any
usages that intend the domain model with "CategoryHeaderModel", while keeping
composable invocation "CategoryHeader(...)" for the UI composable.

---

Nitpick comments:
In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/service/PersistentSettings.kt`:
- Around line 13-17: PersistentSettings currently imports UI-layer constants
DEFAULT_SIZE, DEFAULT_FILL, DEFAULT_WEIGHT, DEFAULT_GRADE, and
DEFAULT_OPTICAL_SIZE from SizeSettings and MaterialFontSettings (creating a
downward dependency); replace those imports by inlining the primitive literal
values directly into PersistentSettings (or alternatively move those constants
into a shared non-UI constants object and import that instead) so the service no
longer depends on ui.screen.webimport.*; update references to DEFAULT_SIZE,
DEFAULT_FILL, DEFAULT_WEIGHT, DEFAULT_GRADE, and DEFAULT_OPTICAL_SIZE inside
PersistentSettings accordingly.

In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/settings/InMemorySettings.kt`:
- Around line 13-16: InMemorySettings currently imports
MaterialFontSettings.Companion.DEFAULT_FILL/DEFAULT_GRADE/DEFAULT_OPTICAL_SIZE/DEFAULT_WEIGHT
from the screen domain; remove those imports and instead define the same default
constants closer to the settings layer (either as companion constants on
PersistentSettings.ValkyrieState or in a new SettingsDefaults object in the
settings package), then update InMemorySettings to reference the new
PersistentSettings.ValkyrieState (or SettingsDefaults) constants; ensure no
other UI-screen packages are referenced from the settings package so the
dependency direction is corrected.
🪄 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: 3eb7c156-7da0-4db4-a78f-386baf50b3be

📥 Commits

Reviewing files that changed from the base of the PR and between 71b52cc and 6e396d2.

📒 Files selected for processing (89)
  • sdk/compose/foundation/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/foundation/animation/RememberShimmer.kt
  • 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/StandardIconViewModel.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/data/CodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/data/RegexCssCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/CategoryInferrer.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/category/InferredCategory.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/category/WebCategory.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/Codepoint.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/FontByteArray.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/VariableFontConfig.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/GridItem.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/IconStyle.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/WebIcon.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/settings/IconSettings.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/IconSizeCustomization.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/SidePanel.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/StandardTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/WebImportScreenComponents.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/DisplayNameFormatter.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/common/util/StandardGridFiltering.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/SvgSizeCustomizer.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/MaterialSymbolsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/MaterialSymbolsViewModel.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/MaterialSymbolsConfigUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/model/Category.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/model/MaterialConfig.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/ui/MaterialFontFamilyDropdown.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/ui/MaterialTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/BootstrapImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/data/BootstrapCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/data/BootstrapRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/domain/BootstrapUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/BoxIconsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/data/BoxCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/data/BoxIconsRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/domain/BoxIconsUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/common/domain/StandardIconProvider.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/common/model/IconStyle.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/EvaImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/data/EvaCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/data/EvaRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/domain/EvaUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/FeatherImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/FontAwesomeImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeCategoriesYamlParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/domain/FontAwesomeUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/IoniconsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/domain/IoniconsIconConfigBuilder.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/domain/IoniconsUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/LucideImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/data/LucideCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/data/LucideRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/domain/LucideUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/MaterialSymbolsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/config/MaterialIconsMetadata.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/config/MaterialSymbolsConfigRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/font/MaterialFontRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/di/MaterialSymbolsModule.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/MaterialSymbolsConfigUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/model/MaterialFontSettings.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/model/MaterialIconFontFamily.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/ui/MaterialFontCustomization.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/RemixImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/data/RemixCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/data/RemixRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/domain/RemixUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/TablerImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/domain/TablerUseCase.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/CodepointGlyphTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/domain/EvaIconNameTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherIconConfigBuilderTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeCategoriesYamlParserTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/domain/IoniconsIconConfigBuilderTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerSvgPathResolverTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/domain/TablerIconConfigBuilderTest.kt
💤 Files with no reviewable changes (10)
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/common/model/IconStyle.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/model/Category.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/MaterialSymbolsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/model/MaterialConfig.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/common/domain/StandardIconProvider.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/MaterialSymbolsConfigUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/ui/MaterialTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/ui/MaterialFontFamilyDropdown.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/WebImportScreenComponents.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/MaterialSymbolsViewModel.kt
✅ Files skipped from review due to trivial changes (53)
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/data/BoxCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/data/LucideCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/domain/FontAwesomeUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/IconStyle.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/RemixImportScreen.kt
  • sdk/compose/foundation/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/foundation/animation/RememberShimmer.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/IoniconsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/CategoryInferrer.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/data/RemixCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/domain/RemixUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/SidePanel.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/domain/icon/GridItem.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherIconConfigBuilderTest.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/data/BootstrapRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/WebIcon.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/data/EvaRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/EvaImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/IconSizeCustomization.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/domain/IoniconsIconConfigBuilderTest.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/standard/tabler/TablerImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/FontByteArray.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/domain/EvaIconNameTest.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/domain/EvaUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/BootstrapImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/FeatherImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/domain/TablerUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/FontAwesomeImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/domain/BootstrapUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/data/BoxIconsRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/ui/MaterialFontCustomization.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/domain/BoxIconsUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/data/EvaCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/data/LucideRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerCodepointParser.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerSvgPathResolverTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/CodepointGlyphTest.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherUseCase.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/standard/lucide/LucideImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/StandardGridFiltering.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeCategoriesYamlParserTest.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/config/MaterialIconsMetadata.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/model/MaterialIconFontFamily.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/domain/IoniconsIconConfigBuilder.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/domain/LucideUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/data/BootstrapCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/SvgSizeCustomizer.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/DisplayNameFormatter.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/data/RemixRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/di/MaterialSymbolsModule.kt
🚧 Files skipped from review as they are similar to previous changes (15)
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/Codepoint.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/config/MaterialSymbolsConfigRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/model/MaterialFontSettings.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/StandardTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/MaterialSymbolsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/settings/IconSettings.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/domain/TablerIconConfigBuilderTest.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/standard/fontawesome/data/FontAwesomeCategoriesYamlParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/BoxIconsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/MaterialSymbolsConfigUseCase.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/icon/StandardIcon.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/font/MaterialFontRepository.kt

@egorikftp egorikftp force-pushed the feature/idea/material-import-to-standart branch from 6e396d2 to cc32418 Compare May 3, 2026 15: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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/StandardIconViewModel.kt (1)

243-248: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

prefetchStyleFonts swallows CancellationException, preventing prompt cancellation of prefetch jobs.

runCatching at line 244 catches every Throwable, including CancellationException. When prefetchJob.cancel() is called (line 237 on the next prefetchStyleFonts call), the cancelled coroutine throws at each loadFontBytes suspension point, but that exception is silently discarded and the forEach continues iterating over all remaining styles — triggering unnecessary network requests.

The identical bug was just fixed in downloadFont (lines 145-147). Apply the same fix here:

🐛 Proposed fix
                    if (fontCache[style.id] == null) {
                        runCatching {
                            provider.loadFontBytes(style)
                        }.onSuccess { bytes ->
                            fontCache[style.id] = bytes
+                       }.onFailure { error ->
+                           if (error is CancellationException) throw error
                        }
                    }
🤖 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/common/StandardIconViewModel.kt`
around lines 243 - 248, The prefetchStyleFonts implementation uses runCatching
around provider.loadFontBytes which swallows CancellationException and prevents
prompt cancellation; change the error handling so CancellationException is
rethrown immediately (same approach used in downloadFont): call
provider.loadFontBytes(style) inside a try block and in the catch rethrow if the
caught exception is a CancellationException, otherwise handle/log/store the
error and only then update fontCache[style.id] on success (refer to
prefetchStyleFonts, provider.loadFontBytes, fontCache and remove the runCatching
that swallows CancellationException).
🧹 Nitpick comments (1)
sdk/compose/foundation/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/foundation/animation/RememberShimmer.kt (1)

52-54: 💤 Low value

remember(gradientWidthFactor) is correct, but consider documenting why translateState is intentionally omitted as a key.

translateState is captured in the lambda but not included as a key. This is safe because transition.animateFloat(...) is itself internally remember-ed by rememberInfiniteTransition and always returns the same State<Float> object across recompositions—so the captured reference in the closure is always the live, up-to-date state. If durationMillis/easing change, those updates propagate through the stable State<Float> without requiring a new Shimmer instance.

However, this invariant is non-obvious and easy to break if someone later replaces rememberInfiniteTransition/animateFloat with an implementation that returns a new state object on each recomposition. A short KDoc note would prevent a future maintainer from "fixing" this by adding translateState as a key (which would be redundant but harmless) or—worse—assuming the omission is a bug.

📝 Suggested documentation
-    return remember(gradientWidthFactor) {
+    // translateState is intentionally not a key: rememberInfiniteTransition / animateFloat
+    // always return the same State<Float> object across recompositions, so the captured
+    // reference remains live. Only gradientWidthFactor is a direct Shimmer field that
+    // requires object recreation when it changes.
+    return remember(gradientWidthFactor) {
         Shimmer(translateState, gradientWidthFactor)
     }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@sdk/compose/foundation/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/foundation/animation/RememberShimmer.kt`
around lines 52 - 54, Add a brief KDoc above the remember call (or above the
RememberShimmer function) explaining that translateState is intentionally
omitted from the remember keys because the State<Float> returned by
rememberInfiniteTransition.animateFloat is stable and always the same live State
instance across recompositions, so the closure can safely capture it; mention
that durationMillis/easing changes propagate via that stable State and warn
maintainers not to add translateState as a key or replace the animateFloat
implementation with one that returns new State objects without updating this
doc.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/StandardIconViewModel.kt`:
- Around line 243-248: The prefetchStyleFonts implementation uses runCatching
around provider.loadFontBytes which swallows CancellationException and prevents
prompt cancellation; change the error handling so CancellationException is
rethrown immediately (same approach used in downloadFont): call
provider.loadFontBytes(style) inside a try block and in the catch rethrow if the
caught exception is a CancellationException, otherwise handle/log/store the
error and only then update fontCache[style.id] on success (refer to
prefetchStyleFonts, provider.loadFontBytes, fontCache and remove the runCatching
that swallows CancellationException).

---

Nitpick comments:
In
`@sdk/compose/foundation/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/foundation/animation/RememberShimmer.kt`:
- Around line 52-54: Add a brief KDoc above the remember call (or above the
RememberShimmer function) explaining that translateState is intentionally
omitted from the remember keys because the State<Float> returned by
rememberInfiniteTransition.animateFloat is stable and always the same live State
instance across recompositions, so the closure can safely capture it; mention
that durationMillis/easing changes propagate via that stable State and warn
maintainers not to add translateState as a key or replace the animateFloat
implementation with one that returns new State objects without updating this
doc.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 7f6f46f0-3e41-4668-bb56-56386165dc5a

📥 Commits

Reviewing files that changed from the base of the PR and between 6e396d2 and cc32418.

📒 Files selected for processing (91)
  • sdk/compose/foundation/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/foundation/animation/RememberShimmer.kt
  • 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/StandardIconViewModel.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/data/CodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/data/RegexCssCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/CategoryInferrer.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/category/InferredCategory.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/category/WebCategory.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/Codepoint.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/FontByteArray.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/VariableFontConfig.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/GridItem.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/IconStyle.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/WebIcon.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/settings/IconSettings.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/CategoryHeaderItem.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/IconSizeCustomization.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/SidePanel.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/StandardTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/WebImportScreenComponents.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/DisplayNameFormatter.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/common/util/StandardGridFiltering.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/SvgSizeCustomizer.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/MaterialSymbolsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/MaterialSymbolsViewModel.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/di/MaterialSymbolsModule.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/MaterialSymbolsConfigUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/model/Category.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/model/MaterialConfig.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/ui/MaterialFontFamilyDropdown.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/ui/MaterialTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/BootstrapImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/data/BootstrapCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/data/BootstrapRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/domain/BootstrapUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/BoxIconsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/data/BoxCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/data/BoxIconsRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/domain/BoxIconsUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/common/domain/StandardIconProvider.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/common/model/IconStyle.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/EvaImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/data/EvaCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/data/EvaRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/domain/EvaUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/FeatherImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/FontAwesomeImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeCategoriesYamlParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/domain/FontAwesomeUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/IoniconsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/domain/IoniconsIconConfigBuilder.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/domain/IoniconsUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/LucideImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/data/LucideCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/data/LucideRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/domain/LucideUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/MaterialSymbolsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/config/MaterialIconsMetadata.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/config/MaterialSymbolsConfigRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/font/MaterialFontRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/di/MaterialSymbolsModule.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/MaterialSymbolsConfigUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/model/MaterialFontSettings.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/model/MaterialIconFontFamily.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/ui/MaterialFontCustomization.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/RemixImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/data/RemixCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/data/RemixRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/domain/RemixUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/TablerImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/domain/TablerUseCase.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/CodepointGlyphTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/domain/EvaIconNameTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherIconConfigBuilderTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeCategoriesYamlParserTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/domain/IoniconsIconConfigBuilderTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerSvgPathResolverTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/domain/TablerIconConfigBuilderTest.kt
💤 Files with no reviewable changes (11)
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/common/model/IconStyle.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/di/MaterialSymbolsModule.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/model/MaterialConfig.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/common/domain/StandardIconProvider.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/ui/MaterialFontFamilyDropdown.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/WebImportScreenComponents.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/MaterialSymbolsConfigUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/MaterialSymbolsViewModel.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/domain/model/Category.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/ui/MaterialTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/MaterialSymbolsImportScreen.kt
✅ Files skipped from review due to trivial changes (49)
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/data/RemixCodepointParser.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherIconConfigBuilderTest.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/IconSizeCustomization.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/IconStyle.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/common/util/DisplayNameFormatter.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/LucideImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/data/BoxCodepointParser.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeCategoriesYamlParserTest.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerSvgPathResolverTest.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/BootstrapImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/StandardTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/TablerImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/data/CodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/data/BootstrapRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/bootstrap/data/BootstrapCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/data/EvaCodepointParser.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/category/WebCategory.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/domain/TablerIconConfigBuilderTest.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/model/MaterialIconFontFamily.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/BoxIconsImportScreen.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/domain/EvaIconNameTest.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/data/RemixRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeCategoriesYamlParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/FontAwesomeImportScreen.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/standard/boxicons/data/BoxIconsRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/remix/RemixImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/config/MaterialIconsMetadata.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/data/EvaRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/service/PersistentSettings.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/domain/IoniconsIconConfigBuilder.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/FeatherImportScreen.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/standard/materialsymbols/data/font/MaterialFontRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/FontByteArray.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/domain/IoniconsIconConfigBuilderTest.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ionicons/IoniconsImportScreen.kt
  • tools/idea-plugin/src/test/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/CodepointGlyphTest.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/tabler/data/TablerRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/Codepoint.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/eva/EvaImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/lucide/data/LucideCodepointParser.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/standard/materialsymbols/di/MaterialSymbolsModule.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/fontawesome/data/FontAwesomeRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/CategoryInferrer.kt
🚧 Files skipped from review as they are similar to previous changes (19)
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/data/RegexCssCodepointParser.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/ui/SidePanel.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/domain/model/MaterialFontSettings.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/data/config/MaterialSymbolsConfigRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/GridItem.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/util/SvgSizeCustomizer.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/font/VariableFontConfig.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/feather/domain/FeatherUseCase.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/standard/materialsymbols/ui/MaterialFontCustomization.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/materialsymbols/MaterialSymbolsImportScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/domain/BoxIconsUseCase.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/util/StandardGridFiltering.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/settings/IconSettings.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/common/domain/icon/WebIcon.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/standard/materialsymbols/domain/MaterialSymbolsConfigUseCase.kt

@egorikftp egorikftp merged commit 2127bda into main May 4, 2026
3 checks passed
@egorikftp egorikftp deleted the feature/idea/material-import-to-standart branch May 4, 2026 10:41
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