summaryrefslogtreecommitdiff
path: root/cgithub/views/_refs.eta
diff options
context:
space:
mode:
authorJoe Mou <dev@mou.fo>2026-07-21 17:46:58 -0400
committerJoe Mou <dev@mou.fo>2026-07-22 23:25:26 -0400
commit6240cf1c6b73b7ed34ff5816b53333382c229f5c (patch)
tree4e8a8e379aa466c8a0d1d298266700a589b1a445 /cgithub/views/_refs.eta
parent9b556ffe6c0c0528697e15f7f4f35107de212ce1 (diff)
Add async branch/tag dropdown and latest-commit bar
Adds two lazily-fetched UI pieces to match vanilla GitHub while keeping initial page loads plain server-rendered HTML: a branch/tag selector (native <dialog>, CSS anchor-positioned to its button, light-dismissed via closedby="any") and a latest-commit bar above the file listing. Both are populated by new /api/:owner/:repo/refs/:type and /api/:owner/:repo/latest-commit/:branch/:path routes; the latter calls GitHub's own /latest-commit JSON endpoint (the same one the React UI uses) rather than scraping the full commit history page.
Diffstat (limited to 'cgithub/views/_refs.eta')
-rw-r--r--cgithub/views/_refs.eta17
1 files changed, 17 insertions, 0 deletions
diff --git a/cgithub/views/_refs.eta b/cgithub/views/_refs.eta
new file mode 100644
index 0000000..2450c4b
--- /dev/null
+++ b/cgithub/views/_refs.eta
@@ -0,0 +1,17 @@
+<% if (it.refs.length === 0) { %>
+ <div class="ref-selector-empty">No <%= it.type %> found.</div>
+<% } else { %>
+ <ul class="ref-selector-items">
+ <% for (const ref of it.refs) { %>
+ <li>
+ <a href="/<%= it.repo.owner %>/<%= it.repo.name %>/tree/<%= ref.name %>"><%= ref.name %></a>
+ <% if (ref.isDefault) { %><span class="ref-selector-badge">default</span><% } %>
+ </li>
+ <% } %>
+ </ul>
+<% } %>
+<% if (it.hasMore) { %>
+ <div class="ref-selector-more">
+ <a href="/<%= it.repo.owner %>/<%= it.repo.name %>/<%= it.type %>">View all <%= it.type %></a>
+ </div>
+<% } %>