diff --git a/Template-01/src/App.tsx b/Template-01/src/App.tsx
index 0966220..80f4da4 100644
--- a/Template-01/src/App.tsx
+++ b/Template-01/src/App.tsx
@@ -1,3 +1,4 @@
+import { ThemeListener } from './components/layout/ThemeListener';
import { useState, useEffect } from "react";
import { motion, AnimatePresence } from "motion/react";
import {
@@ -59,6 +60,7 @@ export default function App() {
return (
+
Rafael Fontes | Corretor de Imóveis Premium
diff --git a/Template-01/src/components/layout/ThemeListener.tsx b/Template-01/src/components/layout/ThemeListener.tsx
new file mode 100644
index 0000000..55dfcbb
--- /dev/null
+++ b/Template-01/src/components/layout/ThemeListener.tsx
@@ -0,0 +1,50 @@
+import { useEffect } from 'react';
+
+export function ThemeListener() {
+ useEffect(() => {
+ const handleMessage = (event: MessageEvent) => {
+ // Allow messages from any origin since preview is generic
+ if (event.data?.type === 'UPDATE_APPEARANCE') {
+ const settings = event.data.settings;
+ if (!settings) return;
+
+ const root = document.documentElement;
+
+ // Update Primary Color
+ if (settings.primaryColor) {
+ root.style.setProperty('--color-brand-primary', settings.primaryColor);
+ root.style.setProperty('--color-brand-blue', settings.primaryColor);
+ root.style.setProperty('--color-brand-gold', settings.primaryColor);
+ }
+
+ // Update Background Color
+ if (settings.backgroundColor) {
+ root.style.setProperty('--color-brand-bg', settings.backgroundColor);
+ document.body.style.backgroundColor = settings.backgroundColor;
+ }
+
+ // Update Font Family
+ if (settings.fontFamily) {
+ const fontLink = document.getElementById('dynamic-font') as HTMLLinkElement;
+ const fontName = settings.fontFamily.replace(/ /g, '+');
+ if (fontLink) {
+ fontLink.href = `https://fonts.googleapis.com/css2?family=${fontName}:wght@300;400;500;600;700&display=swap`;
+ } else {
+ const link = document.createElement('link');
+ link.id = 'dynamic-font';
+ link.rel = 'stylesheet';
+ link.href = `https://fonts.googleapis.com/css2?family=${fontName}:wght@300;400;500;600;700&display=swap`;
+ document.head.appendChild(link);
+ }
+ root.style.setProperty('--font-sans', `"${settings.fontFamily}", sans-serif`);
+ document.body.style.fontFamily = `"${settings.fontFamily}", sans-serif`;
+ }
+ }
+ };
+
+ window.addEventListener('message', handleMessage);
+ return () => window.removeEventListener('message', handleMessage);
+ }, []);
+
+ return null;
+}
\ No newline at end of file
diff --git a/Template-01/src/index.css b/Template-01/src/index.css
index e680690..7718f5b 100644
--- a/Template-01/src/index.css
+++ b/Template-01/src/index.css
@@ -18,3 +18,14 @@ body {
h1, h2, h3, h4, h5, h6 {
@apply font-serif;
}
+
+
+html, body {
+ overflow-x: hidden;
+ width: 100%;
+ max-width: 100vw;
+}
+
+img {
+ max-width: 100%;
+}
diff --git a/Template-02/src/App.tsx b/Template-02/src/App.tsx
index d24d5f5..9ae3ead 100644
--- a/Template-02/src/App.tsx
+++ b/Template-02/src/App.tsx
@@ -1,3 +1,4 @@
+import { ThemeListener } from './components/layout/ThemeListener';
import { useState, useEffect } from "react";
import { motion, AnimatePresence } from "motion/react";
import {
@@ -60,6 +61,7 @@ export default function App() {
return (
+
Helena Fontes | Corretora de Imóveis Premium
diff --git a/Template-02/src/components/layout/ThemeListener.tsx b/Template-02/src/components/layout/ThemeListener.tsx
new file mode 100644
index 0000000..55dfcbb
--- /dev/null
+++ b/Template-02/src/components/layout/ThemeListener.tsx
@@ -0,0 +1,50 @@
+import { useEffect } from 'react';
+
+export function ThemeListener() {
+ useEffect(() => {
+ const handleMessage = (event: MessageEvent) => {
+ // Allow messages from any origin since preview is generic
+ if (event.data?.type === 'UPDATE_APPEARANCE') {
+ const settings = event.data.settings;
+ if (!settings) return;
+
+ const root = document.documentElement;
+
+ // Update Primary Color
+ if (settings.primaryColor) {
+ root.style.setProperty('--color-brand-primary', settings.primaryColor);
+ root.style.setProperty('--color-brand-blue', settings.primaryColor);
+ root.style.setProperty('--color-brand-gold', settings.primaryColor);
+ }
+
+ // Update Background Color
+ if (settings.backgroundColor) {
+ root.style.setProperty('--color-brand-bg', settings.backgroundColor);
+ document.body.style.backgroundColor = settings.backgroundColor;
+ }
+
+ // Update Font Family
+ if (settings.fontFamily) {
+ const fontLink = document.getElementById('dynamic-font') as HTMLLinkElement;
+ const fontName = settings.fontFamily.replace(/ /g, '+');
+ if (fontLink) {
+ fontLink.href = `https://fonts.googleapis.com/css2?family=${fontName}:wght@300;400;500;600;700&display=swap`;
+ } else {
+ const link = document.createElement('link');
+ link.id = 'dynamic-font';
+ link.rel = 'stylesheet';
+ link.href = `https://fonts.googleapis.com/css2?family=${fontName}:wght@300;400;500;600;700&display=swap`;
+ document.head.appendChild(link);
+ }
+ root.style.setProperty('--font-sans', `"${settings.fontFamily}", sans-serif`);
+ document.body.style.fontFamily = `"${settings.fontFamily}", sans-serif`;
+ }
+ }
+ };
+
+ window.addEventListener('message', handleMessage);
+ return () => window.removeEventListener('message', handleMessage);
+ }, []);
+
+ return null;
+}
\ No newline at end of file
diff --git a/Template-02/src/index.css b/Template-02/src/index.css
index 3834f93..ba4b320 100644
--- a/Template-02/src/index.css
+++ b/Template-02/src/index.css
@@ -18,3 +18,14 @@ body {
h1, h2, h3, h4, h5, h6 {
@apply font-serif;
}
+
+
+html, body {
+ overflow-x: hidden;
+ width: 100%;
+ max-width: 100vw;
+}
+
+img {
+ max-width: 100%;
+}