mirror of
https://github.com/open-webui/open-webui
synced 2025-06-09 07:56:42 +00:00
refac
This commit is contained in:
parent
c9a8808b0d
commit
b7aeb432ed
@ -31,7 +31,10 @@
|
|||||||
$: (async () => {
|
$: (async () => {
|
||||||
if (content) {
|
if (content) {
|
||||||
tokens = marked.lexer(
|
tokens = marked.lexer(
|
||||||
replaceTokens(processResponseContent(content), sourceIds, model?.name, $user?.name)
|
replaceTokens(processResponseContent(content), sourceIds, model?.name, $user?.name),
|
||||||
|
{
|
||||||
|
gfm: true
|
||||||
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
23
src/lib/components/icons/Home.svelte
Normal file
23
src/lib/components/icons/Home.svelte
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
export let className = 'size-4';
|
||||||
|
export let strokeWidth = '1.5';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
stroke-width={strokeWidth}
|
||||||
|
stroke="currentColor"
|
||||||
|
class={className}
|
||||||
|
aria-hidden="true"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 22 22"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
d="m4 12 8-8 8 8M6 10.5V19a1 1 0 0 0 1 1h3v-3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3h3a1 1 0 0 0 1-1v-8.5"
|
||||||
|
/>
|
||||||
|
</svg>
|
@ -57,6 +57,7 @@
|
|||||||
import ChannelModal from './Sidebar/ChannelModal.svelte';
|
import ChannelModal from './Sidebar/ChannelModal.svelte';
|
||||||
import ChannelItem from './Sidebar/ChannelItem.svelte';
|
import ChannelItem from './Sidebar/ChannelItem.svelte';
|
||||||
import PencilSquare from '../icons/PencilSquare.svelte';
|
import PencilSquare from '../icons/PencilSquare.svelte';
|
||||||
|
import Home from '../icons/Home.svelte';
|
||||||
|
|
||||||
const BREAKPOINT = 768;
|
const BREAKPOINT = 768;
|
||||||
|
|
||||||
@ -536,10 +537,36 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- {#if $user?.role === 'admin'}
|
||||||
|
<div class="px-1.5 flex justify-center text-gray-800 dark:text-gray-200">
|
||||||
|
<a
|
||||||
|
class="flex-grow flex items-center space-x-3 rounded-lg px-2 py-[7px] hover:bg-gray-100 dark:hover:bg-gray-900 transition"
|
||||||
|
href="/home"
|
||||||
|
on:click={() => {
|
||||||
|
selectedChatId = null;
|
||||||
|
chatId.set('');
|
||||||
|
|
||||||
|
if ($mobile) {
|
||||||
|
showSidebar.set(false);
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
draggable="false"
|
||||||
|
>
|
||||||
|
<div class="self-center">
|
||||||
|
<Home strokeWidth="2" className="size-[1.1rem]" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex self-center translate-y-[0.5px]">
|
||||||
|
<div class=" self-center font-medium text-sm font-primary">{$i18n.t('Home')}</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{/if} -->
|
||||||
|
|
||||||
{#if $user?.role === 'admin' || $user?.permissions?.workspace?.models || $user?.permissions?.workspace?.knowledge || $user?.permissions?.workspace?.prompts || $user?.permissions?.workspace?.tools}
|
{#if $user?.role === 'admin' || $user?.permissions?.workspace?.models || $user?.permissions?.workspace?.knowledge || $user?.permissions?.workspace?.prompts || $user?.permissions?.workspace?.tools}
|
||||||
<div class="px-1.5 flex justify-center text-gray-800 dark:text-gray-200">
|
<div class="px-1.5 flex justify-center text-gray-800 dark:text-gray-200">
|
||||||
<a
|
<a
|
||||||
class="flex-grow flex space-x-3 rounded-lg px-2 py-[7px] hover:bg-gray-100 dark:hover:bg-gray-900 transition"
|
class="flex-grow flex items-center space-x-3 rounded-lg px-2 py-[7px] hover:bg-gray-100 dark:hover:bg-gray-900 transition"
|
||||||
href="/workspace"
|
href="/workspace"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
selectedChatId = null;
|
selectedChatId = null;
|
||||||
@ -568,7 +595,7 @@
|
|||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex self-center">
|
<div class="flex self-center translate-y-[0.5px]">
|
||||||
<div class=" self-center font-medium text-sm font-primary">{$i18n.t('Workspace')}</div>
|
<div class=" self-center font-medium text-sm font-primary">{$i18n.t('Workspace')}</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
@ -42,9 +42,10 @@
|
|||||||
|
|
||||||
<div class=" flex-1 w-full h-full">
|
<div class=" flex-1 w-full h-full">
|
||||||
<RichTextInput
|
<RichTextInput
|
||||||
className=" input-prose-sm"
|
className="input-prose-sm"
|
||||||
bind:value={content}
|
bind:value={content}
|
||||||
placeholder={$i18n.t('Write something...')}
|
placeholder={$i18n.t('Write something...')}
|
||||||
|
preserveBreaks={true}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
65
src/routes/(app)/home/+layout.svelte
Normal file
65
src/routes/(app)/home/+layout.svelte
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { onMount, getContext } from 'svelte';
|
||||||
|
import { WEBUI_NAME, showSidebar, functions } from '$lib/stores';
|
||||||
|
import MenuLines from '$lib/components/icons/MenuLines.svelte';
|
||||||
|
import { page } from '$app/stores';
|
||||||
|
|
||||||
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
|
onMount(async () => {});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svelte:head>
|
||||||
|
<title>
|
||||||
|
{$i18n.t('Home')} | {$WEBUI_NAME}
|
||||||
|
</title>
|
||||||
|
</svelte:head>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class=" flex flex-col w-full h-screen max-h-[100dvh] transition-width duration-200 ease-in-out {$showSidebar
|
||||||
|
? 'md:max-w-[calc(100%-260px)]'
|
||||||
|
: ''} max-w-full"
|
||||||
|
>
|
||||||
|
<nav class=" px-2.5 pt-1 backdrop-blur-xl w-full drag-region">
|
||||||
|
<div class=" flex items-center">
|
||||||
|
<div class="{$showSidebar ? 'md:hidden' : ''} flex flex-none items-center self-end">
|
||||||
|
<button
|
||||||
|
id="sidebar-toggle-button"
|
||||||
|
class="cursor-pointer p-1.5 flex rounded-xl hover:bg-gray-100 dark:hover:bg-gray-850 transition"
|
||||||
|
on:click={() => {
|
||||||
|
showSidebar.set(!$showSidebar);
|
||||||
|
}}
|
||||||
|
aria-label="Toggle Sidebar"
|
||||||
|
>
|
||||||
|
<div class=" m-auto self-center">
|
||||||
|
<MenuLines />
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class=" flex w-full">
|
||||||
|
<div
|
||||||
|
class="flex gap-1 scrollbar-none overflow-x-auto w-fit text-center text-sm font-medium rounded-full bg-transparent pt-1"
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
class="min-w-fit rounded-full p-1.5 {$page.url.pathname.includes('/home/notes')
|
||||||
|
? ''
|
||||||
|
: 'text-gray-300 dark:text-gray-600 hover:text-gray-700 dark:hover:text-white'} transition"
|
||||||
|
href="/playground/notes">{$i18n.t('Notes')}</a
|
||||||
|
>
|
||||||
|
|
||||||
|
<a
|
||||||
|
class="min-w-fit rounded-full p-1.5 {$page.url.pathname.includes('/playground/calendar')
|
||||||
|
? ''
|
||||||
|
: 'text-gray-300 dark:text-gray-600 hover:text-gray-700 dark:hover:text-white'} transition"
|
||||||
|
href="/playground/completions">{$i18n.t('Calendar')}</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class=" flex-1 max-h-full overflow-y-auto">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</div>
|
0
src/routes/(app)/home/+page.svelte
Normal file
0
src/routes/(app)/home/+page.svelte
Normal file
Loading…
Reference in New Issue
Block a user