From a602bf08d17580e3b852a8db391dee30c0dc11e6 Mon Sep 17 00:00:00 2001 From: Evan Jarrett Date: Wed, 22 Apr 2026 21:41:48 -0500 Subject: [PATCH] fix missing icons, update light mode theme colors --- pkg/appview/handlers/settings.go | 15 ++++++++------- pkg/appview/public/icons.svg | 2 ++ pkg/appview/templates/components/nav-brand.html | 9 +++++++-- pkg/appview/templates/pages/settings.html | 14 ++++++++++++-- pkg/hold/admin/public/icons.svg | 2 ++ themes/seamark/theme.css | 10 ++++++++++ 6 files changed, 41 insertions(+), 11 deletions(-) diff --git a/pkg/appview/handlers/settings.go b/pkg/appview/handlers/settings.go index 75199f6..7813a10 100644 --- a/pkg/appview/handlers/settings.go +++ b/pkg/appview/handlers/settings.go @@ -37,20 +37,21 @@ type SettingsHandler struct { } // settingsTab describes a tab entry rendered in the tablist. +// Icons live in the template (settings.html) so the icon-sprite generator +// — which only scans templates and JS — can discover them. type settingsTab struct { Slug string Label string - Icon string } func settingsTabs() []settingsTab { return []settingsTab{ - {Slug: "user", Label: "User", Icon: "user"}, - {Slug: "billing", Label: "Billing", Icon: "credit-card"}, - {Slug: "storage", Label: "Storage", Icon: "hard-drive"}, - {Slug: "devices", Label: "Devices", Icon: "terminal"}, - {Slug: "webhooks", Label: "Webhooks", Icon: "webhook"}, - {Slug: "advanced", Label: "Advanced", Icon: "shield-check"}, + {Slug: "user", Label: "User"}, + {Slug: "billing", Label: "Billing"}, + {Slug: "storage", Label: "Storage"}, + {Slug: "devices", Label: "Devices"}, + {Slug: "webhooks", Label: "Webhooks"}, + {Slug: "advanced", Label: "Advanced"}, } } diff --git a/pkg/appview/public/icons.svg b/pkg/appview/public/icons.svg index 69f44f7..4577b93 100644 --- a/pkg/appview/public/icons.svg +++ b/pkg/appview/public/icons.svg @@ -19,6 +19,7 @@ + @@ -67,6 +68,7 @@ + diff --git a/pkg/appview/templates/components/nav-brand.html b/pkg/appview/templates/components/nav-brand.html index f1c68e6..ac409bf 100644 --- a/pkg/appview/templates/components/nav-brand.html +++ b/pkg/appview/templates/components/nav-brand.html @@ -1,6 +1,11 @@ {{ define "nav-brand" }} - - + + {{ .ClientName }} {{ end }} diff --git a/pkg/appview/templates/pages/settings.html b/pkg/appview/templates/pages/settings.html index cf9640e..f7d3356 100644 --- a/pkg/appview/templates/pages/settings.html +++ b/pkg/appview/templates/pages/settings.html @@ -1,3 +1,13 @@ +{{ 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" }} @@ -33,7 +43,7 @@ aria-controls="tab-content" aria-selected="{{ if eq .Slug $active }}true{{ else }}false{{ end }}" tabindex="{{ if eq .Slug $active }}0{{ else }}-1{{ end }}"> - {{ icon .Icon "size-4" }} {{ .Label }} + {{ template "settings-tab-icon" .Slug }} {{ .Label }} {{ end }} @@ -54,7 +64,7 @@ aria-controls="tab-content" aria-selected="{{ if eq .Slug $active }}true{{ else }}false{{ end }}" tabindex="{{ if eq .Slug $active }}0{{ else }}-1{{ end }}"> - {{ icon .Icon "size-4" }} {{ .Label }} + {{ template "settings-tab-icon" .Slug }} {{ .Label }} {{ end }} diff --git a/pkg/hold/admin/public/icons.svg b/pkg/hold/admin/public/icons.svg index 69f44f7..4577b93 100644 --- a/pkg/hold/admin/public/icons.svg +++ b/pkg/hold/admin/public/icons.svg @@ -19,6 +19,7 @@ + @@ -67,6 +68,7 @@ + diff --git a/themes/seamark/theme.css b/themes/seamark/theme.css index 11970a3..e85d519 100644 --- a/themes/seamark/theme.css +++ b/themes/seamark/theme.css @@ -23,6 +23,16 @@ --color-base-100: oklch(98% 0.01 225); --color-base-200: oklch(95% 0.02 225); --color-base-300: oklch(92% 0.03 225); + /* Tilt body text toward the primary hue so it reads as deep ocean ink + rather than the auto-derived neutral gray. */ + --color-base-content: oklch(30% 0.10 250); +} + +/* In light mode collapse the navbar logo to the primary font color so it + inherits --color-base-content from the link wrapper. Dark mode is left + alone so the native white-and-yellow palette shows through. */ +[data-theme="light"] .nav-brand-logo path { + fill: currentColor; } @keyframes rock {