Release candidate for Lucide v1 is out!🚀
You're looking at the site for v1, for v0 go to v0 site

Skip to content

Global Styling

Lucide icons can be customized using the inputs for color, size and stroke width.

To style all icons globally, you can either use CSS or configure global defaults using provideLucideConfig.

We recommend using CSS for global styling, as it is the most straightforward approach. However, CSS rules may override the size, color, and strokeWidth inputs on individual icons. If you need to keep those inputs configurable per icon, use provideLucideConfig instead.

Configuring global defaults

Lucide Angular provides the provideLucideConfig provider to set default properties for all icons.

You can define global defaults (such as size, color, or strokeWidth) while still allowing individual icons to override them through inputs.

Register the provider in your application configuration or in a top-level component:

ts
import { ApplicationConfig } from '@angular/core';
import { provideLucideConfig } from '@lucide/angular';

export const appConfig: ApplicationConfig = {
  providers: [
    provideLucideConfig({
      strokeWidth: 1.5
    }),
  ]
};

Style by using CSS

Styling icons globally can be done using CSS.

All Lucide icons include the lucide class. You can use this class in your styles to target every icon in your application.

  • The color of the icons can be changed using the color property.
  • The size of the icons can be changed using width and height.
  • The stroke width of the icons can be changed using stroke-width.
.lucide {
  /* Change this! */
  color: #ffadff;
  width: 56px;
  height: 56px;
  stroke-width: 1px;
}

.grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 1fr 1fr 1fr;
  gap: 6px;
}

Absolute stroke width

To keep the stroke width constant regardless of icon size, apply vector-effect: non-scaling-stroke to the icon's children. See absolute-stroke-width for more details.

.lucide {
  width: 48px;
  height: 48px;
  stroke-width: 1.5;
}

.lucide * {
  vector-effect: non-scaling-stroke;
}

.grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 1fr 1fr 1fr;
  gap: 6px;
}