Skip to content
Snippets Groups Projects
hy-hero.tsx 2.01 KiB
Newer Older
  • Learn to ignore specific revisions
  • Tuukka Turu's avatar
    Tuukka Turu committed
    import {Component, Host, h, Prop, Element} from '@stencil/core';
    import {HeroColorVariant} from '../../utils/utils';
    
    @Component({
      tag: 'hy-hero',
      styleUrl: 'hy-hero.scss',
      shadow: false,
    })
    export class HyHero {
      @Element() el: HTMLElement;
      @Prop() colorVariant: HeroColorVariant = HeroColorVariant.blue;
      @Prop() image: string;
      @Prop() heading: string;
      @Prop() description: string;
      @Prop() url: string;
      @Prop() urlTitle: string;
      @Prop() scLabel?: string;
    
      render() {
        const classAttributes = ['hy-hero', `hy-hero--${this.colorVariant}`].join(' ');
    
        const aspectRatioWidth = 8;
        const aspectRatioHeight = 5;
        const aspect = (aspectRatioHeight / aspectRatioWidth) * 100;
        const aspectRatio = {
          '--aspectRatio': `${aspect}%` as 'aspectRatio',
        };
    
        return (
          <Host>
            <div class={classAttributes}>
              <div class="hy-hero__image-container" style={aspectRatio}>
                <img alt={this.scLabel} class="hy-image__image" src={this.image} />
              </div>
              <div class="hy-hero__content"></div>
              <div class="hy-hero__content-wrap-helper">
                <hy-main-content-wrapper>
                  <div class="hy-hero__content--container">
                    <h1 class="hy-hero__title">{this.heading}</h1>
                    <div class="hy-hero__content--bottom">
                      {this.description && <div class="hy-hero__description">{this.description}</div>}
                      {this.url && (
                        <div class="hy-hero__cta-link__container">
                          <a href={this.url} class="hy-hero__cta-link" aria-label={this.scLabel}>
                            {this.urlTitle}
                            <span class="hy-hero__cta-link__icon">
                              <hy-icon icon={'hy-icon-arrow-right'} size={26} />
                            </span>
                          </a>
                        </div>
                      )}
                    </div>
                  </div>
                </hy-main-content-wrapper>
              </div>
            </div>
          </Host>
        );
      }
    }