feat(theme): rewrite appearance linkage in user repo

This commit is contained in:
Autoblogia Bot 2026-05-19 23:10:27 +00:00
parent 18d58ec0ab
commit b978a68c03
2 changed files with 136 additions and 88 deletions

View file

@ -71,50 +71,74 @@
<script type="module" src="/src/main.tsx"></script> <script type="module" src="/src/main.tsx"></script>
<!-- Theme Auto-Updater injected by autoblogia --> <!-- Theme Auto-Updater injected by autoblogia -->
<script> <script>
window.addEventListener('message', (event) => { function applySettings(settings) {
if (event.data && event.data.type === 'UPDATE_APPEARANCE') { if (!settings) return;
const settings = event.data.settings; let css = '';
if (!settings) return; if (settings.primaryColor) {
let css = ''; css += "
if (settings.primaryColor) { :root { " +
css += "\n:root { " + "--color-brand-primary: " + settings.primaryColor + " !important; " +
"--color-brand-primary: " + settings.primaryColor + " !important; " + "--color-brand-blue: " + settings.primaryColor + " !important; " +
"--color-brand-blue: " + settings.primaryColor + " !important; " + "--color-brand-gold: " + settings.primaryColor + " !important; " +
"--color-brand-gold: " + settings.primaryColor + " !important; " + "--color-blue-500: " + settings.primaryColor + " !important; " +
"--color-blue-500: " + settings.primaryColor + " !important; " + "--color-blue-600: " + settings.primaryColor + " !important; " +
"--color-blue-600: " + settings.primaryColor + " !important; " + "--color-emerald-500: " + settings.primaryColor + " !important; " +
"--color-emerald-500: " + settings.primaryColor + " !important; " + "--color-emerald-600: " + settings.primaryColor + " !important; " +
"--color-emerald-600: " + settings.primaryColor + " !important; " + "} " +
"} " + ".text-brand-blue, .text-blue-600, .group-hover\:text-blue-600:hover, .text-brand-gold, .text-emerald-600, .text-blue-500, .text-emerald-500 { color: " + settings.primaryColor + " !important; } " +
".text-brand-blue, .text-blue-600, .group-hover\\:text-blue-600:hover, .text-brand-gold, .text-emerald-600, .text-blue-500, .text-emerald-500 { color: " + settings.primaryColor + " !important; } " + ".bg-brand-blue, .bg-blue-600, .hover\:bg-blue-500:hover, .bg-brand-gold, .bg-emerald-600, .bg-blue-500, .bg-emerald-500 { background-color: " + settings.primaryColor + " !important; } " +
".bg-brand-blue, .bg-blue-600, .hover\\:bg-blue-500:hover, .bg-brand-gold, .bg-emerald-600, .bg-blue-500, .bg-emerald-500 { background-color: " + settings.primaryColor + " !important; } " + ".border-brand-blue, .border-blue-600, .focus\:border-blue-600:focus, .border-brand-gold, .border-emerald-600, .border-blue-500, .border-emerald-500 { border-color: " + settings.primaryColor + " !important; } " +
".border-brand-blue, .border-blue-600, .focus\\:border-blue-600:focus, .border-brand-gold, .border-emerald-600, .border-blue-500, .border-emerald-500 { border-color: " + settings.primaryColor + " !important; } " + ".fill-blue-600, .fill-emerald-600 { fill: " + settings.primaryColor + " !important; }";
".fill-blue-600, .fill-emerald-600 { fill: " + settings.primaryColor + " !important; }"; }
} if (settings.backgroundColor) {
if (settings.backgroundColor) { css += "
css += "\n:root { --color-brand-bg: " + settings.backgroundColor + " !important; } body { background-color: " + settings.backgroundColor + " !important; }"; :root { --color-brand-bg: " + settings.backgroundColor + " !important; } body { background-color: " + settings.backgroundColor + " !important; }";
} }
if (settings.fontFamily) { if (settings.fontFamily) {
const fontLink = document.getElementById('dynamic-font'); const fontLink = document.getElementById('dynamic-font');
const fontName = settings.fontFamily.replace(/ /g, '+'); const fontName = settings.fontFamily.replace(/ /g, '+');
const fontUrl = 'https://fonts.googleapis.com/css2?family=' + fontName + ':wght@300;400;500;600;700&display=swap'; const fontUrl = 'https://fonts.googleapis.com/css2?family=' + fontName + ':wght@300;400;500;600;700&display=swap';
if (fontLink) { (fontLink as HTMLLinkElement).href = fontUrl; } else { if (fontLink) { fontLink.href = fontUrl; } else {
const link = document.createElement('link'); link.id = 'dynamic-font'; link.rel = 'stylesheet'; link.href = fontUrl; document.head.appendChild(link); const link = document.createElement('link'); link.id = 'dynamic-font'; link.rel = 'stylesheet'; link.href = fontUrl; document.head.appendChild(link);
}
css += "\n:root { " +
"--font-sans: \"" + settings.fontFamily + "\", sans-serif !important; " +
"--font-serif: \"" + settings.fontFamily + "\", serif !important; " +
"--font-mono: \"" + settings.fontFamily + "\", monospace !important; " +
"} * { font-family: \"" + settings.fontFamily + "\", sans-serif !important; }";
}
let styleNode = document.getElementById('dynamic-theme-style');
if (!styleNode) { styleNode = document.createElement('style'); styleNode.id = 'dynamic-theme-style'; document.head.appendChild(styleNode); }
styleNode.innerHTML = css;
} }
}); css += "
window.parent.postMessage({ type: 'IFRAME_READY' }, '*'); :root { " +
</script> "--font-sans: '" + settings.fontFamily + "', sans-serif !important; " +
</body> "--font-serif: '" + settings.fontFamily + "', serif !important; " +
"--font-mono: '" + settings.fontFamily + "', monospace !important; " +
"} * { font-family: '" + settings.fontFamily + "', sans-serif !important; }";
}
let styleNode = document.getElementById('dynamic-theme-style');
if (!styleNode) { styleNode = document.createElement('style'); styleNode.id = 'dynamic-theme-style'; document.head.appendChild(styleNode); }
styleNode.innerHTML = css;
}
window.addEventListener('message', (event) => {
if (event.data && event.data.type === 'UPDATE_APPEARANCE') {
applySettings(event.data.settings);
}
});
window.parent.postMessage({ type: 'IFRAME_READY' }, '*');
// Fetch on load
try {
const host = window.location.hostname;
const SUPABASE_URL = 'https://ccfezpxxmwpngqhlsbxz.supabase.co';
const SUPABASE_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImNjZmV6cHh4bXdwbmdxaGxzYnh6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzU2ODk4NTcsImV4cCI6MjA5MTI2NTg1N30.TqXoUsunJoX9xQwOOq3PTugltyrMGn1OrZysO6C9hRM';
fetch(SUPABASE_URL + '/rest/v1/sites?select=settings&custom_domain=ilike.*' + host + '*', {
headers: {
'apikey': SUPABASE_KEY,
'Authorization': 'Bearer ' + SUPABASE_KEY
}
}).then(r => r.json()).then(data => {
if (data && data.length > 0 && data[0].settings) {
applySettings(data[0].settings);
}
}).catch(console.error);
} catch(e) {}
</script>
</body>
</html> </html>

View file

@ -71,50 +71,74 @@
<script type="module" src="/src/main.tsx"></script> <script type="module" src="/src/main.tsx"></script>
<!-- Theme Auto-Updater injected by autoblogia --> <!-- Theme Auto-Updater injected by autoblogia -->
<script> <script>
window.addEventListener('message', (event) => { function applySettings(settings) {
if (event.data && event.data.type === 'UPDATE_APPEARANCE') { if (!settings) return;
const settings = event.data.settings; let css = '';
if (!settings) return; if (settings.primaryColor) {
let css = ''; css += "
if (settings.primaryColor) { :root { " +
css += "\n:root { " + "--color-brand-primary: " + settings.primaryColor + " !important; " +
"--color-brand-primary: " + settings.primaryColor + " !important; " + "--color-brand-blue: " + settings.primaryColor + " !important; " +
"--color-brand-blue: " + settings.primaryColor + " !important; " + "--color-brand-gold: " + settings.primaryColor + " !important; " +
"--color-brand-gold: " + settings.primaryColor + " !important; " + "--color-blue-500: " + settings.primaryColor + " !important; " +
"--color-blue-500: " + settings.primaryColor + " !important; " + "--color-blue-600: " + settings.primaryColor + " !important; " +
"--color-blue-600: " + settings.primaryColor + " !important; " + "--color-emerald-500: " + settings.primaryColor + " !important; " +
"--color-emerald-500: " + settings.primaryColor + " !important; " + "--color-emerald-600: " + settings.primaryColor + " !important; " +
"--color-emerald-600: " + settings.primaryColor + " !important; " + "} " +
"} " + ".text-brand-blue, .text-blue-600, .group-hover\:text-blue-600:hover, .text-brand-gold, .text-emerald-600, .text-blue-500, .text-emerald-500 { color: " + settings.primaryColor + " !important; } " +
".text-brand-blue, .text-blue-600, .group-hover\\:text-blue-600:hover, .text-brand-gold, .text-emerald-600, .text-blue-500, .text-emerald-500 { color: " + settings.primaryColor + " !important; } " + ".bg-brand-blue, .bg-blue-600, .hover\:bg-blue-500:hover, .bg-brand-gold, .bg-emerald-600, .bg-blue-500, .bg-emerald-500 { background-color: " + settings.primaryColor + " !important; } " +
".bg-brand-blue, .bg-blue-600, .hover\\:bg-blue-500:hover, .bg-brand-gold, .bg-emerald-600, .bg-blue-500, .bg-emerald-500 { background-color: " + settings.primaryColor + " !important; } " + ".border-brand-blue, .border-blue-600, .focus\:border-blue-600:focus, .border-brand-gold, .border-emerald-600, .border-blue-500, .border-emerald-500 { border-color: " + settings.primaryColor + " !important; } " +
".border-brand-blue, .border-blue-600, .focus\\:border-blue-600:focus, .border-brand-gold, .border-emerald-600, .border-blue-500, .border-emerald-500 { border-color: " + settings.primaryColor + " !important; } " + ".fill-blue-600, .fill-emerald-600 { fill: " + settings.primaryColor + " !important; }";
".fill-blue-600, .fill-emerald-600 { fill: " + settings.primaryColor + " !important; }"; }
} if (settings.backgroundColor) {
if (settings.backgroundColor) { css += "
css += "\n:root { --color-brand-bg: " + settings.backgroundColor + " !important; } body { background-color: " + settings.backgroundColor + " !important; }"; :root { --color-brand-bg: " + settings.backgroundColor + " !important; } body { background-color: " + settings.backgroundColor + " !important; }";
} }
if (settings.fontFamily) { if (settings.fontFamily) {
const fontLink = document.getElementById('dynamic-font'); const fontLink = document.getElementById('dynamic-font');
const fontName = settings.fontFamily.replace(/ /g, '+'); const fontName = settings.fontFamily.replace(/ /g, '+');
const fontUrl = 'https://fonts.googleapis.com/css2?family=' + fontName + ':wght@300;400;500;600;700&display=swap'; const fontUrl = 'https://fonts.googleapis.com/css2?family=' + fontName + ':wght@300;400;500;600;700&display=swap';
if (fontLink) { (fontLink as HTMLLinkElement).href = fontUrl; } else { if (fontLink) { fontLink.href = fontUrl; } else {
const link = document.createElement('link'); link.id = 'dynamic-font'; link.rel = 'stylesheet'; link.href = fontUrl; document.head.appendChild(link); const link = document.createElement('link'); link.id = 'dynamic-font'; link.rel = 'stylesheet'; link.href = fontUrl; document.head.appendChild(link);
}
css += "\n:root { " +
"--font-sans: \"" + settings.fontFamily + "\", sans-serif !important; " +
"--font-serif: \"" + settings.fontFamily + "\", serif !important; " +
"--font-mono: \"" + settings.fontFamily + "\", monospace !important; " +
"} * { font-family: \"" + settings.fontFamily + "\", sans-serif !important; }";
}
let styleNode = document.getElementById('dynamic-theme-style');
if (!styleNode) { styleNode = document.createElement('style'); styleNode.id = 'dynamic-theme-style'; document.head.appendChild(styleNode); }
styleNode.innerHTML = css;
} }
}); css += "
window.parent.postMessage({ type: 'IFRAME_READY' }, '*'); :root { " +
</script> "--font-sans: '" + settings.fontFamily + "', sans-serif !important; " +
</body> "--font-serif: '" + settings.fontFamily + "', serif !important; " +
"--font-mono: '" + settings.fontFamily + "', monospace !important; " +
"} * { font-family: '" + settings.fontFamily + "', sans-serif !important; }";
}
let styleNode = document.getElementById('dynamic-theme-style');
if (!styleNode) { styleNode = document.createElement('style'); styleNode.id = 'dynamic-theme-style'; document.head.appendChild(styleNode); }
styleNode.innerHTML = css;
}
window.addEventListener('message', (event) => {
if (event.data && event.data.type === 'UPDATE_APPEARANCE') {
applySettings(event.data.settings);
}
});
window.parent.postMessage({ type: 'IFRAME_READY' }, '*');
// Fetch on load
try {
const host = window.location.hostname;
const SUPABASE_URL = 'https://ccfezpxxmwpngqhlsbxz.supabase.co';
const SUPABASE_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImNjZmV6cHh4bXdwbmdxaGxzYnh6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzU2ODk4NTcsImV4cCI6MjA5MTI2NTg1N30.TqXoUsunJoX9xQwOOq3PTugltyrMGn1OrZysO6C9hRM';
fetch(SUPABASE_URL + '/rest/v1/sites?select=settings&custom_domain=ilike.*' + host + '*', {
headers: {
'apikey': SUPABASE_KEY,
'Authorization': 'Bearer ' + SUPABASE_KEY
}
}).then(r => r.json()).then(data => {
if (data && data.length > 0 && data[0].settings) {
applySettings(data[0].settings);
}
}).catch(console.error);
} catch(e) {}
</script>
</body>
</html> </html>