Documentation / Icons

Icons are optional content.

Aevko uses Lucide in its own documentation, while installed components remain independent of every icon library.

Lucide docs

Static Lucide import

Install Lucide only in the application that renders it. Import each standalone icon directly for tree-shaking; do not register the complete collection.

save-button.component.ts
typescript
import { Component } from '@angular/core';
import { LucideSave } from '@lucide/angular';
import { AevkoButton } from './ui/button';

@Component({
  standalone: true,
  imports: [AevkoButton, LucideSave],
  templateUrl: './save-button.component.html',
})
export class SaveButtonComponent {}
save-button.component.html
html
<button aevkoButton>
  <svg lucideSave aevkoButtonIconStart class="size-4" aria-hidden="true">
  </svg>
  Save changes
</button>

SVG or another library

Slot attributes describe placement, not implementation. The same slot accepts inline SVG, Tabler, Heroicons, an image or a custom Angular component.

custom-icon.component.html
html
<button aevkoButton variant="outline">
  <svg aevkoButtonIconStart class="size-5 text-current" viewBox="0 0 24 24" aria-hidden="true">
    <path d="..." fill="currentColor" />
  </svg>
  Custom icon
</button>

Styling and accessibility

Documentation icons use 16 px, 1.75 stroke width, currentColor and inline alignment. Override size and color with Tailwind or your own class. Decorative icons stay aria-hidden; icon-only controls still need an accessible name.

Running npx aevko-ui@latest add button, dialog or sidebar never installs @lucide/angular.