Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
open-webui
Commits
b793b5ae
Unverified
Commit
b793b5ae
authored
Feb 18, 2024
by
Timothy Jaeryang Baek
Committed by
GitHub
Feb 18, 2024
Browse files
Merge pull request #793 from open-webui/styling
refac: styling
parents
b1cb91b3
4c62f6a7
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
343 additions
and
353 deletions
+343
-353
src/routes/(app)/admin/+page.svelte
src/routes/(app)/admin/+page.svelte
+31
-21
src/routes/(app)/documents/+page.svelte
src/routes/(app)/documents/+page.svelte
+168
-188
src/routes/(app)/modelfiles/+page.svelte
src/routes/(app)/modelfiles/+page.svelte
+123
-121
src/routes/(app)/modelfiles/create/+page.svelte
src/routes/(app)/modelfiles/create/+page.svelte
+1
-1
src/routes/(app)/modelfiles/edit/+page.svelte
src/routes/(app)/modelfiles/edit/+page.svelte
+1
-1
src/routes/(app)/prompts/+page.svelte
src/routes/(app)/prompts/+page.svelte
+17
-19
src/routes/(app)/prompts/create/+page.svelte
src/routes/(app)/prompts/create/+page.svelte
+1
-1
src/routes/(app)/prompts/edit/+page.svelte
src/routes/(app)/prompts/edit/+page.svelte
+1
-1
No files found.
src/routes/(app)/admin/+page.svelte
View file @
b793b5ae
...
@@ -83,10 +83,16 @@
...
@@ -83,10 +83,16 @@
<div class="py-10 w-full">
<div class="py-10 w-full">
<div class=" flex flex-col justify-center">
<div class=" flex flex-col justify-center">
<div class=" flex justify-between items-center">
<div class=" flex justify-between items-center">
<div class=" text-2xl font-semibold">Users ({users.length})</div>
<div class="flex items-center text-2xl font-semibold">
All Users
<div class="flex self-center w-[1px] h-6 mx-2.5 bg-gray-200 dark:bg-gray-700" />
<span class="text-lg font-medium text-gray-500 dark:text-gray-300"
>{users.length}</span
>
</div>
<div>
<div>
<button
<button
class="flex items-center space-x-1
border border
-gray-
2
00 dark:b
order
-gray-
6
00
px-3 py-1 rounded-lg
"
class="flex items-center space-x-1
px-3 py-1.5 rounded-xl bg-gray-50 hover:bg
-gray-
1
00 dark:b
g
-gray-
8
00
dark:hover:bg-gray-700 transition
"
type="button"
type="button"
on:click={() => {
on:click={() => {
showSettingsModal = !showSettingsModal;
showSettingsModal = !showSettingsModal;
...
@@ -110,7 +116,7 @@
...
@@ -110,7 +116,7 @@
</div>
</div>
</div>
</div>
<div class=" text-gray-500 text-xs mt-1">
<div class=" text-gray-500 text-xs mt-1">
Click on the user role
cell in the table
to change a user's role.
ⓘ
Click on the user role
button
to change a user's role.
</div>
</div>
<hr class=" my-3 dark:border-gray-600" />
<hr class=" my-3 dark:border-gray-600" />
...
@@ -134,9 +140,9 @@
...
@@ -134,9 +140,9 @@
<button
<button
class=" flex items-center gap-2 text-xs px-3 py-0.5 rounded-lg {user.role ===
class=" flex items-center gap-2 text-xs px-3 py-0.5 rounded-lg {user.role ===
'admin' &&
'admin' &&
'text-sky-600 dark:text-sky-
3
00 bg-sky-200/30'} {user.role === 'user' &&
'text-sky-600 dark:text-sky-
2
00 bg-sky-200/30'} {user.role === 'user' &&
'text-green-600 dark:text-green-
3
00 bg-green-200/30'} {user.role ===
'text-green-600 dark:text-green-
2
00 bg-green-200/30'} {user.role ===
'pending' && 'text-gray-600 dark:text-gray-
3
00 bg-gray-200/30'}"
'pending' && 'text-gray-600 dark:text-gray-
2
00 bg-gray-200/30'}"
on:click={() => {
on:click={() => {
if (user.role === 'user') {
if (user.role === 'user') {
updateRoleHandler(user.id, 'admin');
updateRoleHandler(user.id, 'admin');
...
@@ -170,9 +176,9 @@
...
@@ -170,9 +176,9 @@
<td class=" px-3 py-2"> {user.email} </td>
<td class=" px-3 py-2"> {user.email} </td>
<td class="px-3 py-2">
<td class="px-3 py-2">
<div class="flex justify-start w-full
space-x-1
">
<div class="flex justify-start w-full">
<button
<button
class="self-center w-fit text-sm p
-1.5 border dark:border-gray-600
rounded-xl
flex
"
class="self-center w-fit text-sm p
x-2 py-2 hover:bg-black/5 dark:hover:bg-white/5
rounded-xl"
on:click={async () => {
on:click={async () => {
showEditUserModal = !showEditUserModal;
showEditUserModal = !showEditUserModal;
selectedUser = user;
selectedUser = user;
...
@@ -180,34 +186,38 @@
...
@@ -180,34 +186,38 @@
>
>
<svg
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
fill="none"
fill="currentColor"
viewBox="0 0 24 24"
class="w-3.5 h-3.5"
stroke-width="1.5"
stroke="currentColor"
class="w-4 h-4"
>
>
<path
<path
fill-rule="evenod
d"
stroke-linecap="roun
d"
d="M11.013 2.513a1.75 1.75 0 0 1 2.475 2.474L6.226 12.25a2.751 2.751 0 0 1-.892.596l-2.047.848a.75.75 0 0 1-.98-.98l.848-2.047a2.75 2.75 0 0 1 .596-.892l7.262-7.261Z
"
stroke-linejoin="round
"
clip-rule="evenodd
"
d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125
"
/>
/>
</svg>
</svg>
</button>
</button>
<button
<button
class="self-center w-fit text-sm p
-1.5 border dark:border-gray-600
rounded-xl
flex
"
class="self-center w-fit text-sm p
x-2 py-2 hover:bg-black/5 dark:hover:bg-white/5
rounded-xl"
on:click={async () => {
on:click={async () => {
deleteUserHandler(user.id);
deleteUserHandler(user.id);
}}
}}
>
>
<svg
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
fill="none"
fill="currentColor"
viewBox="0 0 24 24"
class="w-3.5 h-3.5"
stroke-width="1.5"
stroke="currentColor"
class="w-4 h-4"
>
>
<path
<path
fill-rule="evenod
d"
stroke-linecap="roun
d"
d="M5 3.25V4H2.75a.75.75 0 0 0 0 1.5h.3l.815 8.15A1.5 1.5 0 0 0 5.357 15h5.285a1.5 1.5 0 0 0 1.493-1.35l.815-8.15h.3a.75.75 0 0 0 0-1.5H11v-.75A2.25 2.25 0 0 0 8.75 1h-1.5A2.25 2.25 0 0 0 5 3.25Zm2.25-.75a.75.75 0 0 0-.75.75V4h3v-.75a.75.75 0 0 0-.75-.75h-1.5ZM6.05 6a.75.75 0 0 1 .787.713l.275 5.5a.75.75 0 0 1-1.498.075l-.275-5.5A.75.75 0 0 1 6.05 6Zm3.9 0a.75.75 0 0 1 .712.787l-.275 5.5a.75.75 0 0 1-1.498-.075l.275-5.5a.75.75 0 0 1 .786-.711Z
"
stroke-linejoin="round
"
clip-rule="evenodd
"
d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0
"
/>
/>
</svg>
</svg>
</button>
</button>
...
...
src/routes/(app)/documents/+page.svelte
View file @
b793b5ae
...
@@ -184,14 +184,15 @@
...
@@ -184,14 +184,15 @@
<SettingsModal bind:show={showSettingsModal} />
<SettingsModal bind:show={showSettingsModal} />
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="
py-2.5
flex flex-col justify-between w-full overflow-y-auto">
<div class=" flex flex-col justify-between w-full overflow-y-auto">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<div class="mb-6 flex justify-between items-center">
<div class="mb-6">
<div class="flex justify-between items-center">
<div class=" text-2xl font-semibold self-center">My Documents</div>
<div class=" text-2xl font-semibold self-center">My Documents</div>
<div>
<div>
<button
<button
class="flex items-center space-x-1
border border
-gray-
2
00 dark:b
order
-gray-
6
00
px-3 py-1 rounded-lg
"
class="flex items-center space-x-1
px-3 py-1.5 rounded-xl bg-gray-50 hover:bg
-gray-
1
00 dark:b
g-gray-800 dark:hover:bg
-gray-
7
00
transition
"
type="button"
type="button"
on:click={() => {
on:click={() => {
showSettingsModal = !showSettingsModal;
showSettingsModal = !showSettingsModal;
...
@@ -214,6 +215,10 @@
...
@@ -214,6 +215,10 @@
</button>
</button>
</div>
</div>
</div>
</div>
<div class=" text-gray-500 text-xs mt-1">
ⓘ Use '#' in the prompt input to load and select your documents.
</div>
</div>
<div class=" flex w-full space-x-2">
<div class=" flex w-full space-x-2">
<div class="flex flex-1">
<div class="flex flex-1">
...
@@ -240,7 +245,7 @@
...
@@ -240,7 +245,7 @@
<div>
<div>
<button
<button
class=" px-2 py-2 rounded-xl border border-gray-200 dark:border-gray-600 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 transition font-medium text-sm flex items-center space-x-1"
class=" px-2 py-2 rounded-xl border border-gray-200 dark:border-gray-600
dark:border-0
hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 transition font-medium text-sm flex items-center space-x-1"
on:click={() => {
on:click={() => {
document.getElementById('upload-doc-input')?.click();
document.getElementById('upload-doc-input')?.click();
}}
}}
...
@@ -307,10 +312,13 @@
...
@@ -307,10 +312,13 @@
</div>
</div>
{/if}
{/if}
<div class="my-3 mb-5">
{#each $documents.filter((doc) => (selectedTag === '' || (doc?.content?.tags ?? [])
{#each $documents.filter((doc) => (selectedTag === '' || (doc?.content?.tags ?? [])
.map((tag) => tag.name)
.map((tag) => tag.name)
.includes(selectedTag)) && (query === '' || doc.name.includes(query))) as doc}
.includes(selectedTag)) && (query === '' || doc.name.includes(query))) as doc}
<div class=" flex space-x-4 cursor-pointer w-full mt-3 mb-3">
<div
class=" flex space-x-4 cursor-pointer w-full px-3 py-2 dark:hover:bg-white/5 hover:bg-black/5 rounded-xl"
>
<div class=" flex flex-1 space-x-4 cursor-pointer w-full">
<div class=" flex flex-1 space-x-4 cursor-pointer w-full">
<div class=" flex items-center space-x-3">
<div class=" flex items-center space-x-3">
<div class="p-2.5 bg-red-400 text-white rounded-lg">
<div class="p-2.5 bg-red-400 text-white rounded-lg">
...
@@ -379,7 +387,7 @@
...
@@ -379,7 +387,7 @@
</div>
</div>
<div class="flex flex-row space-x-1 self-center">
<div class="flex flex-row space-x-1 self-center">
<button
<button
class="self-center w-fit text-sm px-2 py-2
border dark:border-gray-600
rounded-xl"
class="self-center w-fit text-sm px-2 py-2
dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5
rounded-xl"
type="button"
type="button"
on:click={async () => {
on:click={async () => {
showEditDocModal = !showEditDocModal;
showEditDocModal = !showEditDocModal;
...
@@ -425,7 +433,7 @@
...
@@ -425,7 +433,7 @@
</button> -->
</button> -->
<button
<button
class="self-center w-fit text-sm px-2 py-2
border dark:border-gray-600
rounded-xl"
class="self-center w-fit text-sm px-2 py-2
dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5
rounded-xl"
type="button"
type="button"
on:click={() => {
on:click={() => {
deleteDoc(doc.name);
deleteDoc(doc.name);
...
@@ -448,15 +456,10 @@
...
@@ -448,15 +456,10 @@
</button>
</button>
</div>
</div>
</div>
</div>
<div class=" my-2.5" />
{/each}
{/each}
</div>
{#if $documents.length > 0}
<div class=" flex justify-end w-full mb-2">
<hr class=" dark:border-gray-700 my-2.5" />
{/if}
<div class=" flex justify-between w-full mb-3">
<div class="flex space-x-2">
<div class="flex space-x-2">
<input
<input
id="documents-import-input"
id="documents-import-input"
...
@@ -493,7 +496,7 @@
...
@@ -493,7 +496,7 @@
/>
/>
<button
<button
class="
self-center w-fit text-sm px-3 py-1 border dark:border
-gray-
6
00
rounded-xl flex
"
class="
flex text-xs items-center space-x-1 px-3 py-1.5 rounded-xl bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg
-gray-
7
00
dark:text-gray-200 transition
"
on:click={async () => {
on:click={async () => {
document.getElementById('documents-import-input')?.click();
document.getElementById('documents-import-input')?.click();
}}
}}
...
@@ -517,7 +520,7 @@
...
@@ -517,7 +520,7 @@
</button>
</button>
<button
<button
class="
self-center w-fit text-sm px-3 py-1 border dark:border
-gray-
6
00
rounded-xl flex
"
class="
flex text-xs items-center space-x-1 px-3 py-1.5 rounded-xl bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg
-gray-
7
00
dark:text-gray-200 transition
"
on:click={async () => {
on:click={async () => {
let blob = new Blob([JSON.stringify($documents)], {
let blob = new Blob([JSON.stringify($documents)], {
type: 'application/json'
type: 'application/json'
...
@@ -544,29 +547,6 @@
...
@@ -544,29 +547,6 @@
</button>
</button>
</div>
</div>
</div>
</div>
<div class="text-xs flex items-center space-x-1">
<div>
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-3 h-3"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z"
/>
</svg>
</div>
<div class="line-clamp-1">
Tip: Use '#' in the prompt input to swiftly load and select your documents.
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
src/routes/(app)/modelfiles/+page.svelte
View file @
b793b5ae
...
@@ -70,11 +70,11 @@
...
@@ -70,11 +70,11 @@
</script>
</script>
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="
py-2.5
flex flex-col justify-between w-full overflow-y-auto">
<div class="flex flex-col justify-between w-full overflow-y-auto">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<div class=" text-2xl font-semibold mb-
6
">My Modelfiles</div>
<div class=" text-2xl font-semibold mb-
3
">My Modelfiles</div>
<a class=" flex space-x-4 cursor-pointer w-full mb-
3
" href="/modelfiles/create">
<a class=" flex space-x-4 cursor-pointer w-full mb-
2 px-3 py-2
" href="/modelfiles/create">
<div class=" self-center w-10">
<div class=" self-center w-10">
<div
<div
class="w-full h-10 flex justify-center rounded-full bg-transparent dark:bg-gray-700 border border-dashed border-gray-200"
class="w-full h-10 flex justify-center rounded-full bg-transparent dark:bg-gray-700 border border-dashed border-gray-200"
...
@@ -100,9 +100,13 @@
...
@@ -100,9 +100,13 @@
</div>
</div>
</a>
</a>
<hr class=" dark:border-gray-700" />
<div class=" my-2 mb-5">
{#each $modelfiles as modelfile}
{#each $modelfiles as modelfile}
<hr class=" dark:border-gray-700 my-2.5" />
<div
<div class=" flex space-x-4 cursor-pointer w-full mb-3">
class=" flex space-x-4 cursor-pointer w-full px-3 py-2 dark:hover:bg-white/5 hover:bg-black/5 rounded-xl"
>
<a
<a
class=" flex flex-1 space-x-4 cursor-pointer w-full"
class=" flex flex-1 space-x-4 cursor-pointer w-full"
href={`/?models=${encodeURIComponent(modelfile.tagName)}`}
href={`/?models=${encodeURIComponent(modelfile.tagName)}`}
...
@@ -119,14 +123,14 @@
...
@@ -119,14 +123,14 @@
<div class=" flex-1 self-center">
<div class=" flex-1 self-center">
<div class=" font-bold capitalize">{modelfile.title}</div>
<div class=" font-bold capitalize">{modelfile.title}</div>
<div class=" text-sm overflow-hidden text-ellipsis line-clamp-
2
">
<div class=" text-sm overflow-hidden text-ellipsis line-clamp-
1
">
{modelfile.desc}
{modelfile.desc}
</div>
</div>
</div>
</div>
</a>
</a>
<div class="flex flex-row space-x-1 self-center">
<div class="flex flex-row space-x-1 self-center">
<a
<a
class="self-center w-fit text-sm px-2 py-2
border dark:border-gray-600
rounded-xl"
class="self-center w-fit text-sm px-2 py-2
dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5
rounded-xl"
type="button"
type="button"
href={`/modelfiles/edit?tag=${encodeURIComponent(modelfile.tagName)}`}
href={`/modelfiles/edit?tag=${encodeURIComponent(modelfile.tagName)}`}
>
>
...
@@ -141,13 +145,13 @@
...
@@ -141,13 +145,13 @@
<path
<path
stroke-linecap="round"
stroke-linecap="round"
stroke-linejoin="round"
stroke-linejoin="round"
d="
M
16.862 4.487
l
1.687-1.688a1.875 1.875 0 1
1
2.652 2.652L6.832 19.82a4.5 4.5 0 01-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0
1
1.13-1.897L16.863 4.487
z
m0 0L19.5 7.125"
d="
m
16.862 4.487
1.687-1.688a1.875 1.875 0 1
1
2.652 2.652L6.832 19.82a4.5 4.5 0 0
1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0
1
1.13-1.897L16.863 4.487
Z
m0 0L19.5 7.125"
/>
/>
</svg>
</svg>
</a>
</a>
<button
<button
class="self-center w-fit text-sm px-2 py-2
border dark:border-gray-600
rounded-xl"
class="self-center w-fit text-sm px-2 py-2
dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5
rounded-xl"
type="button"
type="button"
on:click={() => {
on:click={() => {
// console.log(modelfile);
// console.log(modelfile);
...
@@ -172,13 +176,12 @@
...
@@ -172,13 +176,12 @@
</button>
</button>
<button
<button
class="self-center w-fit text-sm px-2 py-2
border dark:border-gray-600
rounded-xl"
class="self-center w-fit text-sm px-2 py-2
dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5
rounded-xl"
type="button"
type="button"
on:click={() => {
on:click={() => {
shareModelfile(modelfile);
shareModelfile(modelfile);
}}
}}
>
>
<!-- TODO: update to share icon -->
<svg
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
fill="none"
fill="none"
...
@@ -190,13 +193,13 @@
...
@@ -190,13 +193,13 @@
<path
<path
stroke-linecap="round"
stroke-linecap="round"
stroke-linejoin="round"
stroke-linejoin="round"
d="M7.217 10.907a2.25 2.25 0 1
0
0 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186
l
9.566-5.314m-9.566 7.5
l
9.566 5.314m0 0a2.25 2.25 0 1
0
3.935 2.186 2.25 2.25 0 00-3.935-2.186
z
m0-12.814a2.25 2.25 0 1
0
3.933-2.185 2.25 2.25 0 00-3.933 2.185
z
"
d="M7.217 10.907a2.25 2.25 0 1
0
0 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186
9.566-5.314m-9.566 7.5
9.566 5.314m0 0a2.25 2.25 0 1
0
3.935 2.186 2.25 2.25 0 0
0-3.935-2.186
Z
m0-12.814a2.25 2.25 0 1
0
3.933-2.185 2.25 2.25 0 0
0-3.933 2.185
Z
"
/>
/>
</svg>
</svg>
</button>
</button>
<button
<button
class="self-center w-fit text-sm px-2 py-2
border dark:border-gray-600
rounded-xl"
class="self-center w-fit text-sm px-2 py-2
dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5
rounded-xl"
type="button"
type="button"
on:click={() => {
on:click={() => {
deleteModelfile(modelfile.tagName);
deleteModelfile(modelfile.tagName);
...
@@ -213,17 +216,16 @@
...
@@ -213,17 +216,16 @@
<path
<path
stroke-linecap="round"
stroke-linecap="round"
stroke-linejoin="round"
stroke-linejoin="round"
d="
M
14.74 9
l
-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0
1
3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"
d="
m
14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0
1-2.244 2.077H8.084a2.25 2.25 0 0
1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0
0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0
1
3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0
0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0
0-7.5 0"
/>
/>
</svg>
</svg>
</button>
</button>
</div>
</div>
</div>
</div>
{/each}
{/each}
</div>
<hr class=" dark:border-gray-700 my-2.5" />
<div class=" flex justify-end w-full mb-3">
<div class=" flex justify-between w-full mb-3">
<div class="flex space-x-1">
<div class="flex space-x-1">
<input
<input
id="modelfiles-import-input"
id="modelfiles-import-input"
...
@@ -253,7 +255,7 @@
...
@@ -253,7 +255,7 @@
/>
/>
<button
<button
class="
self-center w-fit text-sm px-3 py-1 border dark:border
-gray-
6
00
rounded-xl flex
"
class="
flex text-xs items-center space-x-1 px-3 py-1.5 rounded-xl bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg
-gray-
7
00
dark:text-gray-200 transition
"
on:click={async () => {
on:click={async () => {
document.getElementById('modelfiles-import-input')?.click();
document.getElementById('modelfiles-import-input')?.click();
}}
}}
...
@@ -277,7 +279,7 @@
...
@@ -277,7 +279,7 @@
</button>
</button>
<button
<button
class="
self-center w-fit text-sm px-3 py-1 border dark:border
-gray-
6
00
rounded-xl flex
"
class="
flex text-xs items-center space-x-1 px-3 py-1.5 rounded-xl bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg
-gray-
7
00
dark:text-gray-200 transition
"
on:click={async () => {
on:click={async () => {
saveModelfiles($modelfiles);
saveModelfiles($modelfiles);
}}
}}
...
@@ -374,10 +376,10 @@
...
@@ -374,10 +376,10 @@
</div>
</div>
<div class=" my-16">
<div class=" my-16">
<div class=" text-2xl font-semibold mb-
6
">Made by OpenWebUI Community</div>
<div class=" text-2xl font-semibold mb-
3
">Made by OpenWebUI Community</div>
<a
<a
class=" flex space-x-4 cursor-pointer w-full mb-
3
"
class=" flex space-x-4 cursor-pointer w-full mb-
2 px-3 py-2
"
href="https://openwebui.com/"
href="https://openwebui.com/"
target="_blank"
target="_blank"
>
>
...
@@ -402,7 +404,7 @@
...
@@ -402,7 +404,7 @@
<div class=" self-center">
<div class=" self-center">
<div class=" font-bold">Discover a modelfile</div>
<div class=" font-bold">Discover a modelfile</div>
<div class=" text-sm">Discover, download, and explore
Ollama Modelfile
s</div>
<div class=" text-sm">Discover, download, and explore
model preset
s</div>
</div>
</div>
</a>
</a>
</div>
</div>
...
...
src/routes/(app)/modelfiles/create/+page.svelte
View file @
b793b5ae
...
@@ -282,7 +282,7 @@ SYSTEM """${system}"""`.replace(/^\s*\n/gm, '');
...
@@ -282,7 +282,7 @@ SYSTEM """${system}"""`.replace(/^\s*\n/gm, '');
</script>
</script>
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="
py-2.5
flex flex-col justify-between w-full overflow-y-auto">
<div class=" flex flex-col justify-between w-full overflow-y-auto">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<input
<input
bind:this={filesInputElement}
bind:this={filesInputElement}
...
...
src/routes/(app)/modelfiles/edit/+page.svelte
View file @
b793b5ae
...
@@ -181,7 +181,7 @@
...
@@ -181,7 +181,7 @@
</script>
</script>
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="
py-2.5
flex flex-col justify-between w-full overflow-y-auto">
<div class="flex flex-col justify-between w-full overflow-y-auto">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<input
<input
bind:this={filesInputElement}
bind:this={filesInputElement}
...
...
src/routes/(app)/prompts/+page.svelte
View file @
b793b5ae
...
@@ -37,7 +37,7 @@
...
@@ -37,7 +37,7 @@
</script>
</script>
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="
py-2.5
flex flex-col justify-between w-full overflow-y-auto">
<div class="flex flex-col justify-between w-full overflow-y-auto">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<div class="mb-6 flex justify-between items-center">
<div class="mb-6 flex justify-between items-center">
<div class=" text-2xl font-semibold self-center">My Prompts</div>
<div class=" text-2xl font-semibold self-center">My Prompts</div>
...
@@ -68,7 +68,7 @@
...
@@ -68,7 +68,7 @@
<div>
<div>
<a
<a
class=" px-2 py-2 rounded-xl border border-gray-200 dark:border-gray-600 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 transition font-medium text-sm flex items-center space-x-1"
class=" px-2 py-2 rounded-xl border border-gray-200 dark:border-gray-600
dark:border-0
hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700 transition font-medium text-sm flex items-center space-x-1"
href="/prompts/create"
href="/prompts/create"
>
>
<svg
<svg
...
@@ -84,13 +84,13 @@
...
@@ -84,13 +84,13 @@
</a>
</a>
</div>
</div>
</div>
</div>
<hr class=" dark:border-gray-700 my-2.5" />
{#if $prompts.length === 0}
<div class="my-3 mb-5">
<div />
{:else}
{#each $prompts.filter((p) => query === '' || p.command.includes(query)) as prompt}
{#each $prompts.filter((p) => query === '' || p.command.includes(query)) as prompt}
<hr class=" dark:border-gray-700 my-2.5" />
<div
<div class=" flex space-x-4 cursor-pointer w-full mb-3">
class=" flex space-x-4 cursor-pointer w-full px-3 py-2 dark:hover:bg-white/5 hover:bg-black/5 rounded-xl"
>
<div class=" flex flex-1 space-x-4 cursor-pointer w-full">
<div class=" flex flex-1 space-x-4 cursor-pointer w-full">
<a href={`/prompts/edit?command=${encodeURIComponent(prompt.command)}`}>
<a href={`/prompts/edit?command=${encodeURIComponent(prompt.command)}`}>
<div class=" flex-1 self-center pl-5">
<div class=" flex-1 self-center pl-5">
...
@@ -103,7 +103,7 @@
...
@@ -103,7 +103,7 @@
</div>
</div>
<div class="flex flex-row space-x-1 self-center">
<div class="flex flex-row space-x-1 self-center">
<a
<a
class="self-center w-fit text-sm px-2 py-2
border dark:border-gray-600
rounded-xl"
class="self-center w-fit text-sm px-2 py-2
dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5
rounded-xl"
type="button"
type="button"
href={`/prompts/edit?command=${encodeURIComponent(prompt.command)}`}
href={`/prompts/edit?command=${encodeURIComponent(prompt.command)}`}
>
>
...
@@ -124,7 +124,7 @@
...
@@ -124,7 +124,7 @@
</a>
</a>
<button
<button
class="self-center w-fit text-sm px-2 py-2
border dark:border-gray-600
rounded-xl"
class="self-center w-fit text-sm px-2 py-2
dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5
rounded-xl"
type="button"
type="button"
on:click={() => {
on:click={() => {
// console.log(modelfile);
// console.log(modelfile);
...
@@ -149,7 +149,7 @@
...
@@ -149,7 +149,7 @@
</button>
</button>
<button
<button
class="self-center w-fit text-sm px-2 py-2
border dark:border-gray-600
rounded-xl"
class="self-center w-fit text-sm px-2 py-2
dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5
rounded-xl"
type="button"
type="button"
on:click={() => {
on:click={() => {
sharePrompt(prompt);
sharePrompt(prompt);
...
@@ -172,7 +172,7 @@
...
@@ -172,7 +172,7 @@
</button>
</button>
<button
<button
class="self-center w-fit text-sm px-2 py-2
border dark:border-gray-600
rounded-xl"
class="self-center w-fit text-sm px-2 py-2
dark:text-gray-300 dark:hover:text-white hover:bg-black/5 dark:hover:bg-white/5
rounded-xl"
type="button"
type="button"
on:click={() => {
on:click={() => {
deletePrompt(prompt.command);
deletePrompt(prompt.command);
...
@@ -196,11 +196,9 @@
...
@@ -196,11 +196,9 @@
</div>
</div>
</div>
</div>
{/each}
{/each}
{/if}
</div>
<hr class=" dark:border-gray-700 my-2.5" />
<div class=" flex justify-
betwe
en w-full mb-3">
<div class=" flex justify-en
d
w-full mb-3">
<div class="flex space-x-2">
<div class="flex space-x-2">
<input
<input
id="prompts-import-input"
id="prompts-import-input"
...
@@ -236,7 +234,7 @@
...
@@ -236,7 +234,7 @@
/>
/>
<button
<button
class="
self-center w-fit text-sm px-3 py-1 border dark:border
-gray-
6
00
rounded-xl flex
"
class="
flex text-xs items-center space-x-1 px-3 py-1.5 rounded-xl bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg
-gray-
7
00
dark:text-gray-200 transition
"
on:click={async () => {
on:click={async () => {
document.getElementById('prompts-import-input')?.click();
document.getElementById('prompts-import-input')?.click();
}}
}}
...
@@ -260,7 +258,7 @@
...
@@ -260,7 +258,7 @@
</button>
</button>
<button
<button
class="
self-center w-fit text-sm px-3 py-1 border dark:border
-gray-
6
00
rounded-xl flex
"
class="
flex text-xs items-center space-x-1 px-3 py-1.5 rounded-xl bg-gray-50 hover:bg-gray-100 dark:bg-gray-800 dark:hover:bg
-gray-
7
00
dark:text-gray-200 transition
"
on:click={async () => {
on:click={async () => {
// document.getElementById('modelfiles-import-input')?.click();
// document.getElementById('modelfiles-import-input')?.click();
let blob = new Blob([JSON.stringify($prompts)], {
let blob = new Blob([JSON.stringify($prompts)], {
...
@@ -301,7 +299,7 @@
...
@@ -301,7 +299,7 @@
<div class=" text-2xl font-semibold mb-6">Made by OpenWebUI Community</div>
<div class=" text-2xl font-semibold mb-6">Made by OpenWebUI Community</div>
<a
<a
class=" flex space-x-4 cursor-pointer w-full mb-3"
class=" flex space-x-4 cursor-pointer w-full mb-3
px-3 py-2
"
href="https://openwebui.com/?type=prompts"
href="https://openwebui.com/?type=prompts"
target="_blank"
target="_blank"
>
>
...
@@ -326,7 +324,7 @@
...
@@ -326,7 +324,7 @@
<div class=" self-center">
<div class=" self-center">
<div class=" font-bold">Discover a prompt</div>
<div class=" font-bold">Discover a prompt</div>
<div class=" text-sm">Discover, download, and explore custom
P
rompts</div>
<div class=" text-sm">Discover, download, and explore custom
p
rompts</div>
</div>
</div>
</a>
</a>
</div>
</div>
...
...
src/routes/(app)/prompts/create/+page.svelte
View file @
b793b5ae
...
@@ -90,7 +90,7 @@
...
@@ -90,7 +90,7 @@
</script>
</script>
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="
py-2.5
flex flex-col justify-between w-full overflow-y-auto">
<div class=" flex flex-col justify-between w-full overflow-y-auto">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<div class=" text-2xl font-semibold mb-6">My Prompts</div>
<div class=" text-2xl font-semibold mb-6">My Prompts</div>
...
...
src/routes/(app)/prompts/edit/+page.svelte
View file @
b793b5ae
...
@@ -72,7 +72,7 @@
...
@@ -72,7 +72,7 @@
</script>
</script>
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="min-h-screen max-h-[100dvh] w-full flex justify-center dark:text-white">
<div class="
py-2.5
flex flex-col justify-between w-full overflow-y-auto">
<div class="flex flex-col justify-between w-full overflow-y-auto">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<div class="max-w-2xl mx-auto w-full px-3 md:px-0 my-10">
<div class=" text-2xl font-semibold mb-6">My Prompts</div>
<div class=" text-2xl font-semibold mb-6">My Prompts</div>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment