@byuhbll/components 7.4.0 → 7.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@ import { CommonModule, DatePipe, NgIf, NgClass } from '@angular/common';
3
3
  import { toSignal, toObservable } from '@angular/core/rxjs-interop';
4
4
  import { HttpClient } from '@angular/common/http';
5
5
  import * as i0 from '@angular/core';
6
- import { Input, ViewChild, ChangeDetectionStrategy, Component, input, EventEmitter, Output, inject, computed, ViewChildren, Pipe, Renderer2, DOCUMENT, viewChild, HostListener, booleanAttribute, ElementRef, forwardRef, Injector, runInInjectionContext, effect, ChangeDetectorRef, model, ViewEncapsulation, ApplicationRef, EnvironmentInjector, createComponent, Injectable, signal, ContentChildren } from '@angular/core';
6
+ import { Input, ViewChild, ChangeDetectionStrategy, Component, input, EventEmitter, Output, inject, computed, ViewChildren, Pipe, booleanAttribute, Renderer2, DOCUMENT, viewChild, HostListener, ElementRef, forwardRef, Injector, runInInjectionContext, effect, ChangeDetectorRef, model, ViewEncapsulation, ApplicationRef, EnvironmentInjector, createComponent, Injectable, signal, ContentChildren } from '@angular/core';
7
7
  import { trigger, transition, group, style, query, animate, animateChild } from '@angular/animations';
8
8
  import { map, of, switchMap, shareReplay, combineLatest, Subject, Subscription } from 'rxjs';
9
9
  import { BreakpointObserver } from '@angular/cdk/layout';
@@ -511,6 +511,128 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
511
511
  args: [{ name: 'truncate', standalone: true }]
512
512
  }] });
513
513
 
514
+ /**
515
+ * A link component that supports basic and inline variants
516
+ * with optional left and right icons.
517
+ *
518
+ * @example
519
+ * ```html
520
+ * <lib-link text="Link item" href="/details"></lib-link>
521
+ *
522
+ * <lib-link
523
+ * text="Inline link"
524
+ * type="inline"
525
+ * href="/details">
526
+ * </lib-link>
527
+ *
528
+ * <lib-link
529
+ * text="Disabled link"
530
+ * [disabled]="true">
531
+ * </lib-link>
532
+ * ```
533
+ */
534
+ class LinkComponent {
535
+ constructor() {
536
+ this.text = '';
537
+ this.type = 'basic';
538
+ this.state = 'default';
539
+ this.disabled = false;
540
+ this.linkClick = new EventEmitter();
541
+ }
542
+ get computedState() {
543
+ return this.disabled ? 'disabled' : this.state;
544
+ }
545
+ get hasLeftIcon() {
546
+ return this.leftIcon !== undefined;
547
+ }
548
+ get hasRightIcon() {
549
+ return this.rightIcon !== undefined;
550
+ }
551
+ get computedLeftIcon() {
552
+ return this.leftIcon || '';
553
+ }
554
+ get computedRightIcon() {
555
+ return this.rightIcon || '';
556
+ }
557
+ get computedHref() {
558
+ if (this.computedState === 'disabled') {
559
+ return null;
560
+ }
561
+ return this.href ?? null;
562
+ }
563
+ get computedRel() {
564
+ if (this.rel) {
565
+ return this.rel;
566
+ }
567
+ if (this.target === '_blank') {
568
+ return 'noopener noreferrer';
569
+ }
570
+ return null;
571
+ }
572
+ get computedAriaLabel() {
573
+ if (this.ariaLabel) {
574
+ return this.ariaLabel;
575
+ }
576
+ if (this.text) {
577
+ return this.text;
578
+ }
579
+ if (this.textHtml) {
580
+ return this.textHtml.replace(/<[^>]*>/g, '').trim();
581
+ }
582
+ if (this.imageAlt) {
583
+ return this.imageAlt;
584
+ }
585
+ return '';
586
+ }
587
+ onClick(event) {
588
+ if (this.computedState === 'disabled') {
589
+ event.preventDefault();
590
+ event.stopImmediatePropagation();
591
+ return;
592
+ }
593
+ this.linkClick.emit(event);
594
+ }
595
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: LinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
596
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.15", type: LinkComponent, isStandalone: true, selector: "lib-link", inputs: { text: "text", textHtml: "textHtml", imageSrc: "imageSrc", imageAlt: "imageAlt", imageTitle: "imageTitle", imageClass: "imageClass", href: "href", target: "target", rel: "rel", type: "type", state: "state", disabled: ["disabled", "disabled", booleanAttribute], leftIcon: "leftIcon", rightIcon: "rightIcon", ariaLabel: "ariaLabel" }, outputs: { linkClick: "linkClick" }, ngImport: i0, template: "<a\n class=\"link\"\n [ngClass]=\"[\n 'link--' + type,\n 'link--state-' + computedState,\n computedState === 'disabled' ? 'link--disabled' : ''\n ]\"\n [attr.href]=\"computedHref\"\n [attr.target]=\"target\"\n [attr.rel]=\"computedRel\"\n [attr.aria-disabled]=\"computedState === 'disabled'\"\n [attr.aria-label]=\"computedAriaLabel\"\n [attr.tabindex]=\"computedState === 'disabled' ? -1 : 0\"\n (click)=\"onClick($event)\"\n>\n <span\n *ngIf=\"hasLeftIcon\"\n class=\"material-symbols-outlined link__icon link__icon--left\"\n aria-hidden=\"true\"\n >\n {{ computedLeftIcon }}\n </span>\n <ng-container *ngIf=\"imageSrc; else textContent\">\n <img\n [src]=\"imageSrc\"\n [attr.alt]=\"imageAlt || ''\"\n [attr.title]=\"imageTitle || null\"\n [class]=\"imageClass || null\"\n />\n </ng-container>\n <ng-template #textContent>\n <span class=\"link__text\" *ngIf=\"textHtml; else plainText\" [innerHTML]=\"textHtml\"></span>\n <ng-template #plainText>\n <span class=\"link__text\">{{ text }}</span>\n </ng-template>\n </ng-template>\n <span\n *ngIf=\"hasRightIcon\"\n class=\"material-symbols-outlined link__icon link__icon--right\"\n aria-hidden=\"true\"\n >\n {{ computedRightIcon }}\n </span>\n</a>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.link{--link-color-default: #0047ba;--link-color-hover-inline: #00245d;--link-background-hover-basic: #e5edf8;--link-color-disabled: #676767;--link-icon-disabled: #676767;--link-background-disabled: #f9f9f9;align-items:center;background-color:transparent;border-radius:.25rem;color:var(--link-color-default);cursor:pointer;display:inline-flex;font-weight:400;gap:.25rem;padding:.25rem;position:relative;text-decoration:none}.link:after{border:.125rem solid #b967c7;border-radius:.25rem;content:\"\";inset:-.25rem;opacity:0;position:absolute;transition:opacity .15s ease-in-out;pointer-events:none}.link:focus-visible:after{opacity:1}.link:focus-visible{outline:none}.link.link--basic:hover:not(.link--disabled){background-color:#e5edf880}.link.link--inline:hover:not(.link--disabled){color:var(--link-color-hover-inline)}.link.link--state-hover.link--basic{background-color:#e5edf880}.link.link--state-hover.link--inline{color:var(--link-color-hover-inline)}.link.link--disabled,.link.link--state-disabled{background-color:#f9f9f980;color:var(--link-color-disabled);cursor:default;pointer-events:none}.link--inline{padding-top:0;padding-bottom:0}.link--inline a{padding:0}.link--inline:hover:not(.link--disabled) .link__text,.link--inline.link--state-hover .link__text{text-decoration:underline}.link__icon{align-items:center;color:inherit;display:inline-flex;justify-content:center;height:1.25rem}.link--disabled .link__icon,.link--state-disabled .link__icon{color:var(--link-icon-disabled)}.link__text{align-items:center;display:inline-flex}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
597
+ }
598
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: LinkComponent, decorators: [{
599
+ type: Component,
600
+ args: [{ selector: 'lib-link', standalone: true, imports: [CommonModule], template: "<a\n class=\"link\"\n [ngClass]=\"[\n 'link--' + type,\n 'link--state-' + computedState,\n computedState === 'disabled' ? 'link--disabled' : ''\n ]\"\n [attr.href]=\"computedHref\"\n [attr.target]=\"target\"\n [attr.rel]=\"computedRel\"\n [attr.aria-disabled]=\"computedState === 'disabled'\"\n [attr.aria-label]=\"computedAriaLabel\"\n [attr.tabindex]=\"computedState === 'disabled' ? -1 : 0\"\n (click)=\"onClick($event)\"\n>\n <span\n *ngIf=\"hasLeftIcon\"\n class=\"material-symbols-outlined link__icon link__icon--left\"\n aria-hidden=\"true\"\n >\n {{ computedLeftIcon }}\n </span>\n <ng-container *ngIf=\"imageSrc; else textContent\">\n <img\n [src]=\"imageSrc\"\n [attr.alt]=\"imageAlt || ''\"\n [attr.title]=\"imageTitle || null\"\n [class]=\"imageClass || null\"\n />\n </ng-container>\n <ng-template #textContent>\n <span class=\"link__text\" *ngIf=\"textHtml; else plainText\" [innerHTML]=\"textHtml\"></span>\n <ng-template #plainText>\n <span class=\"link__text\">{{ text }}</span>\n </ng-template>\n </ng-template>\n <span\n *ngIf=\"hasRightIcon\"\n class=\"material-symbols-outlined link__icon link__icon--right\"\n aria-hidden=\"true\"\n >\n {{ computedRightIcon }}\n </span>\n</a>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.link{--link-color-default: #0047ba;--link-color-hover-inline: #00245d;--link-background-hover-basic: #e5edf8;--link-color-disabled: #676767;--link-icon-disabled: #676767;--link-background-disabled: #f9f9f9;align-items:center;background-color:transparent;border-radius:.25rem;color:var(--link-color-default);cursor:pointer;display:inline-flex;font-weight:400;gap:.25rem;padding:.25rem;position:relative;text-decoration:none}.link:after{border:.125rem solid #b967c7;border-radius:.25rem;content:\"\";inset:-.25rem;opacity:0;position:absolute;transition:opacity .15s ease-in-out;pointer-events:none}.link:focus-visible:after{opacity:1}.link:focus-visible{outline:none}.link.link--basic:hover:not(.link--disabled){background-color:#e5edf880}.link.link--inline:hover:not(.link--disabled){color:var(--link-color-hover-inline)}.link.link--state-hover.link--basic{background-color:#e5edf880}.link.link--state-hover.link--inline{color:var(--link-color-hover-inline)}.link.link--disabled,.link.link--state-disabled{background-color:#f9f9f980;color:var(--link-color-disabled);cursor:default;pointer-events:none}.link--inline{padding-top:0;padding-bottom:0}.link--inline a{padding:0}.link--inline:hover:not(.link--disabled) .link__text,.link--inline.link--state-hover .link__text{text-decoration:underline}.link__icon{align-items:center;color:inherit;display:inline-flex;justify-content:center;height:1.25rem}.link--disabled .link__icon,.link--state-disabled .link__icon{color:var(--link-icon-disabled)}.link__text{align-items:center;display:inline-flex}\n"] }]
601
+ }], propDecorators: { text: [{
602
+ type: Input
603
+ }], textHtml: [{
604
+ type: Input
605
+ }], imageSrc: [{
606
+ type: Input
607
+ }], imageAlt: [{
608
+ type: Input
609
+ }], imageTitle: [{
610
+ type: Input
611
+ }], imageClass: [{
612
+ type: Input
613
+ }], href: [{
614
+ type: Input
615
+ }], target: [{
616
+ type: Input
617
+ }], rel: [{
618
+ type: Input
619
+ }], type: [{
620
+ type: Input
621
+ }], state: [{
622
+ type: Input
623
+ }], disabled: [{
624
+ type: Input,
625
+ args: [{ transform: booleanAttribute }]
626
+ }], leftIcon: [{
627
+ type: Input
628
+ }], rightIcon: [{
629
+ type: Input
630
+ }], ariaLabel: [{
631
+ type: Input
632
+ }], linkClick: [{
633
+ type: Output
634
+ }] } });
635
+
514
636
  const LIBRARY_HOURS_API_URL = 'https://apps.lib.byu.edu/libraryhours/api/hours';
515
637
  class HbllHeaderComponent {
516
638
  constructor() {
@@ -599,11 +721,18 @@ class HbllHeaderComponent {
599
721
  }
600
722
  }
601
723
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HbllHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
602
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: HbllHeaderComponent, isStandalone: true, selector: "lib-hbll-header", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, mainsitebaseurl: { classPropertyName: "mainsitebaseurl", publicName: "mainsitebaseurl", isSignal: false, isRequired: false, transformFunction: null }, showImpersonateButton: { classPropertyName: "showImpersonateButton", publicName: "showImpersonateButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openImpersonationModal: "openImpersonationModal", login: "login", logout: "logout" }, host: { listeners: { "window:resize": "setMobileSidebarHeight()" } }, viewQueries: [{ propertyName: "accountInfoEl", first: true, predicate: ["accountInfo"], descendants: true, isSignal: true }, { propertyName: "hoursEl", first: true, predicate: ["hours"], descendants: true, isSignal: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "navWrapper", first: true, predicate: ["navWrapper"], descendants: true }, { propertyName: "backdrop", first: true, predicate: ["backdrop"], descendants: true }], ngImport: i0, template: "<header\n role=\"banner\"\n class=\"hbll-header-wrapper\"\n #header\n [ngClass]=\"{ 'hbll-header-desktop': !isScreenSmall() }\"\n>\n <a [href]=\"mainsitebaseurl\">\n <h1>\n <img\n src=\"https://media.lib.byu.edu/web-assets/images/2.0.0/byu-hbll-logo-full.svg\"\n alt=\"BYU Library Logo\"\n />\n </h1>\n </a>\n <button (click)=\"focusMainContent()\" class=\"sr-only sr-only-focusable skip-link\">Skip to main content</button>\n <div id=\"libraryInfo\" class=\"hbll-header-wrapper\">\n @if (!isScreenSmall()) {\n <div #hours id=\"mainLibraryHours\" data-testid=\"desktopHours\">\n <button\n (click)=\"showLibraryHours = !showLibraryHours\"\n class=\"hbll-header-wrapper\"\n data-testid=\"hoursBtn\"\n >\n <ng-container *ngTemplateOutlet=\"hoursTextBlock\"></ng-container>\n </button>\n @if (!isScreenSmall() && showLibraryHours) {\n <div\n @libHbllFadeInOut\n id=\"libraryHoursDropdown\"\n data-testid=\"libraryHoursDropdown\"\n >\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Regular Hours</h2>\n <div class=\"hbll-header-detail\">\n <h3 class=\"hbll-header-item\">Monday - Friday</h3>\n <h3 class=\"hbll-header-item\">Saturday</h3>\n <h3 class=\"hbll-header-item\">Sunday</h3>\n </div>\n <div class=\"hbll-header-hours\">\n <div class=\"hbll-header-item\">7:00 a.m. - 11:45 p.m.</div>\n <div class=\"hbll-header-item\">8:00 a.m. - 11:45 p.m.</div>\n <div class=\"hbll-header-item\">Closed*</div>\n </div>\n <div class=\"hbll-header-hours-note\">\n * Family history ONLY 4:00 p.m. - 8:00 p.m\n <ul>\n <li><span>No checkouts after 11:45 p.m.</span></li>\n <li>\n <span>All services closed 10:45 to noon on Tuesdays</span>\n </li>\n </ul>\n </div>\n </section>\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Upcoming Exceptions</h2>\n @if (hoursExceptions$ | async; as exceptions) {\n <div class=\"hbll-header-detail\" data-testid=\"exceptionsDetail\">\n @for (exception of exceptions; track exception.date) {\n <h3 class=\"hbll-header-item\">\n {{ exception.date | date: 'MMM. d, y' }}\n </h3>\n } @empty {\n No upcoming exceptions\n }\n </div>\n <div class=\"hbll-header-hours\" data-testid=\"exceptionsHours\">\n @for (exception of exceptions; track exception.date) {\n <div class=\"hbll-header-item\"\n [attr.title]=\"exception.exception_title\"\n [attr.aria-label]=\"exception.exception_title\">\n {{ exception.exception_title | truncate:32:'...' }}\n </div>\n }\n </div>\n } @else {\n <div class=\"lib-spinner\" data-testid=\"exceptionsSpinner\"></div>\n }\n </section>\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Library Cafe</h2>\n <div class=\"hbll-header-detail\">\n <h3 class=\"hbll-header-item\">Bagel Bubble</h3>\n <h3 class=\"hbll-header-item\">Provecho</h3>\n </div>\n <div class=\"hbll-header-hours\">\n <div class=\"hbll-header-item\">7:00 a.m. - 11:00 p.m.</div>\n <div class=\"hbll-header-item\">10:30 a.m. - 2:00 p.m.</div>\n </div>\n </section>\n <a [href]=\"mainsitebaseurl + '/about/hours'\"\n >See all hours\n <span class=\"material-symbols-outlined\"> chevron_right </span></a\n >\n </div>\n }\n </div>\n }\n <div id=\"accountInfo\" #accountInfo>\n <button\n (click)=\"isLoggedIn ? (showAccountDropdown = !showAccountDropdown) : login.emit()\"\n class=\"hbll-header-wrapper\"\n id=\"accountBtn\"\n data-testid=\"accountBtn\"\n >\n <span class=\"material-symbols-outlined hbll-header-left-icon\"> person </span>\n @if (!isScreenSmall()) {\n <span class=\"hbll-header-name\" data-testid=\"name\">{{\n isLoggedIn ? '&nbsp;' + name : 'Login'\n }}</span>\n }\n @if (isLoggedIn) {\n <span class=\"material-symbols-outlined\" data-testid=\"loginDropdown\">\n arrow_drop_down\n </span>\n }\n </button>\n @if (isLoggedIn && showAccountDropdown) {\n <div @libHbllFadeInOut id=\"accountDropdown\" data-testid=\"accountDropdown\">\n <a [href]=\"mainsitebaseurl + '/account'\">My Account</a>\n <a [href]=\"mainsitebaseurl + '/account'\">My Items</a>\n <a [href]=\"mainsitebaseurl + '/account/request'\">Request an item</a>\n <a [href]=\"mainsitebaseurl + '/account/saved'\">Saved</a>\n <a [href]=\"mainsitebaseurl + '/account/courses'\">Courses</a>\n <a [href]=\"mainsitebaseurl + '/account/rooms'\">Rooms</a>\n <a [href]=\"mainsitebaseurl + '/account/preferences'\">Preferences</a>\n @if (showImpersonateButton()) {\n <button\n (click)=\"openImpersonationModal.emit(); showAccountDropdown = false\"\n class=\"hbll-header-impersonate-btn\"\n >\n Impersonate\n </button>\n }\n <button (click)=\"logout.emit()\" data-testid=\"logout\">Logout</button>\n </div>\n }\n </div>\n @if (isScreenSmall()) {\n <div id=\"mobileNav\" [class.collapsed]=\"!showNavBar\">\n <button\n class=\"hbll-header-wrapper\"\n data-testid=\"mobileNavBtn\"\n (click)=\"openSidebarNav()\"\n >\n <span class=\"material-symbols-outlined hbll-header-icon\"> menu </span>\n </button>\n <div\n #navWrapper\n id=\"navWrapper\"\n data-testid=\"mobileNav\"\n [class.open]=\"showNavBar\"\n [attr.inert]=\"!showNavBar ? true : null\"\n >\n <button\n id=\"closeMobileNavBtn\"\n class=\"hbll-header-wrapper\"\n data-testid=\"closeMobileNavBtn\"\n (click)=\"closeSidebarNav()\"\n >\n <span class=\"material-symbols-outlined hbll-header-icon\"> close </span>\n </button>\n <lib-nav-bar\n [mainSiteBaseUrl]=\"mainsitebaseurl\"\n [height]=\"mobileSidebarHeight\"\n />\n </div>\n <div\n #backdrop\n (click)=\"closeSidebarNav()\"\n class=\"hbll-nav-backdrop\"\n [class.open]=\"showNavBar\"\n data-testid=\"mobileNavBackdrop\"\n ></div>\n </div>\n }\n </div>\n</header>\n\n@if (!isScreenSmall()) {\n <div id=\"mainNav\">\n <lib-nav-bar [mainSiteBaseUrl]=\"mainsitebaseurl\" />\n </div>\n}\n@if (isScreenSmall()) {\n <a\n id=\"mobileLibraryHours\"\n [href]=\"mainsitebaseurl + '/about/hours'\"\n class=\"hbll-header-wrapper\"\n data-testid=\"mobileHours\"\n >\n <ng-container *ngTemplateOutlet=\"hoursTextBlock\"></ng-container>\n </a>\n}\n\n<ng-template #hoursTextBlock>\n @if (libraryHours()) {\n <span class=\"material-symbols-outlined hbll-header-left-icon\"> schedule </span>\n {{\n libraryHours()?.is_closed\n ? 'CLOSED'\n : \"Today's hours: \" +\n (libraryHours()!.date | libraryHours: libraryHours()!.open_time) +\n ' - ' +\n (libraryHours()!.date | libraryHours: libraryHours()!.close_time)\n }}\n }\n</ng-template>\n", styles: [".lib-spinner{border:.3em solid #dfe9f7;border-top:.3em solid #457fa6;border-radius:100%;width:30px;height:30px;animation:loadingSpinnerAnimate 1s ease infinite;position:relative}@keyframes loadingSpinnerAnimate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.hbll-header-wrapper{display:flex;align-items:center;font-size:1em}.skip-link{margin-left:.625rem;background:#fff;color:#00285b;font-size:.9375rem;font-weight:580;padding:.3125rem .625rem;text-decoration:none;border:.1171875rem solid #0050b7;border-radius:.15625rem;cursor:pointer;outline:.1875rem solid #b967c7;outline-offset:-.1875rem;border-radius:.25rem}.skip-link:hover{color:#00285b;background-color:#e3edf8;border:.1171875rem solid #e3edf8}.hbll-nav-backdrop{background-color:#000;opacity:.3;height:100vh;width:100vw;left:0;top:0;transform:translate(-100vw);position:absolute;z-index:-1}.hbll-nav-backdrop.open{animation-name:fadeIn;animation-duration:.15s;animation-timing-function:ease-in;animation-fill-mode:forwards}.hbll-nav-backdrop.is-closing{animation-name:fadeOut;animation-duration:.15s;animation-timing-function:ease-out;animation-fill-mode:forwards}#mobileLibraryHours{color:#141414;background-color:#e6e6e6;font-size:1em;min-height:2em}#mobileLibraryHours.hbll-header-wrapper{width:100%;justify-content:center;padding:.2em}.hbll-header-icon,.hbll-header-left-icon{font-size:1.2em}.hbll-header-left-icon{margin-right:.2em}header{background-color:#00245d;display:flex;align-items:center}header a h1{font-size:100%;margin:0;height:1.8em}header a h1 img{height:100%;padding:0 0 0 .6em}header #libraryInfo{margin-left:auto;color:#fff}header #libraryInfo a,header #libraryInfo button{transition:color .2s ease-in-out;color:#fffc}header #libraryInfo a:hover,header #libraryInfo button:hover{color:#fff}header #libraryInfo #accountInfo button,header #libraryInfo #mobileNav button{padding:.8em .6em}header #libraryInfo #accountBtn .name{margin-left:.4em}header #libraryInfo #mobileNav{position:relative;z-index:11}header #libraryInfo #mobileNav.collapsed #navWrapper{left:-9999px;top:auto;overflow:hidden;width:1px;height:1px}header #libraryInfo #mobileNav.collapsed .hbll-nav-backdrop{display:none}header #libraryInfo #mobileNav.collapsed nav{left:-9999px;top:auto;overflow:hidden;width:1px;height:1px}header #libraryInfo #mobileNav #navWrapper{color:#fff;position:fixed;top:0}header #libraryInfo #mobileNav #navWrapper.open{animation-name:slideInFromRight;animation-duration:.2s;animation-timing-function:ease-in-out;animation-fill-mode:forwards}header #libraryInfo #mobileNav #navWrapper.is-closing{animation-name:slideOutToRight;animation-duration:.2s;animation-timing-function:ease-in-out;animation-fill-mode:forwards}header #libraryInfo #mobileNav #navWrapper #closeMobileNavBtn{background-color:#0047ba;margin-left:auto;padding-left:.9em}header #libraryInfo :last-child button{padding-right:1em!important}header #libraryInfo .hbll-header-icon,header #libraryInfo .hbll-header-left-icon{font-size:1.6em}header #libraryInfo #accountInfo{position:relative}header #libraryInfo #accountInfo #accountDropdown{font-size:1em;text-wrap:nowrap;position:absolute;background-color:#00245d;top:100%;right:-32px;z-index:11}header #libraryInfo #accountInfo #accountDropdown .hbll-header-impersonate-btn{color:#bd72cb}header #libraryInfo #accountInfo #accountDropdown .hbll-header-impersonate-btn:hover{color:#d68fe2}header #libraryInfo #accountInfo #accountDropdown a,header #libraryInfo #accountInfo #accountDropdown button{display:block;width:100%;text-align:left;padding:.4em 1.2em;font-size:1.1em}header #libraryInfo #accountInfo #accountDropdown a:first-child,header #libraryInfo #accountInfo #accountDropdown button:first-child{margin-bottom:.4em;padding-top:.6em;padding-bottom:.6em;border-bottom:1px solid rgba(255,255,255,.3)}header #libraryInfo #accountInfo #accountDropdown a:last-child,header #libraryInfo #accountInfo #accountDropdown button:last-child{margin-top:.4em;border-top:1px solid rgba(255,255,255,.3);padding-top:.6em;padding-bottom:.6em}header #libraryInfo #accountInfo #accountDropdown:before{content:\"\";width:0;height:0;border-style:solid;border-width:0 .6em .6em .6em;border-color:transparent transparent hsl(214,41%,23%) transparent;position:absolute;bottom:100%;right:50%;transform:translate(50%);z-index:inherit}header.hbll-header-desktop{padding:0 2em}header.hbll-header-desktop #libraryInfo #mainLibraryHours{position:relative;margin-right:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown{z-index:12;background-color:#fff;border-radius:4px;border:1px solid #d2d2d2;position:absolute;color:#000;padding:2em;top:100%;max-width:400%;right:50%;transform:translate(50%);margin-top:.6em;margin-right:1.25rem}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section{display:grid;grid-template-columns:repeat(4,7.5em);grid-template-rows:1fr;grid-column-gap:0px;grid-row-gap:0px;margin-bottom:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section h2{margin:0}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note{grid-column:2/-1;font-size:.8em;margin-top:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note ul{list-style-type:disc;list-style-position:inside;margin-left:.8em;padding:0}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note ul li span{position:relative}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-header{font-weight:600;font-size:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours{margin-top:.2em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail .hbll-header-item+.hbll-header-item,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours .hbll-header-item+.hbll-header-item{margin-top:.3em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail h3,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours h3{margin:0;font-size:inherit}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail{font-weight:600;white-space:nowrap}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours{white-space:nowrap}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown a{color:#457fa6;display:flex;align-items:center;float:right}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown a:hover{color:#a2bfd3}header.hbll-header-desktop #libraryInfo #accountInfo #accountDropdown{right:auto;left:50%;transform:translate(-50%)}button{background-color:transparent;border:none;cursor:pointer;font-family:inherit;font-size:inherit;color:inherit;padding:0}button:focus-visible{outline:.1875rem solid #b967c7;outline-offset:-.1875rem;border-radius:.25rem}a:focus-visible{outline:.1875rem solid #b967c7;outline-offset:-.1875rem;border-radius:.25rem}@keyframes slideInFromRight{0%{transform:translate(calc(min(100vw,400px) - 55px))}to{transform:translate(0)}}@keyframes slideOutToRight{0%{transform:translate(0)}to{transform:translate(min(100vw,400px))}}@keyframes fadeIn{0%{opacity:0}to{opacity:.3}}@keyframes fadeOut{0%{opacity:.3}to{opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NavBarComponent, selector: "lib-nav-bar", inputs: ["mainSiteBaseUrl", "height"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: LibraryHoursPipe, name: "libraryHours" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: TruncatePipe, name: "truncate" }], animations: [libHbllFadeInOut] }); }
724
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: HbllHeaderComponent, isStandalone: true, selector: "lib-hbll-header", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, mainsitebaseurl: { classPropertyName: "mainsitebaseurl", publicName: "mainsitebaseurl", isSignal: false, isRequired: false, transformFunction: null }, showImpersonateButton: { classPropertyName: "showImpersonateButton", publicName: "showImpersonateButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openImpersonationModal: "openImpersonationModal", login: "login", logout: "logout" }, host: { listeners: { "window:resize": "setMobileSidebarHeight()" } }, viewQueries: [{ propertyName: "accountInfoEl", first: true, predicate: ["accountInfo"], descendants: true, isSignal: true }, { propertyName: "hoursEl", first: true, predicate: ["hours"], descendants: true, isSignal: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "navWrapper", first: true, predicate: ["navWrapper"], descendants: true }, { propertyName: "backdrop", first: true, predicate: ["backdrop"], descendants: true }], ngImport: i0, template: "<header\n role=\"banner\"\n class=\"hbll-header-wrapper\"\n #header\n [ngClass]=\"{ 'hbll-header-desktop': !isScreenSmall() }\"\n>\n <a [href]=\"mainsitebaseurl\">\n <h1>\n <img\n src=\"https://media.lib.byu.edu/web-assets/images/2.0.0/byu-hbll-logo-full.svg\"\n alt=\"BYU Library Logo\"\n />\n </h1>\n </a>\n <button (click)=\"focusMainContent()\" class=\"sr-only sr-only-focusable skip-link\">Skip to main content</button>\n <div id=\"libraryInfo\" class=\"hbll-header-wrapper\">\n @if (!isScreenSmall()) {\n <div #hours id=\"mainLibraryHours\" data-testid=\"desktopHours\">\n <button\n (click)=\"showLibraryHours = !showLibraryHours\"\n class=\"hbll-header-wrapper\"\n data-testid=\"hoursBtn\"\n >\n <ng-container *ngTemplateOutlet=\"hoursTextBlock\"></ng-container>\n </button>\n @if (!isScreenSmall() && showLibraryHours) {\n <div\n @libHbllFadeInOut\n id=\"libraryHoursDropdown\"\n data-testid=\"libraryHoursDropdown\"\n >\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Regular Hours</h2>\n <div class=\"hbll-header-detail\">\n <h3 class=\"hbll-header-item\">Monday - Friday</h3>\n <h3 class=\"hbll-header-item\">Saturday</h3>\n <h3 class=\"hbll-header-item\">Sunday</h3>\n </div>\n <div class=\"hbll-header-hours\">\n <div class=\"hbll-header-item\">7:00 a.m. - 11:45 p.m.</div>\n <div class=\"hbll-header-item\">8:00 a.m. - 11:45 p.m.</div>\n <div class=\"hbll-header-item\">Closed*</div>\n </div>\n <div class=\"hbll-header-hours-note\">\n <span>* Family history ONLY 4:00 p.m. - 8:00 p.m</span>\n <ul>\n <li><span>No checkouts after 11:45 p.m.</span></li>\n <li>\n <span>All services closed 10:45 to noon on Tuesdays</span>\n </li>\n </ul>\n </div>\n </section>\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Upcoming Exceptions</h2>\n @if (hoursExceptions$ | async; as exceptions) {\n <div class=\"hbll-header-detail\" data-testid=\"exceptionsDetail\">\n @for (exception of exceptions; track exception.date) {\n <h3 class=\"hbll-header-item\">\n {{ exception.date | date: 'MMM. d, y' }}\n </h3>\n } @empty {\n No upcoming exceptions\n }\n </div>\n <div class=\"hbll-header-hours\" data-testid=\"exceptionsHours\">\n @for (exception of exceptions; track exception.date) {\n <div class=\"hbll-header-item\"\n [attr.title]=\"exception.exception_title\"\n [attr.aria-label]=\"exception.exception_title\">\n {{ exception.exception_title | truncate:32:'...' }}\n </div>\n }\n </div>\n } @else {\n <div class=\"lib-spinner\" data-testid=\"exceptionsSpinner\"></div>\n }\n </section>\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Library Cafe</h2>\n <div class=\"hbll-header-detail\">\n <h3 class=\"hbll-header-item\">Bagel Bubble</h3>\n <h3 class=\"hbll-header-item\">Provecho</h3>\n </div>\n <div class=\"hbll-header-hours\">\n <div class=\"hbll-header-item\">9:00 a.m. - 8:00 p.m.**</div>\n <div class=\"hbll-header-item\">10:30 a.m. - 7:00 p.m.***</div>\n </div>\n <div class=\"hbll-header-hours-note\">\n <span>\n ** Bagel Bubble open 10:00 a.m. - 6:00 p.m. Saturday, closed\n Sunday\n </span>\n <span>*** Provecho closed Saturday and Sunday</span>\n </div>\n </section>\n <lib-link [href]=\"mainsitebaseurl + '/about/hours'\" text=\"See all hours\" rightIcon=\"chevron_right\"/>\n </div>\n }\n </div>\n }\n <div id=\"accountInfo\" #accountInfo>\n <button\n (click)=\"isLoggedIn ? (showAccountDropdown = !showAccountDropdown) : login.emit()\"\n class=\"hbll-header-wrapper\"\n id=\"accountBtn\"\n data-testid=\"accountBtn\"\n >\n <span class=\"material-symbols-outlined hbll-header-left-icon\"> person </span>\n @if (!isScreenSmall()) {\n <span class=\"hbll-header-name\" data-testid=\"name\">{{\n isLoggedIn ? '&nbsp;' + name : 'Login'\n }}</span>\n }\n @if (isLoggedIn) {\n <span class=\"material-symbols-outlined\" data-testid=\"loginDropdown\">\n arrow_drop_down\n </span>\n }\n </button>\n @if (isLoggedIn && showAccountDropdown) {\n <div @libHbllFadeInOut id=\"accountDropdown\" data-testid=\"accountDropdown\">\n <a [href]=\"mainsitebaseurl + '/account'\">My Account</a>\n <a [href]=\"mainsitebaseurl + '/account'\">My Items</a>\n <a [href]=\"mainsitebaseurl + '/account/request'\">Request an item</a>\n <a [href]=\"mainsitebaseurl + '/account/saved'\">Saved</a>\n <a [href]=\"mainsitebaseurl + '/account/courses'\">Courses</a>\n <a [href]=\"mainsitebaseurl + '/account/rooms'\">Rooms</a>\n <a [href]=\"mainsitebaseurl + '/account/preferences'\">Preferences</a>\n @if (showImpersonateButton()) {\n <button\n (click)=\"openImpersonationModal.emit(); showAccountDropdown = false\"\n class=\"hbll-header-impersonate-btn\"\n >\n Impersonate\n </button>\n }\n <button (click)=\"logout.emit()\" data-testid=\"logout\">Logout</button>\n </div>\n }\n </div>\n @if (isScreenSmall()) {\n <div id=\"mobileNav\" [class.collapsed]=\"!showNavBar\">\n <button\n class=\"hbll-header-wrapper\"\n data-testid=\"mobileNavBtn\"\n (click)=\"openSidebarNav()\"\n >\n <span class=\"material-symbols-outlined hbll-header-icon\"> menu </span>\n </button>\n <div\n #navWrapper\n id=\"navWrapper\"\n data-testid=\"mobileNav\"\n [class.open]=\"showNavBar\"\n [attr.inert]=\"!showNavBar ? true : null\"\n >\n <button\n id=\"closeMobileNavBtn\"\n class=\"hbll-header-wrapper\"\n data-testid=\"closeMobileNavBtn\"\n (click)=\"closeSidebarNav()\"\n >\n <span class=\"material-symbols-outlined hbll-header-icon\"> close </span>\n </button>\n <lib-nav-bar\n [mainSiteBaseUrl]=\"mainsitebaseurl\"\n [height]=\"mobileSidebarHeight\"\n />\n </div>\n <div\n #backdrop\n (click)=\"closeSidebarNav()\"\n class=\"hbll-nav-backdrop\"\n [class.open]=\"showNavBar\"\n data-testid=\"mobileNavBackdrop\"\n ></div>\n </div>\n }\n </div>\n</header>\n\n@if (!isScreenSmall()) {\n <div id=\"mainNav\">\n <lib-nav-bar [mainSiteBaseUrl]=\"mainsitebaseurl\" />\n </div>\n}\n@if (isScreenSmall()) {\n <a\n id=\"mobileLibraryHours\"\n [href]=\"mainsitebaseurl + '/about/hours'\"\n class=\"hbll-header-wrapper\"\n data-testid=\"mobileHours\"\n >\n <ng-container *ngTemplateOutlet=\"hoursTextBlock\"></ng-container>\n </a>\n}\n\n<ng-template #hoursTextBlock>\n @if (libraryHours()) {\n <span class=\"material-symbols-outlined hbll-header-left-icon\"> schedule </span>\n {{\n libraryHours()?.is_closed\n ? 'CLOSED'\n : \"Today's hours: \" +\n (libraryHours()!.date | libraryHours: libraryHours()!.open_time) +\n ' - ' +\n (libraryHours()!.date | libraryHours: libraryHours()!.close_time)\n }}\n }\n</ng-template>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.lib-spinner{border:.3em solid #dfe9f7;border-top:.3em solid #457fa6;border-radius:100%;width:30px;height:30px;animation:loadingSpinnerAnimate 1s ease infinite;position:relative}@keyframes loadingSpinnerAnimate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.hbll-header-wrapper{display:flex;align-items:center;font-size:1em}.skip-link{margin-left:.625rem;background:#fff;color:#00285b;font-size:.9375rem;font-weight:580;padding:.3125rem .625rem;text-decoration:none;border:.1171875rem solid #0050b7;border-radius:.15625rem;cursor:pointer;outline:.1875rem solid #b967c7;outline-offset:-.1875rem;border-radius:.25rem}.skip-link:hover{color:#00285b;background-color:#e3edf8;border:.1171875rem solid #e3edf8}.hbll-nav-backdrop{background-color:#000;opacity:.3;height:100vh;width:100vw;left:0;top:0;transform:translate(-100vw);position:absolute;z-index:-1}.hbll-nav-backdrop.open{animation-name:fadeIn;animation-duration:.15s;animation-timing-function:ease-in;animation-fill-mode:forwards}.hbll-nav-backdrop.is-closing{animation-name:fadeOut;animation-duration:.15s;animation-timing-function:ease-out;animation-fill-mode:forwards}#mobileLibraryHours{color:#141414;background-color:#e6e6e6;font-size:1em;min-height:2em}#mobileLibraryHours.hbll-header-wrapper{width:100%;justify-content:center;padding:.2em}.hbll-header-icon,.hbll-header-left-icon{font-size:1.2em}.hbll-header-left-icon{margin-right:.2em}header{background-color:#00245d;display:flex;align-items:center}header a h1{font-size:100%;margin:0;height:1.8em}header a h1 img{height:100%;padding:0 0 0 .6em}header #libraryInfo{margin-left:auto;color:#fff}header #libraryInfo a,header #libraryInfo button{transition:color .2s ease-in-out;color:#fffc}header #libraryInfo a:hover,header #libraryInfo button:hover{color:#fff}header #libraryInfo #accountInfo button,header #libraryInfo #mobileNav button{padding:.8em .6em}header #libraryInfo #accountBtn .name{margin-left:.4em}header #libraryInfo #mobileNav{position:relative;z-index:11}header #libraryInfo #mobileNav.collapsed #navWrapper{left:-9999px;top:auto;overflow:hidden;width:1px;height:1px}header #libraryInfo #mobileNav.collapsed .hbll-nav-backdrop{display:none}header #libraryInfo #mobileNav.collapsed nav{left:-9999px;top:auto;overflow:hidden;width:1px;height:1px}header #libraryInfo #mobileNav #navWrapper{color:#fff;position:fixed;top:0}header #libraryInfo #mobileNav #navWrapper.open{animation-name:slideInFromRight;animation-duration:.2s;animation-timing-function:ease-in-out;animation-fill-mode:forwards}header #libraryInfo #mobileNav #navWrapper.is-closing{animation-name:slideOutToRight;animation-duration:.2s;animation-timing-function:ease-in-out;animation-fill-mode:forwards}header #libraryInfo #mobileNav #navWrapper #closeMobileNavBtn{background-color:#0047ba;margin-left:auto;padding-left:.9em}header #libraryInfo :last-child button{padding-right:1em!important}header #libraryInfo .hbll-header-icon,header #libraryInfo .hbll-header-left-icon{font-size:1.6em}header #libraryInfo #accountInfo{position:relative}header #libraryInfo #accountInfo #accountDropdown{font-size:1em;text-wrap:nowrap;position:absolute;background-color:#00245d;top:100%;right:-32px;z-index:11}header #libraryInfo #accountInfo #accountDropdown .hbll-header-impersonate-btn{color:#bd72cb}header #libraryInfo #accountInfo #accountDropdown .hbll-header-impersonate-btn:hover{color:#d68fe2}header #libraryInfo #accountInfo #accountDropdown a,header #libraryInfo #accountInfo #accountDropdown button{display:block;width:100%;text-align:left;padding:.4em 1.2em;font-size:1.1em}header #libraryInfo #accountInfo #accountDropdown a:first-child,header #libraryInfo #accountInfo #accountDropdown button:first-child{margin-bottom:.4em;padding-top:.6em;padding-bottom:.6em;border-bottom:1px solid rgba(255,255,255,.3)}header #libraryInfo #accountInfo #accountDropdown a:last-child,header #libraryInfo #accountInfo #accountDropdown button:last-child{margin-top:.4em;border-top:1px solid rgba(255,255,255,.3);padding-top:.6em;padding-bottom:.6em}header #libraryInfo #accountInfo #accountDropdown:before{content:\"\";width:0;height:0;border-style:solid;border-width:0 .6em .6em .6em;border-color:transparent transparent hsl(214,41%,23%) transparent;position:absolute;bottom:100%;right:50%;transform:translate(50%);z-index:inherit}header.hbll-header-desktop{padding:0 2em}header.hbll-header-desktop #libraryInfo #mainLibraryHours{position:relative;margin-right:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown{z-index:12;background-color:#fff;border-radius:4px;border:1px solid #d2d2d2;position:absolute;color:#000;padding:2em;top:100%;max-width:400%;right:50%;transform:translate(50%);margin-top:.6em;margin-right:1.25rem}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section{display:grid;grid-template-columns:repeat(4,7.5em);grid-template-rows:1fr;grid-column-gap:0px;grid-row-gap:0px;margin-bottom:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section h2{margin:0;line-height:inherit}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note{grid-column:2/-1;font-size:.75rem;font-weight:400;line-height:1rem;margin-top:.75rem}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note>span{display:block}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note ul{list-style-type:disc;list-style-position:outside;margin:0 0 0 1.25rem;padding:0}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note ul li{font-size:inherit;font-weight:inherit;line-height:inherit;margin:0}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note ul li span{font-size:inherit;font-weight:inherit;position:relative}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-header{font-weight:600;font-size:1rem;line-height:1rem}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours{margin-top:.2em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail .hbll-header-item+.hbll-header-item,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours .hbll-header-item+.hbll-header-item{margin-top:.3em;font-size:1rem}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail .hbll-header-item,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours .hbll-header-item{font-size:1rem;line-height:1rem}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail h3,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours h3{font-weight:inherit;line-height:inherit;margin:0;font-size:inherit}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail{font-weight:600;white-space:nowrap}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours{white-space:nowrap}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown lib-link{display:flex;align-items:center;float:right}header.hbll-header-desktop #libraryInfo #accountInfo #accountDropdown{right:auto;left:50%;transform:translate(-50%)}button{background-color:transparent;border:none;cursor:pointer;font-family:inherit;font-size:inherit;color:inherit;padding:0}button:focus-visible{outline:.1875rem solid #b967c7;outline-offset:-.1875rem;border-radius:.25rem}a:focus-visible{outline:.1875rem solid #b967c7;outline-offset:-.1875rem;border-radius:.25rem}@keyframes slideInFromRight{0%{transform:translate(calc(min(100vw,400px) - 55px))}to{transform:translate(0)}}@keyframes slideOutToRight{0%{transform:translate(0)}to{transform:translate(min(100vw,400px))}}@keyframes fadeIn{0%{opacity:0}to{opacity:.3}}@keyframes fadeOut{0%{opacity:.3}to{opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NavBarComponent, selector: "lib-nav-bar", inputs: ["mainSiteBaseUrl", "height"] }, { kind: "component", type: LinkComponent, selector: "lib-link", inputs: ["text", "textHtml", "imageSrc", "imageAlt", "imageTitle", "imageClass", "href", "target", "rel", "type", "state", "disabled", "leftIcon", "rightIcon", "ariaLabel"], outputs: ["linkClick"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: LibraryHoursPipe, name: "libraryHours" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: TruncatePipe, name: "truncate" }], animations: [libHbllFadeInOut] }); }
603
725
  }
604
726
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HbllHeaderComponent, decorators: [{
605
727
  type: Component,
606
- args: [{ selector: 'lib-hbll-header', imports: [DatePipe, LibraryHoursPipe, CommonModule, NavBarComponent, TruncatePipe], animations: [libHbllFadeInOut], template: "<header\n role=\"banner\"\n class=\"hbll-header-wrapper\"\n #header\n [ngClass]=\"{ 'hbll-header-desktop': !isScreenSmall() }\"\n>\n <a [href]=\"mainsitebaseurl\">\n <h1>\n <img\n src=\"https://media.lib.byu.edu/web-assets/images/2.0.0/byu-hbll-logo-full.svg\"\n alt=\"BYU Library Logo\"\n />\n </h1>\n </a>\n <button (click)=\"focusMainContent()\" class=\"sr-only sr-only-focusable skip-link\">Skip to main content</button>\n <div id=\"libraryInfo\" class=\"hbll-header-wrapper\">\n @if (!isScreenSmall()) {\n <div #hours id=\"mainLibraryHours\" data-testid=\"desktopHours\">\n <button\n (click)=\"showLibraryHours = !showLibraryHours\"\n class=\"hbll-header-wrapper\"\n data-testid=\"hoursBtn\"\n >\n <ng-container *ngTemplateOutlet=\"hoursTextBlock\"></ng-container>\n </button>\n @if (!isScreenSmall() && showLibraryHours) {\n <div\n @libHbllFadeInOut\n id=\"libraryHoursDropdown\"\n data-testid=\"libraryHoursDropdown\"\n >\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Regular Hours</h2>\n <div class=\"hbll-header-detail\">\n <h3 class=\"hbll-header-item\">Monday - Friday</h3>\n <h3 class=\"hbll-header-item\">Saturday</h3>\n <h3 class=\"hbll-header-item\">Sunday</h3>\n </div>\n <div class=\"hbll-header-hours\">\n <div class=\"hbll-header-item\">7:00 a.m. - 11:45 p.m.</div>\n <div class=\"hbll-header-item\">8:00 a.m. - 11:45 p.m.</div>\n <div class=\"hbll-header-item\">Closed*</div>\n </div>\n <div class=\"hbll-header-hours-note\">\n * Family history ONLY 4:00 p.m. - 8:00 p.m\n <ul>\n <li><span>No checkouts after 11:45 p.m.</span></li>\n <li>\n <span>All services closed 10:45 to noon on Tuesdays</span>\n </li>\n </ul>\n </div>\n </section>\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Upcoming Exceptions</h2>\n @if (hoursExceptions$ | async; as exceptions) {\n <div class=\"hbll-header-detail\" data-testid=\"exceptionsDetail\">\n @for (exception of exceptions; track exception.date) {\n <h3 class=\"hbll-header-item\">\n {{ exception.date | date: 'MMM. d, y' }}\n </h3>\n } @empty {\n No upcoming exceptions\n }\n </div>\n <div class=\"hbll-header-hours\" data-testid=\"exceptionsHours\">\n @for (exception of exceptions; track exception.date) {\n <div class=\"hbll-header-item\"\n [attr.title]=\"exception.exception_title\"\n [attr.aria-label]=\"exception.exception_title\">\n {{ exception.exception_title | truncate:32:'...' }}\n </div>\n }\n </div>\n } @else {\n <div class=\"lib-spinner\" data-testid=\"exceptionsSpinner\"></div>\n }\n </section>\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Library Cafe</h2>\n <div class=\"hbll-header-detail\">\n <h3 class=\"hbll-header-item\">Bagel Bubble</h3>\n <h3 class=\"hbll-header-item\">Provecho</h3>\n </div>\n <div class=\"hbll-header-hours\">\n <div class=\"hbll-header-item\">7:00 a.m. - 11:00 p.m.</div>\n <div class=\"hbll-header-item\">10:30 a.m. - 2:00 p.m.</div>\n </div>\n </section>\n <a [href]=\"mainsitebaseurl + '/about/hours'\"\n >See all hours\n <span class=\"material-symbols-outlined\"> chevron_right </span></a\n >\n </div>\n }\n </div>\n }\n <div id=\"accountInfo\" #accountInfo>\n <button\n (click)=\"isLoggedIn ? (showAccountDropdown = !showAccountDropdown) : login.emit()\"\n class=\"hbll-header-wrapper\"\n id=\"accountBtn\"\n data-testid=\"accountBtn\"\n >\n <span class=\"material-symbols-outlined hbll-header-left-icon\"> person </span>\n @if (!isScreenSmall()) {\n <span class=\"hbll-header-name\" data-testid=\"name\">{{\n isLoggedIn ? '&nbsp;' + name : 'Login'\n }}</span>\n }\n @if (isLoggedIn) {\n <span class=\"material-symbols-outlined\" data-testid=\"loginDropdown\">\n arrow_drop_down\n </span>\n }\n </button>\n @if (isLoggedIn && showAccountDropdown) {\n <div @libHbllFadeInOut id=\"accountDropdown\" data-testid=\"accountDropdown\">\n <a [href]=\"mainsitebaseurl + '/account'\">My Account</a>\n <a [href]=\"mainsitebaseurl + '/account'\">My Items</a>\n <a [href]=\"mainsitebaseurl + '/account/request'\">Request an item</a>\n <a [href]=\"mainsitebaseurl + '/account/saved'\">Saved</a>\n <a [href]=\"mainsitebaseurl + '/account/courses'\">Courses</a>\n <a [href]=\"mainsitebaseurl + '/account/rooms'\">Rooms</a>\n <a [href]=\"mainsitebaseurl + '/account/preferences'\">Preferences</a>\n @if (showImpersonateButton()) {\n <button\n (click)=\"openImpersonationModal.emit(); showAccountDropdown = false\"\n class=\"hbll-header-impersonate-btn\"\n >\n Impersonate\n </button>\n }\n <button (click)=\"logout.emit()\" data-testid=\"logout\">Logout</button>\n </div>\n }\n </div>\n @if (isScreenSmall()) {\n <div id=\"mobileNav\" [class.collapsed]=\"!showNavBar\">\n <button\n class=\"hbll-header-wrapper\"\n data-testid=\"mobileNavBtn\"\n (click)=\"openSidebarNav()\"\n >\n <span class=\"material-symbols-outlined hbll-header-icon\"> menu </span>\n </button>\n <div\n #navWrapper\n id=\"navWrapper\"\n data-testid=\"mobileNav\"\n [class.open]=\"showNavBar\"\n [attr.inert]=\"!showNavBar ? true : null\"\n >\n <button\n id=\"closeMobileNavBtn\"\n class=\"hbll-header-wrapper\"\n data-testid=\"closeMobileNavBtn\"\n (click)=\"closeSidebarNav()\"\n >\n <span class=\"material-symbols-outlined hbll-header-icon\"> close </span>\n </button>\n <lib-nav-bar\n [mainSiteBaseUrl]=\"mainsitebaseurl\"\n [height]=\"mobileSidebarHeight\"\n />\n </div>\n <div\n #backdrop\n (click)=\"closeSidebarNav()\"\n class=\"hbll-nav-backdrop\"\n [class.open]=\"showNavBar\"\n data-testid=\"mobileNavBackdrop\"\n ></div>\n </div>\n }\n </div>\n</header>\n\n@if (!isScreenSmall()) {\n <div id=\"mainNav\">\n <lib-nav-bar [mainSiteBaseUrl]=\"mainsitebaseurl\" />\n </div>\n}\n@if (isScreenSmall()) {\n <a\n id=\"mobileLibraryHours\"\n [href]=\"mainsitebaseurl + '/about/hours'\"\n class=\"hbll-header-wrapper\"\n data-testid=\"mobileHours\"\n >\n <ng-container *ngTemplateOutlet=\"hoursTextBlock\"></ng-container>\n </a>\n}\n\n<ng-template #hoursTextBlock>\n @if (libraryHours()) {\n <span class=\"material-symbols-outlined hbll-header-left-icon\"> schedule </span>\n {{\n libraryHours()?.is_closed\n ? 'CLOSED'\n : \"Today's hours: \" +\n (libraryHours()!.date | libraryHours: libraryHours()!.open_time) +\n ' - ' +\n (libraryHours()!.date | libraryHours: libraryHours()!.close_time)\n }}\n }\n</ng-template>\n", styles: [".lib-spinner{border:.3em solid #dfe9f7;border-top:.3em solid #457fa6;border-radius:100%;width:30px;height:30px;animation:loadingSpinnerAnimate 1s ease infinite;position:relative}@keyframes loadingSpinnerAnimate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.hbll-header-wrapper{display:flex;align-items:center;font-size:1em}.skip-link{margin-left:.625rem;background:#fff;color:#00285b;font-size:.9375rem;font-weight:580;padding:.3125rem .625rem;text-decoration:none;border:.1171875rem solid #0050b7;border-radius:.15625rem;cursor:pointer;outline:.1875rem solid #b967c7;outline-offset:-.1875rem;border-radius:.25rem}.skip-link:hover{color:#00285b;background-color:#e3edf8;border:.1171875rem solid #e3edf8}.hbll-nav-backdrop{background-color:#000;opacity:.3;height:100vh;width:100vw;left:0;top:0;transform:translate(-100vw);position:absolute;z-index:-1}.hbll-nav-backdrop.open{animation-name:fadeIn;animation-duration:.15s;animation-timing-function:ease-in;animation-fill-mode:forwards}.hbll-nav-backdrop.is-closing{animation-name:fadeOut;animation-duration:.15s;animation-timing-function:ease-out;animation-fill-mode:forwards}#mobileLibraryHours{color:#141414;background-color:#e6e6e6;font-size:1em;min-height:2em}#mobileLibraryHours.hbll-header-wrapper{width:100%;justify-content:center;padding:.2em}.hbll-header-icon,.hbll-header-left-icon{font-size:1.2em}.hbll-header-left-icon{margin-right:.2em}header{background-color:#00245d;display:flex;align-items:center}header a h1{font-size:100%;margin:0;height:1.8em}header a h1 img{height:100%;padding:0 0 0 .6em}header #libraryInfo{margin-left:auto;color:#fff}header #libraryInfo a,header #libraryInfo button{transition:color .2s ease-in-out;color:#fffc}header #libraryInfo a:hover,header #libraryInfo button:hover{color:#fff}header #libraryInfo #accountInfo button,header #libraryInfo #mobileNav button{padding:.8em .6em}header #libraryInfo #accountBtn .name{margin-left:.4em}header #libraryInfo #mobileNav{position:relative;z-index:11}header #libraryInfo #mobileNav.collapsed #navWrapper{left:-9999px;top:auto;overflow:hidden;width:1px;height:1px}header #libraryInfo #mobileNav.collapsed .hbll-nav-backdrop{display:none}header #libraryInfo #mobileNav.collapsed nav{left:-9999px;top:auto;overflow:hidden;width:1px;height:1px}header #libraryInfo #mobileNav #navWrapper{color:#fff;position:fixed;top:0}header #libraryInfo #mobileNav #navWrapper.open{animation-name:slideInFromRight;animation-duration:.2s;animation-timing-function:ease-in-out;animation-fill-mode:forwards}header #libraryInfo #mobileNav #navWrapper.is-closing{animation-name:slideOutToRight;animation-duration:.2s;animation-timing-function:ease-in-out;animation-fill-mode:forwards}header #libraryInfo #mobileNav #navWrapper #closeMobileNavBtn{background-color:#0047ba;margin-left:auto;padding-left:.9em}header #libraryInfo :last-child button{padding-right:1em!important}header #libraryInfo .hbll-header-icon,header #libraryInfo .hbll-header-left-icon{font-size:1.6em}header #libraryInfo #accountInfo{position:relative}header #libraryInfo #accountInfo #accountDropdown{font-size:1em;text-wrap:nowrap;position:absolute;background-color:#00245d;top:100%;right:-32px;z-index:11}header #libraryInfo #accountInfo #accountDropdown .hbll-header-impersonate-btn{color:#bd72cb}header #libraryInfo #accountInfo #accountDropdown .hbll-header-impersonate-btn:hover{color:#d68fe2}header #libraryInfo #accountInfo #accountDropdown a,header #libraryInfo #accountInfo #accountDropdown button{display:block;width:100%;text-align:left;padding:.4em 1.2em;font-size:1.1em}header #libraryInfo #accountInfo #accountDropdown a:first-child,header #libraryInfo #accountInfo #accountDropdown button:first-child{margin-bottom:.4em;padding-top:.6em;padding-bottom:.6em;border-bottom:1px solid rgba(255,255,255,.3)}header #libraryInfo #accountInfo #accountDropdown a:last-child,header #libraryInfo #accountInfo #accountDropdown button:last-child{margin-top:.4em;border-top:1px solid rgba(255,255,255,.3);padding-top:.6em;padding-bottom:.6em}header #libraryInfo #accountInfo #accountDropdown:before{content:\"\";width:0;height:0;border-style:solid;border-width:0 .6em .6em .6em;border-color:transparent transparent hsl(214,41%,23%) transparent;position:absolute;bottom:100%;right:50%;transform:translate(50%);z-index:inherit}header.hbll-header-desktop{padding:0 2em}header.hbll-header-desktop #libraryInfo #mainLibraryHours{position:relative;margin-right:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown{z-index:12;background-color:#fff;border-radius:4px;border:1px solid #d2d2d2;position:absolute;color:#000;padding:2em;top:100%;max-width:400%;right:50%;transform:translate(50%);margin-top:.6em;margin-right:1.25rem}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section{display:grid;grid-template-columns:repeat(4,7.5em);grid-template-rows:1fr;grid-column-gap:0px;grid-row-gap:0px;margin-bottom:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section h2{margin:0}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note{grid-column:2/-1;font-size:.8em;margin-top:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note ul{list-style-type:disc;list-style-position:inside;margin-left:.8em;padding:0}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note ul li span{position:relative}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-header{font-weight:600;font-size:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours{margin-top:.2em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail .hbll-header-item+.hbll-header-item,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours .hbll-header-item+.hbll-header-item{margin-top:.3em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail h3,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours h3{margin:0;font-size:inherit}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail{font-weight:600;white-space:nowrap}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours{white-space:nowrap}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown a{color:#457fa6;display:flex;align-items:center;float:right}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown a:hover{color:#a2bfd3}header.hbll-header-desktop #libraryInfo #accountInfo #accountDropdown{right:auto;left:50%;transform:translate(-50%)}button{background-color:transparent;border:none;cursor:pointer;font-family:inherit;font-size:inherit;color:inherit;padding:0}button:focus-visible{outline:.1875rem solid #b967c7;outline-offset:-.1875rem;border-radius:.25rem}a:focus-visible{outline:.1875rem solid #b967c7;outline-offset:-.1875rem;border-radius:.25rem}@keyframes slideInFromRight{0%{transform:translate(calc(min(100vw,400px) - 55px))}to{transform:translate(0)}}@keyframes slideOutToRight{0%{transform:translate(0)}to{transform:translate(min(100vw,400px))}}@keyframes fadeIn{0%{opacity:0}to{opacity:.3}}@keyframes fadeOut{0%{opacity:.3}to{opacity:0}}\n"] }]
728
+ args: [{ selector: 'lib-hbll-header', imports: [
729
+ DatePipe,
730
+ LibraryHoursPipe,
731
+ CommonModule,
732
+ NavBarComponent,
733
+ TruncatePipe,
734
+ LinkComponent,
735
+ ], animations: [libHbllFadeInOut], template: "<header\n role=\"banner\"\n class=\"hbll-header-wrapper\"\n #header\n [ngClass]=\"{ 'hbll-header-desktop': !isScreenSmall() }\"\n>\n <a [href]=\"mainsitebaseurl\">\n <h1>\n <img\n src=\"https://media.lib.byu.edu/web-assets/images/2.0.0/byu-hbll-logo-full.svg\"\n alt=\"BYU Library Logo\"\n />\n </h1>\n </a>\n <button (click)=\"focusMainContent()\" class=\"sr-only sr-only-focusable skip-link\">Skip to main content</button>\n <div id=\"libraryInfo\" class=\"hbll-header-wrapper\">\n @if (!isScreenSmall()) {\n <div #hours id=\"mainLibraryHours\" data-testid=\"desktopHours\">\n <button\n (click)=\"showLibraryHours = !showLibraryHours\"\n class=\"hbll-header-wrapper\"\n data-testid=\"hoursBtn\"\n >\n <ng-container *ngTemplateOutlet=\"hoursTextBlock\"></ng-container>\n </button>\n @if (!isScreenSmall() && showLibraryHours) {\n <div\n @libHbllFadeInOut\n id=\"libraryHoursDropdown\"\n data-testid=\"libraryHoursDropdown\"\n >\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Regular Hours</h2>\n <div class=\"hbll-header-detail\">\n <h3 class=\"hbll-header-item\">Monday - Friday</h3>\n <h3 class=\"hbll-header-item\">Saturday</h3>\n <h3 class=\"hbll-header-item\">Sunday</h3>\n </div>\n <div class=\"hbll-header-hours\">\n <div class=\"hbll-header-item\">7:00 a.m. - 11:45 p.m.</div>\n <div class=\"hbll-header-item\">8:00 a.m. - 11:45 p.m.</div>\n <div class=\"hbll-header-item\">Closed*</div>\n </div>\n <div class=\"hbll-header-hours-note\">\n <span>* Family history ONLY 4:00 p.m. - 8:00 p.m</span>\n <ul>\n <li><span>No checkouts after 11:45 p.m.</span></li>\n <li>\n <span>All services closed 10:45 to noon on Tuesdays</span>\n </li>\n </ul>\n </div>\n </section>\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Upcoming Exceptions</h2>\n @if (hoursExceptions$ | async; as exceptions) {\n <div class=\"hbll-header-detail\" data-testid=\"exceptionsDetail\">\n @for (exception of exceptions; track exception.date) {\n <h3 class=\"hbll-header-item\">\n {{ exception.date | date: 'MMM. d, y' }}\n </h3>\n } @empty {\n No upcoming exceptions\n }\n </div>\n <div class=\"hbll-header-hours\" data-testid=\"exceptionsHours\">\n @for (exception of exceptions; track exception.date) {\n <div class=\"hbll-header-item\"\n [attr.title]=\"exception.exception_title\"\n [attr.aria-label]=\"exception.exception_title\">\n {{ exception.exception_title | truncate:32:'...' }}\n </div>\n }\n </div>\n } @else {\n <div class=\"lib-spinner\" data-testid=\"exceptionsSpinner\"></div>\n }\n </section>\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Library Cafe</h2>\n <div class=\"hbll-header-detail\">\n <h3 class=\"hbll-header-item\">Bagel Bubble</h3>\n <h3 class=\"hbll-header-item\">Provecho</h3>\n </div>\n <div class=\"hbll-header-hours\">\n <div class=\"hbll-header-item\">9:00 a.m. - 8:00 p.m.**</div>\n <div class=\"hbll-header-item\">10:30 a.m. - 7:00 p.m.***</div>\n </div>\n <div class=\"hbll-header-hours-note\">\n <span>\n ** Bagel Bubble open 10:00 a.m. - 6:00 p.m. Saturday, closed\n Sunday\n </span>\n <span>*** Provecho closed Saturday and Sunday</span>\n </div>\n </section>\n <lib-link [href]=\"mainsitebaseurl + '/about/hours'\" text=\"See all hours\" rightIcon=\"chevron_right\"/>\n </div>\n }\n </div>\n }\n <div id=\"accountInfo\" #accountInfo>\n <button\n (click)=\"isLoggedIn ? (showAccountDropdown = !showAccountDropdown) : login.emit()\"\n class=\"hbll-header-wrapper\"\n id=\"accountBtn\"\n data-testid=\"accountBtn\"\n >\n <span class=\"material-symbols-outlined hbll-header-left-icon\"> person </span>\n @if (!isScreenSmall()) {\n <span class=\"hbll-header-name\" data-testid=\"name\">{{\n isLoggedIn ? '&nbsp;' + name : 'Login'\n }}</span>\n }\n @if (isLoggedIn) {\n <span class=\"material-symbols-outlined\" data-testid=\"loginDropdown\">\n arrow_drop_down\n </span>\n }\n </button>\n @if (isLoggedIn && showAccountDropdown) {\n <div @libHbllFadeInOut id=\"accountDropdown\" data-testid=\"accountDropdown\">\n <a [href]=\"mainsitebaseurl + '/account'\">My Account</a>\n <a [href]=\"mainsitebaseurl + '/account'\">My Items</a>\n <a [href]=\"mainsitebaseurl + '/account/request'\">Request an item</a>\n <a [href]=\"mainsitebaseurl + '/account/saved'\">Saved</a>\n <a [href]=\"mainsitebaseurl + '/account/courses'\">Courses</a>\n <a [href]=\"mainsitebaseurl + '/account/rooms'\">Rooms</a>\n <a [href]=\"mainsitebaseurl + '/account/preferences'\">Preferences</a>\n @if (showImpersonateButton()) {\n <button\n (click)=\"openImpersonationModal.emit(); showAccountDropdown = false\"\n class=\"hbll-header-impersonate-btn\"\n >\n Impersonate\n </button>\n }\n <button (click)=\"logout.emit()\" data-testid=\"logout\">Logout</button>\n </div>\n }\n </div>\n @if (isScreenSmall()) {\n <div id=\"mobileNav\" [class.collapsed]=\"!showNavBar\">\n <button\n class=\"hbll-header-wrapper\"\n data-testid=\"mobileNavBtn\"\n (click)=\"openSidebarNav()\"\n >\n <span class=\"material-symbols-outlined hbll-header-icon\"> menu </span>\n </button>\n <div\n #navWrapper\n id=\"navWrapper\"\n data-testid=\"mobileNav\"\n [class.open]=\"showNavBar\"\n [attr.inert]=\"!showNavBar ? true : null\"\n >\n <button\n id=\"closeMobileNavBtn\"\n class=\"hbll-header-wrapper\"\n data-testid=\"closeMobileNavBtn\"\n (click)=\"closeSidebarNav()\"\n >\n <span class=\"material-symbols-outlined hbll-header-icon\"> close </span>\n </button>\n <lib-nav-bar\n [mainSiteBaseUrl]=\"mainsitebaseurl\"\n [height]=\"mobileSidebarHeight\"\n />\n </div>\n <div\n #backdrop\n (click)=\"closeSidebarNav()\"\n class=\"hbll-nav-backdrop\"\n [class.open]=\"showNavBar\"\n data-testid=\"mobileNavBackdrop\"\n ></div>\n </div>\n }\n </div>\n</header>\n\n@if (!isScreenSmall()) {\n <div id=\"mainNav\">\n <lib-nav-bar [mainSiteBaseUrl]=\"mainsitebaseurl\" />\n </div>\n}\n@if (isScreenSmall()) {\n <a\n id=\"mobileLibraryHours\"\n [href]=\"mainsitebaseurl + '/about/hours'\"\n class=\"hbll-header-wrapper\"\n data-testid=\"mobileHours\"\n >\n <ng-container *ngTemplateOutlet=\"hoursTextBlock\"></ng-container>\n </a>\n}\n\n<ng-template #hoursTextBlock>\n @if (libraryHours()) {\n <span class=\"material-symbols-outlined hbll-header-left-icon\"> schedule </span>\n {{\n libraryHours()?.is_closed\n ? 'CLOSED'\n : \"Today's hours: \" +\n (libraryHours()!.date | libraryHours: libraryHours()!.open_time) +\n ' - ' +\n (libraryHours()!.date | libraryHours: libraryHours()!.close_time)\n }}\n }\n</ng-template>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.lib-spinner{border:.3em solid #dfe9f7;border-top:.3em solid #457fa6;border-radius:100%;width:30px;height:30px;animation:loadingSpinnerAnimate 1s ease infinite;position:relative}@keyframes loadingSpinnerAnimate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.hbll-header-wrapper{display:flex;align-items:center;font-size:1em}.skip-link{margin-left:.625rem;background:#fff;color:#00285b;font-size:.9375rem;font-weight:580;padding:.3125rem .625rem;text-decoration:none;border:.1171875rem solid #0050b7;border-radius:.15625rem;cursor:pointer;outline:.1875rem solid #b967c7;outline-offset:-.1875rem;border-radius:.25rem}.skip-link:hover{color:#00285b;background-color:#e3edf8;border:.1171875rem solid #e3edf8}.hbll-nav-backdrop{background-color:#000;opacity:.3;height:100vh;width:100vw;left:0;top:0;transform:translate(-100vw);position:absolute;z-index:-1}.hbll-nav-backdrop.open{animation-name:fadeIn;animation-duration:.15s;animation-timing-function:ease-in;animation-fill-mode:forwards}.hbll-nav-backdrop.is-closing{animation-name:fadeOut;animation-duration:.15s;animation-timing-function:ease-out;animation-fill-mode:forwards}#mobileLibraryHours{color:#141414;background-color:#e6e6e6;font-size:1em;min-height:2em}#mobileLibraryHours.hbll-header-wrapper{width:100%;justify-content:center;padding:.2em}.hbll-header-icon,.hbll-header-left-icon{font-size:1.2em}.hbll-header-left-icon{margin-right:.2em}header{background-color:#00245d;display:flex;align-items:center}header a h1{font-size:100%;margin:0;height:1.8em}header a h1 img{height:100%;padding:0 0 0 .6em}header #libraryInfo{margin-left:auto;color:#fff}header #libraryInfo a,header #libraryInfo button{transition:color .2s ease-in-out;color:#fffc}header #libraryInfo a:hover,header #libraryInfo button:hover{color:#fff}header #libraryInfo #accountInfo button,header #libraryInfo #mobileNav button{padding:.8em .6em}header #libraryInfo #accountBtn .name{margin-left:.4em}header #libraryInfo #mobileNav{position:relative;z-index:11}header #libraryInfo #mobileNav.collapsed #navWrapper{left:-9999px;top:auto;overflow:hidden;width:1px;height:1px}header #libraryInfo #mobileNav.collapsed .hbll-nav-backdrop{display:none}header #libraryInfo #mobileNav.collapsed nav{left:-9999px;top:auto;overflow:hidden;width:1px;height:1px}header #libraryInfo #mobileNav #navWrapper{color:#fff;position:fixed;top:0}header #libraryInfo #mobileNav #navWrapper.open{animation-name:slideInFromRight;animation-duration:.2s;animation-timing-function:ease-in-out;animation-fill-mode:forwards}header #libraryInfo #mobileNav #navWrapper.is-closing{animation-name:slideOutToRight;animation-duration:.2s;animation-timing-function:ease-in-out;animation-fill-mode:forwards}header #libraryInfo #mobileNav #navWrapper #closeMobileNavBtn{background-color:#0047ba;margin-left:auto;padding-left:.9em}header #libraryInfo :last-child button{padding-right:1em!important}header #libraryInfo .hbll-header-icon,header #libraryInfo .hbll-header-left-icon{font-size:1.6em}header #libraryInfo #accountInfo{position:relative}header #libraryInfo #accountInfo #accountDropdown{font-size:1em;text-wrap:nowrap;position:absolute;background-color:#00245d;top:100%;right:-32px;z-index:11}header #libraryInfo #accountInfo #accountDropdown .hbll-header-impersonate-btn{color:#bd72cb}header #libraryInfo #accountInfo #accountDropdown .hbll-header-impersonate-btn:hover{color:#d68fe2}header #libraryInfo #accountInfo #accountDropdown a,header #libraryInfo #accountInfo #accountDropdown button{display:block;width:100%;text-align:left;padding:.4em 1.2em;font-size:1.1em}header #libraryInfo #accountInfo #accountDropdown a:first-child,header #libraryInfo #accountInfo #accountDropdown button:first-child{margin-bottom:.4em;padding-top:.6em;padding-bottom:.6em;border-bottom:1px solid rgba(255,255,255,.3)}header #libraryInfo #accountInfo #accountDropdown a:last-child,header #libraryInfo #accountInfo #accountDropdown button:last-child{margin-top:.4em;border-top:1px solid rgba(255,255,255,.3);padding-top:.6em;padding-bottom:.6em}header #libraryInfo #accountInfo #accountDropdown:before{content:\"\";width:0;height:0;border-style:solid;border-width:0 .6em .6em .6em;border-color:transparent transparent hsl(214,41%,23%) transparent;position:absolute;bottom:100%;right:50%;transform:translate(50%);z-index:inherit}header.hbll-header-desktop{padding:0 2em}header.hbll-header-desktop #libraryInfo #mainLibraryHours{position:relative;margin-right:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown{z-index:12;background-color:#fff;border-radius:4px;border:1px solid #d2d2d2;position:absolute;color:#000;padding:2em;top:100%;max-width:400%;right:50%;transform:translate(50%);margin-top:.6em;margin-right:1.25rem}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section{display:grid;grid-template-columns:repeat(4,7.5em);grid-template-rows:1fr;grid-column-gap:0px;grid-row-gap:0px;margin-bottom:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section h2{margin:0;line-height:inherit}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note{grid-column:2/-1;font-size:.75rem;font-weight:400;line-height:1rem;margin-top:.75rem}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note>span{display:block}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note ul{list-style-type:disc;list-style-position:outside;margin:0 0 0 1.25rem;padding:0}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note ul li{font-size:inherit;font-weight:inherit;line-height:inherit;margin:0}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note ul li span{font-size:inherit;font-weight:inherit;position:relative}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-header{font-weight:600;font-size:1rem;line-height:1rem}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours{margin-top:.2em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail .hbll-header-item+.hbll-header-item,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours .hbll-header-item+.hbll-header-item{margin-top:.3em;font-size:1rem}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail .hbll-header-item,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours .hbll-header-item{font-size:1rem;line-height:1rem}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail h3,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours h3{font-weight:inherit;line-height:inherit;margin:0;font-size:inherit}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail{font-weight:600;white-space:nowrap}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours{white-space:nowrap}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown lib-link{display:flex;align-items:center;float:right}header.hbll-header-desktop #libraryInfo #accountInfo #accountDropdown{right:auto;left:50%;transform:translate(-50%)}button{background-color:transparent;border:none;cursor:pointer;font-family:inherit;font-size:inherit;color:inherit;padding:0}button:focus-visible{outline:.1875rem solid #b967c7;outline-offset:-.1875rem;border-radius:.25rem}a:focus-visible{outline:.1875rem solid #b967c7;outline-offset:-.1875rem;border-radius:.25rem}@keyframes slideInFromRight{0%{transform:translate(calc(min(100vw,400px) - 55px))}to{transform:translate(0)}}@keyframes slideOutToRight{0%{transform:translate(0)}to{transform:translate(min(100vw,400px))}}@keyframes fadeIn{0%{opacity:0}to{opacity:.3}}@keyframes fadeOut{0%{opacity:.3}to{opacity:0}}\n"] }]
607
736
  }], propDecorators: { header: [{
608
737
  type: ViewChild,
609
738
  args: ['header']
@@ -916,128 +1045,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
916
1045
  type: Output
917
1046
  }] } });
918
1047
 
919
- /**
920
- * A link component that supports basic and inline variants
921
- * with optional left and right icons.
922
- *
923
- * @example
924
- * ```html
925
- * <lib-link text="Link item" href="/details"></lib-link>
926
- *
927
- * <lib-link
928
- * text="Inline link"
929
- * type="inline"
930
- * href="/details">
931
- * </lib-link>
932
- *
933
- * <lib-link
934
- * text="Disabled link"
935
- * [disabled]="true">
936
- * </lib-link>
937
- * ```
938
- */
939
- class LinkComponent {
940
- constructor() {
941
- this.text = '';
942
- this.type = 'basic';
943
- this.state = 'default';
944
- this.disabled = false;
945
- this.linkClick = new EventEmitter();
946
- }
947
- get computedState() {
948
- return this.disabled ? 'disabled' : this.state;
949
- }
950
- get hasLeftIcon() {
951
- return this.leftIcon !== undefined;
952
- }
953
- get hasRightIcon() {
954
- return this.rightIcon !== undefined;
955
- }
956
- get computedLeftIcon() {
957
- return this.leftIcon || '';
958
- }
959
- get computedRightIcon() {
960
- return this.rightIcon || '';
961
- }
962
- get computedHref() {
963
- if (this.computedState === 'disabled') {
964
- return null;
965
- }
966
- return this.href ?? null;
967
- }
968
- get computedRel() {
969
- if (this.rel) {
970
- return this.rel;
971
- }
972
- if (this.target === '_blank') {
973
- return 'noopener noreferrer';
974
- }
975
- return null;
976
- }
977
- get computedAriaLabel() {
978
- if (this.ariaLabel) {
979
- return this.ariaLabel;
980
- }
981
- if (this.text) {
982
- return this.text;
983
- }
984
- if (this.textHtml) {
985
- return this.textHtml.replace(/<[^>]*>/g, '').trim();
986
- }
987
- if (this.imageAlt) {
988
- return this.imageAlt;
989
- }
990
- return '';
991
- }
992
- onClick(event) {
993
- if (this.computedState === 'disabled') {
994
- event.preventDefault();
995
- event.stopImmediatePropagation();
996
- return;
997
- }
998
- this.linkClick.emit(event);
999
- }
1000
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: LinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1001
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.15", type: LinkComponent, isStandalone: true, selector: "lib-link", inputs: { text: "text", textHtml: "textHtml", imageSrc: "imageSrc", imageAlt: "imageAlt", imageTitle: "imageTitle", imageClass: "imageClass", href: "href", target: "target", rel: "rel", type: "type", state: "state", disabled: ["disabled", "disabled", booleanAttribute], leftIcon: "leftIcon", rightIcon: "rightIcon", ariaLabel: "ariaLabel" }, outputs: { linkClick: "linkClick" }, ngImport: i0, template: "<a\n class=\"link\"\n [ngClass]=\"[\n 'link--' + type,\n 'link--state-' + computedState,\n computedState === 'disabled' ? 'link--disabled' : ''\n ]\"\n [attr.href]=\"computedHref\"\n [attr.target]=\"target\"\n [attr.rel]=\"computedRel\"\n [attr.aria-disabled]=\"computedState === 'disabled'\"\n [attr.aria-label]=\"computedAriaLabel\"\n [attr.tabindex]=\"computedState === 'disabled' ? -1 : 0\"\n (click)=\"onClick($event)\"\n>\n <span\n *ngIf=\"hasLeftIcon\"\n class=\"material-symbols-outlined link__icon link__icon--left\"\n aria-hidden=\"true\"\n >\n {{ computedLeftIcon }}\n </span>\n <ng-container *ngIf=\"imageSrc; else textContent\">\n <img\n [src]=\"imageSrc\"\n [attr.alt]=\"imageAlt || ''\"\n [attr.title]=\"imageTitle || null\"\n [class]=\"imageClass || null\"\n />\n </ng-container>\n <ng-template #textContent>\n <span class=\"link__text\" *ngIf=\"textHtml; else plainText\" [innerHTML]=\"textHtml\"></span>\n <ng-template #plainText>\n <span class=\"link__text\">{{ text }}</span>\n </ng-template>\n </ng-template>\n <span\n *ngIf=\"hasRightIcon\"\n class=\"material-symbols-outlined link__icon link__icon--right\"\n aria-hidden=\"true\"\n >\n {{ computedRightIcon }}\n </span>\n</a>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.link{--link-color-default: #0047ba;--link-color-hover-inline: #00245d;--link-background-hover-basic: #e5edf8;--link-color-disabled: #676767;--link-icon-disabled: #676767;--link-background-disabled: #f9f9f9;align-items:center;background-color:transparent;border-radius:.25rem;color:var(--link-color-default);cursor:pointer;display:inline-flex;font-weight:400;gap:.25rem;padding:.25rem;position:relative;text-decoration:none}.link:after{border:.125rem solid #b967c7;border-radius:.25rem;content:\"\";inset:-.25rem;opacity:0;position:absolute;transition:opacity .15s ease-in-out;pointer-events:none}.link:focus-visible:after{opacity:1}.link:focus-visible{outline:none}.link.link--basic:hover:not(.link--disabled){background-color:#e5edf880}.link.link--inline:hover:not(.link--disabled){color:var(--link-color-hover-inline)}.link.link--state-hover.link--basic{background-color:#e5edf880}.link.link--state-hover.link--inline{color:var(--link-color-hover-inline)}.link.link--disabled,.link.link--state-disabled{background-color:#f9f9f980;color:var(--link-color-disabled);cursor:default;pointer-events:none}.link--inline{padding-top:0;padding-bottom:0}.link--inline a{padding:0}.link--inline:hover:not(.link--disabled) .link__text,.link--inline.link--state-hover .link__text{text-decoration:underline}.link__icon{align-items:center;color:inherit;display:inline-flex;justify-content:center;height:1.25rem}.link--disabled .link__icon,.link--state-disabled .link__icon{color:var(--link-icon-disabled)}.link__text{align-items:center;display:inline-flex}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1002
- }
1003
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: LinkComponent, decorators: [{
1004
- type: Component,
1005
- args: [{ selector: 'lib-link', standalone: true, imports: [CommonModule], template: "<a\n class=\"link\"\n [ngClass]=\"[\n 'link--' + type,\n 'link--state-' + computedState,\n computedState === 'disabled' ? 'link--disabled' : ''\n ]\"\n [attr.href]=\"computedHref\"\n [attr.target]=\"target\"\n [attr.rel]=\"computedRel\"\n [attr.aria-disabled]=\"computedState === 'disabled'\"\n [attr.aria-label]=\"computedAriaLabel\"\n [attr.tabindex]=\"computedState === 'disabled' ? -1 : 0\"\n (click)=\"onClick($event)\"\n>\n <span\n *ngIf=\"hasLeftIcon\"\n class=\"material-symbols-outlined link__icon link__icon--left\"\n aria-hidden=\"true\"\n >\n {{ computedLeftIcon }}\n </span>\n <ng-container *ngIf=\"imageSrc; else textContent\">\n <img\n [src]=\"imageSrc\"\n [attr.alt]=\"imageAlt || ''\"\n [attr.title]=\"imageTitle || null\"\n [class]=\"imageClass || null\"\n />\n </ng-container>\n <ng-template #textContent>\n <span class=\"link__text\" *ngIf=\"textHtml; else plainText\" [innerHTML]=\"textHtml\"></span>\n <ng-template #plainText>\n <span class=\"link__text\">{{ text }}</span>\n </ng-template>\n </ng-template>\n <span\n *ngIf=\"hasRightIcon\"\n class=\"material-symbols-outlined link__icon link__icon--right\"\n aria-hidden=\"true\"\n >\n {{ computedRightIcon }}\n </span>\n</a>\n", styles: ["html{border:0;margin:0;padding:0;-webkit-text-size-adjust:100%}body{margin:0;padding:0}*,*:before,*:after{box-sizing:border-box}:root{--color-navy: #00245d;--color-royal: #0047ba;--color-white: #ffffff;--color-blue-500: #00245d;--color-blue-400: #003995;--color-blue-300: #0047ba;--color-blue-200: #336cc8;--color-blue-150: #ccdaf1;--color-blue-100: #e5edf8;--color-gray-500: #141414;--color-gray-400: #676767;--color-gray-300: #8f8f8f;--color-gray-200: #d0d0d0;--color-gray-100: #e7e7e7;--color-gray-50: #f9f9f9;--color-gray-brand-400: #676767;--color-green-500: #1d562e;--color-green-400: #2e8545;--color-green-300: #3ba35a;--color-green-200: #9dd1ac;--color-green-100: #ebf6ee;--color-teal-500: #26485f;--color-teal-400: #3e7295;--color-teal-300: #457fa6;--color-teal-200: #a2bfd3;--color-teal-100: #ecf2f6;--color-red-500: #702121;--color-red-400: #b33837;--color-red-300: #c73e3d;--color-red-200: #e39e9e;--color-red-100: #f9ecec;--color-yellow-500: #635f04;--color-yellow-400: #928c30;--color-yellow-300: #d1c844;--color-yellow-200: #e8e3a1;--color-yellow-100: #faf9ec;--color-purple-focus: #b967c7;--text-heading: #002e5d;--text-secondary-heading: #737373;--text-body: #141414;--text-disabled: #676767;--text-link: #336cc8;--text-on-action: #ffffff;--text-success: #1d562e;--text-info: #26485f;--text-error: #702121;--text-warning: #635f04;--surface-success: #ebf6ee;--surface-info: #ecf2f6;--surface-error: #f9ecec;--surface-warning: #faf9ec;--focus-ring-color: #b967c7}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Light.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Regular.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Semibold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:normal;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Bold.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:300;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-LightItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:400;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-Italic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:600;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-SemiboldItalic.ttf) format(\"truetype\");font-display:swap}@font-face{font-family:Source Sans Pro;font-style:italic;font-weight:700;src:url(https://media.lib.byu.edu/web-assets/fonts/sourcesanspro/1.0.0/SourceSansPro-BoldItalic.ttf) format(\"truetype\");font-display:swap}h1,h2,h3,h4,h5,h6,span:not(.material-symbols-outlined),a,p{font-family:Source Sans Pro}h1{font-weight:300;font-style:normal;color:var(--text-heading)}h2{font-weight:400;font-style:normal;color:var(--text-heading)}h3{font-weight:700;font-style:normal;color:var(--text-heading)}h4,h5,h6{font-weight:600;font-style:normal;color:var(--text-secondary-heading)}.hbll-default-body{font-weight:400;font-style:normal;max-width:35rem;min-width:22.25rem;color:var(--text-body)}.hbll-caption{font-weight:400;font-style:normal;max-width:25.25rem;min-width:17.5rem;color:var(--text-body)}.hbll-large{font-weight:400;font-style:normal;max-width:41.25rem;min-width:26.5rem;color:var(--text-body)}a{color:var(--text-link);text-decoration:underline}.hbll-emphasis{font-weight:600}h1{font-size:2rem;line-height:2.5rem}h2{font-size:1.75rem;line-height:2.25rem}h3,h4{font-size:1.5rem;line-height:2rem}h5,h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:.875rem;line-height:1.25rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1rem;line-height:1.5rem}@media screen and (min-width: 52.125em){h1{font-size:3rem;line-height:3.5rem}h2{font-size:2.5rem;line-height:3rem}h3{font-size:2rem;line-height:3rem}h4{font-size:1.75rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}@media screen and (min-width: 90em){h1{font-size:3.75rem;line-height:4.25rem}h2{font-size:3rem;line-height:3.5rem}h3{font-size:2.5rem;line-height:3rem}h4{font-size:2rem;line-height:2.5rem}h5{font-size:1.5rem;line-height:2rem}h6{font-size:1.25rem;line-height:1.75rem}.hbll-default-body{font-size:1rem;line-height:1.5rem}.hbll-caption{font-size:.75rem;line-height:1rem}.hbll-large{font-size:1.25rem;line-height:1.75rem}}:focus-visible{outline:.125rem solid var(--focus-ring-color);outline-offset:.125rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only.sr-only-focusable:focus,.sr-only.sr-only-focusable:focus-within,.sr-only.sr-only-focusable:active{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.link{--link-color-default: #0047ba;--link-color-hover-inline: #00245d;--link-background-hover-basic: #e5edf8;--link-color-disabled: #676767;--link-icon-disabled: #676767;--link-background-disabled: #f9f9f9;align-items:center;background-color:transparent;border-radius:.25rem;color:var(--link-color-default);cursor:pointer;display:inline-flex;font-weight:400;gap:.25rem;padding:.25rem;position:relative;text-decoration:none}.link:after{border:.125rem solid #b967c7;border-radius:.25rem;content:\"\";inset:-.25rem;opacity:0;position:absolute;transition:opacity .15s ease-in-out;pointer-events:none}.link:focus-visible:after{opacity:1}.link:focus-visible{outline:none}.link.link--basic:hover:not(.link--disabled){background-color:#e5edf880}.link.link--inline:hover:not(.link--disabled){color:var(--link-color-hover-inline)}.link.link--state-hover.link--basic{background-color:#e5edf880}.link.link--state-hover.link--inline{color:var(--link-color-hover-inline)}.link.link--disabled,.link.link--state-disabled{background-color:#f9f9f980;color:var(--link-color-disabled);cursor:default;pointer-events:none}.link--inline{padding-top:0;padding-bottom:0}.link--inline a{padding:0}.link--inline:hover:not(.link--disabled) .link__text,.link--inline.link--state-hover .link__text{text-decoration:underline}.link__icon{align-items:center;color:inherit;display:inline-flex;justify-content:center;height:1.25rem}.link--disabled .link__icon,.link--state-disabled .link__icon{color:var(--link-icon-disabled)}.link__text{align-items:center;display:inline-flex}\n"] }]
1006
- }], propDecorators: { text: [{
1007
- type: Input
1008
- }], textHtml: [{
1009
- type: Input
1010
- }], imageSrc: [{
1011
- type: Input
1012
- }], imageAlt: [{
1013
- type: Input
1014
- }], imageTitle: [{
1015
- type: Input
1016
- }], imageClass: [{
1017
- type: Input
1018
- }], href: [{
1019
- type: Input
1020
- }], target: [{
1021
- type: Input
1022
- }], rel: [{
1023
- type: Input
1024
- }], type: [{
1025
- type: Input
1026
- }], state: [{
1027
- type: Input
1028
- }], disabled: [{
1029
- type: Input,
1030
- args: [{ transform: booleanAttribute }]
1031
- }], leftIcon: [{
1032
- type: Input
1033
- }], rightIcon: [{
1034
- type: Input
1035
- }], ariaLabel: [{
1036
- type: Input
1037
- }], linkClick: [{
1038
- type: Output
1039
- }] } });
1040
-
1041
1048
  class HbllFooterComponent {
1042
1049
  constructor() {
1043
1050
  this.fb = inject(FormBuilder);