Wizard: use new icons in UI

This commit is contained in:
Ilya Kirillov
2020-06-18 16:00:43 +03:00
parent 7df0dd5032
commit bfedeed2c1
21 changed files with 156 additions and 38 deletions
@@ -61,4 +61,22 @@ public interface KotlinIcons {
Icon JS = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/kotlin_js.svg");
Icon MPP = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/kotlin_multiplatform_project.svg");
Icon NATIVE = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/kotlin_native.svg");
interface Wizard {
Icon JVM = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/jvm.svg");
Icon JS = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/js.svg");
Icon CONSOLE = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/console.svg");
Icon MULTIPLATFORM = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/multiplatform.svg");
Icon MULTIPLATFORM_LIBRARY = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/multiplatformLibrary.svg");
Icon MULTIPLATFORM_MOBILE = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/multiplatformMobile.svg");
Icon MULTIPLATFORM_MOBILE_LIBRARY = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/multiplatformMobileLibrary.svg");
Icon NATIVE = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/native.svg");
Icon WEB = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/ppWeb.svg");
Icon ANDROID = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/android.svg");
Icon IOS = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/ios.svg");
Icon LINUX = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/linux.svg");
Icon MAC_OS = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/macOS.svg");
Icon WINDOWS = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/windows.svg");
Icon NODE_JS = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/wizard/nodejs.svg");
}
}
@@ -1,23 +1,21 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.firstStep
import com.intellij.openapi.util.SystemInfo
import com.intellij.ui.ScrollPaneFactory
import com.intellij.ui.components.JBLabel
import com.intellij.util.ui.JBUI
import com.intellij.util.ui.UIUtil
import org.jetbrains.kotlin.idea.KotlinIcons
import org.jetbrains.kotlin.tools.projectWizard.core.Context
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.DropDownSettingType
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.SettingReference
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.reference
import org.jetbrains.kotlin.tools.projectWizard.plugins.projectTemplates.ProjectTemplatesPlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.projectTemplates.applyProjectTemplate
import org.jetbrains.kotlin.tools.projectWizard.projectTemplates.ProjectTemplate
import org.jetbrains.kotlin.tools.projectWizard.projectTemplates.*
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.*
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.SettingComponent
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.ValidationIndicator
import java.awt.Dimension
import javax.swing.Icon
import javax.swing.JComponent
import javax.swing.SwingConstants
class ProjectTemplateSettingComponent(
context: Context
@@ -32,7 +30,7 @@ class ProjectTemplateSettingComponent(
private val list = ImmutableSingleSelectableListWithIcon(
setting.type.values,
renderValue = { value ->
icon = value.projectKind.icon
icon = value.icon
append(value.title)
},
onValueSelected = { value = it }
@@ -75,6 +73,19 @@ class ProjectTemplateSettingComponent(
}
}
private val ProjectTemplate.icon: Icon
get() = when (this) {
BackendApplicationProjectTemplate -> KotlinIcons.Wizard.JVM
MultiplatformApplicationProjectTemplate -> KotlinIcons.Wizard.MULTIPLATFORM
ConsoleApplicationProjectTemplate -> KotlinIcons.Wizard.CONSOLE
MultiplatformLibraryProjectTemplate -> KotlinIcons.Wizard.MULTIPLATFORM_LIBRARY
FullStackWebApplicationProjectTemplate -> KotlinIcons.Wizard.WEB
NativeApplicationProjectTemplate -> KotlinIcons.Wizard.NATIVE
FrontendApplicationProjectTemplate -> KotlinIcons.Wizard.JS
MultiplatformMobileApplicationProjectTemplate -> KotlinIcons.Wizard.MULTIPLATFORM_MOBILE
MultiplatformMobileLibraryProjectTemplate -> KotlinIcons.Wizard.MULTIPLATFORM_MOBILE_LIBRARY
}
class TemplateDescriptionComponent : Component() {
private val descriptionLabel = CommentLabel().apply {
preferredSize = Dimension(preferredSize.width, 45)
@@ -67,8 +67,8 @@ class CreateModuleOrTargetPopup private constructor(
targetConfiguratorGroup.subItems.filter { it.needToShow() }
) {
override fun getIconFor(value: DisplayableSettingItem): Icon? = when (value) {
is DisplayableTargetConfiguratorGroup -> value.moduleType.icon
is ModuleConfigurator -> value.moduleType?.icon ?: AllIcons.Nodes.Module
is DisplayableTargetConfiguratorGroup -> value.icon
is ModuleConfigurator -> value.icon ?: AllIcons.Nodes.Module
else -> null
}
@@ -1,6 +1,13 @@
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep.modulesEditor
import org.jetbrains.kotlin.idea.KotlinIcons
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
@@ -8,6 +15,7 @@ object TargetConfigurationGroups {
val JS = FinalTargetConfiguratorGroup(
ModuleType.js.projectTypeName,
ModuleType.js,
KotlinIcons.Wizard.JS,
listOf(
JsBrowserTargetConfigurator,
JsNodeTargetConfigurator
@@ -18,6 +26,7 @@ object TargetConfigurationGroups {
val LINUX = FinalTargetConfiguratorGroup(
KotlinNewProjectWizardBundle.message("module.configuration.group.linux"),
ModuleType.native,
KotlinIcons.Wizard.LINUX,
listOf(
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.linuxX64),
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.linuxArm32Hfp),
@@ -29,6 +38,7 @@ object TargetConfigurationGroups {
val WINDOWS = FinalTargetConfiguratorGroup(
KotlinNewProjectWizardBundle.message("module.configuration.group.windows.mingw"),
ModuleType.native,
KotlinIcons.Wizard.WINDOWS,
listOf(
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.mingwX64),
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.mingwX86)
@@ -38,6 +48,7 @@ object TargetConfigurationGroups {
val MAC = FinalTargetConfiguratorGroup(
KotlinNewProjectWizardBundle.message("module.configuration.group.macos"),
ModuleType.native,
KotlinIcons.Wizard.MAC_OS,
listOf(
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.macosX64)
)
@@ -46,6 +57,7 @@ object TargetConfigurationGroups {
val IOS = FinalTargetConfiguratorGroup(
KotlinNewProjectWizardBundle.message("module.configuration.group.ios"),
ModuleType.native,
KotlinIcons.Wizard.IOS,
listOf(
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.iosArm32),
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.iosArm64),
@@ -56,6 +68,7 @@ object TargetConfigurationGroups {
val ANDROID_NATIVE = FinalTargetConfiguratorGroup(
KotlinNewProjectWizardBundle.message("module.configuration.group.android.native"),
ModuleType.native,
KotlinIcons.Wizard.ANDROID,
listOf(
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.androidNativeArm64),
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.androidNativeArm32)
@@ -1,13 +1,21 @@
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep.modulesEditor
import org.jetbrains.annotations.Nls
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.icon
import javax.swing.Icon
interface TargetConfiguratorGroup
interface DisplayableTargetConfiguratorGroup : TargetConfiguratorGroup, DisplayableSettingItem {
val moduleType: ModuleType
val icon: Icon
}
interface TargetConfiguratorGroupWithSubItems : TargetConfiguratorGroup {
@@ -18,11 +26,14 @@ data class StepTargetConfiguratorGroup(
@Nls override val text: String,
override val moduleType: ModuleType,
override val subItems: List<DisplayableSettingItem>
) : DisplayableTargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems
) : DisplayableTargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems {
override val icon: Icon get() = moduleType.icon
}
data class FinalTargetConfiguratorGroup(
@Nls override val text: String,
override val moduleType: ModuleType,
override val icon: Icon,
override val subItems: List<DisplayableSettingItem>
) : DisplayableTargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems
@@ -17,9 +17,7 @@ import com.intellij.util.ui.components.BorderLayoutPanel
import org.jetbrains.annotations.Nls
import org.jetbrains.kotlin.idea.KotlinIcons
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.ModuleConfigurator
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.SimpleTargetConfigurator
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.TargetConfigurator
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
@@ -70,46 +68,44 @@ fun ValidationResult.ValidationError.asHtml() = when (messages.size) {
val ModuleType.icon: Icon
get() = when (this) {
ModuleType.jvm -> KotlinIcons.SMALL_LOGO
ModuleType.js -> KotlinIcons.JS
ModuleType.native -> KotlinIcons.NATIVE
ModuleType.jvm -> KotlinIcons.Wizard.JVM
ModuleType.js -> KotlinIcons.Wizard.JS
ModuleType.native -> KotlinIcons.Wizard.NATIVE
ModuleType.common -> KotlinIcons.SMALL_LOGO
ModuleType.android -> KotlinIcons.SMALL_LOGO
ModuleType.android -> KotlinIcons.Wizard.ANDROID
}
val Module.icon: Icon
get() = when (kind) {
ModuleKind.target -> (configurator as TargetConfigurator).moduleType.icon
ModuleKind.multiplatform -> AllIcons.Nodes.Module
ModuleKind.singleplatformJs -> KotlinIcons.JS
ModuleKind.singleplatformJvm -> AllIcons.Nodes.Module
ModuleKind.singleplatformAndroid -> AllIcons.Nodes.Module
}
val ProjectKind.icon: Icon
get() = when (this) {
ProjectKind.Singleplatform -> KotlinIcons.SMALL_LOGO
ProjectKind.Multiplatform -> KotlinIcons.MPP
ProjectKind.Android -> KotlinIcons.SMALL_LOGO
ProjectKind.Js -> KotlinIcons.JS
}
get() = configurator.icon
val ModuleSubType.icon: Icon
get() = moduleType.icon
get() = when (this) {
ModuleSubType.jvm -> KotlinIcons.Wizard.JVM
ModuleSubType.js -> KotlinIcons.Wizard.JS
ModuleSubType.android, ModuleSubType.androidNativeArm32, ModuleSubType.androidNativeArm64 -> KotlinIcons.Wizard.ANDROID
ModuleSubType.iosArm32, ModuleSubType.iosArm64, ModuleSubType.iosX64 -> KotlinIcons.Wizard.IOS
ModuleSubType.linuxArm32Hfp, ModuleSubType.linuxMips32, ModuleSubType.linuxMipsel32, ModuleSubType.linuxX64 ->
KotlinIcons.Wizard.LINUX
ModuleSubType.macosX64 -> KotlinIcons.Wizard.MAC_OS
ModuleSubType.mingwX64, ModuleSubType.mingwX86 -> KotlinIcons.Wizard.WINDOWS
ModuleSubType.common -> KotlinIcons.SMALL_LOGO
}
val ModuleKind.icon: Icon
get() = when (this) {
ModuleKind.multiplatform -> KotlinIcons.MPP
ModuleKind.singleplatformJs -> KotlinIcons.JS
ModuleKind.singleplatformJvm -> AllIcons.Nodes.Module
ModuleKind.singleplatformJs -> KotlinIcons.Wizard.JS
ModuleKind.singleplatformJvm -> KotlinIcons.Wizard.JVM
ModuleKind.target -> AllIcons.Nodes.Module
ModuleKind.singleplatformAndroid -> AllIcons.Nodes.Module
ModuleKind.singleplatformAndroid -> KotlinIcons.Wizard.ANDROID
}
val ModuleConfigurator.icon: Icon
get() = when (this) {
is JsBrowserTargetConfigurator -> KotlinIcons.Wizard.WEB
is JsNodeTargetConfigurator -> KotlinIcons.Wizard.NODE_JS
is IOSSinglePlatformModuleConfigurator -> KotlinIcons.Wizard.IOS
is SimpleTargetConfigurator -> moduleSubType.icon
is TargetConfigurator -> moduleType.icon
else -> moduleKind.icon
@@ -0,0 +1 @@
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><rect id="frame" width="16" height="16" fill="none"/><path d="M5.768 6.429A5.984 5.984 0 0 1 8 6c.787 0 1.54.152 2.228.427L11.63 4l.866.5-1.372 2.376A5.996 5.996 0 0 1 14 12H2a5.996 5.996 0 0 1 2.873-5.122L3.5 4.5l.866-.5 1.402 2.429zM5 9v1h1V9H5zm5 0v1h1V9h-1z" fill="#3DDC84" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 388 B

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<path fill="#9AA7B0" fill-opacity=".8" fill-rule="evenodd" d="M7.06393077,7.93322956 L4.76000023,10.0664986 L6.03195752,11.2442368 L9.59577548,7.94440533 L9.58370576,7.93322956 L9.59577548,7.92205378 L6.03195752,4.62222227 L4.76000023,5.79996049 L7.06393077,7.93322956 Z M2,3 L14,3 L14,13 L2,13 L2,3 Z"/>
</svg>

After

Width:  |  Height:  |  Size: 397 B

@@ -0,0 +1,12 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.7526 1H4.24742C2.45392 1 1 2.45392 1 4.24742V11.7526C1 13.5461 2.45392 15 4.24742 15H11.7526C13.5461 15 15 13.5461 15 11.7526V4.24742C15 2.45392 13.5461 1 11.7526 1Z" fill="url(#paint0_linear)" stroke="#D9D9D9" stroke-width="0.0714286"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.30081 10.8536H2.9715V6.45301H3.30081V10.8536ZM3.13146 5.37429C2.99259 5.37429 2.87775 5.26413 2.87775 5.12525C2.87775 4.98228 2.99201 4.87154 3.13146 4.87154C3.27444 4.87154 3.38811 4.9817 3.38811 5.12525C3.38811 5.26413 3.27444 5.37429 3.13146 5.37429Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.49936 10.9392C4.88914 10.9392 3.8719 9.76665 3.8719 7.90277C3.8719 6.0482 4.89383 4.87105 6.49936 4.87105C8.10488 4.87105 9.12623 6.04827 9.12623 7.90277C9.12623 9.76672 8.109 10.9392 6.49936 10.9392V10.9392ZM6.49936 5.17392C5.09777 5.17392 4.203 6.23215 4.203 7.9027C4.203 9.57447 5.10188 10.6368 6.49936 10.6368C7.90094 10.6368 8.79572 9.57447 8.79572 7.9027C8.79572 6.23157 7.90094 5.17392 6.49936 5.17392Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.4711 10.9397C10.2623 10.9397 9.39568 10.257 9.34647 9.2808H9.66933C9.71855 10.0813 10.4704 10.6414 11.4958 10.6414C12.4965 10.6414 13.195 10.073 13.195 9.30541C13.195 8.68781 12.7784 8.3327 11.7899 8.08366L11.0914 7.91197C10.001 7.63364 9.50583 7.19242 9.50583 6.45352C9.50583 5.53414 10.3642 4.87202 11.4389 4.87202C12.5499 4.87202 13.3796 5.52595 13.4165 6.39203H13.0937C13.0485 5.68537 12.3583 5.17028 11.4307 5.17028C10.5436 5.17028 9.83685 5.70175 9.83685 6.44529C9.83685 7.03418 10.2699 7.3729 11.2174 7.6096L11.8754 7.77718C13.0151 8.05903 13.526 8.49674 13.526 9.28074C13.526 10.2569 12.7051 10.9396 11.4711 10.9396L11.4711 10.9397Z" fill="black"/>
<defs>
<linearGradient id="paint0_linear" x1="8" y1="8" x2="8" y2="15" gradientUnits="userSpaceOnUse">
<stop offset="1" stop-color="white"/>
<stop offset="1" stop-color="#E9E5E5"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2 13H14V3H2V13Z" fill="#F4AF3D" fill-opacity="0.6"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.16732 6.80183C9.16732 6.35967 9.5408 6.2 10.214 6.2C10.2236 6.2 11.6 6.2 11.6 6.2V5C11.6 5 10.2728 5 10.232 5C8.9336 5 8 5.551 8 6.74C8 7.77743 8.50347 8.22859 9.7655 8.49929C10.6899 8.69757 10.9954 8.87436 10.9954 9.2576C10.9954 9.64085 10.5661 9.8 9.7655 9.8C9.7463 9.8 8.36 9.8 8.36 9.8V11C8.36 11 9.7559 11 9.7655 11C12.2 11 12.2 9.8 12.2 9.2576C12.2 8.49929 11.6243 7.90486 10.5904 7.57622C9.55654 7.24758 9.16732 7.24399 9.16732 6.80183Z" fill="#231F20" fill-opacity="0.7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.67407 9.30525C3.94924 9.60547 4.20536 9.8 4.74416 9.8C5.37578 9.8 5.59996 9.30525 5.59996 8.95713V5H6.79996V9.30525C6.79996 10.1836 5.99201 11 4.93996 11C3.95476 11 3.37996 10.7152 2.95996 10.1836L3.67407 9.30525Z" fill="#231F20" fill-opacity="0.7"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,6 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2 13H14V3H2V13Z" fill="#40B6E0" fill-opacity="0.6"/>
<path d="M3.56097 10.5C4.01749 10.5 4.40227 10.3521 4.66966 10.0634C4.93705 9.77465 5.1001 9.33803 5.1001 8.75352V5.5H4.27184V8.72535C4.27184 9.38732 3.97836 9.69718 3.54792 9.69718C3.16314 9.69718 2.89575 9.48592 2.62836 9.11268L2.1001 9.70423C2.4001 10.1479 2.85662 10.5 3.56097 10.5Z" fill="#231F20" fill-opacity="0.7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.69995 5.5H10.4488L11.7 7.5L12.8832 5.5H13.7V10.5H12.9V7.2L11.7 9L10.5 7.2V10.5H9.69995V5.5Z" fill="#231F20" fill-opacity="0.7"/>
<path d="M7.1073 10.5H7.7928L9.60005 5.5H8.77121L7.46251 9.3156L6.14759 5.5H5.30005L7.1073 10.5Z" fill="#231F20" fill-opacity="0.7"/>
</svg>

After

Width:  |  Height:  |  Size: 844 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

@@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.6454 11.9103C13.4337 12.3994 13.1831 12.8496 12.8927 13.2635C12.4969 13.8278 12.1729 14.2185 11.9231 14.4354C11.536 14.7914 11.1212 14.9737 10.677 14.9841C10.3581 14.9841 9.97356 14.8934 9.52592 14.7093C9.07681 14.5261 8.66408 14.4354 8.2867 14.4354C7.89091 14.4354 7.46643 14.5261 7.01239 14.7093C6.55767 14.8934 6.19134 14.9893 5.91127 14.9988C5.48532 15.0169 5.06075 14.8294 4.63696 14.4354C4.36647 14.1994 4.02815 13.795 3.62285 13.2221C3.188 12.6102 2.8305 11.9007 2.55042 11.0919C2.25046 10.2182 2.1001 9.37218 2.1001 8.55312C2.1001 7.61489 2.30283 6.80568 2.70891 6.12756C3.02804 5.58288 3.45261 5.15321 3.98399 4.83779C4.51537 4.52236 5.08953 4.36163 5.70784 4.35134C6.04616 4.35134 6.48983 4.456 7.04117 4.66167C7.59096 4.86803 7.94397 4.97268 8.09874 4.97268C8.21446 4.97268 8.60662 4.85032 9.27142 4.60636C9.90011 4.38012 10.4307 4.28645 10.8654 4.32335C12.0433 4.4184 12.9282 4.88272 13.5167 5.71924C12.4632 6.35752 11.9421 7.2515 11.9525 8.39834C11.962 9.29164 12.2861 10.035 12.923 10.6252C13.2116 10.8992 13.5339 11.1109 13.8926 11.2613C13.8148 11.4868 13.7327 11.7028 13.6454 11.9103V11.9103ZM10.944 1.28008C10.944 1.98024 10.6882 2.63398 10.1784 3.23907C9.56308 3.95841 8.81886 4.37407 8.01181 4.30848C8.00152 4.22448 7.99556 4.13608 7.99556 4.04318C7.99556 3.37103 8.28817 2.65169 8.8078 2.06354C9.06722 1.76574 9.39716 1.51813 9.79727 1.32061C10.1965 1.12603 10.5742 1.01843 10.9293 1C10.9397 1.0936 10.944 1.18721 10.944 1.28007V1.28008Z" fill="#ABB6BD"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14 5L15 6V14L14 15H9L8 14V6L9 5H14ZM11 1L12 2V4H11V2H2V11H7V14H2L1 13V2L2 1H11ZM12 13H11V14H12V13ZM14 6H9V12H14V6Z" fill="#9AA7B0" fill-opacity="0.8"/>
</svg>

After

Width:  |  Height:  |  Size: 304 B

@@ -0,0 +1,6 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M15 6L14 5H9L8 6V9H9V7V6H14V9H15V6ZM6 11V14H2L1 13V2L2 1H11L12 2V4H11V2H2V11H6Z" fill="#A9B3BB"/>
<rect x="10" y="8" width="2" height="8" fill="#9AA7B0"/>
<rect x="7" y="10" width="2" height="6" fill="#62B543"/>
<rect x="13" y="10" width="2" height="6" fill="#40B6E0"/>
</svg>

After

Width:  |  Height:  |  Size: 421 B

@@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.4164 1L12.7825 2.3V12.7L11.4164 14H4.58607L3.22 12.7V2.3L4.58607 1H11.4164ZM8.68429 11.4H7.31822V12.7H8.68429V11.4ZM11.4164 2.3H4.58607V10.1H11.4164V2.3Z" fill="#9AA7B0" fill-opacity="0.8"/>
</svg>

After

Width:  |  Height:  |  Size: 346 B

@@ -0,0 +1,6 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.2143 1L12.5 2.3V7H11.2143V2.3H4.78571V10.1H6V14H4.78571L3.5 12.7V2.3L4.78571 1H11.2143Z" fill="#9AA7B0" fill-opacity="0.8"/>
<rect x="10" y="8" width="2" height="8" fill="#9AA7B0"/>
<rect x="7" y="10" width="2" height="6" fill="#62B543"/>
<rect x="13" y="10" width="2" height="6" fill="#40B6E0"/>
</svg>

After

Width:  |  Height:  |  Size: 452 B

@@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11 11.4286V13H5V11.4286H2V9.85714H5V8.28571H2V6.71429H5V5.14286H2V3.57143H5V2H11V3.57143H14V5.14286H11V6.71429H14V8.28571H11V9.85714H14V11.4286H11Z" fill="#9AA7B0" fill-opacity="0.8"/>
</svg>

After

Width:  |  Height:  |  Size: 337 B

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.99141 14.9911C7.80559 14.9911 7.62104 14.9423 7.45813 14.8485L5.7607 13.8436C5.50717 13.7018 5.63088 13.6517 5.7145 13.6228C6.05253 13.5044 6.12114 13.4777 6.48195 13.2728C6.51988 13.2511 6.56952 13.2588 6.60833 13.2817L7.91237 14.0555C7.95946 14.081 8.02628 14.081 8.06993 14.0555L13.1545 11.1206C13.2016 11.0939 13.2321 11.0391 13.2321 10.9831V5.11587C13.2321 5.05733 13.2016 5.00514 13.1535 4.97587L8.07095 2.04351C8.02386 2.01551 7.9615 2.01551 7.91441 2.04351L2.83292 4.97587C2.78366 5.00387 2.75235 5.0586 2.75235 5.1146V10.9819C2.75235 11.0379 2.7829 11.0913 2.83126 11.1181L4.22363 11.9224C4.97963 12.3004 5.44163 11.855 5.44163 11.407V5.61605C5.44163 5.53333 5.50653 5.46969 5.58926 5.46969H6.23326C6.31344 5.46969 6.37963 5.53333 6.37963 5.61605V11.4095C6.37963 12.4175 5.82981 12.9966 4.87399 12.9966C4.57999 12.9966 4.34835 12.9966 3.70181 12.6784L2.36799 11.9097C2.03835 11.7188 1.83472 11.3624 1.83472 10.9819V5.1146C1.83472 4.73278 2.03835 4.37642 2.36799 4.18805L7.45763 1.25187C7.77963 1.06987 8.20726 1.06987 8.52672 1.25187L13.61 4.18933C13.9384 4.37896 14.1433 4.73405 14.1433 5.11587V10.9831C14.1433 11.3637 13.9384 11.7188 13.61 11.9097L8.52672 14.8459C8.36381 14.9401 8.17926 14.9884 7.9909 14.9884" fill="#689F63"/>
<path d="M9.56203 10.9481C7.3373 10.9481 6.87085 9.92691 6.87085 9.07036C6.87085 8.98891 6.93652 8.924 7.0181 8.924H7.67483C7.74738 8.924 7.80847 8.97681 7.81992 9.04847C7.9192 9.71767 8.21447 10.0552 9.55974 10.0552C10.6314 10.0552 11.087 9.81312 11.087 9.24485C11.087 8.91776 10.9572 8.67467 9.29247 8.51176C7.9001 8.37431 7.03974 8.06758 7.03974 6.95394C7.03974 5.92812 7.9052 5.31721 9.35483 5.31721C10.9826 5.31721 11.7896 5.88231 11.8914 7.09649C11.8952 7.13849 11.8799 7.17921 11.8519 7.20976C11.8239 7.23903 11.7845 7.25685 11.7437 7.25685H11.0832C11.0145 7.25685 10.9546 7.20849 10.9406 7.14231C10.7816 6.43849 10.3972 6.21321 9.35229 6.21321C8.18265 6.21321 8.04647 6.62049 8.04647 6.92594C8.04647 7.29631 8.20683 7.40449 9.78501 7.61321C11.3479 7.82067 12.0899 8.1134 12.0899 9.21176C12.0899 10.319 11.1659 10.9541 9.55465 10.9541L9.56203 10.9481Z" fill="#689F63"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<path fill="#9AA7B0" fill-opacity=".8" fill-rule="evenodd" d="M8,1 C4.136,1 1,4.136 1,8 C1,11.864 4.136,15 8,15 C11.864,15 15,11.864 15,8 C15,4.136 11.864,1 8,1 Z M7.3,13.551 C4.535,13.208 2.4,10.856 2.4,8 C2.4,7.566 2.456,7.153 2.547,6.747 L5.9,10.1 L5.9,10.8 C5.9,11.57 6.53,12.2 7.3,12.2 L7.3,13.551 Z M12.13,11.773 C11.948,11.206 11.43,10.8 10.8,10.8 L10.1,10.8 L10.1,8.7 C10.1,8.315 9.785,8 9.4,8 L5.2,8 L5.2,6.6 L6.6,6.6 C6.985,6.6 7.3,6.285 7.3,5.9 L7.3,4.5 L8.7,4.5 C9.47,4.5 10.1,3.87 10.1,3.1 L10.1,2.813 C12.151,3.646 13.6,5.655 13.6,8 C13.6,9.456 13.04,10.779 12.13,11.773 Z"/>
</svg>

After

Width:  |  Height:  |  Size: 682 B

@@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.44479 3.61741L13.0001 3.00015V7.44453H7.44479V3.61741ZM6.3337 3.74086L3.00024 4.11125V7.44453H6.3337V3.74086ZM6.3337 8.55563H3.00024V11.8889L6.3337 12.2593V8.55563ZM7.44479 12.3827L13.0001 13V8.55563H7.44479V12.3827Z" fill="#0EAAE5"/>
</svg>

After

Width:  |  Height:  |  Size: 389 B