diff --git a/tools/idea-plugin/CHANGELOG.md b/tools/idea-plugin/CHANGELOG.md index 3cbe0d1bc..489ad5c89 100644 --- a/tools/idea-plugin/CHANGELOG.md +++ b/tools/idea-plugin/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Changed + +- [IconPack] Replace code snippet tooltip on Package and IconPack name fields with a plain text description tooltip + ### Fixed - [Web Import] Fix side panel closing when clicking inside the panel content area @@ -22,8 +26,8 @@ - [Web Import] Add `Tabler` icons provider - [Web Import] Add `Eva` icons provider - [Settings] Add "Gutter area" toggle to control visibility of ImageVector gutter icons in the editor -- [Settings] Add "Suppress unused receiver warning" setting to generate `@Suppress("UnusedReceiverParameter")` annotation on - ImageVector extension properties when an icon pack receiver is used (e.g. `ValkyrieIcons`) +- [Settings] Add "Suppress unused receiver warning" setting to generate `@Suppress("UnusedReceiverParameter")` + annotation on ImageVector extension properties when an icon pack receiver is used (e.g. `ValkyrieIcons`) ### Changed diff --git a/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/jewel/settings/LabelTooltipRow.kt b/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/jewel/settings/LabelTooltipRow.kt new file mode 100644 index 000000000..966dbbed0 --- /dev/null +++ b/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/jewel/settings/LabelTooltipRow.kt @@ -0,0 +1,54 @@ +package io.github.composegears.valkyrie.jewel.settings + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.layout.Column +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import io.github.composegears.valkyrie.jewel.tooling.PreviewTheme +import io.github.composegears.valkyrie.jewel.tooling.lorem +import io.github.composegears.valkyrie.sdk.compose.foundation.layout.CenterVerticalRow +import io.github.composegears.valkyrie.sdk.compose.foundation.layout.Spacer +import io.github.composegears.valkyrie.util.stringResource +import org.jetbrains.annotations.Nls +import org.jetbrains.compose.ui.tooling.preview.Preview +import org.jetbrains.jewel.ui.component.Icon +import org.jetbrains.jewel.ui.component.Text +import org.jetbrains.jewel.ui.component.Tooltip +import org.jetbrains.jewel.ui.icons.AllIconsKeys + +@OptIn(ExperimentalFoundationApi::class) +@Composable +fun LabelTooltipRow( + text: String, + @Nls tooltip: String, + modifier: Modifier = Modifier, +) { + CenterVerticalRow(modifier = modifier) { + Text(text) + Spacer(8.dp) + Tooltip(tooltip = { Text(tooltip) }) { + Icon( + key = AllIconsKeys.General.ContextHelp, + contentDescription = stringResource("accessibility.help"), + ) + } + } +} + +@Preview +@Composable +private fun LabelTooltipRowPreview() = PreviewTheme(alignment = Alignment.Center) { + Column { + LabelTooltipRow( + text = "Package", + tooltip = lorem(10), + ) + Spacer(16.dp) + LabelTooltipRow( + text = "IconPack name", + tooltip = lorem(10), + ) + } +} diff --git a/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/mode/iconpack/common/CodeTooltipHeader.kt b/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/mode/iconpack/common/CodeTooltipHeader.kt deleted file mode 100644 index eb43a02b0..000000000 --- a/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/mode/iconpack/common/CodeTooltipHeader.kt +++ /dev/null @@ -1,111 +0,0 @@ -package io.github.composegears.valkyrie.ui.screen.mode.iconpack.common - -import androidx.compose.foundation.layout.Row -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import io.github.composegears.valkyrie.jewel.highlight.CodeTooltip -import io.github.composegears.valkyrie.jewel.highlight.HighlightedCode -import io.github.composegears.valkyrie.jewel.highlight.rememberCodeHighlight -import io.github.composegears.valkyrie.jewel.tooling.ProjectPreviewTheme -import io.github.composegears.valkyrie.sdk.compose.foundation.layout.CenterVerticalRow -import io.github.composegears.valkyrie.sdk.compose.foundation.layout.Spacer -import io.github.composegears.valkyrie.util.stringResource -import org.jetbrains.compose.ui.tooling.preview.Preview -import org.jetbrains.jewel.ui.component.Icon -import org.jetbrains.jewel.ui.component.Text -import org.jetbrains.jewel.ui.icons.AllIconsKeys - -@Composable -fun CodeTooltipHeader( - text: String, - code: HighlightedCode, - modifier: Modifier = Modifier, -) { - CenterVerticalRow(modifier = modifier) { - Text(text) - Spacer(8.dp) - CodeTooltip( - code = code, - content = { - Icon( - key = AllIconsKeys.General.ContextHelp, - contentDescription = stringResource("accessibility.help"), - ) - }, - ) - } -} - -@Composable -fun buildPackPackageHighlight( - packageName: String, - iconPackName: String, -): HighlightedCode { - val packagePlaceholder = packageName.ifEmpty { "com.test.iconpack" } - val iconPackPlaceholder = iconPackName.ifEmpty { "YourPackName" } - - val codeBlock = """ - package $packagePlaceholder - - val $iconPackPlaceholder.MyIcon: ImageVector - get() { - if (_MyIcon != null) { - return _MyIcon!! - } - } - ... - """.trimIndent() - - return rememberCodeHighlight( - text = codeBlock, - style = { - underline(packagePlaceholder) - }, - ) -} - -@Composable -fun buildIconPackHighlight(iconPackName: String): HighlightedCode { - val iconPackPlaceholder = iconPackName.ifEmpty { "YourPackName" } - val codeBlock = """ - object $iconPackPlaceholder - - val $iconPackPlaceholder.MyIcon: ImageVector - get() { - if (_MyIcon != null) { - return _MyIcon!! - } - } - ... - """.trimIndent() - - return rememberCodeHighlight( - text = codeBlock, - style = { - underline(iconPackPlaceholder) - }, - ) -} - -@Preview -@Composable -private fun CodeTooltipHeaderPreview() = ProjectPreviewTheme(alignment = Alignment.Center) { - Row { - CodeTooltipHeader( - text = "Package", - code = buildPackPackageHighlight( - packageName = "com.example.iconpack", - iconPackName = "MyIconPack", - ), - ) - Spacer(16.dp) - CodeTooltipHeader( - text = "IconPack", - code = buildIconPackHighlight( - iconPackName = "MyIconPack", - ), - ) - } -} diff --git a/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/mode/iconpack/common/IconPackEditor.kt b/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/mode/iconpack/common/IconPackEditor.kt index ebd981e33..a6dd35920 100644 --- a/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/mode/iconpack/common/IconPackEditor.kt +++ b/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/mode/iconpack/common/IconPackEditor.kt @@ -14,6 +14,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import io.github.composegears.valkyrie.jewel.button.OutlineIconButton +import io.github.composegears.valkyrie.jewel.settings.LabelTooltipRow import io.github.composegears.valkyrie.jewel.textarea.TextArea import io.github.composegears.valkyrie.jewel.textfield.validation.ValidationResult import io.github.composegears.valkyrie.jewel.tooling.ProjectPreviewTheme @@ -66,12 +67,9 @@ fun IconPackEditor( Spacer(32.dp) } - CodeTooltipHeader( + LabelTooltipRow( text = stringResource("iconpack.editor.package"), - code = buildPackPackageHighlight( - packageName = packageName.text, - iconPackName = iconPackName.text, - ), + tooltip = stringResource("iconpack.editor.package.tooltip"), ) Spacer(8.dp) PackageTextField( @@ -82,9 +80,9 @@ fun IconPackEditor( enabled = packageName.enabled, ) Spacer(32.dp) - CodeTooltipHeader( - text = stringResource("iconpack.editor.iconpack.name"), - code = buildIconPackHighlight(iconPackName.text), + LabelTooltipRow( + text = stringResource("iconpack.editor.iconpack"), + tooltip = stringResource("iconpack.editor.iconpack.tooltip"), ) Spacer(8.dp) IconPackTextField( diff --git a/tools/idea-plugin/src/main/resources/messages/Valkyrie.properties b/tools/idea-plugin/src/main/resources/messages/Valkyrie.properties index 2a2def404..483177469 100644 --- a/tools/idea-plugin/src/main/resources/messages/Valkyrie.properties +++ b/tools/idea-plugin/src/main/resources/messages/Valkyrie.properties @@ -45,7 +45,9 @@ edit.action.header=Name edit.action.textfield.error=Can't be empty code.preview.title=Code Preview iconpack.editor.package=Package -iconpack.editor.iconpack.name=IconPack name +iconpack.editor.package.tooltip=Used as a package declaration in generated icon files +iconpack.editor.iconpack=IconPack +iconpack.editor.iconpack.tooltip=Top-level object that groups all generated icons iconpack.editor.add.nested.pack=Add nested pack iconpack.newpack.title=New Pack iconpack.newpack.choose.directory.dnd=Drag \\& Drop destination folder\nor browse