Dropdown.svelte 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <script lang="ts">
  2. import { DropdownMenu } from 'bits-ui';
  3. import { createEventDispatcher } from 'svelte';
  4. import { flyAndScale } from '$lib/utils/transitions';
  5. const dispatch = createEventDispatcher();
  6. </script>
  7. <DropdownMenu.Root
  8. onOpenChange={(state) => {
  9. dispatch('change', state);
  10. }}
  11. >
  12. <DropdownMenu.Trigger>
  13. <slot />
  14. </DropdownMenu.Trigger>
  15. <slot name="content">
  16. <DropdownMenu.Content
  17. class="w-full max-w-[130px] rounded-lg px-1 py-1.5 border border-gray-700 z-50 bg-gray-850 text-white"
  18. sideOffset={8}
  19. side="bottom"
  20. align="start"
  21. transition={flyAndScale}
  22. >
  23. <DropdownMenu.Item class="flex items-center px-3 py-2 text-sm font-medium">
  24. <div class="flex items-center">Profile</div>
  25. </DropdownMenu.Item>
  26. <DropdownMenu.Item class="flex items-center px-3 py-2 text-sm font-medium">
  27. <div class="flex items-center">Profile</div>
  28. </DropdownMenu.Item>
  29. <DropdownMenu.Item class="flex items-center px-3 py-2 text-sm font-medium">
  30. <div class="flex items-center">Profile</div>
  31. </DropdownMenu.Item>
  32. </DropdownMenu.Content>
  33. </slot>
  34. </DropdownMenu.Root>