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
You need to sign in or sign up before continuing.
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 @@
<div class="py-10 w-full">
<div class=" flex flex-col justify-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>
<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"
on:click={() => {
showSettingsModal = !showSettingsModal;
...
...
@@ -110,7 +116,7 @@
</div>
</div>
<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>
<hr class=" my-3 dark:border-gray-600" />
...
...
@@ -134,9 +140,9 @@
<button
class=" flex items-center gap-2 text-xs px-3 py-0.5 rounded-lg {user.role ===
'admin' &&
'text-sky-600 dark:text-sky-
3
00 bg-sky-200/30'} {user.role === 'user' &&
'text-green-600 dark:text-green-
3
00 bg-green-200/30'} {user.role ===
'pending' && 'text-gray-600 dark:text-gray-
3
00 bg-gray-200/30'}"
'text-sky-600 dark:text-sky-
2
00 bg-sky-200/30'} {user.role === 'user' &&
'text-green-600 dark:text-green-
2
00 bg-green-200/30'} {user.role ===
'pending' && 'text-gray-600 dark:text-gray-
2
00 bg-gray-200/30'}"
on:click={() => {
if (user.role === 'user') {
updateRoleHandler(user.id, 'admin');
...
...
@@ -170,9 +176,9 @@
<td class=" px-3 py-2"> {user.email} </td>
<td class="px-3 py-2">
<div class="flex justify-start w-full
space-x-1
">
<div class="flex justify-start w-full">
<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 () => {
showEditUserModal = !showEditUserModal;
selectedUser = user;
...
...
@@ -180,34 +186,38 @@
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
fill="currentColor"
class="w-3.5 h-3.5"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-4 h-4"
>
<path
fill-rule="evenod
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
"
clip-rule="evenodd
"
stroke-linecap="roun
d"
stroke-linejoin="round
"
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>
</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 () => {
deleteUserHandler(user.id);
}}
>
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
fill="currentColor"
class="w-3.5 h-3.5"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-4 h-4"
>
<path
fill-rule="evenod
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
"
clip-rule="evenodd
"
stroke-linecap="roun
d"
stroke-linejoin="round
"
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>
</button>
...
...
src/routes/(app)/documents/+page.svelte
View file @
b793b5ae
...
...
@@ -184,14 +184,15 @@
<SettingsModal bind:show={showSettingsModal} />
<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="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>
<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"
on:click={() => {
showSettingsModal = !showSettingsModal;
...
...
@@ -214,6 +215,10 @@
</button>
</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 flex-1">
...
...
@@ -240,7 +245,7 @@
<div>
<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={() => {
document.getElementById('upload-doc-input')?.click();
}}
...
...
@@ -307,10 +312,13 @@
</div>
{/if}
<div class="my-3 mb-5">
{#each $documents.filter((doc) => (selectedTag === '' || (doc?.content?.tags ?? [])
.map((tag) => tag.name)
.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 items-center space-x-3">
<div class="p-2.5 bg-red-400 text-white rounded-lg">
...
...
@@ -379,7 +387,7 @@
</div>
<div class="flex flex-row space-x-1 self-center">
<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"
on:click={async () => {
showEditDocModal = !showEditDocModal;
...
...
@@ -425,7 +433,7 @@
</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"
on:click={() => {
deleteDoc(doc.name);
...
...
@@ -448,15 +456,10 @@
</button>
</div>
</div>
<div class=" my-2.5" />
{/each}
</div>
{#if $documents.length > 0}
<hr class=" dark:border-gray-700 my-2.5" />
{/if}
<div class=" flex justify-between w-full mb-3">
<div class=" flex justify-end w-full mb-2">
<div class="flex space-x-2">
<input
id="documents-import-input"
...
...
@@ -493,7 +496,7 @@
/>
<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 () => {
document.getElementById('documents-import-input')?.click();
}}
...
...
@@ -517,7 +520,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 () => {
let blob = new Blob([JSON.stringify($documents)], {
type: 'application/json'
...
...
@@ -544,29 +547,6 @@
</button>
</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>
src/routes/(app)/modelfiles/+page.svelte
View file @
b793b5ae
...
...
@@ -70,11 +70,11 @@
</script>
<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=" 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="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 @@
</div>
</a>
<hr class=" dark:border-gray-700" />
<div class=" my-2 mb-5">
{#each $modelfiles as modelfile}
<hr class=" dark:border-gray-700 my-2.5" />
<div class=" flex space-x-4 cursor-pointer w-full 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"
>
<a
class=" flex flex-1 space-x-4 cursor-pointer w-full"
href={`/?models=${encodeURIComponent(modelfile.tagName)}`}
...
...
@@ -119,14 +123,14 @@
<div class=" flex-1 self-center">
<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}
</div>
</div>
</a>
<div class="flex flex-row space-x-1 self-center">
<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"
href={`/modelfiles/edit?tag=${encodeURIComponent(modelfile.tagName)}`}
>
...
...
@@ -141,13 +145,13 @@
<path
stroke-linecap="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>
</a>
<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"
on:click={() => {
// console.log(modelfile);
...
...
@@ -172,13 +176,12 @@
</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"
on:click={() => {
shareModelfile(modelfile);
}}
>
<!-- TODO: update to share icon -->
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
...
...
@@ -190,13 +193,13 @@
<path
stroke-linecap="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>
</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"
on:click={() => {
deleteModelfile(modelfile.tagName);
...
...
@@ -213,17 +216,16 @@
<path
stroke-linecap="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>
</button>
</div>
</div>
{/each}
</div>
<hr class=" dark:border-gray-700 my-2.5" />
<div class=" flex justify-between w-full mb-3">
<div class=" flex justify-end w-full mb-3">
<div class="flex space-x-1">
<input
id="modelfiles-import-input"
...
...
@@ -253,7 +255,7 @@
/>
<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 () => {
document.getElementById('modelfiles-import-input')?.click();
}}
...
...
@@ -277,7 +279,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 () => {
saveModelfiles($modelfiles);
}}
...
...
@@ -374,10 +376,10 @@
</div>
<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
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/"
target="_blank"
>
...
...
@@ -402,7 +404,7 @@
<div class=" self-center">
<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>
</a>
</div>
...
...
src/routes/(app)/modelfiles/create/+page.svelte
View file @
b793b5ae
...
...
@@ -282,7 +282,7 @@ SYSTEM """${system}"""`.replace(/^\s*\n/gm, '');
</script>
<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">
<input
bind:this={filesInputElement}
...
...
src/routes/(app)/modelfiles/edit/+page.svelte
View file @
b793b5ae
...
...
@@ -181,7 +181,7 @@
</script>
<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">
<input
bind:this={filesInputElement}
...
...
src/routes/(app)/prompts/+page.svelte
View file @
b793b5ae
...
...
@@ -37,7 +37,7 @@
</script>
<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="mb-6 flex justify-between items-center">
<div class=" text-2xl font-semibold self-center">My Prompts</div>
...
...
@@ -68,7 +68,7 @@
<div>
<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"
>
<svg
...
...
@@ -84,13 +84,13 @@
</a>
</div>
</div>
<hr class=" dark:border-gray-700 my-2.5" />
{#if $prompts.length === 0}
<div />
{:else}
<div class="my-3 mb-5">
{#each $prompts.filter((p) => query === '' || p.command.includes(query)) as prompt}
<hr class=" dark:border-gray-700 my-2.5" />
<div class=" flex space-x-4 cursor-pointer w-full 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">
<a href={`/prompts/edit?command=${encodeURIComponent(prompt.command)}`}>
<div class=" flex-1 self-center pl-5">
...
...
@@ -103,7 +103,7 @@
</div>
<div class="flex flex-row space-x-1 self-center">
<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"
href={`/prompts/edit?command=${encodeURIComponent(prompt.command)}`}
>
...
...
@@ -124,7 +124,7 @@
</a>
<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"
on:click={() => {
// console.log(modelfile);
...
...
@@ -149,7 +149,7 @@
</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"
on:click={() => {
sharePrompt(prompt);
...
...
@@ -172,7 +172,7 @@
</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"
on:click={() => {
deletePrompt(prompt.command);
...
...
@@ -196,11 +196,9 @@
</div>
</div>
{/each}
{/if}
<hr class=" dark:border-gray-700 my-2.5" />
</div>
<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">
<input
id="prompts-import-input"
...
...
@@ -236,7 +234,7 @@
/>
<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 () => {
document.getElementById('prompts-import-input')?.click();
}}
...
...
@@ -260,7 +258,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 () => {
// document.getElementById('modelfiles-import-input')?.click();
let blob = new Blob([JSON.stringify($prompts)], {
...
...
@@ -301,7 +299,7 @@
<div class=" text-2xl font-semibold mb-6">Made by OpenWebUI Community</div>
<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"
target="_blank"
>
...
...
@@ -326,7 +324,7 @@
<div class=" self-center">
<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>
</a>
</div>
...
...
src/routes/(app)/prompts/create/+page.svelte
View file @
b793b5ae
...
...
@@ -90,7 +90,7 @@
</script>
<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=" text-2xl font-semibold mb-6">My Prompts</div>
...
...
src/routes/(app)/prompts/edit/+page.svelte
View file @
b793b5ae
...
...
@@ -72,7 +72,7 @@
</script>
<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=" 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