2021-04-11 15:48:50 +04:30
# Lucide Angular
Implementation of the lucide icon library for angular applications.
> What is lucide? Read it [here](https://github.com/lucide-icons/lucide#what-is-lucide).
## Installation
2023-04-20 16:08:34 +02:00
```bash
2021-04-11 15:48:50 +04:30
yarn add lucide-angular
2022-10-27 08:19:45 +02:00
```
2021-04-11 15:48:50 +04:30
2022-10-27 08:19:45 +02:00
or
2021-04-11 15:48:50 +04:30
2023-04-20 16:08:34 +02:00
```bash
2021-04-11 15:48:50 +04:30
npm install lucide-angular
```
## How to use
2023-04-20 16:08:34 +02:00
### Step 1: Import `LucideAngularModule`
2021-04-11 15:48:50 +04:30
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-04-11 15:48:50 +04:30
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-04-11 15:48:50 +04:30
2023-04-20 16:08:34 +02:00
@NgModule ({
imports: [
LucideAngularModule.pick({File, Home, Menu, UserCheck})
]
2021-04-11 15:48:50 +04:30
})
2023-04-20 16:08:34 +02:00
export class AppModule { }
2021-04-11 15:48:50 +04:30
```
2023-04-20 16:08:34 +02:00
### Step 2: Use the icons in templates
2021-04-11 15:48:50 +04:30
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-04-11 15:48:50 +04:30
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>
```
2021-04-11 15:48:50 +04:30
2023-04-20 16:08:34 +02:00
### Props
2021-04-11 15:48:50 +04:30
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 _ | true |
2021-04-11 15:48:50 +04:30
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-04-11 15:48:50 +04:30
```
2023-04-20 16:08:34 +02:00
### Global configuration
2021-04-11 15:48:50 +04:30
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-04-11 15:48:50 +04:30
2023-04-20 16:08:34 +02:00
### Styling using a custom CSS class
2021-04-11 15:48:50 +04:30
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-04-11 15:48:50 +04:30
2023-04-20 16:08:34 +02:00
```css
svg.my-icon {
width: 12px;
height: 12px;
stroke-width: 3;
}
2021-04-11 15:48:50 +04:30
```
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-04-11 15:48:50 +04:30
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-04-11 15:48:50 +04:30
})
2023-04-20 16:08:34 +02:00
export class AppModule { }
2021-04-11 15:48:50 +04:30
```
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-04-11 15:48:50 +04:30
2023-04-20 16:08:34 +02:00
## Loading all icons
2021-04-11 15:48:50 +04:30
2023-04-20 16:08:34 +02:00
> :warning: 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-04-17 23:16:34 +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-04-17 23:16:34 +02:00
2023-04-20 16:08:34 +02:00
...
2021-04-11 15:48:50 +04:30
2023-04-20 16:08:34 +02:00
LucideAngularModule.pick(icons)
```