feat(site-builder): pre-publish checklist and canonical link

Publish now runs client-side checks (image alt, meta description, title
length, H1, empty links, contrast, noindex landing, empty page) over the
current state and shows a grouped checklist with Fix links and
"Publish anyway". Adds ExportOptions.canonicalUrl -> <link rel="canonical">
after the favicon line in both Preview and export.

Refs #54
This commit is contained in:
shadowdao committed 2026-10-07 12:05:28 -07:00
1 parent 5430f13877
commit c0fd183c11
12 files changed
+913 -13

No files matched your search

+11
View File
@@ -2731,3 +2731,14 @@ body {
color: var(--color-text);
cursor: pointer;
}
/* #54: pre-publish checklist */
.publish-checklist { max-width: 520px; width: 100%; max-height: 80vh; display: flex; flex-direction: column; }
.publish-checklist-body { overflow-y: auto; margin: 4px 0; }
.publish-checklist-group h4 { margin: 10px 0 4px; font-size: 12px; text-transform: uppercase; letter-spacing: 0.04em; color: #94a3b8; }
.publish-checklist-group ul { list-style: none; margin: 0; padding: 0; }
.publish-check { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; padding: 6px 0; border-top: 1px solid #334155; }
.publish-check-warn .publish-check-msg::before { content: '\26A0\00a0'; color: #fbbf24; }
.publish-check-info .publish-check-msg::before { content: '\2139\00a0'; color: #7dd3fc; }
.publish-check-fix { flex: none; background: none; border: 1px solid #94a3b8; border-radius: 4px; color: inherit; cursor: pointer; padding: 2px 10px; }
.publish-checklist-note { margin: 8px 0 0; color: #94a3b8; font-size: 12px; }