Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

quick-dash-select.tsx 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
  2. import { IconButton } from 'components/shared'
  3. import Tooltip from 'components/tooltip'
  4. import state, { useSelector } from 'state'
  5. import { DashStyle } from 'types'
  6. import {
  7. DropdownContent,
  8. Item,
  9. DashDottedIcon,
  10. DashSolidIcon,
  11. DashDashedIcon,
  12. } from '../shared'
  13. const dashes = {
  14. [DashStyle.Solid]: <DashSolidIcon />,
  15. [DashStyle.Dashed]: <DashDashedIcon />,
  16. [DashStyle.Dotted]: <DashDottedIcon />,
  17. }
  18. export default function QuickdashSelect() {
  19. const dash = useSelector((s) => s.values.selectedStyle.dash)
  20. return (
  21. <DropdownMenu.Root>
  22. <DropdownMenu.Trigger as={IconButton}>
  23. <Tooltip label="Dash">{dashes[dash]}</Tooltip>
  24. </DropdownMenu.Trigger>
  25. <DropdownContent direction="vertical">
  26. <DashItem isActive={dash === DashStyle.Solid} dash={DashStyle.Solid} />
  27. <DashItem
  28. isActive={dash === DashStyle.Dashed}
  29. dash={DashStyle.Dashed}
  30. />
  31. <DashItem
  32. isActive={dash === DashStyle.Dotted}
  33. dash={DashStyle.Dotted}
  34. />
  35. </DropdownContent>
  36. </DropdownMenu.Root>
  37. )
  38. }
  39. function DashItem({ dash, isActive }: { isActive: boolean; dash: DashStyle }) {
  40. return (
  41. <Item
  42. as={DropdownMenu.DropdownMenuItem}
  43. isActive={isActive}
  44. onSelect={() => state.send('CHANGED_STYLE', { dash })}
  45. >
  46. {dashes[dash]}
  47. </Item>
  48. )
  49. }