UI and a few server.js changes
This commit is contained in:
parent
716a8d2a27
commit
d15838d970
@ -8,18 +8,22 @@
|
|||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600&display=swap" rel="stylesheet">
|
||||||
<style>
|
<style>
|
||||||
:root {
|
@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap');
|
||||||
--ground: #E9EBEC;
|
|
||||||
--card: #FFFFFF;
|
|
||||||
--ink: #14181A;
|
|
||||||
--muted: #6C767C;
|
|
||||||
--rule: #D3D8DA;
|
|
||||||
--signal: #14684C;
|
|
||||||
--signal-soft: #E2F0EA;
|
|
||||||
--alert: #9B3520;
|
|
||||||
|
|
||||||
--sans: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
:root {
|
||||||
|
|
||||||
|
--ground: hsl(210, 18%, 8%);
|
||||||
|
--card: hsl(210, 16%, 13%);
|
||||||
|
--ink: hsl(30, 30%, 96%);
|
||||||
|
--muted: hsl(215, 12%, 68%);
|
||||||
|
--rule: hsl(210, 12%, 24%);
|
||||||
|
--signal: hsl(28, 95%, 58%);
|
||||||
|
--signal-soft: hsl(28, 70%, 22%);
|
||||||
|
--alert: hsl(14, 90%, 58%);
|
||||||
|
|
||||||
|
--font-ui: 'Outfit', system-ui, -apple-system, 'Segoe UI', sans-serif;
|
||||||
--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
* { box-sizing: border-box; }
|
* { box-sizing: border-box; }
|
||||||
@ -29,9 +33,9 @@ body {
|
|||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
font-family: var(--font-ui);
|
||||||
background: var(--ground);
|
background: var(--ground);
|
||||||
color: var(--ink);
|
color: var(--ink);
|
||||||
font-family: var(--sans);
|
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
@ -140,7 +144,7 @@ button, .button {
|
|||||||
border: none;
|
border: none;
|
||||||
background: var(--ink);
|
background: var(--ink);
|
||||||
color: var(--ground);
|
color: var(--ground);
|
||||||
font-family: var(--sans);
|
font-family: var(--font-ui);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@ -271,9 +275,9 @@ button.quiet:hover { background: none; color: var(--ink); }
|
|||||||
|
|
||||||
footer {
|
footer {
|
||||||
margin-top: 28px;
|
margin-top: 28px;
|
||||||
font-family: var(--mono);
|
font-family: var(--font-ui);
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
color: var(--muted);
|
color: var(--ink);
|
||||||
}
|
}
|
||||||
|
|
||||||
body > footer {
|
body > footer {
|
||||||
@ -413,7 +417,7 @@ function render() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!data.tickets.length) {
|
if (!data.tickets.length) {
|
||||||
html += `<div class="empty"><p>Nothing closed yet. Tickets appear here within a minute of being closed.</p></div>`;
|
html += `<div class="empty"><p>Nothing closed yet.</p></div>`;
|
||||||
} else {
|
} else {
|
||||||
html += '<div class="feed">' + data.tickets.map(renderTicket).join('') + '</div>';
|
html += '<div class="feed">' + data.tickets.map(renderTicket).join('') + '</div>';
|
||||||
}
|
}
|
||||||
@ -469,8 +473,9 @@ setInterval(load, 5000); // pull fresh state from the server
|
|||||||
setInterval(render, 20000); // re-age the rails between pulls
|
setInterval(render, 20000); // re-age the rails between pulls
|
||||||
</script>
|
</script>
|
||||||
<footer>
|
<footer>
|
||||||
<p>© 2026 Isaac Godin. All rights reserved.</p>
|
<p>© 2026 <span style="color: hsl(28, 95%, 58%);">Isaac Godin</span>. All rights reserved.</p>
|
||||||
<p>Design and Credits: <a href="https://www.mccs.me.edu/">Isaac Godin</a></p>
|
<p>Design and Credits: <span style="color: hsl(28, 95%, 58%);">Isaac Godin</span></p>
|
||||||
</footer>
|
</footer>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -58,7 +58,7 @@ function pollForToken(deviceCode, interval, expiresIn) {
|
|||||||
const timer = setInterval(async () => {
|
const timer = setInterval(async () => {
|
||||||
if (Date.now() > deadline) {
|
if (Date.now() > deadline) {
|
||||||
clearInterval(timer);
|
clearInterval(timer);
|
||||||
reject(new Error('The authorization code expired. Connect again.'));
|
reject(new Error('Expired try again.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user