open-webui/src/lib/components/workspace/Models/Knowledge.svelte

64 lines
1.6 KiB
Svelte
Raw Normal View History

2024-06-09 23:34:34 +00:00
<script lang="ts">
import { getContext } from 'svelte';
2024-06-10 00:17:35 +00:00
import Selector from './Knowledge/Selector.svelte';
2024-10-02 06:21:33 +00:00
import FileItem from '$lib/components/common/FileItem.svelte';
2024-06-09 23:34:34 +00:00
2024-10-04 23:53:25 +00:00
export let selectedKnowledge = [];
export let collections = [];
2024-06-09 23:34:34 +00:00
const i18n = getContext('i18n');
</script>
<div>
<div class="flex w-full justify-between mb-1">
<div class=" self-center text-sm font-semibold">{$i18n.t('Knowledge')}</div>
</div>
<div class=" text-xs dark:text-gray-500">
2024-10-02 06:21:33 +00:00
{$i18n.t('To attach knowledge base here, add them to the "Knowledge" workspace first.')}
2024-06-09 23:34:34 +00:00
</div>
<div class="flex flex-col">
2024-10-04 23:53:25 +00:00
{#if selectedKnowledge?.length > 0}
<div class=" flex flex-wrap items-center gap-2 mt-2">
{#each selectedKnowledge as file, fileIdx}
2024-10-02 06:21:33 +00:00
<FileItem
{file}
2024-10-04 23:53:25 +00:00
name={file.name}
type={file?.legacy
? `Legacy${file.type ? ` ${file.type}` : ''}`
: (file?.type ?? 'Collection')}
2024-10-02 06:21:33 +00:00
dismissible
on:dismiss={(e) => {
2024-10-04 23:53:25 +00:00
selectedKnowledge = selectedKnowledge.filter((_, idx) => idx !== fileIdx);
2024-10-02 06:21:33 +00:00
}}
/>
2024-06-10 00:17:35 +00:00
{/each}
</div>
2024-06-09 23:34:34 +00:00
{/if}
<div class="flex flex-wrap text-sm font-medium gap-1.5 mt-2">
2024-10-02 06:21:33 +00:00
<Selector
on:select={(e) => {
const item = e.detail;
2024-10-04 23:53:25 +00:00
if (!selectedKnowledge.find((k) => k.id === item.id)) {
selectedKnowledge = [
...selectedKnowledge,
2024-10-02 06:21:33 +00:00
{
2024-10-04 23:53:25 +00:00
...item
2024-10-02 06:21:33 +00:00
}
];
}
}}
>
2024-06-10 00:17:35 +00:00
<button
2024-11-16 01:36:46 +00:00
class=" px-3.5 py-1.5 font-medium hover:bg-black/5 dark:hover:bg-white/5 outline outline-1 outline-gray-100 dark:outline-gray-850 rounded-3xl"
2024-10-02 06:21:33 +00:00
type="button">{$i18n.t('Select Knowledge')}</button
2024-06-10 00:17:35 +00:00
>
</Selector>
2024-06-09 23:34:34 +00:00
</div>
<!-- {knowledge} -->
</div>
</div>