Commit 83ccdf9

mo khan <mo@mokhan.ca>
2025-03-26 21:53:08
feat: extract a navigation header for each page in UI
1 parent d51fa3b
Changed files (1)
bin
bin/ui
@@ -179,18 +179,34 @@ class UI
         html = with_layout(binding) do
           <<~ERB
             <%- if current_user?(request) -%>
-              <a href="/groups.html">Groups</a>
+              <nav>
+                <ul class="pico-background-pink-100">
+                  <li><strong>UI</strong></li>
+                </ul>
+                <ul>
+                  <li><a href="/groups.html">Groups</a></li>
+                  <li>
+                    <form action="/logout" method="post">
+                      <input type="submit" value="Logout" />
+                    </form>
+                  </li>
+                </ul>
+              </nav>
               <h1>Access Token</h1>
               <pre><%= request.session[:access_token] %></pre>
+
               <h1>ID Token</h1>
               <pre><%= request.session[:id_token] %></pre>
-
-              <form action="/logout" method="post">
-                <input type="submit" value="Logout" />
-              </form>
             <%- else -%>
-              <a href="/saml/new">SAML Login</a>
-              <a href="/oidc/new">OIDC Login</a>
+              <nav>
+                <ul class="pico-background-pink-100">
+                  <li><strong>UI</strong></li>
+                </ul>
+                <ul>
+                  <li><a href="/saml/new">SAML Login</a></li>
+                  <li><a href="/oidc/new">OIDC Login</a></li>
+                </ul>
+              </nav>
             <%- end -%>
           ERB
         end
@@ -259,19 +275,27 @@ class UI
       request.session[:id_token] = tokens[:id_token]
       request.session[:refresh_token] = tokens[:access_token]
 
-      template = <<~ERB
-        <!DOCTYPE html>
-        <html>
-          <head><title></title></head>
-          <body style="background-color: pink;">
-            <pre style="display: none;"><%= response.body %></pre>
-            <pre><%= JSON.pretty_generate(request.session[:access_token]) %></pre>
-            <a href="/index.html">Home</a>
-            <a href="/groups.html">Groups</a>
-          </body>
-        </html>
-      ERB
-      html = ERB.new(template, trim_mode: '-').result(binding)
+      html = with_layout(binding) do
+        <<~ERB
+          <nav>
+            <ul class="pico-background-pink-100">
+              <li><strong>UI</strong></li>
+            </ul>
+            <ul>
+              <li><a href="/index.html">Home</a></li>
+              <li><a href="/groups.html">Groups</a></li>
+              <li>
+                <form action="/logout" method="post">
+                  <input type="submit" value="Logout" />
+                </form>
+              </li>
+            </ul>
+          </nav>
+          <h1>Access Token</h1>
+          <pre style="display: none;"><%= response.body %></pre>
+          <pre><%= JSON.pretty_generate(request.session[:access_token]) %></pre>
+        ERB
+      end
       [200, { 'Content-Type' => "text/html" }, [html]]
     else
       [response.code, response.header, [response.body]]
@@ -288,11 +312,21 @@ class UI
       groups = JSON.parse(response.body, symbolize_names: true)
       html = with_layout(binding) do
         <<~ERB
-            <a href="/index.html">Home</a>
-            <a href="/groups.html">Groups</a>
-            <form action="/logout" method="post">
-              <input type="submit" value="Logout" />
-            </form>
+            <nav>
+              <ul class="pico-background-pink-100">
+                <li><strong>UI</strong></li>
+              </ul>
+              <ul>
+                <li><a href="/index.html">Home</a></li>
+                <li><a href="/groups.html">Groups</a></li>
+                <li>
+                  <form action="/logout" method="post">
+                    <input type="submit" value="Logout" />
+                  </form>
+                </li>
+              </ul>
+            </nav>
+
             <table>
               <thead>
                 <tr>
@@ -334,11 +368,21 @@ class UI
 
       html = with_layout(binding) do
         <<~ERB
-          <a href="/index.html">Home</a>
-          <a href="/groups.html">Groups</a>
-          <form action="/logout" method="post">
-            <input type="submit" value="Logout" />
-          </form>
+          <nav>
+            <ul class="pico-background-pink-100">
+              <li><strong>UI</strong></li>
+            </ul>
+            <ul>
+              <li><a href="/index.html">Home</a></li>
+              <li><a href="/groups.html">Groups</a></li>
+              <li>
+                <form action="/logout" method="post">
+                  <input type="submit" value="Logout" />
+                </form>
+              </li>
+            </ul>
+          </nav>
+
           <table>
             <thead>
               <tr>