Skip to content

Commit

Permalink
feat(sidenav): new component for sidebar navigation
Browse files Browse the repository at this point in the history
  • Loading branch information
corykon committed Apr 27, 2023
1 parent b3587d2 commit d2d11cd
Show file tree
Hide file tree
Showing 22 changed files with 1,071 additions and 1 deletion.
5 changes: 4 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,8 @@
"editor.detectIndentation": false,
"editor.insertSpaces": true,
"editor.tabSize": 4,
"typescript.tsdk": "node_modules\\typescript\\lib"
"typescript.tsdk": "node_modules\\typescript\\lib",
"yaml.customTags": [
"!script"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<div class="sidenav-example-app-shell">

<hc-sidenav
[tabs]="tabs"
[canToggle]="false"
[showFavorites]="false"
>
<!-- Projected header -->
<div hcSidenavHeader class="example-sidenav-header">
<h2><span class="fa fa-bank hc-icon-left"></span>Weather Data Bank</h2>
</div>

<!-- Projected content -->
<button hc-button buttonStyle="deep-red" class="example-report-widget">
<span class="fa fa-bullhorn hc-icon-left"></span>Report weather
</button>

</hc-sidenav>

<div class="example-app-content">
<p>This example demonstrates using content projection to add a <strong>header</strong> and <strong>report widget.</strong></p>
</div>
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
@import "@healthcatalyst/cashmere/scss/_colors";

.sidenav-example-app-shell {
display: flex;
height: 500px;

::ng-deep .hc-sidenav {
height: 100%;
}

.example-app-content {
flex: 0 0 calc(100% - 260px);;
padding: 16px;
background-color: $slate-gray-100;
}
}

.example-sidenav-header {
background-color: $dark-blue;
padding: 16px 18px;
margin: 10px 16px 10px 0;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;

h2 {
color: $white;
font-size: 18px;
font-weight: 300;
}
}

.example-report-widget {
position: absolute;
bottom: 0;
left: 0;
right: 0;
margin: 16px;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import {Component} from '@angular/core';
import { SidenavLink } from '@healthcatalyst/cashmere';

/**
* @title Sidenav w/ Content Projection
*/
@Component({
selector: 'hc-sidenav-projection-example',
templateUrl: 'sidenav-projection-example.component.html',
styleUrls: ['sidenav-projection-example.component.scss']
})
export class SidenavProjectionExampleComponent {
tabs: SidenavLink[] = [
new SidenavLink({title: 'Sunny', iconClass: 'fa fa-sun-o', description: 'Sunny with a high of 75'}),
new SidenavLink({title: 'Cloudy', iconClass: 'fa fa-cloud', description: 'Clouds clouds clouds'}),
new SidenavLink({title: 'Stormy', iconClass: 'fa fa-bolt', description: 'Thunder & Lightning'}),
new SidenavLink({title: 'Snowy', iconClass: 'fa fa-snowflake-o', description: 'Let it snow'})
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<div class="sidenav-example-app-shell">

<hc-sidenav
[tabs]="tabs"
[isLoadingTabs]="isLoadingTabs.value"
(tabClicked)="onTabClick($event)"
[favorites]="favs"
[isLoadingFavorites]="isLoadingFavs.value"
(favoriteClicked)="onFavClick($event)"
(favoriteItemIconClicked)="unfavorite($event)"
>
</hc-sidenav>

<div class="example-app-content">
<hc-checkbox [formControl]="isLoadingTabs">Simulate tabs loading</hc-checkbox>
<hc-checkbox [formControl]="isLoadingFavs">Simulate favorites loading</hc-checkbox>
<h4>Events:</h4>
<div class="event-log">
<div *ngFor="let event of eventsLog">
{{event}}
</div>
</div>
</div>
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
@import "@healthcatalyst/cashmere/scss/_colors";

// Example skeleton layout
.sidenav-example-app-shell {
display: flex;
height: 500px;

::ng-deep .hc-sidenav {
height: 100%;
}

.example-app-content {
flex: 1 0 auto;
padding: 16px;
background-color: $slate-gray-100;
}

h4 {
margin-bottom: 4px;
}

// logging output
.event-log {
border: 1px solid $gray-200;
background-color: darken($slate-gray-100, 2%);
width: 50%;
min-width: 250px;
height: 300px;
overflow-y: auto;
border-radius: 4px;
padding: 8px;
line-height: 1.3;
font-family: monospace;
}

// custom styles for favorite icons
::ng-deep .hc-sidenav-favs {
.fav-travel-ico {
border-radius: 4px;
color: $white;
width: 22px;
height: 22px;
font-size: 12px;
align-items: center;
}

.fav-ico-blue {
background-color: $dark-blue;
}

.fav-ico-teal {
background-color: $teal;
}

.fav-ico-green {
background-color: $green;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import {Component} from '@angular/core';
import { FormControl } from '@angular/forms';
import { SidenavLink, SidenavLinkClickEvent } from '@healthcatalyst/cashmere';

/**
* @title Sidenav
*/
@Component({
selector: 'hc-sidenav-example',
templateUrl: 'sidenav-example.component.html',
styleUrls: ['sidenav-example.component.scss']
})
export class SidenavExampleComponent {
isLoadingTabs: FormControl = new FormControl(false);
isLoadingFavs: FormControl = new FormControl(false);
eventsLog: string[] = [];
tabs: SidenavLink[] = [
new SidenavLink({title: 'Home', iconClass: 'fa fa-home', description: 'User\'s home dashboard'}),
new SidenavLink({title: 'Land', iconClass: 'fa fa-car', description: 'Travel by land', subText: "$"}),
new SidenavLink({title: 'Sky', iconClass: 'fa fa-plane', description: 'Travel by sky', subText: "$$"}),
new SidenavLink({title: 'Sea', iconClass: 'fa fa-ship', description: 'Travel by sea', subText: "$"}),
new SidenavLink({title: 'Space', iconClass: 'fa fa-rocket', description: 'Travel amongst the stars', subText: "$$$"}),
]
favs: SidenavLink[] = [
new SidenavLink({title: 'Toyota Tacoma', iconClass: 'fa fa-car fav-travel-ico fav-ico-teal', description: 'Solid mid-size pickup'}),
new SidenavLink({title: 'Land Rover', iconClass: 'fa fa-car fav-travel-ico fav-ico-green', description: 'Travel in style'}),
new SidenavLink({title: 'S.S. TugsAlot', iconClass: 'fa fa-ship fav-travel-ico fav-ico-teal', description: 'Tugboat'}),
new SidenavLink({title: 'Boeing 737', iconClass: 'fa fa-plane fav-travel-ico fav-ico-blue', description: 'Fly the friendly skies'}),
new SidenavLink({title: 'Falcon Heavy', iconClass: 'fa fa-rocket fav-travel-ico fav-ico-blue', description: 'Fly me to the moon'}),
]

onTabClick(event: SidenavLinkClickEvent): void {
this.eventsLog.push(`Tab "${event.link.title}" clicked`);
}

onFavClick(event: SidenavLinkClickEvent): void {
this.eventsLog.push(`Favorite "${event.link.title}" clicked`);
}

unfavorite(event: SidenavLinkClickEvent): void {
this.eventsLog.push(`Favorite "${event.link.title}" action icon clicked`);
this.favs = this.favs.filter(fav => fav.key !== event.link.key);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import {
ScrollNavModule,
SearchBarModule,
SelectModule,
SidenavModule,
SortModule,
SliderModule,
SlideToggleModule,
Expand Down Expand Up @@ -79,6 +80,7 @@ import {
SearchBarModule,
SelectModule,
SortModule,
SidenavModule,
SliderModule,
SlideToggleModule,
StepperModule,
Expand Down
31 changes: 31 additions & 0 deletions projects/cashmere/src/lib/sass/_animations.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
@keyframes HCSubtleFadePulse {
0% {
opacity: 0.1;
}
50% {
opacity: 0.35;
}
100% {
opacity: 0.1;
}
}

@keyframes HCSlideInUp {
0% {
opacity: 0;
transform: translateY(20px);
}
100% {
opacity: 1;
transform: translateY(0px);
}
}

@keyframes HCFadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
5 changes: 5 additions & 0 deletions projects/cashmere/src/lib/sass/_icons.scss
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
$ico-chev-right: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMjAgNTEyIj48IS0tIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMyBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKSAtLT48cGF0aCBkPSJNMjg1LjQ3NiAyNzIuOTcxTDkxLjEzMiA0NjcuMzE0Yy05LjM3MyA5LjM3My0yNC41NjkgOS4zNzMtMzMuOTQxIDBsLTIyLjY2Ny0yMi42NjdjLTkuMzU3LTkuMzU3LTkuMzc1LTI0LjUyMi0uMDQtMzMuOTAxTDE4OC41MDUgMjU2IDM0LjQ4NCAxMDEuMjU1Yy05LjMzNS05LjM3OS05LjMxNy0yNC41NDQuMDQtMzMuOTAxbDIyLjY2Ny0yMi42NjdjOS4zNzMtOS4zNzMgMjQuNTY5LTkuMzczIDMzLjk0MSAwTDI4NS40NzUgMjM5LjAzYzkuMzczIDkuMzcyIDkuMzczIDI0LjU2OC4wMDEgMzMuOTQxeiIvPjwvc3ZnPg==';
$ico-chev-right-blue: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5LjA2MyIgaGVpZ2h0PSIxNS4wMDkiIHZpZXdCb3g9IjAgMCA5LjA2MyAxNS4wMDkiPgogIDxwYXRoIGlkPSJjaGV2LWJvbGQiIGQ9Ik0xNy4yMTksMzIuNTA3bC0yLjE1OC0yLjE1OEwxMS40MTcsMjYuN2wxLjkxOC0xLjkxOCwyLjc4MS0yLjc4MWgwbDEuMS0xLjFhLjQ2My40NjMsMCwwLDAsMC0uNjcxbC0uODg3LS44ODdhLjQ2My40NjMsMCwwLDAtLjY3MSwwbC0xLjEsMS4xaDBMOC4zLDI2LjdoMGwuMzM2LjM2LDcuMDI1LDdhLjQ2My40NjMsMCwwLDAsLjY3MSwwbC44ODctLjg4N0EuNDY0LjQ2NCwwLDAsMCwxNy4yMTksMzIuNTA3WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuMzYzIDM0LjIwOSkgcm90YXRlKDE4MCkiIGZpbGw9IiMwMGFlZmYiLz4KPC9zdmc+Cg==';
$ico-chev-left: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMjAgNTEyIj48IS0tIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMyBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKSAtLT48cGF0aCBkPSJNMzQuNTIgMjM5LjAzTDIyOC44NyA0NC42OWM5LjM3LTkuMzcgMjQuNTctOS4zNyAzMy45NCAwbDIyLjY3IDIyLjY3YzkuMzYgOS4zNiA5LjM3IDI0LjUyLjA0IDMzLjlMMTMxLjQ5IDI1NmwxNTQuMDIgMTU0Ljc1YzkuMzQgOS4zOCA5LjMyIDI0LjU0LS4wNCAzMy45bC0yMi42NyAyMi42N2MtOS4zNyA5LjM3LTI0LjU3IDkuMzctMzMuOTQgMEwzNC41MiAyNzIuOTdjLTkuMzctOS4zNy05LjM3LTI0LjU3IDAtMzMuOTR6Ii8+PC9zdmc+';
$ico-chev-up: 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMyBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKSAtLT48cGF0aCBkPSJNMjQwLjk3MSAxMzAuNTI0bDE5NC4zNDMgMTk0LjM0M2M5LjM3MyA5LjM3MyA5LjM3MyAyNC41NjkgMCAzMy45NDFsLTIyLjY2NyAyMi42NjdjLTkuMzU3IDkuMzU3LTI0LjUyMiA5LjM3NS0zMy45MDEuMDRMMjI0IDIyNy40OTUgNjkuMjU1IDM4MS41MTZjLTkuMzc5IDkuMzM1LTI0LjU0NCA5LjMxNy0zMy45MDEtLjA0bC0yMi42NjctMjIuNjY3Yy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFMMjA3LjAzIDEzMC41MjVjOS4zNzItOS4zNzMgMjQuNTY4LTkuMzczIDMzLjk0MS0uMDAxeiIvPjwvc3ZnPg==';
$ico-chev-down-white: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA0NDggNTEyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NDggNTEyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDojRkZGRkZGO30NCjwvc3R5bGU+DQo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjA3LDM4MS41TDEyLjcsMTg3LjFjLTkuNC05LjQtOS40LTI0LjYsMC0zMy45bDIyLjctMjIuN2M5LjQtOS40LDI0LjUtOS40LDMzLjksMGwxNTQuNywxNTRsMTU0LjctMTU0DQoJYzkuNC05LjMsMjQuNS05LjMsMzMuOSwwbDIyLjcsMjIuN2M5LjQsOS40LDkuNCwyNC42LDAsMzMuOUwyNDEsMzgxLjVDMjMxLjYsMzkwLjgsMjE2LjQsMzkwLjgsMjA3LDM4MS41TDIwNywzODEuNXoiLz4NCjwvc3ZnPg0K';
Expand Down Expand Up @@ -30,6 +31,10 @@ $ico-upload-gray: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjkiIGhlaWdodD0iNDg
$ico-trash: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tISBGb250IEF3ZXNvbWUgUHJvIDYuMS4xIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIENvcHlyaWdodCAyMDIyIEZvbnRpY29ucywgSW5jLiAtLT48cGF0aCBkPSJNMTYwIDQwMEMxNjAgNDA4LjggMTUyLjggNDE2IDE0NCA0MTZDMTM1LjIgNDE2IDEyOCA0MDguOCAxMjggNDAwVjE5MkMxMjggMTgzLjIgMTM1LjIgMTc2IDE0NCAxNzZDMTUyLjggMTc2IDE2MCAxODMuMiAxNjAgMTkyVjQwMHpNMjQwIDQwMEMyNDAgNDA4LjggMjMyLjggNDE2IDIyNCA0MTZDMjE1LjIgNDE2IDIwOCA0MDguOCAyMDggNDAwVjE5MkMyMDggMTgzLjIgMjE1LjIgMTc2IDIyNCAxNzZDMjMyLjggMTc2IDI0MCAxODMuMiAyNDAgMTkyVjQwMHpNMzIwIDQwMEMzMjAgNDA4LjggMzEyLjggNDE2IDMwNCA0MTZDMjk1LjIgNDE2IDI4OCA0MDguOCAyODggNDAwVjE5MkMyODggMTgzLjIgMjk1LjIgMTc2IDMwNCAxNzZDMzEyLjggMTc2IDMyMCAxODMuMiAzMjAgMTkyVjQwMHpNMzE3LjUgMjQuOTRMMzU0LjIgODBINDI0QzQzNy4zIDgwIDQ0OCA5MC43NSA0NDggMTA0QzQ0OCAxMTcuMyA0MzcuMyAxMjggNDI0IDEyOEg0MTZWNDMyQzQxNiA0NzYuMiAzODAuMiA1MTIgMzM2IDUxMkgxMTJDNjcuODIgNTEyIDMyIDQ3Ni4yIDMyIDQzMlYxMjhIMjRDMTAuNzUgMTI4IDAgMTE3LjMgMCAxMDRDMCA5MC43NSAxMC43NSA4MCAyNCA4MEg5My44MkwxMzAuNSAyNC45NEMxNDAuOSA5LjM1NyAxNTguNCAwIDE3Ny4xIDBIMjcwLjlDMjg5LjYgMCAzMDcuMSA5LjM1OCAzMTcuNSAyNC45NEgzMTcuNXpNMTUxLjUgODBIMjk2LjVMMjc3LjUgNTEuNTZDMjc2IDQ5LjM0IDI3My41IDQ4IDI3MC45IDQ4SDE3Ny4xQzE3NC41IDQ4IDE3MS4xIDQ5LjM0IDE3MC41IDUxLjU2TDE1MS41IDgwek04MCA0MzJDODAgNDQ5LjcgOTQuMzMgNDY0IDExMiA0NjRIMzM2QzM1My43IDQ2NCAzNjggNDQ5LjcgMzY4IDQzMlYxMjhIODBWNDMyeiIvPjwvc3ZnPg==";
$ico-question: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjAuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzNiAzNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzYgMzY7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHRpdGxlPmhlbHA8L3RpdGxlPgo8cGF0aCBkPSJNMTgsMzUuOWMtOS45LDAtMTcuOS04LTE3LjktMTcuOVM4LjEsMC4xLDE4LDAuMXMxNy45LDgsMTcuOSwxNy45UzI3LjksMzUuOSwxOCwzNS45eiBNMTgsMy42QzEwLjEsMy42LDMuNiwxMC4xLDMuNiwxOAoJUzEwLjEsMzIuNCwxOCwzMi40UzMyLjQsMjUuOSwzMi40LDE4UzI1LjksMy42LDE4LDMuNnoiLz4KPGc+Cgk8Y2lyY2xlIGN4PSIxNy40IiBjeT0iMjYiIHI9IjIuNSIvPgoJPHBhdGggZD0iTTE1LjMsMjEuNXYtMWMwLTAuOSwwLjItMS43LDAuNi0yLjNjMC40LTAuNywxLjEtMS40LDIuMS0yLjFjMS0wLjcsMS42LTEuMywxLjktMS43YzAuMy0wLjQsMC41LTAuOSwwLjUtMS41CgkJYzAtMC42LTAuMi0xLjEtMC43LTEuNFMxOC43LDExLDE3LjksMTFjLTEuNCwwLTMsMC41LTQuOCwxLjRsLTEuNS0zLjFjMi4xLTEuMiw0LjMtMS43LDYuNi0xLjdjMS45LDAsMy40LDAuNSw0LjYsMS40CgkJYzEuMSwwLjksMS43LDIuMSwxLjcsMy43YzAsMS0wLjIsMS45LTAuNywyLjdjLTAuNSwwLjctMS4zLDEuNi0yLjcsMi41Yy0wLjksMC43LTEuNSwxLjItMS43LDEuNWMtMC4yLDAuMy0wLjQsMC44LTAuNCwxLjR2MC44CgkJSDE1LjN6Ii8+CjwvZz4KPC9zdmc+Cg==";
$ico-grip: "data:image/svg+xml;base64,PHN2ZyBpZD0iZ3JpcCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iNS45NCIgaGVpZ2h0PSIxNy45NCIgdmlld0JveD0iMCAwIDUuOTQgMTcuOTQiPgogIDxjaXJjbGUgaWQ9IkVsbGlwc2VfNCIgZGF0YS1uYW1lPSJFbGxpcHNlIDQiIGN4PSIwLjk3IiBjeT0iMC45NyIgcj0iMC45NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwKSIgZmlsbD0iI2ExYTFhMSIvPgogIDxjaXJjbGUgaWQ9IkVsbGlwc2VfNSIgZGF0YS1uYW1lPSJFbGxpcHNlIDUiIGN4PSIwLjk3IiBjeT0iMC45NyIgcj0iMC45NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCA0KSIgZmlsbD0iI2ExYTFhMSIvPgogIDxjaXJjbGUgaWQ9IkVsbGlwc2VfNiIgZGF0YS1uYW1lPSJFbGxpcHNlIDYiIGN4PSIwLjk3IiBjeT0iMC45NyIgcj0iMC45NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCA4KSIgZmlsbD0iI2ExYTFhMSIvPgogIDxjaXJjbGUgaWQ9IkVsbGlwc2VfNyIgZGF0YS1uYW1lPSJFbGxpcHNlIDciIGN4PSIwLjk3IiBjeT0iMC45NyIgcj0iMC45NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAxMikiIGZpbGw9IiNhMWExYTEiLz4KICA8Y2lyY2xlIGlkPSJFbGxpcHNlXzgiIGRhdGEtbmFtZT0iRWxsaXBzZSA4IiBjeD0iMC45NyIgY3k9IjAuOTciIHI9IjAuOTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMTYpIiBmaWxsPSIjYTFhMWExIi8+CiAgPGNpcmNsZSBpZD0iRWxsaXBzZV85IiBkYXRhLW5hbWU9IkVsbGlwc2UgOSIgY3g9IjAuOTciIGN5PSIwLjk3IiByPSIwLjk3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0IDApIiBmaWxsPSIjYTFhMWExIi8+CiAgPGNpcmNsZSBpZD0iRWxsaXBzZV8xMCIgZGF0YS1uYW1lPSJFbGxpcHNlIDEwIiBjeD0iMC45NyIgY3k9IjAuOTciIHI9IjAuOTciIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQgNCkiIGZpbGw9IiNhMWExYTEiLz4KICA8Y2lyY2xlIGlkPSJFbGxpcHNlXzExIiBkYXRhLW5hbWU9IkVsbGlwc2UgMTEiIGN4PSIwLjk3IiBjeT0iMC45NyIgcj0iMC45NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNCA4KSIgZmlsbD0iI2ExYTFhMSIvPgogIDxjaXJjbGUgaWQ9IkVsbGlwc2VfMTIiIGRhdGEtbmFtZT0iRWxsaXBzZSAxMiIgY3g9IjAuOTciIGN5PSIwLjk3IiByPSIwLjk3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0IDEyKSIgZmlsbD0iI2ExYTFhMSIvPgogIDxjaXJjbGUgaWQ9IkVsbGlwc2VfMTMiIGRhdGEtbmFtZT0iRWxsaXBzZSAxMyIgY3g9IjAuOTciIGN5PSIwLjk3IiByPSIwLjk3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0IDE2KSIgZmlsbD0iI2ExYTFhMSIvPgo8L3N2Zz4K";
$ico-star: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOS4wNDIiIGhlaWdodD0iMTguMjI2IiB2aWV3Qm94PSIwIDAgMTkuMDQyIDE4LjIyNiI+CiAgPHBhdGggaWQ9InN0YXIiIGQ9Ik0zOC41NjcsNi4wOTJsLTUuMi0uNzU4TDMxLjA0Mi42MjFBMS4xNCwxLjE0LDAsMCwwLDI5LC42MjFMMjYuNjc1LDUuMzM0bC01LjIuNzU4YTEuMTQsMS4xNCwwLDAsMC0uNjMsMS45NDNMMjQuNjA3LDExLjdsLS44OSw1LjE3OWExLjEzOCwxLjEzOCwwLDAsMCwxLjY1MiwxLjJsNC42NTItMi40NDUsNC42NTIsMi40NDVhMS4xMzksMS4xMzksMCwwLDAsMS42NTItMS4ybC0uODktNS4xNzlMMzkuMiw4LjAzNWExLjE0LDEuMTQsMCwwLDAtLjYzLTEuOTQzWk0zMy42LDExLjFsLjg0NCw0LjkyNi00LjQyNC0yLjMyNEwyNS42LDE2LjAzLDI2LjQ0LDExLjEsMjIuODU5LDcuNjE1LDI3LjgwNyw2LjlsMi4yMTQtNC40ODVMMzIuMjM1LDYuOWw0Ljk0Ny43MTlMMzMuNiwxMS4xWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIwLjUgMC4wMTMpIiBmaWxsPSIjMzMzIi8+Cjwvc3ZnPgo=";
$ico-star-filled: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNy4xOTgiIGhlaWdodD0iMTYuNDYyIiB2aWV3Qm94PSIwIDAgMTcuMTk4IDE2LjQ2MiI+CiAgPHBhdGggaWQ9InN0YXIiIGQ9Ik02NC43MTQsMzQuNTYxbC0yLjEsNC4yNTctNC43LjY4NWExLjAyOSwxLjAyOSwwLDAsMC0uNTcsMS43NTRsMy40LDMuMzExLS44LDQuNjc3YTEuMDI5LDEuMDI5LDAsMCwwLDEuNDkzLDEuMDg0bDQuMi0yLjIwOCw0LjIsMi4yMDhhMS4wMzEsMS4wMzEsMCwwLDAsMS40OTMtMS4wODRsLS44LTQuNjc3LDMuNC0zLjMxMWExLjAyOCwxLjAyOCwwLDAsMC0uNTctMS43NTRsLTQuNy0uNjg1LTIuMS00LjI1N2ExLjAzLDEuMDMsMCwwLDAtMS44NDcsMFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01Ny4wMzcgLTMzLjk4NykiIGZpbGw9IiNlN2M0NDciLz4KPC9zdmc+Cg==";



// helper classes
.hc-icon-left {
Expand Down
Loading

0 comments on commit d2d11cd

Please sign in to comment.