import { LitElement, html, css, unsafeCSS } from 'lit';
import { customElement, state } from 'lit/decorators.js';
import styles from './nav-bar.css?inline';
@customElement('nav-bar')
export class NavBar extends LitElement {
static styles = css`${unsafeCSS(styles)}`;
@state() theme: 'light' | 'dark' =
(localStorage.getItem('theme') as 'light' | 'dark') ||
(window.matchMedia('(prefers-color-scheme: dark)').matches
? 'dark'
: 'light');
firstUpdated() {
document.documentElement.setAttribute('data-theme', this.theme);
}
toggleTheme() {
this.theme = this.theme === 'light' ? 'dark' : 'light';
document.documentElement.setAttribute('data-theme', this.theme);
localStorage.setItem('theme', this.theme);
}
navigate(path: string) {
this.dispatchEvent(
new CustomEvent('nav', { detail: { path }, bubbles: true, composed: true })
);
}
render() {
return html`
`;
}
}