Files

89 lines
4.4 KiB
HTML

{{ define "settings-tab-icon" -}}
{{- if eq . "user" -}}{{ icon "user" "size-4" }}
{{- else if eq . "billing" -}}{{ icon "credit-card" "size-4" }}
{{- else if eq . "storage" -}}{{ icon "hard-drive" "size-4" }}
{{- else if eq . "devices" -}}{{ icon "terminal" "size-4" }}
{{- else if eq . "webhooks" -}}{{ icon "webhook" "size-4" }}
{{- else if eq . "advanced" -}}{{ icon "shield-check" "size-4" }}
{{- end -}}
{{ end }}
{{ define "settings" }}
<!DOCTYPE html>
<html lang="en">
<head>
{{ template "head" . }}
{{ template "meta" .Meta }}
</head>
<body>
{{ template "nav" . }}
<main id="main-content" class="container mx-auto px-4 py-8">
<h1 class="text-3xl font-display font-bold tracking-tight mb-6">Settings</h1>
<!-- Mobile identity info (below lg) -->
<div class="lg:hidden mb-4 space-y-1 text-xs text-base-content/70">
<div class="break-all"><code>{{ .Profile.DID }}</code></div>
<div>{{ with .Profile.PDSEndpoint }}<a href="{{ . }}/account" target="_blank" rel="noopener noreferrer" class="link link-primary inline-flex items-center gap-1 break-all max-w-full" title="{{ . }}">{{ . }} {{ icon "external-link" "size-3 shrink-0" }}</a>{{ end }}</div>
</div>
<!-- Mobile tab bar (below lg) -->
{{ $active := .ActiveTab }}
<div class="flex gap-2 overflow-x-auto pb-2 lg:hidden mb-6" role="tablist" aria-label="Settings sections" aria-orientation="horizontal">
{{ range .Tabs }}
<a href="/settings/{{ .Slug }}"
class="btn btn-sm {{ if eq .Slug $active }}btn-secondary{{ else }}btn-ghost{{ end }} settings-tab-mobile shrink-0"
data-tab="{{ .Slug }}"
hx-get="/settings/{{ .Slug }}"
hx-target="#tab-content"
hx-swap="innerHTML show:top"
hx-push-url="true"
role="tab"
id="tab-mobile-{{ .Slug }}"
aria-controls="tab-content"
aria-selected="{{ if eq .Slug $active }}true{{ else }}false{{ end }}"
tabindex="{{ if eq .Slug $active }}0{{ else }}-1{{ end }}">
{{ template "settings-tab-icon" .Slug }} {{ .Label }}
</a>
{{ end }}
</div>
<div class="flex gap-8">
<!-- Sidebar (lg and above) -->
<aside class="hidden lg:block w-56 shrink-0">
<ul class="menu bg-base-200 rounded-box w-full" role="tablist" aria-label="Settings sections" aria-orientation="vertical">
{{ range .Tabs }}
<li data-tab="{{ .Slug }}" role="none" {{ if eq .Slug $active }}class="menu-active"{{ end }}>
<a href="/settings/{{ .Slug }}"
hx-get="/settings/{{ .Slug }}"
hx-target="#tab-content"
hx-swap="innerHTML show:top"
hx-push-url="true"
role="tab"
id="tab-desktop-{{ .Slug }}"
aria-controls="tab-content"
aria-selected="{{ if eq .Slug $active }}true{{ else }}false{{ end }}"
tabindex="{{ if eq .Slug $active }}0{{ else }}-1{{ end }}">
{{ template "settings-tab-icon" .Slug }} {{ .Label }}
</a>
</li>
{{ end }}
</ul>
<div class="mt-4 px-2 space-y-1 text-xs text-base-content/70">
<div class="break-all"><code>{{ .Profile.DID }}</code></div>
<div>{{ with .Profile.PDSEndpoint }}<a href="{{ . }}/account" target="_blank" rel="noopener noreferrer" class="link link-primary inline-flex items-center gap-1 break-all max-w-full" title="{{ . }}">{{ . }} {{ icon "external-link" "size-3 shrink-0" }}</a>{{ end }}</div>
</div>
</aside>
<!-- Active tab content -->
<div id="tab-content" class="flex-1 min-w-0 space-y-6" role="tabpanel" aria-labelledby="tab-desktop-{{ $active }}" tabindex="0">
{{ template "settings-panel" . }}
</div>
</div>
</main>
{{ template "footer" . }}
</body>
</html>
{{ end }}