Add SEO controls and sitemap for compliance pages

Add search engine indexing toggle, robots.txt, and sitemap.xml
generation for compliance pages. Replace checkboxes with toggle
components in the compliance page UI and add an "Open" button
in the page header to quickly access the live compliance page.
The search engine indexing toggle is disabled when the compliance
page is inactive.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
Bryan Frimin
2026-03-24 15:55:31 +01:00
parent 8b483e5629
commit 359f85f5da
17 changed files with 438 additions and 68 deletions

View File

@@ -30,17 +30,18 @@ import (
type (
TrustCenter struct {
ID gid.GID `db:"id"`
OrganizationID gid.GID `db:"organization_id"`
TenantID gid.TenantID `db:"tenant_id"`
Active bool `db:"active"`
Slug string `db:"slug"`
MailingListID *gid.GID `db:"mailing_list_id"`
LogoFileID *gid.GID `db:"logo_file_id"`
DarkLogoFileID *gid.GID `db:"dark_logo_file_id"`
NonDisclosureAgreementFileID *gid.GID `db:"non_disclosure_agreement_file_id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
ID gid.GID `db:"id"`
OrganizationID gid.GID `db:"organization_id"`
TenantID gid.TenantID `db:"tenant_id"`
Active bool `db:"active"`
Slug string `db:"slug"`
SearchEngineIndexing SearchEngineIndexing `db:"search_engine_indexing"`
MailingListID *gid.GID `db:"mailing_list_id"`
LogoFileID *gid.GID `db:"logo_file_id"`
DarkLogoFileID *gid.GID `db:"dark_logo_file_id"`
NonDisclosureAgreementFileID *gid.GID `db:"non_disclosure_agreement_file_id"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
}
TrustCenters []*TrustCenter
@@ -85,6 +86,7 @@ SELECT
dark_logo_file_id,
active,
slug,
search_engine_indexing,
non_disclosure_agreement_file_id,
created_at,
updated_at
@@ -136,6 +138,7 @@ SELECT
dark_logo_file_id,
active,
slug,
search_engine_indexing,
non_disclosure_agreement_file_id,
created_at,
updated_at
@@ -187,6 +190,7 @@ SELECT
dark_logo_file_id,
active,
slug,
search_engine_indexing,
non_disclosure_agreement_file_id,
created_at,
updated_at
@@ -238,6 +242,7 @@ SELECT
dark_logo_file_id,
active,
slug,
search_engine_indexing,
non_disclosure_agreement_file_id,
created_at,
updated_at
@@ -284,6 +289,7 @@ INSERT INTO trust_centers (
dark_logo_file_id,
active,
slug,
search_engine_indexing,
non_disclosure_agreement_file_id,
created_at,
updated_at
@@ -296,6 +302,7 @@ INSERT INTO trust_centers (
@dark_logo_file_id,
@active,
@slug,
@search_engine_indexing,
@non_disclosure_agreement_file_id,
@created_at,
@updated_at
@@ -311,6 +318,7 @@ INSERT INTO trust_centers (
"dark_logo_file_id": tc.DarkLogoFileID,
"active": tc.Active,
"slug": tc.Slug,
"search_engine_indexing": tc.SearchEngineIndexing,
"non_disclosure_agreement_file_id": tc.NonDisclosureAgreementFileID,
"created_at": tc.CreatedAt,
"updated_at": tc.UpdatedAt,
@@ -340,6 +348,7 @@ UPDATE trust_centers
SET
active = @active,
slug = @slug,
search_engine_indexing = @search_engine_indexing,
logo_file_id = @logo_file_id,
dark_logo_file_id = @dark_logo_file_id,
non_disclosure_agreement_file_id = @non_disclosure_agreement_file_id,
@@ -357,6 +366,7 @@ WHERE
"dark_logo_file_id": tc.DarkLogoFileID,
"active": tc.Active,
"slug": tc.Slug,
"search_engine_indexing": tc.SearchEngineIndexing,
"non_disclosure_agreement_file_id": tc.NonDisclosureAgreementFileID,
"updated_at": tc.UpdatedAt,
}