tldraw/components/style-panel/color-content.tsx

38 lines
1.1 KiB
TypeScript
Raw Normal View History

import { IconButton } from 'components/shared'
2021-06-21 21:35:28 +00:00
import { strokes } from 'state/shape-styles'
import { ColorStyle } from 'types'
import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
import { Square } from 'react-feather'
2021-06-03 12:06:39 +00:00
import { DropdownContent } from '../shared'
import { memo } from 'react'
import state from 'state'
2021-07-10 20:39:29 +00:00
import useTheme from 'hooks/useTheme'
function handleColorChange(
e: Event & { currentTarget: { value: ColorStyle } }
): void {
state.send('CHANGED_STYLE', { color: e.currentTarget.value })
}
function ColorContent(): JSX.Element {
2021-07-10 20:39:29 +00:00
const { theme } = useTheme()
return (
<DropdownContent sideOffset={8} side="bottom">
2021-07-10 20:39:29 +00:00
{Object.keys(strokes[theme]).map((color: ColorStyle) => (
<DropdownMenu.DropdownMenuItem
as={IconButton}
key={color}
title={color}
value={color}
onSelect={handleColorChange}
>
2021-07-10 20:39:29 +00:00
<Square fill={strokes[theme][color]} stroke="none" size="22" />
</DropdownMenu.DropdownMenuItem>
))}
</DropdownContent>
)
}
export default memo(ColorContent)