import { Box, Center, Flex, Heading, Slider, SliderFilledTrack, SliderThumb, SliderTrack } from '@chakra-ui/react'; import React, { useMemo, useState } from 'react'; export const Logo = (props) => { // a completely dynamic and interactive logo // uses borders, border radius, and colour themes to create a simple timeless beautiful logo // const defaultThemeRaw = ['white', '#F20009', '#FD5F00', '#FFEB03', '#52E013', '#09A7EC', '#982E77', 'white']; const defaultThemeRaw = ['#F20009', '#FD5F00', '#FFEB03', '#52E013', '#09A7EC', '#982E77', 'white']; const [reverseColours, setReverseColours] = useState(false); const defaultTheme = reverseColours ? defaultThemeRaw?.reverse() : defaultThemeRaw; const [theme, setTheme] = useState('blue'); const [squares, setSquares] = useState(9); const initialWidth = props?.width || 300; const [width, setWidth] = useState(initialWidth); // logo is a T/plus shape made of two intersecting squares // you can toggle border sides on both squares to create different shapes const [borderWidth, setBorderWidth] = useState(18); const [borderRadius, setBorderRadius] = useState(0); const [padding, setPadding] = useState(0); const squaresArray = Array.from({ length: squares }, (_, index) => index); const [spacing, setSpacing] = useState(borderWidth); // log squaresArray console.debug('tt.squaresArray', squaresArray); // basically the 5 squares that make up a plus but with the centre one missing const [divisions, setDivisions] = useState(3); const [boxWidth, setBoxWidth] = useState(100 / divisions + '%'); const uuid = useMemo(() => { return Math.random().toString(36).substring(2) + Date.now().toString(36); }, []); const boxStyles = { padding: `${padding}px` }; const InnerBox = (props: any = {}) => ; const Square = (props: any = {}) => ( ); return ( <> {/* these are the controls */} {/* border radius use chakra slider */} {props?.editable && ( Logo Controls Width {width}px 🟡 Border Radius {borderRadius}px 🟡 Padding {padding}px 🟡 )} {squaresArray.map((_, index) => { const odd = index % 2 === 0; const even = !odd; return ; })} ); };