feat(go-crm): industrial terminal-core UI redesign

Complete visual overhaul of the go-crm web interface:

- New shared layout system (internal/templates/ui.go) with dark zinc
  industrial theme, JetBrains Mono typography, grid/noise textures
- Redesigned all pages: Dashboard, Login/Signup, Clients, Customers,
  Services, Scheduling, Payments, Questions, Answers, Leads,
  Review Queue, Report, Keyword Mapping
- Tailwind CSS via CDN with custom color palette (amber/emerald/rose/sky)
- HTMX-powered interactions with CSS swap animations
- Status pills, KPI cards, data tables, empty states, inline forms
- Mobile-responsive sidebar with collapsible navigation
- All existing tests updated and passing
- Zero new build dependencies — works with existing go run/air workflow
This commit is contained in:
2026-05-23 18:00:32 -03:00
parent 744868caa1
commit 9c3bfd131d
16 changed files with 1901 additions and 791 deletions

View File

@@ -75,8 +75,8 @@ func TestDashboardHidesConnectLinkWhenDBConnected(t *testing.T) {
body := w.Body.String()
if !strings.Contains(body, "connected") {
t.Error("expected dashboard to show 'connected' status from DB column")
if !strings.Contains(body, "Connected") {
t.Error("expected dashboard to show 'Connected' status from DB column")
}
if strings.Contains(body, "/leads/connect") {
@@ -138,8 +138,8 @@ func TestDashboardShowsConnectLinkWhenDisconnected(t *testing.T) {
body := w.Body.String()
if !strings.Contains(body, "disconnected") {
t.Error("expected dashboard to show 'disconnected' status")
if !strings.Contains(body, "Disconnected") {
t.Error("expected dashboard to show 'Disconnected' status")
}
if !strings.Contains(body, "/clients") {
@@ -212,8 +212,8 @@ func TestDashboardShowsConnectedStatus(t *testing.T) {
body := w.Body.String()
if !strings.Contains(body, "connected") {
t.Error("expected dashboard to show 'connected' status")
if !strings.Contains(body, "Connected") {
t.Error("expected dashboard to show 'Connected' status")
}
if strings.Contains(body, "/leads/connect") {
@@ -281,8 +281,8 @@ func TestDashboardShowsConnectLinkWithClientID(t *testing.T) {
body := w.Body.String()
if !strings.Contains(body, "disconnected") {
t.Error("expected dashboard to show 'disconnected' status")
if !strings.Contains(body, "Disconnected") {
t.Error("expected dashboard to show 'Disconnected' status")
}
if !strings.Contains(body, "/leads/connect?client_id=") {