aboutsummaryrefslogtreecommitdiff
path: root/views/owner.eta
diff options
context:
space:
mode:
authorJoe Mou <dev@mou.fo>2026-09-04 21:26:21 -0400
committerJoe Mou <dev@mou.fo>2026-09-04 21:49:59 -0400
commit3fd91017f05714fb5c049d662ae00dc31203485b (patch)
treef33466d43994da205c8081782c73639a25ca4f5b /views/owner.eta
parentae000d743ef54368d21596d590e1acc0d90b370e (diff)
Split the page shell out of the repository layout
layout.eta was two things at once: the HTML shell every page needs and the repository chrome around it. owner.eta, being the one page that is not about a repository, could use neither and carried its own copy of the shell, which had drifted -- its footer named no build commit and did not link to the original page on GitHub. The shell moves to views/layouts/base.eta, taking its title and any deferred scripts as layout data, and the chrome to views/layouts/repo.eta, a layout over it that adds the clone commands, nav, search box, and the "/" shortcut that focuses it. Repository pages point at repo.eta and render as before; owner.eta uses base.eta directly and so gains the footer it was missing. Templates now live in more than one directory, so scripts/build.ts walks views/ recursively and keys each template by its path underneath it. Names crossing a directory are written from the views root ("/layouts/base.eta"), the one form both Eta's filesystem resolver and the precompiled resolver in worker.ts agree on; siblings stay relative. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ba5p88cWtCq42vf3uweweL
Diffstat (limited to 'views/owner.eta')
-rw-r--r--views/owner.eta107
1 files changed, 48 insertions, 59 deletions
diff --git a/views/owner.eta b/views/owner.eta
index e5667fb..b3304fb 100644
--- a/views/owner.eta
+++ b/views/owner.eta
@@ -1,65 +1,54 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title><%= it.name ? `${it.name} (${it.login})` : it.login %></title>
- <link rel="stylesheet" href="/static/style.css">
-</head>
-<body>
- <div class="box">
- <% if (it.avatarUrl) { %>
- <img class="avatar" src="<%= it.avatarUrl %>" alt="" width="64" height="64">
- <% } %>
- <div class="repo"><%= it.name || it.login %></div>
- <div><%= it.login %><%= it.type === "organization" ? " (organization)" : "" %></div>
- <% if (it.location) { %>
- <div><%= it.location %></div>
- <% } %>
- <% if (it.nav.length > 0) { %>
- <nav>
- <% for (const item of it.nav) { %>
- <a href="<%= item.href %>"><%= item.text %></a>
- <% } %>
- </nav>
- <% } %>
- </div>
+<% layout("/layouts/base.eta", { title: it.name ? `${it.name} (${it.login})` : it.login }) %>
- <% if (it.bio || it.links.length > 0 || it.followers || it.company) { %>
- <div class="box repo-info">
- <% if (it.bio) { %>
- <div class="description"><%= it.bio %></div>
- <% } %>
- <% for (const link of it.links) { %>
- <div class="detail"><img src="/static/icons/link.svg" alt="" class="icon"> <a href="<%= link.href %>" rel="noopener noreferrer"><%= link.text %></a></div>
- <% } %>
- <% if (it.followers) { %>
- <div class="detail"><img src="/static/icons/eye.svg" alt="" class="icon"> <%= it.followers %> followers<%= it.following ? ` · ${it.following} following` : "" %></div>
- <% } %>
- <% if (it.company) { %>
- <div class="detail"><%= it.company %></div>
- <% } %>
- </div>
+<div class="box">
+ <% if (it.avatarUrl) { %>
+ <img class="avatar" src="<%= it.avatarUrl %>" alt="" width="64" height="64">
<% } %>
-
- <% if (it.pinned.length > 0) { %>
- <section>
- <h2>Pinned</h2>
- <% for (const repo of it.pinned) { %>
- <%~ include("./_ownerRepo", { repo, login: it.login }) %>
- <% } %>
- </section>
+ <div class="repo"><%= it.name || it.login %></div>
+ <div><%= it.login %><%= it.type === "organization" ? " (organization)" : "" %></div>
+ <% if (it.location) { %>
+ <div><%= it.location %></div>
<% } %>
-
- <% if (it.repos.length > 0) { %>
- <section>
- <h2>Repositories</h2>
- <% for (const repo of it.repos) { %>
- <%~ include("./_ownerRepo", { repo, login: it.login }) %>
+ <% if (it.nav.length > 0) { %>
+ <nav>
+ <% for (const item of it.nav) { %>
+ <a href="<%= item.href %>"><%= item.text %></a>
<% } %>
- </section>
+ </nav>
<% } %>
+</div>
+
+<% if (it.bio || it.links.length > 0 || it.followers || it.company) { %>
+ <div class="box repo-info">
+ <% if (it.bio) { %>
+ <div class="description"><%= it.bio %></div>
+ <% } %>
+ <% for (const link of it.links) { %>
+ <div class="detail"><img src="/static/icons/link.svg" alt="" class="icon"> <a href="<%= link.href %>" rel="noopener noreferrer"><%= link.text %></a></div>
+ <% } %>
+ <% if (it.followers) { %>
+ <div class="detail"><img src="/static/icons/eye.svg" alt="" class="icon"> <%= it.followers %> followers<%= it.following ? ` · ${it.following} following` : "" %></div>
+ <% } %>
+ <% if (it.company) { %>
+ <div class="detail"><%= it.company %></div>
+ <% } %>
+ </div>
+<% } %>
- <footer>Generated by cgithub</footer>
-</body>
-</html>
+<% if (it.pinned.length > 0) { %>
+ <section>
+ <h2>Pinned</h2>
+ <% for (const repo of it.pinned) { %>
+ <%~ include("./_ownerRepo", { repo, login: it.login }) %>
+ <% } %>
+ </section>
+<% } %>
+
+<% if (it.repos.length > 0) { %>
+ <section>
+ <h2>Repositories</h2>
+ <% for (const repo of it.repos) { %>
+ <%~ include("./_ownerRepo", { repo, login: it.login }) %>
+ <% } %>
+ </section>
+<% } %>