import { Form, Switch, Button, Popover, Select } from 'antd'; import hljs from 'highlight.js/lib/core'; import { useEffect, useState } from 'react'; import { ChromePicker } from 'react-color'; import styled from 'styled-components'; import shallow from 'zustand/shallow'; import { rgbToString } from './Output'; import { SectionTitle } from './SectionTitle'; import SliderInput from './SliderInput'; import { useInputStore } from '~/components/store'; export const CssControls = () => { const [setCssProps, filterProps] = useInputStore( (state) => [state.setCssProps, state.filterProps], shallow ); const { brightness, contrast } = filterProps; const [angle, setAngle] = useState(112); const [posX, setPosX] = useState(50); const [posY, setPosY] = useState(50); const [showTransparency, setShowTransparency] = useState(true); const [gradientType, setGradientType] = useState('linear'); const [color1, setColor1] = useState({ r: 0, g: 0, b: 255, a: 1 }); const [color2, setColor2] = useState({ r: 0, g: 0, b: 255, a: 0 }); useEffect(() => { setCssProps({ gradientType, color1: color1, color2: color2, angle, showTransparency, posX, posY, }); }, [ setCssProps, showTransparency, contrast, brightness, angle, gradientType, color1, color2, posX, posY, ]); const gradientFirstParam = gradientType === 'linear' ? `${angle}deg` : gradientType === 'radial' ? `circle at ${posX}% ${posY}%` : `from ${angle}deg at ${posX}% ${posY}%`; const gradientCss = `/* css gradient: second layer */ { width: 250px; height: 250px; background: ${gradientType}-gradient(${gradientFirstParam}, ${rgbToString(color1)}, ${rgbToString( color2 )})${showTransparency ? ', url(/checkers.png)' : ''}; /* filter: contrast(${contrast}%) brightness(${brightness}%); */ }`; return (