|
@@ -36,6 +36,7 @@
|
|
|
import Share from '$lib/components/icons/Share.svelte';
|
|
|
import ArchiveBox from '$lib/components/icons/ArchiveBox.svelte';
|
|
|
import Messages from '$lib/components/chat/Messages.svelte';
|
|
|
+ import Download from '$lib/components/icons/Download.svelte';
|
|
|
|
|
|
const i18n = getContext('i18n');
|
|
|
|
|
@@ -364,64 +365,11 @@
|
|
|
</DropdownMenu.Item>
|
|
|
{/if}
|
|
|
|
|
|
- {#if chat?.id}
|
|
|
- <DropdownMenu.Sub>
|
|
|
- <DropdownMenu.SubTrigger
|
|
|
- class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-lg select-none w-full"
|
|
|
- >
|
|
|
- <Folder strokeWidth="1.5" />
|
|
|
-
|
|
|
- <div class="flex items-center">{$i18n.t('Move')}</div>
|
|
|
- </DropdownMenu.SubTrigger>
|
|
|
- <DropdownMenu.SubContent
|
|
|
- class="w-full rounded-xl px-1 py-1.5 z-50 bg-white dark:bg-gray-850 dark:text-white shadow-lg max-h-52 overflow-y-auto scrollbar-hidden"
|
|
|
- transition={flyAndScale}
|
|
|
- sideOffset={8}
|
|
|
- >
|
|
|
- {#each $folders.sort((a, b) => b.updated_at - a.updated_at) as folder}
|
|
|
- <DropdownMenu.Item
|
|
|
- class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-lg"
|
|
|
- on:click={() => {
|
|
|
- moveChatHandler(chat?.id, folder?.id);
|
|
|
- }}
|
|
|
- >
|
|
|
- <Folder strokeWidth="1.5" />
|
|
|
-
|
|
|
- <div class="flex items-center">{folder?.name ?? 'Folder'}</div>
|
|
|
- </DropdownMenu.Item>
|
|
|
- {/each}
|
|
|
- </DropdownMenu.SubContent>
|
|
|
- </DropdownMenu.Sub>
|
|
|
- {/if}
|
|
|
-
|
|
|
- <DropdownMenu.Item
|
|
|
- class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-lg"
|
|
|
- on:click={() => {
|
|
|
- archiveChatHandler();
|
|
|
- }}
|
|
|
- >
|
|
|
- <ArchiveBox className="size-4" strokeWidth="1.5" />
|
|
|
- <div class="flex items-center">{$i18n.t('Archive')}</div>
|
|
|
- </DropdownMenu.Item>
|
|
|
-
|
|
|
<DropdownMenu.Sub>
|
|
|
<DropdownMenu.SubTrigger
|
|
|
class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-lg select-none w-full"
|
|
|
>
|
|
|
- <svg
|
|
|
- xmlns="http://www.w3.org/2000/svg"
|
|
|
- fill="none"
|
|
|
- viewBox="0 0 24 24"
|
|
|
- stroke-width="1.5"
|
|
|
- stroke="currentColor"
|
|
|
- class="size-4"
|
|
|
- >
|
|
|
- <path
|
|
|
- stroke-linecap="round"
|
|
|
- stroke-linejoin="round"
|
|
|
- d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"
|
|
|
- />
|
|
|
- </svg>
|
|
|
+ <Download strokeWidth="1.5" />
|
|
|
|
|
|
<div class="flex items-center">{$i18n.t('Download')}</div>
|
|
|
</DropdownMenu.SubTrigger>
|
|
@@ -477,6 +425,48 @@
|
|
|
<div class="flex items-center">{$i18n.t('Copy')}</div>
|
|
|
</DropdownMenu.Item>
|
|
|
|
|
|
+ <hr class="border-gray-50 dark:border-gray-800 my-1" />
|
|
|
+
|
|
|
+ {#if chat?.id}
|
|
|
+ <DropdownMenu.Sub>
|
|
|
+ <DropdownMenu.SubTrigger
|
|
|
+ class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-lg select-none w-full"
|
|
|
+ >
|
|
|
+ <Folder strokeWidth="1.5" />
|
|
|
+
|
|
|
+ <div class="flex items-center">{$i18n.t('Move')}</div>
|
|
|
+ </DropdownMenu.SubTrigger>
|
|
|
+ <DropdownMenu.SubContent
|
|
|
+ class="w-full rounded-xl px-1 py-1.5 z-50 bg-white dark:bg-gray-850 dark:text-white shadow-lg max-h-52 overflow-y-auto scrollbar-hidden"
|
|
|
+ transition={flyAndScale}
|
|
|
+ sideOffset={8}
|
|
|
+ >
|
|
|
+ {#each $folders.sort((a, b) => b.updated_at - a.updated_at) as folder}
|
|
|
+ <DropdownMenu.Item
|
|
|
+ class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-lg"
|
|
|
+ on:click={() => {
|
|
|
+ moveChatHandler(chat?.id, folder?.id);
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <Folder strokeWidth="1.5" />
|
|
|
+
|
|
|
+ <div class="flex items-center">{folder?.name ?? 'Folder'}</div>
|
|
|
+ </DropdownMenu.Item>
|
|
|
+ {/each}
|
|
|
+ </DropdownMenu.SubContent>
|
|
|
+ </DropdownMenu.Sub>
|
|
|
+ {/if}
|
|
|
+
|
|
|
+ <DropdownMenu.Item
|
|
|
+ class="flex gap-2 items-center px-3 py-1.5 text-sm cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-lg"
|
|
|
+ on:click={() => {
|
|
|
+ archiveChatHandler();
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <ArchiveBox className="size-4" strokeWidth="1.5" />
|
|
|
+ <div class="flex items-center">{$i18n.t('Archive')}</div>
|
|
|
+ </DropdownMenu.Item>
|
|
|
+
|
|
|
{#if !$temporaryChatEnabled}
|
|
|
<hr class="border-gray-50 dark:border-gray-800 my-1" />
|
|
|
|