README
NG Heroicon
A set of free MIT-licensed high-quality SVG icons for you to use in your web projects.
This project is a fork of https://github.com/tailwindlabs/heroicons which enables the use for Angular projects, providing a component to display the heroicon.
This project uses some code ideas from https://github.com/ashley-hunter/ng-heroicons, fixing some stuff like enabling passing class names for icon customization. It also fully works with TailwindCSS classes!
Preview and search at icons at https://www.heroicons.com
Installing Library
npm i ng-heroicon
or
yarn add ng-heroicon
First steps
This library has been updated to Angular 13 (Ivy is default) and also to include two global (and child module level) options.
defaultHostDisplaywill determine which internaldisplayclass to use on host element (<hero-icon />), possible options areblock,inlineBlockornone(default isnone, which means this option is disabled).attachDefaultDimensionsIfNoneFoundoption is now introduced to try to figure out if the host element has any dimension (width or height), if nothing is found, it will provide a default dimension class foroutlineorsolidicon. (default isfalse, which means this option is disabled)
For best experience I recommend { defaultHostDisplay: 'inlineBlock', attachDefaultDimensionsIfNoneFound: true }!
On root module:
import {menu, HeroIconModule} from 'ng-heroicon';
@NgModule({
declarations: [],
imports: [
HeroIconModule.forRoot({
menu
}, {
defaultHostDisplay: 'inlineBlock', // default 'none'
attachDefaultDimensionsIfNoneFound: true // default 'false'
})
],
})
export class AppModule {
}
On child modules
Call the module with withIcons function passing the wanted icons and optionally overriding the options, e.g.:
import {annotation, menu, HeroIconModule} from 'ng-heroicon';
@NgModule({
declarations: [],
imports: [
HeroIconModule.withIcons({
annotation,
menu
}, {
/**
* Child level options.
* Non passed options will use the rootModule options.
*/
defaultHostDisplay: 'block',
})
],
})
export class AppModule {
}
On views
Use the component like this:
<hero-icon name="annotation" hostDisplay="inlineBlock" type="outline" class="w-6 h-6"></hero-icon>
<hero-icon name="annotation" type="solid" class="w-4 h-4 text-gray-600 hover:text-gray-500"></hero-icon>
<hero-icon [name]="'menu'" [type]="'solid'" [class]="'w-4 h-4 text-red-900'"></hero-icon>