first steps (footer)

This commit is contained in:
2026-05-20 16:10:51 +02:00
parent 7c925d1fdb
commit c3782509e8
4 changed files with 60 additions and 7 deletions
+1 -3
View File
@@ -2,14 +2,12 @@ import { LitElement, html } from "lit";
import { customElement } from "lit/decorators.js"; import { customElement } from "lit/decorators.js";
import { styles } from "./index.css.js"; import { styles } from "./index.css.js";
const logo = new URL("../../../assets/logo.svg", import.meta.url);
@customElement("app-episodes") @customElement("app-episodes")
export class AppEpisodes extends LitElement { export class AppEpisodes extends LitElement {
static override styles = styles; static override styles = styles;
override render() { override render() {
return html` return html`
<div class="logo"><img alt="open-wc logo" src=${logo} /></div> <div class="logo"></div>
<a href="/episodes/1">Episode 1</a> <a href="/episodes/1">Episode 1</a>
`; `;
} }
+24
View File
@@ -0,0 +1,24 @@
import { LitElement, css, html } from "lit";
import { customElement } from "lit/decorators.js";
const styles = css`
:host {
position: absolute;
clip: rect(1px 1px 1px 1px);
clip: rect(1px, 1px, 1px, 1px);
padding: 0;
border: 0;
height: 1px;
width: 1px;
overflow: hidden;
}
`;
@customElement("c-sronly")
export class CSronly extends LitElement {
static override styles = styles;
override render() {
return html`
<slot></slot>
`;
}
}
+18 -1
View File
@@ -7,14 +7,31 @@ export const styles = css`
grid-template-areas: grid-template-areas:
"main" "main"
"footer"; "footer";
grid-template-rows: auto 2.5ch; grid-template-rows: auto 4ch;
overflow: hidden;
} }
main { main {
grid-area: main; grid-area: main;
overflow: scroll;
} }
nav { nav {
grid-area: footer; grid-area: footer;
display: flex;
flex-flow: row nowrap;
justify-content: space-evenly;
align-items: center;
padding: .5ch;
a {
display: block;
height: 100%;
aspect-ratio: 1;
}
img {
height: 100%;
}
} }
`; `;
+17 -3
View File
@@ -2,8 +2,12 @@ import { LitElement, html } from "lit";
import { customElement } from "lit/decorators.js"; import { customElement } from "lit/decorators.js";
import { styles } from "./index.css.js"; import { styles } from "./index.css.js";
import { Router } from "@lit-labs/router"; import { Router } from "@lit-labs/router";
import * as routeEpisodes from "./app-episodes/routes.js"; import * as routeEpisodes from "./app-episodes/routes.js";
import "./components/c-sronly.js";
const logo = new URL("../../assets/logo.svg", import.meta.url);
@customElement("app-cfpodcasts") @customElement("app-cfpodcasts")
export class AppCfpodcasts extends LitElement { export class AppCfpodcasts extends LitElement {
static override styles = styles; static override styles = styles;
@@ -12,12 +16,22 @@ export class AppCfpodcasts extends LitElement {
...routeEpisodes.routes, ...routeEpisodes.routes,
]); ]);
override render() { override render() {
console.log(this._routes); console.log(this._routes); // TODO
return html` return html`
<main>${this._routes.outlet()}</main> <main>${this._routes.outlet()}</main>
<nav> <nav>
<a href="${this._routes.link("/")}">Home</a> <a
<a href="${this._routes.link(routeEpisodes.path)}">Episodes</a> href="${this._routes.link("/")}"
title="Home"
>
<img src=${logo} />
<c-sronly>Home</c-sronly>
</a>
<a
href="${this._routes.link(routeEpisodes.path)}"
>
Episodes
</a>
</nav> </nav>
`; `;
} }