# Icon >> Use Cases ||20 ```js script import { html } from '@mdjs/mdjs-preview'; import { icons } from '@lion/icon'; import './assets/iconset-bugs.js'; import './assets/iconset-misc.js'; import * as spaceSet from './assets/iconset-space.js'; import '@lion/icon/define'; icons.addIconResolver('lion', (iconset, name) => { switch (iconset) { case 'bugs': return import('./assets/iconset-bugs.js').then(module => module[name]); case 'space': return import('./assets/iconset-space.js').then(module => module[name]); case 'misc': return import('./assets/iconset-misc.js').then(module => module[name]); default: throw new Error(`Unknown iconset ${iconset}`); } }); ``` ## Icon sets Icons are displayed using icon sets. These are collections of icons, lazily loaded on demand for performance. See the [system documentation](../../fundamentals/systems/icon/overview.md) to learn more about icon sets. ```js preview-story export const iconSets = () => html` ${Object.keys(spaceSet).map( name => html`
`, )} `; ``` If for some reason you don't want to lazy load icons, you can still import and use them synchronously. ## Accessibility It is recommended to add an `aria-label` to provide information to visually impaired users: A `lion-icon` without an `aria-label` attribute will be automatically given an `aria-hidden` attribute. ```js preview-story export const accessibleLabel = () => html`