mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-09-03 10:10:39 +02:00
* Update images * Adjust color * update accessebility * Add matrix hero * Add typescript documentation * Add basics section to vue pages * Add svelte docs * Fix dynamic sidebar * Add animation? * Some adjustments * Adjust animation * Updates docs * Add scaledown animation * Add docs for vue types * Fix layout accessibility page * fix framework select * adjust easing home animation * Write docs for Vue * Adjust animation home * Adjust home hero animation * Finish svelte docs * Add solid pages * remove spiral animation component * Add group icons * Added solid docs * update preact docs * Adjust examples preact docs * Add snackplayer * Get new editor * Save this * Add examples * Adjust styling * setup custom sandpack * Add script * Format files * Make sandpack plugin work * migrate react docs * Fix svelte and solid examples * Migrate to solid packages * Add darkmode package logos * Fix bug in selector * migrate vue examples * migrate advanced vue items * migrate preact and svelte examples * Add astro docs * adding more docs on guide for lucide library * Fix home animation * Cleanup * Added resources page, with more details and content * Add hero badge for Version 1 * Fix vercel json * Update missing paths * Fix build? * Replace lucide-vue-next * Fix build * Add some docs * update markdown * Setup angular docs * Add basic angular docs * Adjust code examples * Update title and descriptions * Update accessibility link * Update title and description * Add og image * Fix alignment * Add migration guides * Adjust version 1 markdown file * Add migration guide to the main list * Minor fixes * Update docs * Apply feedback * Select icons * Add pointer events none * Fix package links homepage * Format code * Fix types * Fix focus * Fix build * Fix focus * Apply feedback * Adjust imports * Adjust imports * Fix search * Apply feedback * Fix import in font docs * Small fixes * docs(guide): added easter egg icon. stay tuned, guys 😉 * Add llm txt plugin * Adjust logo top * docs(version-1): upgraded @lucide/angular guide for v1 website (#4144) * docs(guide/angular): rewrite some angular documentation * docs(guide/angular): extens angular guide with combining icons & icon provider guides * docs(guide/angular): fix angular sandbox, still needs @lucide/angular release tho * docs(guide/angular): rework the getting started page a bit more, refactor some more prop=>input occurences * docs(guide/angular): context provider => provideLucideConfig * Update docs/guide/angular/migration.md Co-authored-by: Eric Fennis <eric.fennis@gmail.com> * Update docs/guide/angular/advanced/combining-icons.md Co-authored-by: Eric Fennis <eric.fennis@gmail.com> * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * docs(guide/angular): rework a11y for better flow & pacing * docs(guide/angular): salvage original phrase, it has better flow * docs(guide/angular): some more a11y nitpicking * docs(guide/angular): reduce llm fatigue * docs(guides/angular): fix app component selector * docs(guides/angular): fix angular sandpacks * Add sandpack angular to improve tree-shakable stack * Update docs/guide/angular/getting-started.md * docs(guides/angular): fix user import in combinding icons guide * docs(guides/angular): fix nested SVG phrasing * Update docs/guide/angular/advanced/with-lucide-lab.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update docs/guide/angular/advanced/filled-icons.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * docs(guides/angular): fix createLucideIcon guide * docs(guides/angular): upgrade all relevant angular sandpack demos --------- Co-authored-by: Eric Fennis <eric.fennis@gmail.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * fix(docs): add autogenerated OG images to gitignore * fix(docs): unify the case of "Lucide" & "Lucide Lab" over all docs and readmes * Fix build * Add next tag to all installation guides * Add top bar notification * Minor fixes * Update text * Add todos * Update og image * Adjust install command * Color top bar * fix(docs): ignore all OG images, expect general.png * fix(docs): fix the package list, hide @lucide/icons, downgrade angular logo, link to v0 guide, fix package title alignment * Update docs/.vitepress/theme/components/base/LayoutTop.vue Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update docs/guide/react/advanced/dynamic-icon-component.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update CONTRIBUTING.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update docs/.vitepress/sidebar/resources.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Fix code example * fix(docs): version 1 => Version 1 * feat(docs): add angular to new features in v1 * Fix next line issue * feat(docs): fix typo (code example_s_) * Fix deadlink * feat(docs): fix some more typos and irky grammar * feat(docs): fix lowercase lucide in sidebar 😅 * Update docs/guide/version-1.md Co-authored-by: Karsa <contact@karsa.org> --------- Co-authored-by: Karsa <contact@karsa.org> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
140 lines
3.6 KiB
Markdown
140 lines
3.6 KiB
Markdown
---
|
|
title: Icon provider - Angular
|
|
description: Learn how to register icons globally using provideLucideIcons, including custom and legacy icons.
|
|
---
|
|
|
|
# Icon provider
|
|
|
|
You can use the `LucideDynamicIcon` component to render icons by name. To use an icon by name, you must first register it with `provideLucideIcons`.
|
|
|
|
Make sure you are well acquainted with [how dependency injection in Angular works](https://angular.dev/guide/di).
|
|
|
|
## Registering icons
|
|
|
|
Use `provideLucideIcons` in your application providers to register icons.
|
|
|
|
```ts [app.config.ts]
|
|
import { ApplicationConfig } from '@angular/core';
|
|
import { provideLucideIcons, LucideSquareCheck, LucideCircleAlert } from '@lucide/angular';
|
|
|
|
export const appConfig: ApplicationConfig = {
|
|
providers: [
|
|
provideLucideIcons(
|
|
LucideSquareCheck,
|
|
LucideCircleAlert,
|
|
),
|
|
],
|
|
};
|
|
```
|
|
|
|
You can then reference the registered icons by name:
|
|
|
|
```html [app.html]
|
|
<svg lucideIcon="square-check"></svg>
|
|
<svg lucideIcon="circle-alert"></svg>
|
|
```
|
|
|
|
## How names are resolved
|
|
|
|
Each registered icon is stored by its icon name. For built-in Lucide icons, this is typically the kebab-case icon name.
|
|
|
|
For example, registering `LucideSquareCheck` makes it available as:
|
|
|
|
```html
|
|
<svg lucideIcon="square-check"></svg>
|
|
```
|
|
|
|
If an icon defines aliases, those aliases are also registered automatically.
|
|
|
|
## Registering custom icons
|
|
|
|
`provideLucideIcons` can also register custom icon data objects.
|
|
|
|
```ts [custom-icon.ts]
|
|
import { LucideIconData } from '@lucide/angular';
|
|
|
|
export const MyCustomIcon: LucideIconData = {
|
|
name: 'my-custom-icon',
|
|
node: [
|
|
['circle', { cx: 12, cy: 12, r: 8 }],
|
|
],
|
|
};
|
|
```
|
|
|
|
```ts [app.config.ts]
|
|
import { ApplicationConfig } from '@angular/core';
|
|
import { provideLucideIcons } from '@lucide/angular';
|
|
import { MyCustomIcon } from './custom-icon';
|
|
|
|
export const appConfig: ApplicationConfig = {
|
|
providers: [
|
|
provideLucideIcons(MyCustomIcon),
|
|
],
|
|
};
|
|
```
|
|
|
|
```html [app.html]
|
|
<svg lucideIcon="my-custom-icon"></svg>
|
|
```
|
|
|
|
## Using legacy icon nodes
|
|
|
|
If you have icons in the legacy node format, such as custom icons matching `lucide-angular` or `@lucide/lab`, you can convert them using `lucideLegacyIcon`.
|
|
|
|
```ts [app.config.ts]
|
|
import { ApplicationConfig } from '@angular/core';
|
|
import { provideLucideIcons, lucideLegacyIcon } from '@lucide/angular';
|
|
import { CirclePlayIcon } from 'lucide-angular';
|
|
import { burger } from '@lucide/lab';
|
|
|
|
export const appConfig: ApplicationConfig = {
|
|
providers: [
|
|
provideLucideIcons(
|
|
lucideLegacyIcon('circle-play', CirclePlayIcon, ['play-circle']),
|
|
lucideLegacyIcon('burger', burger, ['hamburger']),
|
|
),
|
|
],
|
|
};
|
|
```
|
|
|
|
You can then use both the primary name and any aliases:
|
|
|
|
```html [app.html]
|
|
<svg lucideIcon="circle-play"></svg>
|
|
<svg lucideIcon="play-circle"></svg>
|
|
<svg lucideIcon="burger"></svg>
|
|
<svg lucideIcon="hamburger"></svg>
|
|
```
|
|
|
|
## Converting a map of legacy icons
|
|
|
|
If you already have a map of legacy icon nodes, use `lucideLegacyIconMap` to convert them into icon data objects.
|
|
|
|
```ts [app.config.ts]
|
|
import { ApplicationConfig } from '@angular/core';
|
|
import { provideLucideIcons, lucideLegacyIconMap, Circle } from '@lucide/angular';
|
|
import { UserRoundX } from 'lucide-angular';
|
|
import { burger } from '@lucide/lab';
|
|
|
|
export const appConfig: ApplicationConfig = {
|
|
providers: [
|
|
provideLucideIcons(
|
|
Circle,
|
|
...lucideLegacyIconMap({ UserRoundX, burger }),
|
|
),
|
|
],
|
|
};
|
|
```
|
|
|
|
This converts the object keys to kebab-case icon names:
|
|
|
|
- `UserRoundX` → `user-round-x`
|
|
- `burger` → `burger`
|
|
|
|
The original object key is also added as an alias, so both of these will work:
|
|
|
|
```html
|
|
<svg lucideIcon="UserRoundX"></svg>
|
|
<svg lucideIcon="user-round-x"></svg>
|
|
```
|