ChatMenu.svelte 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <script lang="ts">
  2. import { DropdownMenu } from 'bits-ui';
  3. import { flyAndScale } from '$lib/utils/transitions';
  4. import Dropdown from '$lib/components/common/Dropdown.svelte';
  5. import GarbageBin from '$lib/components/icons/GarbageBin.svelte';
  6. import Pencil from '$lib/components/icons/Pencil.svelte';
  7. import Tooltip from '$lib/components/common/Tooltip.svelte';
  8. export let renameHandler: Function;
  9. export let deleteHandler: Function;
  10. export let onClose: Function;
  11. </script>
  12. <Dropdown
  13. on:change={(e) => {
  14. if (e.detail === false) {
  15. onClose();
  16. }
  17. }}
  18. >
  19. <Tooltip content="More">
  20. <slot />
  21. </Tooltip>
  22. <div slot="content">
  23. <DropdownMenu.Content
  24. class="w-full max-w-[150px] rounded-lg px-1 py-1.5 border border-gray-300/30 dark:border-gray-700/50 z-50 bg-white dark:bg-gray-900 dark:text-white shadow"
  25. sideOffset={-2}
  26. side="bottom"
  27. align="start"
  28. transition={flyAndScale}
  29. >
  30. <DropdownMenu.Item
  31. class="flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer dark:hover:bg-gray-850 rounded-md"
  32. on:click={() => {
  33. renameHandler();
  34. }}
  35. >
  36. <Pencil strokeWidth="2" />
  37. <div class="flex items-center">Rename</div>
  38. </DropdownMenu.Item>
  39. <DropdownMenu.Item
  40. class="flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer dark:hover:bg-gray-850 rounded-md"
  41. on:click={() => {
  42. deleteHandler();
  43. }}
  44. >
  45. <GarbageBin strokeWidth="2" />
  46. <div class="flex items-center">Delete</div>
  47. </DropdownMenu.Item>
  48. </DropdownMenu.Content>
  49. </div>
  50. </Dropdown>