29.6.1 • Published 2 months ago

@ng-icons/bootstrap-icons v29.6.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

Ng Icons

The all-in-one icon library for Angular. This allows you to use icons from multiple icon sets with a single icon component. Containing over 56,000 icons for you to use in your projects.

Currently, we support the following libraries:

Got suggestions for additional iconsets? Create an issue and we can consider adding them!

Supporting Ng Icons

Ng Icons is an MIT-licensed open source project with its ongoing development made possible by contributors and sponsors.

Become a Sponsor!.

Supported Versions

Angular VersionNg Icon Version
11.x.x12.x.x
12.x.x12.x.x - 13.x.x
13.x.x13.x.x - 17.x.x
14.x.x17.x.x - 22.x.x
15.x.x23.x.x - 24.x.x
16.x.x25.x.x
17.x.x26.x.x - 27.x.x
18.x.x28.x.x - 29.x.x

Note: Ng Icons relies on modern browser features and is designed to work on evergreen browsers. We do not support older browsers such as IE11.

Installation

You must install the @ng-icons/core package, however you only need to install the iconset libraries you intend to use.

E.g:

npm i @ng-icons/core @ng-icons/heroicons ...

or

yarn add @ng-icons/core @ng-icons/heroicons ...

Packages

The following packages are available:

PackageLicense
@ng-icons/coreMIT
@ng-icons/bootstrap-iconsMIT
@ng-icons/heroiconsMIT
@ng-icons/ioniconsMIT
@ng-icons/material-iconsApache 2.0
@ng-icons/material-file-iconsMIT
@ng-icons/css.ggMIT
@ng-icons/feather-iconsMIT
@ng-icons/jam-iconsMIT
@ng-icons/octiconsMIT
@ng-icons/radix-iconsMIT
@ng-icons/tabler-iconsMIT
@ng-icons/akar-iconsMIT
@ng-icons/iconoirMIT
@ng-icons/cryptocurrency-iconsCC0-1.0
@ng-icons/simple-iconsCC0-1.0
@ng-icons/typiconsCC-BY-SA-4.0
@ng-icons/dripiconsCC-BY-SA-4.0
@ng-icons/ux-aspectsApache 2.0
@ng-icons/circum-iconsMPL-2.0
@ng-icons/remixiconApache 2.0
@ng-icons/font-awesomeCC BY 4.0
@ng-icons/iconsaxCustom
@ng-icons/tdesign-iconsMIT
@ng-icons/phosphor-iconsMIT
@ng-icons/lets-iconsCC-BY-4.0
@ng-icons/huge-iconsCC0-1.0
@ng-icons/deviconMIT

Usage

Import the NgIconsModule and register the icons you wish to use:

import { NgIconsModule } from '@ng-icons/core';
import { featherAirplay } from '@ng-icons/feather-icons';
import { heroUsers } from '@ng-icons/heroicons/outline';

@NgModule({
  imports: [BrowserModule, NgIconsModule.withIcons({ featherAirplay, heroUsers })],
})
export class AppModule {}

You can register icons in multiple modules, this allows icons to be lazy loaded in child modules.

You can then use the icon in your templates:

<ng-icon name="featherAirplay"></ng-icon>
NameTypeDescription
sizestringDefine the size of the icon. This defaults to the current font size.
colorstringDefine the color of the icon. This defaults to the current text color.
strokeWidthstring | numberDefine the stroke-width of the icon. This only works on iconsets that use strokes.

Standalone Components

As of version 18.0.0 Ng Icons nows supports standalone components. You can import icons using the provideIcons function which can be placed anywhere you can register providers. The optimal location would be in the @Component providers array.

You can also import the component directly by importing NgIconComponent or the NG_ICON_DIRECTIVES constant.

import { NgIconComponent, provideIcons } from '@ng-icons/core';
import { featherAirplay } from '@ng-icons/feather-icons';
import { heroUsers } from '@ng-icons/heroicons/outline';

@Component({
  standalone: true,
  imports: [NgIconComponent],
  providers: [provideIcons({ featherAirplay, heroUsers })],
})
export class AppComponent {}

Directly supplying an SVG

Should you need to supply an SVG directly set the svg input to the SVG string. This avoids the need to register the icon. Only icons from NG Icons iconsets will support the color, size and strokeWidth inputs.

import { featherAirplay } from '@ng-icons/feather-icons';

// parent.component.ts
@Component({
  standalone: true,
  template: '<app-child [icon]="icon" />',
})
export class ParentComponent {
  icon = featherAirplay;
}

// child.component.ts
import { NgIconComponent } from '@ng-icons/core';

@Component({
  standalone: true,
  selector: 'app-child',
  imports: [NgIconComponent],
  template: '<ng-icon [svg]="icon" />',
})
export class ChildComponent {
  @Input({ required: true }) icon!;
}

Global Configuration

You can configure the default size of icons by providing a NgIconsConfig object to the provideNgIconsConfig:

NgModule

import { NgIconsModule, provideNgIconsConfig } from '@ng-icons/core';
import { featherAirplay } from '@ng-icons/feather-icons';

@NgModule({
  imports: [BrowserModule, NgIconsModule.withIcons({ featherAirplay, heroUsers })],
  providers: [
    provideNgIconsConfig({
      size: '1.5em',
      color: 'red',
    }),
  ],
})
export class AppModule {}

Standalone

import { NgIconComponent, provideIcons, provideNgIconsConfig } from '@ng-icons/core';

bootstrapApplication(AppComponent, {
  providers: [
    provideNgIconsConfig({
      size: '1.5em',
    }),
  ],
});

Content Security Policy

If your application has a strict Content Security Policy (CSP) you may need to add the following to your global configuration to ensure you do not get any errors.

import { NgIconComponent, provideIcons, provideNgIconsConfig, withContentSecurityPolicy } from '@ng-icons/core';

bootstrapApplication(AppComponent, {
  providers: [provideNgIconsConfig({}, withContentSecurityPolicy())],
});

Logging

By default Ng Icons will log warnings or errors to the console - notably if you try to use an icon that has not been registered. Should you want stricter checks you can enable the ExceptionLogger which will throw an error if you try to use an icon that has not been registered.

You can enable this by providing the withExceptionLogger function to the provideNgIconsConfig function.

import { NgIconComponent, provideIcons, provideNgIconsConfig, withExceptionLogger } from '@ng-icons/core';

bootstrapApplication(AppComponent, {
  providers: [provideNgIconsConfig({}, withExceptionLogger())],
});

Dynamically Loading Icons

The most common way to load icons is simply by registering them individually, however you may want to load icons lazily from a URL, or generate an SVG programatically on the fly. This can be achived using an icon loader. Icon loaders are a function that receives the name of the requested icon, and can return an Observable<string>, Promise<string> or a string containing the SVG to render. Within this function you can do whatever you need to retrieve an icon.

The function is also run within the injection context, this allows you to inject dependencies as you need such as the HttpClient.

bootstrapApplication(AppComponent, {
  providers: [
    provideNgIconLoader(name => {
      const http = inject(HttpClient);
      return http.get(`/assets/icons/${name}.svg`, { responseType: 'text' });
    }),
  ],
});

Additionally add caching to your loader to prevent multiple requests for the same icon.

bootstrapApplication(AppComponent, {
  providers: [
    provideNgIconLoader(name => {...}, withCaching()),
  ],
});

Experimental Features

Variable Icon Fonts

We have added support for variable icon fonts. This is currently only supported by the Material Symbols iconset.

To enable this feature you must install the icon font and load the material-symbols stylesheet. Unlike the static SVG icons, Ng Icons does not bundle the icon font, you must load it yourself.

To use it you must register the variable fonts you want to use. The default iconset will be the first one registered.

import { provideNgGlyphs } from '@ng-icons/core';
import { withMaterialSymbolsOutlined, withMaterialSymbolsRounded } from '@ng-icons/material-symbols';

bootstrapApplication(AppComponent, {
  providers: [provideNgGlyphs(withMaterialSymbolsOutlined(), withMaterialSymbolsRounded())],
});

You can then use the following in your HTML:

<ng-glyph name="settings" />

The following inputs are available on ng-glyph:

NameTypeDescription
namestringDefine the name of the icon.
glyphsetstringDefine the glyphset to use. This defaults to the first registered glyphset.
sizestring | numberDefine the size of the icon as a pixel value or as a CSS value. This defaults to the current text size.
opticalSizenumberDefine the optical size of the icon in px. This defaults to 20
colorstringDefine the color of the icon. This defaults to the current text color.
weightnumberDefine the weight of the icon. This defaults to 400.
gradenumberDefine the grade of the icon. This defaults to 0.
fillbooleanDefine if the icon should be filled. This defaults to false.

The default values for size, weight, grade and fill can be configured using the provideNgGlyphsConfig function.

import { provideNgGlyphsConfig } from '@ng-icons/core';

bootstrapApplication(AppComponent, {
  providers: [
    provideNgGlyphsConfig({
      size: 24,
      weight: 400,
      grade: 0,
      fill: false,
    }),
  ],
});

This feature is experimental and does not follow the same versioning as the rest of the library. Breaking changes may be introduced at any time.

We appreciate any feedback you have on this feature.

29.6.1

2 months ago

29.6.0

2 months ago

29.5.2

2 months ago

29.5.1

3 months ago

27.5.2

7 months ago

28.1.0

6 months ago

27.5.0

7 months ago

27.5.1

7 months ago

29.2.0

5 months ago

29.2.1

5 months ago

29.4.0

4 months ago

29.2.2

5 months ago

29.0.0

5 months ago

28.0.0

7 months ago

29.5.0

4 months ago

29.1.0

5 months ago

29.1.1

5 months ago

29.3.0

5 months ago

27.4.0

8 months ago

27.3.1

8 months ago

27.3.0

9 months ago

27.2.0

10 months ago

27.1.0

10 months ago

27.0.0

10 months ago

26.5.0

10 months ago

26.4.0

11 months ago

26.3.0

1 year ago

26.2.1

1 year ago

26.1.0

1 year ago

25.5.0

1 year ago

25.3.1

1 year ago

25.3.0

1 year ago

26.2.0

1 year ago

26.0.0

1 year ago

25.6.0

1 year ago

25.6.1

1 year ago

25.2.0

1 year ago

25.4.0

1 year ago

25.1.0

2 years ago

25.0.1

2 years ago

25.0.0

2 years ago

23.3.0

2 years ago

23.2.0

2 years ago

24.0.0

2 years ago

23.0.0

2 years ago

23.1.0

2 years ago

22.3.0

2 years ago

22.4.0

2 years ago

22.2.0

2 years ago

22.1.0

2 years ago

22.0.0

2 years ago

21.0.2

2 years ago

21.0.1

2 years ago

21.0.4

2 years ago

21.0.3

2 years ago

21.0.0

2 years ago

20.0.0

2 years ago

19.0.0

2 years ago

18.0.4

2 years ago

18.0.3

3 years ago

18.0.2

3 years ago

18.0.1

3 years ago

18.0.0

3 years ago

17.0.0

3 years ago

15.0.0

3 years ago

15.1.0

3 years ago

16.0.0

3 years ago

14.0.0

3 years ago

14.1.0

3 years ago

13.1.3

3 years ago

13.2.0

3 years ago

13.3.0

3 years ago

13.2.1

3 years ago

13.1.2

3 years ago

13.1.1

3 years ago

13.1.0

3 years ago

13.0.0

3 years ago

12.7.0

3 years ago

12.6.0

3 years ago