
Curated Lucide v1.16.0 icons as ImageVector assets for Compose, fully customizable stroke, color and size, organized into categories and usable type-safely at runtime.
A Kotlin Multiplatform library providing Lucide Icons (v1.16.0) as ImageVectors for Jetpack Compose and Compose Multiplatform.
ImageVector objects.Add the following to your commonMain dependencies in build.gradle.kts:
sourceSets {
commonMain.dependencies {
implementation("io.github.thelacspace:lucide-compose:1.16.0")
}
}Add the dependency to your app's build.gradle.kts:
dependencies {
implementation("io.github.thelacspace:lucide-compose:1.16.0")
}(Note: The version follows the format [lucide-version]-[library-patch], e.g., 1.16.0)
Use icons directly from the LucideIcons object. Each icon is available as a @Composable property that automatically resolves its configuration.
import androidx.compose.material3.Icon
import dev.lucide.LucideIcons
import dev.lucide.categories.Animals
@Composable
fun MyScreen() {
Icon(
imageVector = LucideIcons.Animals.Cat,
contentDescription = "Cat Icon"
)
}You can customize the appearance of all icons in a sub-tree using LocalLucideIconConfig:
import dev.lucide.LocalLucideIconConfig
import dev.lucide.LucideIconConfig
CompositionLocalProvider(
LocalLucideIconConfig provides LucideIconConfig(
strokeWidth = 1.5f,
color = Color.Blue,
size = 32.dp
)
) {
// Icons inside this provider will use the custom configuration
Icon(imageVector = LucideIcons.Animals.Dog, contentDescription = "Dog")
}If you need a specific icon with unique settings, you can use its Definition and convert it manually:
import dev.lucide.asImageVector
val customIcon = LucideIcons.Animals.BirdDefinition.asImageVector(
size = 48.dp,
strokeWidth = 3f
)
Icon(imageVector = customIcon, contentDescription = "Custom Bird")Icons are grouped into various categories including:
LucideIcons.Accessibility
LucideIcons.Animals
LucideIcons.Arrows
LucideIcons.Buildings
LucideIcons.Communication
LucideIcons.Devices
LucideIcons.Finance
LucideIcons.Navigation
LucideIcons.Weather
ImageVector, ensuring smooth integration with Compose's rendering engine.The icons are generated from SVG files and metadata provided by the Lucide project.
git clone https://github.com/lucide-icons/lucide.git ../lucidelucideIconsDir to your local.properties pointing to the cloned repository:
lucideIconsDir=../lucide./gradlew generateLucide -PlucideIconsDir=../lucide./gradlew generateLucideTo publish the library to a Maven repository:
local.properties (or set as environment variables):
ossrhUsername=your_username
ossrhPassword=your_password
signingKey=your_gpg_private_key
signingPassword=your_gpg_passphrase./gradlew :lucide-compose:publishThis library is based on Lucide Icons, which is licensed under the ISC License.
A Kotlin Multiplatform library providing Lucide Icons (v1.16.0) as ImageVectors for Jetpack Compose and Compose Multiplatform.
ImageVector objects.Add the following to your commonMain dependencies in build.gradle.kts:
sourceSets {
commonMain.dependencies {
implementation("io.github.thelacspace:lucide-compose:1.16.0")
}
}Add the dependency to your app's build.gradle.kts:
dependencies {
implementation("io.github.thelacspace:lucide-compose:1.16.0")
}(Note: The version follows the format [lucide-version]-[library-patch], e.g., 1.16.0)
Use icons directly from the LucideIcons object. Each icon is available as a @Composable property that automatically resolves its configuration.
import androidx.compose.material3.Icon
import dev.lucide.LucideIcons
import dev.lucide.categories.Animals
@Composable
fun MyScreen() {
Icon(
imageVector = LucideIcons.Animals.Cat,
contentDescription = "Cat Icon"
)
}You can customize the appearance of all icons in a sub-tree using LocalLucideIconConfig:
import dev.lucide.LocalLucideIconConfig
import dev.lucide.LucideIconConfig
CompositionLocalProvider(
LocalLucideIconConfig provides LucideIconConfig(
strokeWidth = 1.5f,
color = Color.Blue,
size = 32.dp
)
) {
// Icons inside this provider will use the custom configuration
Icon(imageVector = LucideIcons.Animals.Dog, contentDescription = "Dog")
}If you need a specific icon with unique settings, you can use its Definition and convert it manually:
import dev.lucide.asImageVector
val customIcon = LucideIcons.Animals.BirdDefinition.asImageVector(
size = 48.dp,
strokeWidth = 3f
)
Icon(imageVector = customIcon, contentDescription = "Custom Bird")Icons are grouped into various categories including:
LucideIcons.Accessibility
LucideIcons.Animals
LucideIcons.Arrows
LucideIcons.Buildings
LucideIcons.Communication
LucideIcons.Devices
LucideIcons.Finance
LucideIcons.Navigation
LucideIcons.Weather
ImageVector, ensuring smooth integration with Compose's rendering engine.The icons are generated from SVG files and metadata provided by the Lucide project.
git clone https://github.com/lucide-icons/lucide.git ../lucidelucideIconsDir to your local.properties pointing to the cloned repository:
lucideIconsDir=../lucide./gradlew generateLucide -PlucideIconsDir=../lucide./gradlew generateLucideTo publish the library to a Maven repository:
local.properties (or set as environment variables):
ossrhUsername=your_username
ossrhPassword=your_password
signingKey=your_gpg_private_key
signingPassword=your_gpg_passphrase./gradlew :lucide-compose:publishThis library is based on Lucide Icons, which is licensed under the ISC License.