40 lines
812 B
JavaScript
40 lines
812 B
JavaScript
/**
|
|
* Site Header Component
|
|
* Sticky header container that holds top-bar, navigation, and search
|
|
*/
|
|
class SiteHeader extends HTMLElement {
|
|
constructor() {
|
|
super();
|
|
this.attachShadow({ mode: "open" });
|
|
}
|
|
|
|
connectedCallback() {
|
|
this.render();
|
|
}
|
|
|
|
render() {
|
|
this.shadowRoot.innerHTML = `
|
|
<style>
|
|
:host {
|
|
display: block;
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 100;
|
|
background-color: var(--color-background, #ffffff);
|
|
}
|
|
|
|
.header {
|
|
display: flex;
|
|
flex-direction: column;
|
|
border-bottom: 1px solid var(--color-border, #e2e8f0);
|
|
}
|
|
</style>
|
|
<header class="header">
|
|
<slot></slot>
|
|
</header>
|
|
`;
|
|
}
|
|
}
|
|
|
|
customElements.define("site-header", SiteHeader);
|