Newer
Older
import {Component, h, Prop, Host} from '@stencil/core';
import * as icons from './icons';
import {IconName} from '../../utils/utils';
// TODO: add all icons
const iconNames: IconName = {
'hy-icon-arrow-down': (p) => <icons.ArrowDown {...p} />,
'hy-icon-arrow-left': (p) => <icons.IconArrowLeft {...p} />,
'hy-icon-arrow-right': (p) => <icons.IconArrowRight {...p} />,
'hy-icon-arrow-to-right': (p) => <icons.IconArrowToRight {...p} />,
'hy-icon-alert': (p) => <icons.Alert {...p} />,
'hy-icon-camera': (p) => <icons.Camera {...p} />,
'hy-icon-caret-down': (p) => <icons.CaretDown {...p} />,
'hy-icon-caret-left': (p) => <icons.CaretLeft {...p} />,
'hy-icon-caret-right': (p) => <icons.CaretRight {...p} />,
'hy-icon-dot-arrow-right': (p) => <icons.DotArrowRight {...p} />,
'hy-icon-done': (p) => <icons.Done {...p} />,
'hy-icon-euro': (p) => <icons.Euro {...p} />,
'hy-icon-heart': (p) => <icons.Heart {...p} />,
'hy-icon-heart-support': (p) => <icons.HeartSupport {...p} />,
'hy-icon-link': (p) => <icons.Url {...p} />,
'hy-icon-globe': (p) => <icons.Globe {...p} />,
'hy-icon-hamburger': (p) => <icons.Hamburger {...p} />,
'hy-icon-home': (p) => <icons.Home {...p} />,
'hy-icon-email': (p) => <icons.Mail {...p} />,
'hy-icon-phone': (p) => <icons.Phone {...p} />,
'hy-icon-hy-logo': (p) => <icons.HyLogo {...p} />,
'hy-icon-image-gallery': (p) => <icons.ImageGallery {...p} />,
'hy-icon-link-arrow-down': (p) => <icons.LinkArrowDown {...p} />,
'hy-icon-minus': (p) => <icons.Minus {...p} />,
'hy-icon-play': (p) => <icons.Play {...p} />,
'hy-icon-plus': (p) => <icons.Plus {...p} />,
'hy-icon-quote': (p) => <icons.IconQuote {...p} />,
'hy-icon-remove': (p) => <icons.Remove {...p} />,
'hy-icon-search': (p) => <icons.Search {...p} />,
'hy-icon-some-facebook': (p) => <icons.SomeFacebook {...p} />,
'hy-icon-some-instagram': (p) => <icons.SomeInstagram {...p} />,
'hy-icon-some-linkedin': (p) => <icons.SomeLinkedin {...p} />,
'hy-icon-some-twitter': (p) => <icons.SomeTwitter {...p} />,
'hy-icon-some-youtube': (p) => <icons.SomeYoutube {...p} />,
'hy-icon-video': (p) => <icons.Video {...p} />,
tag: 'hy-icon',
styleUrl: 'icon.css',
})
export class Icon {
@Prop() icon: string;
@Prop() fill: string = 'black';
@Prop() size: number = 20;
render() {
return (
<Host aria-hidden="true" style={{display: 'flex'}}>
{iconNames[this.icon]({
height: this.size,
width: this.size,
})}
</Host>
);
}
}