Files

135 lines
3.3 KiB
Markdown
Raw Permalink Normal View History

2021-10-01 09:19:36 +02:00
# Lucide Angular
Implementation of the lucide icon library for Angular applications.
2021-10-01 09:19:36 +02:00
## Installation
::: code-group
```sh [pnpm]
pnpm install lucide-angular
```
```sh [yarn]
2021-10-01 09:19:36 +02:00
yarn add lucide-angular
```
2021-10-01 09:19:36 +02:00
```sh [npm]
2021-10-01 09:19:36 +02:00
npm install lucide-angular
```
:::
2021-10-01 09:19:36 +02:00
## How to use
### Step 1: Import `LucideAngularModule`
2021-10-01 09:19:36 +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
```js
import { LucideAngularModule, File, Home, Menu, UserCheck } from 'lucide-angular';
2021-10-01 09:19:36 +02:00
@NgModule({
imports: [
LucideAngularModule.pick({File, Home, Menu, UserCheck})
]
2021-10-01 09:19:36 +02:00
})
export class AppModule { }
2021-10-01 09:19:36 +02:00
```
### Step 2: Use the icons in templates
Within your templates you may now use one of the following component tags to insert an icon:
```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-10-01 09:19:36 +02:00
```
### Props
2021-10-01 09:19:36 +02:00
You can pass additional props to adjust the icon appearance.
2021-10-01 09:19:36 +02:00
| name | type | default |
| --------------------- | --------- | ------------ |
| `size` | *number* | 24 |
| `color` | *string* | currentColor |
| `strokeWidth` | *number* | 2 |
| `absoluteStrokeWidth` | *boolean* | false |
2021-10-01 09:19:36 +02:00
```html
<i-lucide name="home" [size]="48" color="red" [strokeWidth]="1"></i-lucide>
2021-10-01 09:19:36 +02:00
```
### Global configuration
2021-10-01 09:19:36 +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
### Styling using a custom CSS class
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:
```css
svg.my-icon {
width: 12px;
height: 12px;
stroke-width: 3;
2021-10-01 09:19:36 +02:00
}
```
## Injecting multiple icon providers
2021-10-01 09:19:36 +02:00
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
```js
import { LUCIDE_ICONS, LucideIconProvider } from 'lucide-angular';
import { MyIcon } from './icons/my-icon';
2021-10-01 09:19:36 +02:00
const myIcons = {MyIcon};
@NgModule({
providers: [
{provide: LUCIDE_ICONS, multi: true, useValue: new LucideIconProvider(myIcons)},
]
})
export class AppModule { }
```
To add custom icons, you will first need to convert them to an [svgson format](https://github.com/elrumordelaluz/svgson).
## Loading all icons
::: 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.
:::
```js
import { icons } from 'lucide-angular';
2021-10-01 09:19:36 +02:00
...
LucideAngularModule.pick(icons)
2021-10-01 09:19:36 +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 { }
```