Skip to content

[Web Import] Add Box Icons Import#907

Merged
egorikftp merged 3 commits into
mainfrom
feature/box-icons-import
Feb 27, 2026
Merged

[Web Import] Add Box Icons Import#907
egorikftp merged 3 commits into
mainfrom
feature/box-icons-import

Conversation

@t-regbs

@t-regbs t-regbs commented Feb 26, 2026

Copy link
Copy Markdown
Collaborator

Adds Box Icon set to web import feature

Screen.Recording.2026-02-26.at.19.46.08.mov

📝 Changelog

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

@coderabbitai

coderabbitai Bot commented Feb 26, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between fd68e6e and a195811.

📒 Files selected for processing (2)
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/model/StandardIcon.kt
  • tools/idea-plugin/src/main/resources/messages/Valkyrie.properties
🚧 Files skipped from review as they are similar to previous changes (2)
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/model/StandardIcon.kt
  • tools/idea-plugin/src/main/resources/messages/Valkyrie.properties

Walkthrough

Adds BoxIcons support across the SDK and IDE plugin. Introduces a new BoxLogo colored ImageVector in the compose icons library. Adds BoxIconsRepository, BoxIconsUseCase, and BoxIconsModule for loading fonts, codepoints and SVGs. Adds BoxIconsImportScreen and integrates it into the web import flow and selector UI. Extends the standard import model and UI with IconStyle, exportName and style fields, and persists a boxiconsSize setting. Localization entries for Box Icons were added.

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 3.70% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive The description provides context about the change (adding Box Icons to web import) and includes the changelog template with unchecked boxes, but the changelog items remain unchecked despite user-facing changes being introduced. Check the IntelliJ Plugin changelog checkbox since user-facing changes were made to the plugin, and verify whether CLI and Gradle Plugin changelogs need updates.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title '[Web Import] Add Box Icons Import' clearly and concisely summarizes the main change: adding Box Icons support to the web import feature.

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

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/box-icons-import

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 (1)
tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/data/BoxIconsRepository.kt (1)

17-21: Pin the BoxIcons version for stability.

Using @latest in the unpkg URL means the application will automatically pull new BoxIcons releases, which could introduce breaking changes (e.g., renamed icons, changed CSS format, or modified codepoint mappings) without warning.

Pin to version 2.1.4 (the current stable version) for predictable behavior, similar to how package.json dependencies are typically locked.

♻️ Suggested change
 companion object {
-    private const val UNPKG_BASE = "https://unpkg.com/boxicons@latest"
+    private const val UNPKG_BASE = "https://unpkg.com/boxicons@2.1.4"
     private const val CSS_URL = "$UNPKG_BASE/css/boxicons.min.css"
     private const val FONT_WOFF2_URL = "$UNPKG_BASE/fonts/boxicons.woff2"
 }
🤖 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/standard/boxicons/data/BoxIconsRepository.kt`
around lines 17 - 21, Update the hardcoded Unpkg URLs in BoxIconsRepository's
companion object to pin the BoxIcons package to v2.1.4 instead of using `@latest`:
change the UNPKG_BASE, and consequently CSS_URL and FONT_WOFF2_URL, to reference
"@2.1.4" so the companion object constants UNPKG_BASE, CSS_URL, and
FONT_WOFF2_URL always point to the fixed 2.1.4 release for stability.
🤖 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/standard/model/StandardIcon.kt`:
- Around line 10-14: The KDoc is ambiguous about which field controls generated
symbol/file names—unify it by making exportName the sole canonical naming field:
remove any file-naming/generation responsibility text from the name property's
KDoc and update exportName's KDoc to clearly state it is "The canonical name
used for generated symbol/file names" (and that name is only the human/display
name), referencing the properties exportName and name in StandardIcon to locate
the change; ensure no other comment duplicates generation semantics.
- Line 19: The default for exportName should be the raw API identifier instead
of the UI-transformed displayName; update the StandardIcon constructor so
exportName defaults to name (not displayName) to preserve canonical symbol
names, and ensure call sites in BootstrapUseCase, LucideUseCase, and
RemixUseCase continue to work without changes by relying on the new default;
locate the StandardIcon declaration and change the parameter default from
displayName to name while leaving displayName assigned via name.toDisplayName()
as before.

In `@tools/idea-plugin/src/main/resources/messages/Valkyrie.properties`:
- Around line 125-126: The properties values for the Box Icons strings are
inconsistent; update the property value(s) that currently use "BoxIcons" to
match "Box Icons" (or vice versa if you prefer the concatenated form) so both
web.import.selector.boxicons.title and the corresponding import title key on
line 144 use the exact same casing/spacing; ensure
web.import.selector.boxicons.description remains aligned with the chosen form
and verify both selector and import title keys use the identical label across
the file.

---

Nitpick comments:
In
`@tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/data/BoxIconsRepository.kt`:
- Around line 17-21: Update the hardcoded Unpkg URLs in BoxIconsRepository's
companion object to pin the BoxIcons package to v2.1.4 instead of using `@latest`:
change the UNPKG_BASE, and consequently CSS_URL and FONT_WOFF2_URL, to reference
"@2.1.4" so the companion object constants UNPKG_BASE, CSS_URL, and
FONT_WOFF2_URL always point to the fixed 2.1.4 release for stability.

ℹ️ Review info

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 33bba42 and fd68e6e.

📒 Files selected for processing (20)
  • sdk/compose/icons/api/icons.api
  • sdk/compose/icons/api/icons.klib.api
  • sdk/compose/icons/src/commonMain/kotlin/io/github/composegears/valkyrie/sdk/compose/icons/colored/BoxLogo.kt
  • tools/idea-plugin/CHANGELOG.md
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/service/PersistentSettings.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/settings/InMemorySettings.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/WebImportFlow.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/WebImportSelectorScreen.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/StandardIconViewModel.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/StandardImportScreenUI.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/BoxIconsRepository.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/boxicons/di/BoxIconsModule.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/model/IconStyle.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/model/StandardIcon.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/model/StandardIconConfig.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/ui/StandardTopActions.kt
  • tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/standard/util/StandardGridFiltering.kt
  • tools/idea-plugin/src/main/resources/messages/Valkyrie.properties

Comment thread tools/idea-plugin/src/main/resources/messages/Valkyrie.properties

@egorikftp egorikftp left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks! 🚀

@egorikftp egorikftp merged commit 6f4587c into main Feb 27, 2026
3 checks passed
@egorikftp egorikftp deleted the feature/box-icons-import branch February 27, 2026 08:08
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