import React from 'react'; import styled from 'styled-components'; import { Button } from './Button'; import { DEFAULT_CUSTOMIZATIONS, IconListCustomizations } from './IconList'; import { ColorInput } from './Input'; import { Slider } from './Slider'; import { Text13, Text18 } from './Typography'; export interface CustomizationEditorProps { customizations: IconListCustomizations; // eslint-disable-next-line no-unused-vars onChange: (customizations: IconListCustomizations) => void; } export function CustomizationEditor({ customizations, onChange, }: CustomizationEditorProps) { const [, startTransition] = (React as any).useTransition(); const [color, setColor] = React.useState(customizations.hexColor); const [size, setSize] = React.useState(customizations.size); const [strokeWidth, setStrokeWidth] = React.useState( customizations.strokeWidth ); React.useEffect(() => { setColor(customizations.hexColor); setSize(customizations.size); setStrokeWidth(customizations.strokeWidth); }, [customizations]); function updateCustomizations(partial: Partial) { startTransition(() => { onChange({ ...customizations, ...partial, }); }); } return ( <>
Customize
{ setSize(values[0]); updateCustomizations({ size: values[0] }); }} /> { setStrokeWidth(values[0]); updateCustomizations({ strokeWidth: values[0] }); }} /> Color { setColor(e.target.value); updateCustomizations({ hexColor: e.target.value }); }} /> ); } const Header = styled.div` display: flex; align-items: center; justify-content: space-between; margin-bottom: 45px; `; const Field = styled.div` margin-bottom: 35px; `; const HorizontalField = styled(Field)` display: flex; align-items: center; justify-content: space-between; `;