Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

quick-size-select.tsx 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
  2. import { IconButton } from 'components/shared'
  3. import Tooltip from 'components/tooltip'
  4. import { Circle } from 'react-feather'
  5. import state, { useSelector } from 'state'
  6. import { SizeStyle } from 'types'
  7. import { DropdownContent, Item } from './shared'
  8. const sizes = {
  9. [SizeStyle.Small]: 6,
  10. [SizeStyle.Medium]: 12,
  11. [SizeStyle.Large]: 22,
  12. }
  13. export default function QuickSizeSelect() {
  14. const size = useSelector((s) => s.values.selectedStyle.size)
  15. return (
  16. <DropdownMenu.Root>
  17. <DropdownMenu.Trigger as={IconButton}>
  18. <Tooltip label="Size">
  19. <Circle size={sizes[size]} stroke="none" fill="currentColor" />
  20. </Tooltip>
  21. </DropdownMenu.Trigger>
  22. <DropdownContent direction="vertical">
  23. <SizeItem isActive={size === SizeStyle.Small} size={SizeStyle.Small} />
  24. <SizeItem
  25. isActive={size === SizeStyle.Medium}
  26. size={SizeStyle.Medium}
  27. />
  28. <SizeItem isActive={size === SizeStyle.Large} size={SizeStyle.Large} />
  29. </DropdownContent>
  30. </DropdownMenu.Root>
  31. )
  32. }
  33. function SizeItem({ size, isActive }: { isActive: boolean; size: SizeStyle }) {
  34. return (
  35. <Item
  36. as={DropdownMenu.DropdownMenuItem}
  37. isActive={isActive}
  38. onSelect={() => state.send('CHANGED_STYLE', { size })}
  39. >
  40. <Circle size={sizes[size]} />
  41. </Item>
  42. )
  43. }