diff --git a/packages/app-page-builder/src/admin/components/ColorPicker.tsx b/packages/app-page-builder/src/admin/components/ColorPicker.tsx new file mode 100644 index 00000000000..acf39ea45e2 --- /dev/null +++ b/packages/app-page-builder/src/admin/components/ColorPicker.tsx @@ -0,0 +1,23 @@ +import React from "react"; + +interface ColorPickerProps { + value: { color: string }; + onChange: (value: { color: string }) => void; +} + +const ColorPicker: React.FC = ({ value, onChange }) => { + const handleColorChange = (e: React.ChangeEvent) => { + onChange({ ...value, color: e.target.value }); + }; + + return ( +
+ +
+ ); +}; + +export default ColorPicker; diff --git a/packages/app-page-builder/src/admin/components/ThemeManager.tsx b/packages/app-page-builder/src/admin/components/ThemeManager.tsx new file mode 100644 index 00000000000..e04da545e6e --- /dev/null +++ b/packages/app-page-builder/src/admin/components/ThemeManager.tsx @@ -0,0 +1,51 @@ +import React, { useState } from "react"; +import TypographySelector from "./TypographySelector"; +import ColorPicker from "./ColorPicker"; + +const ThemeManager: React.FC = () => { + const [typography, setTypography] = useState<{ fontFamily: string; fontSize: number }>({ + fontFamily: "", + fontSize: 16 + }); + + const [colorScheme, setColorScheme] = useState<{ color: string }>({ color: "#000000" }); + + const handleSave = () => { + console.log("Typography settings:", typography); + console.log("Color scheme settings:", colorScheme); + + localStorage.setItem("typographySettings", JSON.stringify(typography)); + localStorage.setItem("colorSchemeSettings", JSON.stringify(colorScheme)); + + fetch("/api/save-theme-settings", { + method: "POST", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify({ + typography, + colorScheme + }) + }) + .then(response => response.json()) + .then(data => { + console.log("Success:", data); + }) + .catch(error => { + console.error("Error:", error); + }); + }; + + return ( +
+

Theme Manager

+ {/* Render the TypographySelector and ColorPicker components */} + + + {/* Button to save the settings */} + +
+ ); +}; + +export default ThemeManager; diff --git a/packages/app-page-builder/src/admin/components/TypographySelector.tsx b/packages/app-page-builder/src/admin/components/TypographySelector.tsx new file mode 100644 index 00000000000..c0e59d72cd8 --- /dev/null +++ b/packages/app-page-builder/src/admin/components/TypographySelector.tsx @@ -0,0 +1,31 @@ +import React from "react"; + +interface TypographySelectorProps { + value: { fontFamily: string; fontSize: number }; + onChange: (value: { fontFamily: string; fontSize: number }) => void; +} + +const TypographySelector: React.FC = ({ value, onChange }) => { + const handleFontChange = (e: React.ChangeEvent) => { + onChange({ ...value, fontFamily: e.target.value }); + }; + + const handleSizeChange = (e: React.ChangeEvent) => { + onChange({ ...value, fontSize: parseInt(e.target.value, 10) }); + }; + + return ( +
+ + +
+ ); +}; + +export default TypographySelector;