Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

quick-size-select.tsx 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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
  18. as={IconButton}
  19. bp={{ '@initial': 'mobile', '@sm': 'small' }}
  20. >
  21. <Tooltip label="Size">
  22. <Circle size={sizes[size]} stroke="none" fill="currentColor" />
  23. </Tooltip>
  24. </DropdownMenu.Trigger>
  25. <DropdownContent sideOffset={8} direction="vertical">
  26. <SizeItem isActive={size === SizeStyle.Small} size={SizeStyle.Small} />
  27. <SizeItem
  28. isActive={size === SizeStyle.Medium}
  29. size={SizeStyle.Medium}
  30. />
  31. <SizeItem isActive={size === SizeStyle.Large} size={SizeStyle.Large} />
  32. </DropdownContent>
  33. </DropdownMenu.Root>
  34. )
  35. }
  36. function SizeItem({ size, isActive }: { isActive: boolean; size: SizeStyle }) {
  37. return (
  38. <Item
  39. as={DropdownMenu.DropdownMenuItem}
  40. isActive={isActive}
  41. onSelect={() => state.send('CHANGED_STYLE', { size })}
  42. >
  43. <Circle size={sizes[size]} />
  44. </Item>
  45. )
  46. }