import { useContext, useEffect, useState } from "react"; import { CustomizerContext } from "../App"; import Highlighter from "components/Highlighter"; import cn from "./Export.module.css"; function Export() { const { cssvars, resetVars, hideExport } = useContext(CustomizerContext); const [css, setCSS] = useState(""); const [copied, setCopied] = useState(false); const handleReset = (event) => { event.preventDefault(); if (window.confirm("Are you sure?")) { resetVars(); } }; const handleGo = (event) => { event.preventDefault(); hideExport(); }; const copyToClipboard = async (event) => { event.preventDefault(); try { await navigator.clipboard.writeText(css); setCopied(true); window.setTimeout(() => { setCopied(false); }, 500); } catch (err) { console.error("Failed to copy!", err); } }; useEffect(() => { const rules = {}; Object.values(cssvars).forEach((cssvar) => { const { id, current, start, scope, unit } = cssvar; if (current == start) { return; } const computedValue = `${current}${unit}`; const declaration = `--bulma-${id}: ${computedValue};\n`; if (scope in rules) { rules[scope].push(declaration); } else { rules[scope] = [declaration]; } }); let content = ""; for (const [key, arr] of Object.entries(rules)) { content += `${key} {\n`; arr.forEach((item) => (content += ` ${item}`)); content += `}\n\n`; } setCSS(content); }, [cssvars]); return (
Export
{css ? (Insert this CSS after importing Bulma.
Customize CSS variables in the other pages and come back here to find the generated CSS.