Files
intervalsicu-mcp-ui/src/intervalsicu_mcp_ui/templates/base.html
T
Chris Farhood 3908251f6e
build-image / test (push) Successful in 33s
build-image / build (push) Successful in 29s
feat: base-path support (ROOT_PATH) for serving under /portal
Links, form actions, and redirects are prefixed with the gateway path prefix so
the portal can be served at intervalsicu.farhoodlabs.com/portal (gateway strips
/portal; FastAPI root_path generates correct URLs). Connector URL is configurable.
2026-07-04 21:25:12 -04:00

48 lines
2.1 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Intervals.icu MCP portal</title>
<style>
:root { color-scheme: light dark; }
body { font-family: system-ui, sans-serif; max-width: 760px; margin: 0 auto; padding: 1rem; line-height: 1.5; }
header { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem;
border-bottom: 1px solid #8884; padding-bottom: .5rem; margin-bottom: 1.5rem; flex-wrap: wrap; }
nav a { margin-left: 1rem; }
a { color: #3b82f6; text-decoration: none; }
a:hover { text-decoration: underline; }
.banner { padding: .6rem .9rem; border-radius: 8px; margin: 1rem 0; }
.ok { background: #16a34a22; border: 1px solid #16a34a88; }
.warn { background: #d9770622; border: 1px solid #d9770688; }
.err { background: #dc262622; border: 1px solid #dc262688; }
label { display: block; margin-top: 1rem; font-weight: 600; }
input[type=text], input[type=password] { width: 100%; padding: .5rem; margin-top: .25rem;
border: 1px solid #8886; border-radius: 6px; box-sizing: border-box; }
button { margin-top: 1rem; padding: .5rem 1rem; border-radius: 6px; border: 1px solid #8886;
background: #3b82f6; color: #fff; cursor: pointer; }
button.secondary { background: transparent; color: inherit; }
table { border-collapse: collapse; width: 100%; margin-top: 1rem; font-size: .92rem; }
th, td { text-align: left; padding: .4rem .5rem; border-bottom: 1px solid #8883; }
code { background: #8882; padding: .1rem .35rem; border-radius: 4px; }
.muted { color: #8889; }
form.inline { display: inline; }
</style>
</head>
<body>
<header>
<strong>Intervals.icu&nbsp;MCP</strong>
{% if user %}
<nav>
<a href="{{ base }}/account">My account</a>
{% if user.is_admin %}<a href="{{ base }}/admin">Admin</a>{% endif %}
<a href="{{ base }}/logout">Sign out</a>
</nav>
{% endif %}
</header>
<main>
{% block content %}{% endblock %}
</main>
</body>
</html>