2021-10-01 09:19:36 +02:00
# Lucide Angular
2023-04-20 16:08:34 +02:00
Implementation of the lucide icon library for Angular applications.
2021-10-01 09:19:36 +02:00
## Installation
2023-06-12 22:10:15 +02:00
::: code-group
```sh [pnpm]
pnpm install lucide-angular
2022-10-27 08:19:45 +02:00
```
2021-10-01 09:19:36 +02:00
2023-06-12 22:10:15 +02:00
```sh [yarn]
yarn add lucide-angular
```
2021-10-01 09:19:36 +02:00
2023-06-12 22:10:15 +02:00
```sh [npm]
2021-10-01 09:19:36 +02:00
npm install lucide-angular
```
2024-11-29 09:11:30 +01:00
```sh [bun]
bun add lucide-angular
```
2023-06-12 22:10:15 +02:00
:::
2021-10-01 09:19:36 +02:00
## How to use
2023-04-20 16:08:34 +02:00
### Step 1: Import `LucideAngularModule`
2021-10-01 09:19:36 +02:00
2023-04-20 16:08:34 +02:00
In any Angular module you wish to use Lucide icons in, you have to import `LucideAngularModule` , and pick any icons you wish to use:
2021-10-01 09:19:36 +02:00
2022-10-27 08:19:45 +02:00
```js
2023-04-20 16:08:34 +02:00
import { LucideAngularModule, File, Home, Menu, UserCheck } from 'lucide-angular';
2021-10-01 09:19:36 +02:00
2023-04-20 16:08:34 +02:00
@NgModule ({
imports: [
LucideAngularModule.pick({File, Home, Menu, UserCheck})
]
2021-10-01 09:19:36 +02:00
})
2023-04-20 16:08:34 +02:00
export class AppModule { }
2021-10-01 09:19:36 +02:00
```
2024-08-21 14:23:33 +07:00
or using standalone version:
```js
2024-10-30 09:32:47 +01:00
import { Component } from '@angular/core ';
2024-08-21 14:23:33 +07:00
import { LucideAngularModule, FileIcon } from 'lucide-angular';
2024-10-30 09:32:47 +01:00
@Component ({
standalone: true,
selector: 'app-root',
templateUrl: './app.component.html',
styleUrl: './app.component.scss',
imports: [LucideAngularModule]
2024-08-21 14:23:33 +07:00
})
2024-10-30 09:32:47 +01:00
export class AppComponent {
2024-08-21 14:23:33 +07:00
readonly FileIcon = FileIcon;
}
```
2023-04-20 16:08:34 +02:00
### Step 2: Use the icons in templates
2021-10-01 09:19:36 +02:00
2023-04-20 16:08:34 +02:00
Within your templates you may now use one of the following component tags to insert an icon:
2021-10-01 09:19:36 +02:00
2023-04-20 16:08:34 +02:00
```html
<lucide-angular name="file" class="my-icon"></lucide-angular>
<lucide-icon name="home" class="my-icon"></lucide-icon>
<i-lucide name="menu" class="my-icon"></i-lucide>
<span-lucide name="user-check" class="my-icon"></span-lucide>
```
2024-08-21 14:23:33 +07:00
for standalone
```html
<lucide-angular [img]="FileIcon" class="my-icon"></lucide-angular>
<lucide-icon [img]="FileIcon" class="my-icon"></lucide-icon>
<i-lucide [img]="FileIcon" class="my-icon"></i-lucide>
<span-lucide [img]="FileIcon" class="my-icon"></span-lucide>
```
2021-10-01 09:19:36 +02:00
2023-04-20 16:08:34 +02:00
### Props
2021-10-01 09:19:36 +02:00
2023-04-20 16:08:34 +02:00
You can pass additional props to adjust the icon appearance.
| name | type | default |
| --------------------- | --------- | ------------ |
| `size` | * number * | 24 |
| `color` | * string * | currentColor |
| `strokeWidth` | * number * | 2 |
| `absoluteStrokeWidth` | * boolean * | false |
2021-10-01 09:19:36 +02:00
2022-10-27 08:19:45 +02:00
```html
2023-04-20 16:08:34 +02:00
<i-lucide name="home" [size]="48" color="red" [strokeWidth]="1"></i-lucide>
2021-10-01 09:19:36 +02:00
```
2023-04-20 16:08:34 +02:00
### Global configuration
2021-10-01 09:19:36 +02:00
2023-04-20 16:08:34 +02:00
You can inject the `LucideIconConfig` service in your root component to globally configure the default property values as defined above.
2021-10-01 09:19:36 +02:00
2023-04-20 16:08:34 +02:00
### Styling using a custom CSS class
2021-10-01 09:19:36 +02:00
2023-04-20 16:08:34 +02:00
Any extra HTML attribute is ignored, but the `class` attribute
is passed onto the internal SVG image element and it can be used to style it:
2021-10-01 09:19:36 +02:00
2023-04-20 16:08:34 +02:00
```css
svg.my-icon {
width: 12px;
height: 12px;
stroke-width: 3;
}
2021-10-01 09:19:36 +02:00
```
2023-04-20 16:08:34 +02:00
## Injecting multiple icon providers
You may provide additional icons using the `LUCIDE_ICONS` injection token,
which accepts multiple providers of the interface `LucideIconsProviderInterface`
with the utility class `LucideIconsProvider` available for easier usage:
2021-10-01 09:19:36 +02:00
2022-10-27 08:19:45 +02:00
```js
2023-04-20 16:08:34 +02:00
import { LUCIDE_ICONS, LucideIconProvider } from 'lucide-angular';
import { MyIcon } from './icons/my-icon';
const myIcons = {MyIcon};
@NgModule ({
providers: [
{provide: LUCIDE_ICONS, multi: true, useValue: new LucideIconProvider(myIcons)},
]
2021-10-01 09:19:36 +02:00
})
2023-04-20 16:08:34 +02:00
export class AppModule { }
2021-10-01 09:19:36 +02:00
```
2023-04-20 16:08:34 +02:00
To add custom icons, you will first need to convert them to an [svgson format ](https://github.com/elrumordelaluz/svgson ).
2021-10-01 09:19:36 +02:00
2023-04-20 16:08:34 +02:00
## Loading all icons
2021-10-01 09:19:36 +02:00
2023-06-12 22:10:15 +02:00
::: danger
You may also opt to import all icons if necessary using the following format but be aware that this will significantly increase your application build size.
:::
2021-10-01 09:19:36 +02:00
2022-10-27 08:19:45 +02:00
```js
2022-11-13 21:59:29 +01:00
import { icons } from 'lucide-angular';
2021-10-01 09:19:36 +02:00
...
2023-04-20 16:08:34 +02:00
LucideAngularModule.pick(icons)
```
2024-04-26 17:59:04 +02:00
## With Lucide lab or custom icons
[Lucide lab ](https://github.com/lucide-icons/lucide-lab ) is a collection of icons that are not part of the Lucide main library.
They can be used in the same way as the official icons.
```js
import { LucideAngularModule } from 'lucide-angular';
import { burger } from '@lucide/lab ';
@NgModule ({
imports: [
LucideAngularModule.pick({ burger })
]
})
export class AppModule { }
```