mirror of
https://github.com/ParisNeo/lollms-webui.git
synced 2025-01-29 15:44:12 +00:00
Shooting for the stars. Nove 14, new version
This commit is contained in:
parent
f7617df061
commit
66f98c51f3
@ -68,7 +68,7 @@ def terminate_thread(thread):
|
||||
else:
|
||||
ASCIIColors.yellow("Canceled successfully")# The current version of the webui
|
||||
|
||||
lollms_webui_version="13 ( code name feather 🪶)"
|
||||
lollms_webui_version="Nova XIV 🌟"
|
||||
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
|
||||
echo "L🪶LLMS: Lord of Large Language and Multimodal Systems"
|
||||
echo "L🌟LLMS: Lord of Large Language and Multimodal Systems"
|
||||
echo V13 Feather
|
||||
echo -----------------
|
||||
echo By ParisNeo
|
||||
|
@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
|
||||
echo "L🪶LLMS: Lord of Large Language and Multimodal Systems"
|
||||
echo "L🌟LLMS: Lord of Large Language and Multimodal Systems"
|
||||
echo V13 Feather
|
||||
echo -----------------
|
||||
echo By ParisNeo
|
||||
|
BIN
web/dist/assets/PTSans-Regular-CxL0S8W7.ttf
vendored
BIN
web/dist/assets/PTSans-Regular-CxL0S8W7.ttf
vendored
Binary file not shown.
BIN
web/dist/assets/Roboto-Regular-Dj9u0zRN.ttf
vendored
BIN
web/dist/assets/Roboto-Regular-Dj9u0zRN.ttf
vendored
Binary file not shown.
8
web/dist/assets/index-DFmU6K6z.css
vendored
Normal file
8
web/dist/assets/index-DFmU6K6z.css
vendored
Normal file
File diff suppressed because one or more lines are too long
8
web/dist/assets/index-DxVHgLBo.css
vendored
8
web/dist/assets/index-DxVHgLBo.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
web/dist/index.html
vendored
4
web/dist/index.html
vendored
@ -6,8 +6,8 @@
|
||||
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>LoLLMS WebUI</title>
|
||||
<script type="module" crossorigin src="/assets/index-BE91CgJ5.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-DxVHgLBo.css">
|
||||
<script type="module" crossorigin src="/assets/index-K2Bv9YN3.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-DFmU6K6z.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* Custom font */
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap');
|
||||
/* Flat Gray Theme */
|
||||
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap');
|
||||
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
@ -8,13 +9,8 @@
|
||||
html {
|
||||
@apply scroll-smooth;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('./fonts/Roboto/Roboto-Regular.ttf') format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'PTSans';
|
||||
src: url('./fonts/PTSans/PTSans-Regular.ttf') format('truetype');
|
||||
body {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
}
|
||||
}
|
||||
|
||||
@ -33,146 +29,118 @@
|
||||
@apply hidden;
|
||||
}
|
||||
|
||||
h1 { @apply text-4xl md:text-5xl font-bold text-gray-900 dark:text-gray-100 mb-6; }
|
||||
h2 {
|
||||
@apply text-3xl font-semibold text-gray-800 dark:text-gray-200 mb-4;
|
||||
}
|
||||
h1 { @apply text-4xl md:text-5xl font-bold text-gray-800 dark:text-gray-100 mb-6; }
|
||||
h2 { @apply text-3xl font-semibold text-gray-700 dark:text-gray-200 mb-4; }
|
||||
h3 { @apply text-2xl font-medium text-gray-600 dark:text-gray-300 mb-3; }
|
||||
h4 { @apply text-xl font-medium text-gray-500 dark:text-gray-400 mb-2; }
|
||||
|
||||
h3 {
|
||||
@apply text-2xl font-medium text-gray-700 dark:text-gray-300 mb-3;
|
||||
}
|
||||
h1, h2 { @apply border-b border-gray-300 dark:border-gray-600 pb-2; }
|
||||
|
||||
h4 {
|
||||
@apply text-xl font-medium text-gray-600 dark:text-gray-400 mb-2;
|
||||
}
|
||||
|
||||
/* Optional: Add a subtle bottom border to headers for added distinction */
|
||||
h1, h2{
|
||||
@apply border-b border-gray-200 dark:border-gray-700 pb-2;
|
||||
}
|
||||
|
||||
|
||||
p {
|
||||
@apply text-base text-gray-600 dark:text-gray-300 break-words;
|
||||
}
|
||||
|
||||
ul {
|
||||
@apply list-disc ml-0;
|
||||
}
|
||||
|
||||
li {
|
||||
@apply list-disc ml-5;
|
||||
}
|
||||
|
||||
ol {
|
||||
@apply list-decimal ml-5;
|
||||
}
|
||||
p { @apply text-base text-gray-600 dark:text-gray-300 break-words; }
|
||||
ul { @apply list-disc ml-0; }
|
||||
li { @apply list-disc ml-5; }
|
||||
ol { @apply list-decimal ml-5; }
|
||||
|
||||
:root {
|
||||
--color-primary: #0e8ef0;
|
||||
--color-primary-light: #3dabff;
|
||||
--color-secondary: #0fd974;
|
||||
--color-accent: #f0700e;
|
||||
--color-primary: #4a4a4a;
|
||||
--color-primary-light: #6a6a6a;
|
||||
--color-secondary: #8a8a8a;
|
||||
--color-accent: #3a3a3a;
|
||||
--color-light-text-panel: #ffffff;
|
||||
--color-dark-text-panel: #ffffff;
|
||||
--color-bg-light-panel: #7cb5ec;
|
||||
--color-bg-light: #e2edff;
|
||||
--color-bg-light-tone: #b9d2f7;
|
||||
--color-bg-light-code-block: #cad7ed;
|
||||
--color-bg-light-tone-panel: #8fb5ef;
|
||||
--color-bg-light-discussion: #c5d8f8;
|
||||
--color-bg-light-discussion-odd: #d6e7ff;
|
||||
--color-bg-dark: #132e59;
|
||||
--color-bg-dark-tone: #25477d;
|
||||
--color-bg-dark-tone-panel: #4367a3;
|
||||
--color-bg-dark-code-block: #2254a7;
|
||||
--color-bg-dark-discussion: #435E8A;
|
||||
--color-bg-dark-discussion-odd: #284471;
|
||||
--color-dark-text-panel: #e0e0e0;
|
||||
--color-bg-light-panel: #f0f0f0;
|
||||
--color-bg-light: #ffffff;
|
||||
--color-bg-light-tone: #e0e0e0;
|
||||
--color-bg-light-code-block: #f5f5f5;
|
||||
--color-bg-light-tone-panel: #d0d0d0;
|
||||
--color-bg-light-discussion: #f8f8f8;
|
||||
--color-bg-light-discussion-odd: #f0f0f0;
|
||||
--color-bg-dark: #2a2a2a;
|
||||
--color-bg-dark-tone: #3a3a3a;
|
||||
--color-bg-dark-tone-panel: #4a4a4a;
|
||||
--color-bg-dark-code-block: #3a3a3a;
|
||||
--color-bg-dark-discussion: #333333;
|
||||
--color-bg-dark-discussion-odd: #2d2d2d;
|
||||
}
|
||||
/* For both textarea and input elements */
|
||||
|
||||
textarea, input, select {
|
||||
@apply bg-gray-100 dark:bg-gray-800;
|
||||
}
|
||||
|
||||
.background-color {
|
||||
@apply bg-gradient-to-br from-blue-100 to-blue-200 dark:from-blue-900 dark:to-blue-900 min-h-screen;
|
||||
@apply bg-gray-100 dark:bg-gray-900 min-h-screen;
|
||||
}
|
||||
|
||||
.toolbar-color {
|
||||
@apply text-gray-700 dark:text-gray-50 bg-gradient-to-r from-blue-200 to-purple-200 dark:from-blue-800 dark:to-purple-800 rounded-full shadow-lg
|
||||
@apply text-gray-700 dark:text-gray-200 bg-gray-200 dark:bg-gray-800 rounded-lg shadow-md;
|
||||
}
|
||||
|
||||
.panels-color {
|
||||
@apply text-gray-700 dark:text-gray-50 bg-gradient-to-r from-blue-100 to-blue-200 dark:from-blue-800 dark:to-blue-900 rounded shadow-lg;
|
||||
@apply text-gray-700 dark:text-gray-200 bg-gray-100 dark:bg-gray-800 rounded-lg shadow-md;
|
||||
}
|
||||
|
||||
.unicolor-panels-color {
|
||||
@apply bg-blue-200 dark:bg-blue-800
|
||||
@apply bg-gray-200 dark:bg-gray-700;
|
||||
}
|
||||
|
||||
.chatbox-color {
|
||||
@apply bg-gradient-to-br from-blue-200 to-blue-300 dark:from-blue-800 dark:to-blue-900
|
||||
@apply bg-gray-50 dark:bg-gray-800;
|
||||
}
|
||||
|
||||
/* Base message styling */
|
||||
.message { @apply relative w-full rounded-lg m-2 shadow-lg border border-gray-200 dark:border-gray-700 flex flex-col flex-grow flex-wrap overflow-visible p-5 pb-3 text-lg; /* Increased from text-base to text-lg */ }
|
||||
.message:hover {
|
||||
@apply border-blue-400 dark:border-blue-500;
|
||||
}
|
||||
|
||||
/* Light theme */
|
||||
.message {
|
||||
@apply bg-blue-200 text-gray-800;
|
||||
@apply relative w-full rounded-lg m-2 shadow-md border border-gray-300 dark:border-gray-600 flex flex-col flex-grow flex-wrap overflow-visible p-5 pb-3 text-lg;
|
||||
}
|
||||
|
||||
/* Dark theme */
|
||||
.dark .message {
|
||||
@apply bg-blue-800 text-gray-200;
|
||||
.message:hover {
|
||||
@apply border-gray-400 dark:border-gray-500;
|
||||
}
|
||||
|
||||
.message {
|
||||
@apply bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200;
|
||||
}
|
||||
|
||||
/* Alternating backgrounds for better distinction */
|
||||
.message:nth-child(even) {
|
||||
@apply bg-blue-50 dark:bg-blue-700;
|
||||
@apply bg-gray-50 dark:bg-gray-800;
|
||||
}
|
||||
|
||||
.message:nth-child(odd) {
|
||||
@apply bg-blue-200 dark:bg-blue-800;
|
||||
@apply bg-gray-100 dark:bg-gray-700;
|
||||
}
|
||||
|
||||
/* Additional styling for more professional look */
|
||||
.message-header {
|
||||
@apply text-xl font-semibold mb-2; /* Increased from text-lg to text-xl */
|
||||
@apply text-xl font-semibold mb-2;
|
||||
}
|
||||
|
||||
.message-content {
|
||||
@apply text-lg leading-relaxed; /* Increased from text-base to text-lg */
|
||||
@apply text-lg leading-relaxed;
|
||||
}
|
||||
|
||||
/* Body styling */
|
||||
body {
|
||||
@apply bg-gradient-to-br from-gray-100 to-gray-200 dark:from-gray-800 dark:to-gray-900 min-h-screen text-base; /* Added text-base for default body text */
|
||||
@apply bg-gray-100 dark:bg-gray-900 min-h-screen text-base;
|
||||
}
|
||||
|
||||
.discussion{
|
||||
@apply mr-2 bg-gradient-to-r from-blue-200 to-blue-200 dark:from-blue-900 dark:to-blue-900 text-xs
|
||||
}
|
||||
.discussion-hilighted{
|
||||
@apply bg-gradient-to-r from-blue-300 to-blue-200 dark:from-blue-800 dark:to-purple-900 text-xs
|
||||
.discussion {
|
||||
@apply mr-2 bg-gray-200 dark:bg-gray-700 text-xs;
|
||||
}
|
||||
|
||||
|
||||
.discussion-hilighted {
|
||||
@apply bg-gray-300 dark:bg-gray-600 text-xs;
|
||||
}
|
||||
|
||||
.bg-gradient-welcome {
|
||||
@apply bg-gradient-to-br from-blue-100 to-purple-100 dark:from-blue-900 dark:to-purple-900;
|
||||
@apply bg-gradient-to-br from-gray-100 to-gray-200 dark:from-gray-800 dark:to-gray-900;
|
||||
}
|
||||
|
||||
.bg-gradient-progress {
|
||||
@apply bg-gradient-to-r from-blue-200 to-purple-200 dark:from-blue-800 dark:to-purple-800;
|
||||
@apply bg-gradient-to-r from-gray-200 to-gray-300 dark:from-gray-700 dark:to-gray-600;
|
||||
}
|
||||
|
||||
.text-gradient-title {
|
||||
@apply text-transparent bg-clip-text bg-gradient-to-r from-blue-600 to-purple-600 dark:from-blue-400 dark:to-purple-400;
|
||||
@apply text-transparent bg-clip-text bg-gradient-to-r from-gray-700 to-gray-500 dark:from-gray-300 dark:to-gray-500;
|
||||
}
|
||||
|
||||
.text-subtitle {
|
||||
@apply text-gray-600 dark:text-gray-300;
|
||||
@apply text-gray-600 dark:text-gray-400;
|
||||
}
|
||||
|
||||
.text-author {
|
||||
@ -184,15 +152,15 @@ body {
|
||||
}
|
||||
|
||||
.text-progress {
|
||||
@apply text-blue-600 dark:text-blue-400;
|
||||
@apply text-gray-600 dark:text-gray-400;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
@apply bg-blue-500 hover:bg-blue-600 text-white font-bold py-2 px-4 rounded;
|
||||
@apply bg-gray-600 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded;
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
@apply bg-purple-500 hover:bg-purple-600 text-white font-bold py-2 px-4 rounded;
|
||||
@apply bg-gray-400 hover:bg-gray-500 text-white font-bold py-2 px-4 rounded;
|
||||
}
|
||||
|
||||
.card {
|
||||
@ -200,7 +168,7 @@ body {
|
||||
}
|
||||
|
||||
.input {
|
||||
@apply bg-gray-100 dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400;
|
||||
@apply bg-gray-100 dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md px-4 py-2 focus:outline-none focus:ring-2 focus:ring-gray-500 dark:focus:ring-gray-400;
|
||||
}
|
||||
|
||||
.label {
|
||||
@ -208,10 +176,11 @@ body {
|
||||
}
|
||||
|
||||
.link {
|
||||
@apply text-blue-500 hover:text-blue-600 dark:text-blue-400 dark:hover:text-blue-300;
|
||||
@apply text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200;
|
||||
}
|
||||
|
||||
.navbar-container {
|
||||
@apply text-gray-700 dark:text-gray-50 bg-gradient-to-r from-blue-200 to-blue-300 dark:from-blue-800 dark:to-blue-900 rounded shadow-lg
|
||||
@apply text-gray-700 dark:text-gray-200 bg-gray-200 dark:bg-gray-800 rounded shadow-lg;
|
||||
}
|
||||
|
||||
.game-menu {
|
||||
@ -219,18 +188,18 @@ body {
|
||||
}
|
||||
|
||||
.text-shadow-custom {
|
||||
text-shadow: 1px 1px 0px white, -1px -1px 0px white, 1px -1px 0px white, -1px 1px 0px white;
|
||||
text-shadow: 1px 1px 0px #e0e0e0, -1px -1px 0px #e0e0e0, 1px -1px 0px #e0e0e0, -1px 1px 0px #e0e0e0;
|
||||
}
|
||||
|
||||
.menu-item {
|
||||
@apply mb-2 px-4 py-2 text-green-600 dark:text-green-300 font-bold text-lg transition-all duration-300 ease-in-out;
|
||||
@apply hover:text-red-400 hover:dark:text-red-200 hover:transform hover:-translate-y-1;
|
||||
@apply mb-2 px-4 py-2 text-gray-600 dark:text-gray-300 font-bold text-lg transition-all duration-300 ease-in-out;
|
||||
@apply hover:text-gray-800 hover:dark:text-gray-100 hover:transform hover:-translate-y-1;
|
||||
}
|
||||
|
||||
.menu-item.active-link {
|
||||
@apply rounded-t-md border-red-500 text-shadow-custom text-red-600 font-bold text-lg transition-all duration-300 ease-in-out scale-105;
|
||||
@apply hover:text-red-700 hover:dark:text-red-300 hover:transform hover:-translate-y-1;
|
||||
/* Glow effect on text */
|
||||
text-shadow: 0 0 10px rgba(255, 100, 100, 0.5);
|
||||
@apply rounded-t-md border-gray-500 text-shadow-custom text-gray-800 font-bold text-lg transition-all duration-300 ease-in-out scale-105;
|
||||
@apply hover:text-gray-900 hover:dark:text-gray-50 hover:transform hover:-translate-y-1;
|
||||
text-shadow: 0 0 10px rgba(128, 128, 128, 0.5);
|
||||
}
|
||||
|
||||
.menu-item.active-link::before {
|
||||
@ -240,13 +209,13 @@ body {
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 5px;
|
||||
background: linear-gradient(to right, #ff3b3b, #ff7b7b, #ff3b3b); /* Strawberry colors */
|
||||
background: linear-gradient(to right, #4a4a4a, #8a8a8a, #4a4a4a);
|
||||
border-radius: 10px;
|
||||
animation: shimmer 2s infinite;
|
||||
}
|
||||
|
||||
.dark .menu-item.active-link::before {
|
||||
background: linear-gradient(to right, #8b0000, #ff0000, #8b0000); /* Dark mode strawberry colors */
|
||||
background: linear-gradient(to right, #6a6a6a, #aaaaaa, #6a6a6a);
|
||||
}
|
||||
|
||||
@keyframes shimmer {
|
||||
@ -258,31 +227,15 @@ body {
|
||||
0%, 100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-5px); }
|
||||
}
|
||||
|
||||
.feather-emoji {
|
||||
display: inline-block;
|
||||
margin-left: 5px;
|
||||
animation: bounce 2s infinite;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@keyframes lightsaber {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
50% {
|
||||
transform: scale(1.1);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.app-card {
|
||||
@apply transition-all duration-300 ease-in-out bg-gradient-to-br from-blue-200 to-blue-300 dark:from-blue-800 dark:to-blue-900 text-gray-800 dark:text-gray-100 shadow-md hover:shadow-lg;
|
||||
@apply transition-all duration-300 ease-in-out bg-gray-100 dark:bg-gray-800 text-gray-800 dark:text-gray-100 shadow-md hover:shadow-lg;
|
||||
}
|
||||
|
||||
.app-card:hover {
|
||||
@ -299,11 +252,11 @@ button:hover {
|
||||
|
||||
.scrollbar-thin {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: theme('colors.blue.300') theme('colors.blue.100');
|
||||
scrollbar-color: theme('colors.gray.400') theme('colors.gray.200');
|
||||
}
|
||||
|
||||
.dark .scrollbar-thin {
|
||||
scrollbar-color: theme('colors.blue.700') theme('colors.blue.900');
|
||||
scrollbar-color: theme('colors.gray.600') theme('colors.gray.800');
|
||||
}
|
||||
|
||||
.scrollbar-thin::-webkit-scrollbar {
|
||||
@ -311,42 +264,43 @@ button:hover {
|
||||
}
|
||||
|
||||
.scrollbar-thin::-webkit-scrollbar-track {
|
||||
@apply bg-blue-100 dark:bg-blue-900 rounded-full;
|
||||
@apply bg-gray-200 dark:bg-gray-800 rounded-full;
|
||||
}
|
||||
|
||||
.scrollbar-thin::-webkit-scrollbar-thumb {
|
||||
@apply bg-blue-300 dark:bg-blue-700 rounded-full;
|
||||
@apply bg-gray-400 dark:bg-gray-600 rounded-full;
|
||||
}
|
||||
|
||||
.scrollbar-thin::-webkit-scrollbar-thumb:hover {
|
||||
@apply bg-blue-400 dark:bg-blue-600;
|
||||
@apply bg-gray-500 dark:bg-gray-500;
|
||||
}
|
||||
|
||||
.btn {
|
||||
@apply font-semibold py-2 px-4 rounded-lg transition-all duration-300 ease-in-out shadow-md flex items-center;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
@apply bg-blue-500 text-white hover:bg-blue-600 focus:ring-4 focus:ring-blue-300 dark:focus:ring-blue-800;
|
||||
@apply bg-gray-600 text-white hover:bg-gray-700 focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-600;
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
@apply bg-blue-200 text-gray-700 hover:bg-blue-300 focus:ring-4 focus:ring-blue-200 dark:bg-blue-700 dark:text-gray-200 dark:hover:bg-blue-600 dark:focus:ring-blue-600;
|
||||
@apply bg-gray-200 text-gray-700 hover:bg-gray-300 focus:ring-4 focus:ring-gray-200 dark:bg-gray-700 dark:text-gray-200 dark:hover:bg-gray-600 dark:focus:ring-gray-600;
|
||||
}
|
||||
|
||||
.search-input {
|
||||
@apply w-full border-b-2 border-blue-200 dark:border-blue-700 py-2 px-4 pl-10 transition-colors duration-300 ease-in-out focus:outline-none focus:border-blue-500 dark:focus:border-blue-400 bg-transparent text-gray-800 dark:text-gray-100;
|
||||
@apply w-full border-b-2 border-gray-300 dark:border-gray-600 py-2 px-4 pl-10 transition-colors duration-300 ease-in-out focus:outline-none focus:border-gray-500 dark:focus:border-gray-400 bg-transparent text-gray-800 dark:text-gray-100;
|
||||
}
|
||||
|
||||
.scrollbar {
|
||||
@apply scrollbar-thin scrollbar-track-bg-light-tone scrollbar-thumb-bg-light-tone-panel hover:scrollbar-thumb-primary dark:scrollbar-track-bg-dark-tone dark:scrollbar-thumb-bg-dark-tone-panel dark:hover:scrollbar-thumb-primary active:scrollbar-thumb-secondary
|
||||
@apply scrollbar-thin scrollbar-track-gray-200 scrollbar-thumb-gray-400 hover:scrollbar-thumb-gray-500 dark:scrollbar-track-gray-700 dark:scrollbar-thumb-gray-600 dark:hover:scrollbar-thumb-gray-500;
|
||||
}
|
||||
|
||||
.card-title {
|
||||
@apply text-xl font-bold text-gray-900 dark:text-white mb-2;
|
||||
@apply text-xl font-bold text-gray-800 dark:text-gray-100 mb-2;
|
||||
}
|
||||
|
||||
.card-content {
|
||||
@apply text-gray-700 dark:text-gray-300;
|
||||
@apply text-gray-600 dark:text-gray-300;
|
||||
}
|
||||
|
||||
.card-footer {
|
||||
@ -354,20 +308,19 @@ button:hover {
|
||||
}
|
||||
|
||||
.card-footer-button {
|
||||
@apply bg-blue-500 hover:bg-blue-600 text-white font-bold py-2 px-4 rounded;
|
||||
@apply bg-gray-600 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded;
|
||||
}
|
||||
|
||||
/* Subcard styles */
|
||||
.subcard {
|
||||
@apply bg-gray-100 dark:bg-gray-700 rounded-lg shadow-md p-4;
|
||||
@apply bg-gray-50 dark:bg-gray-800 rounded-lg shadow-md p-4;
|
||||
}
|
||||
|
||||
.subcard-title {
|
||||
@apply text-lg font-bold text-gray-900 dark:text-white mb-2;
|
||||
@apply text-lg font-bold text-gray-800 dark:text-gray-100 mb-2;
|
||||
}
|
||||
|
||||
.subcard-content {
|
||||
@apply text-gray-700 dark:text-gray-300;
|
||||
@apply text-gray-600 dark:text-gray-300;
|
||||
}
|
||||
|
||||
.subcard-footer {
|
||||
@ -375,5 +328,5 @@ button:hover {
|
||||
}
|
||||
|
||||
.subcard-footer-button {
|
||||
@apply bg-blue-500 hover:bg-blue-600 text-white font-bold py-2 px-4 rounded;
|
||||
}
|
||||
@apply bg-gray-600 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded;
|
||||
}
|
||||
|
@ -130,7 +130,7 @@
|
||||
</div>
|
||||
|
||||
<ChatBarButton
|
||||
@click="togglePanel"
|
||||
@click="toggleLeftPanel"
|
||||
:class="{ 'text-red-500': leftPanelCollapsed }"
|
||||
title="Toggle View Mode"
|
||||
>
|
||||
@ -463,6 +463,23 @@
|
||||
</svg>
|
||||
</template>
|
||||
</ChatBarButton>
|
||||
|
||||
<ChatBarButton
|
||||
@click="toggleRightPanel"
|
||||
:class="{ 'text-red-500': !rightPanelCollapsed }"
|
||||
title="Toggle View Mode"
|
||||
>
|
||||
<template #icon>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-10 h-10 text-blue-500 transition-colors duration-300 group-hover:text-yellow-400">
|
||||
<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect>
|
||||
<circle cx="12" cy="5" r="2"></circle>
|
||||
<path d="M12 7v4"></path>
|
||||
<line x1="8" y1="16" x2="8" y2="16"></line>
|
||||
<line x1="16" y1="16" x2="16" y2="16"></line>
|
||||
</svg>
|
||||
</template>
|
||||
</ChatBarButton>
|
||||
|
||||
</div>
|
||||
|
||||
<input type="file" ref="fileDialog" @change="addFiles" multiple style="display: none" />
|
||||
@ -584,6 +601,9 @@ export default {
|
||||
leftPanelCollapsed(){
|
||||
return this.$store.state.leftPanelCollapsed;
|
||||
},
|
||||
rightPanelCollapsed(){
|
||||
return this.$store.state.rightPanelCollapsed;
|
||||
},
|
||||
isCompactMode() {
|
||||
return this.$store.state.view_mode === 'compact';
|
||||
},
|
||||
@ -669,14 +689,27 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
togglePanel(){
|
||||
toggleLeftPanel(){
|
||||
console.log(this.leftPanelCollapsed)
|
||||
this.$store.commit('setLeftPanelCollapsed', ! this.leftPanelCollapsed); // Assuming you have a mutation to set the view mode
|
||||
},
|
||||
toggleViewMode() {
|
||||
const newMode = this.isCompactMode ? 'full' : 'compact';
|
||||
this.$store.commit('setViewMode', newMode); // Assuming you have a mutation to set the view mode
|
||||
},
|
||||
},
|
||||
async toggleRightPanel(){
|
||||
console.log(this.rightPanelCollapsed)
|
||||
this.$store.commit('setRightPanelCollapsed', !this.rightPanelCollapsed); // Assuming you have a mutation to set the view mode
|
||||
if(this.rightPanelCollapsed){
|
||||
this.$store.commit('setleftPanelCollapsed', true); // Assuming you have a mutation to set the view mode
|
||||
this.$nextTick(() => {
|
||||
this.extractHtml()
|
||||
});
|
||||
|
||||
}
|
||||
console.log(this.rightPanelCollapsed)
|
||||
},
|
||||
|
||||
handlePaste(event) {
|
||||
const items = (event.clipboardData || event.originalEvent.clipboardData).items;
|
||||
let filesToUpload = [];
|
||||
|
@ -11,7 +11,7 @@
|
||||
ref="menuItems"
|
||||
>
|
||||
{{ link.text }}
|
||||
<span v-if="isRouteActive(link.route)" class="feather-emoji">🪶</span>
|
||||
<span v-if="isRouteActive(link.route)" class="feather-emoji">🌟</span>
|
||||
</RouterLink>
|
||||
</nav>
|
||||
</div>
|
||||
|
@ -11,7 +11,7 @@
|
||||
<div class="flex flex-col justify-center">
|
||||
<div class="text-6xl md:text-2xl font-bold text-amber-500 mb-2"
|
||||
style="text-shadow: 2px 2px 0px white, -2px -2px 0px white, 2px -2px 0px white, -2px 2px 0px white;">
|
||||
L🪶LLMS
|
||||
L🌟LLMS
|
||||
</div>
|
||||
<p class="text-gray-400 text-sm">One tool to rule them all</p>
|
||||
</div>
|
||||
|
@ -11,7 +11,7 @@
|
||||
</div>
|
||||
<div class="flex flex-col items-start">
|
||||
<h1 class="text-6xl font-bold text-transparent bg-clip-text bg-gradient-to-r from-indigo-600 to-purple-600 dark:from-indigo-400 dark:to-purple-400">
|
||||
L🪶LLMS
|
||||
L🌟LLMS
|
||||
</h1>
|
||||
<p class="text-2xl text-gray-600 dark:text-gray-300 italic mt-2">
|
||||
Lord of Large Language And Multimodal Systems
|
||||
@ -21,14 +21,14 @@
|
||||
|
||||
<div class="space-y-8 animate-fade-in-up">
|
||||
<h2 class="text-4xl font-semibold text-gray-800 dark:text-gray-200">
|
||||
Welcome to L🪶LLMS WebUI
|
||||
Welcome to L🌟LLMS WebUI
|
||||
</h2>
|
||||
<p class="text-xl text-gray-600 dark:text-gray-300 max-w-3xl mx-auto">
|
||||
Embark on a journey through the realm of advanced AI with L🪶LLMS, your ultimate companion for intelligent conversations and multimodal interactions. Unleash the power of large language models and explore new frontiers in artificial intelligence.
|
||||
Embark on a journey through the realm of advanced AI with L🌟LLMS, your ultimate companion for intelligent conversations and multimodal interactions. Unleash the power of large language models and explore new frontiers in artificial intelligence.
|
||||
</p>
|
||||
<div class="mt-12 space-y-6">
|
||||
<p class="text-lg text-gray-700 dark:text-gray-300">
|
||||
Discover the capabilities of L🪶LLMS:
|
||||
Discover the capabilities of L🌟LLMS:
|
||||
</p>
|
||||
<ul class="text-left list-disc list-inside text-gray-600 dark:text-gray-300 space-y-2">
|
||||
<li>Engage in natural language conversations</li>
|
||||
|
@ -48,6 +48,7 @@ export const store = createStore({
|
||||
client_id:"",
|
||||
// count: 0,
|
||||
leftPanelCollapsed: false, // Default value
|
||||
rightPanelCollapsed: true, // Default value
|
||||
view_mode: localStorage.getItem('lollms_webui_view_mode') || 'compact', // Default value
|
||||
yesNoDialog:null,
|
||||
universalForm:null,
|
||||
@ -90,6 +91,11 @@ export const store = createStore({
|
||||
console.log(`Saving the status of left panel to ${status}`)
|
||||
localStorage.setItem('lollms_webui_left_panel_collapsed', status); // Sync with localStorage
|
||||
},
|
||||
setRightPanelCollapsed(state, status) {
|
||||
state.rightPanelCollapsed = status;
|
||||
console.log(`Saving the status of right panel to ${status}`)
|
||||
localStorage.setItem('lollms_webui_right_panel_collapsed', status); // Sync with localStorage
|
||||
},
|
||||
|
||||
setViewMode(state, mode) {
|
||||
state.view_mode = mode;
|
||||
@ -176,6 +182,9 @@ export const store = createStore({
|
||||
getLeftPanelCollapsed(state) {
|
||||
return state.leftPanelCollapsed;
|
||||
},
|
||||
getRightPanelCollapsed(state) {
|
||||
return state.rightPanelCollapsed;
|
||||
},
|
||||
getViewMode(state){
|
||||
return state.view_mode;
|
||||
},
|
||||
|
@ -10,7 +10,7 @@
|
||||
animationDuration: `${3 + Math.random() * 7}s`,
|
||||
animationDelay: `${Math.random() * 5}s`
|
||||
}">
|
||||
🪶
|
||||
🌟
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
<div class="mb-8 w-full">
|
||||
<div class="text-6xl md:text-7xl font-bold text-amber-500 mb-2"
|
||||
style="text-shadow: 2px 2px 0px white, -2px -2px 0px white, 2px -2px 0px white, -2px 2px 0px white;">
|
||||
L🪶LLMS
|
||||
L🌟LLMS
|
||||
</div>
|
||||
|
||||
<p class="text-2xl text-gray-600 dark:text-gray-300 italic">
|
||||
@ -32,7 +32,7 @@
|
||||
</p>
|
||||
|
||||
<div class="w-full h-24 relative overflow-hidden bg-gradient-to-r from-blue-200 to-purple-200 dark:from-blue-800 dark:to-purple-800 rounded-full shadow-lg flex items-center justify-center">
|
||||
<p style="font-size: 48px; line-height: 1;">🪶</p>
|
||||
<p style="font-size: 48px; line-height: 1;">🌟</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -50,25 +50,14 @@
|
||||
</div>
|
||||
</div>
|
||||
</transition>
|
||||
<!-- Robot SVG -->
|
||||
<button v-if="isReady" @click.stop="triggerRobotAction()" class="absolute z-50 bottom-20 right-2 p-3 bg-white bg-opacity-10 rounded-full cursor-pointer transition-all duration-300 hover:scale-110 hover:bg-opacity-20 animate-pulse shadow-lg hover:shadow-xl group">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-10 h-10 text-blue-500 transition-colors duration-300 group-hover:text-yellow-400">
|
||||
<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect>
|
||||
<circle cx="12" cy="5" r="2"></circle>
|
||||
<path d="M12 7v4"></path>
|
||||
<line x1="8" y1="16" x2="8" y2="16"></line>
|
||||
<line x1="16" y1="16" x2="16" y2="16"></line>
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<transition name="slide-right">
|
||||
<div v-if="showLeftPanel"
|
||||
class="relative flex flex-col no-scrollbar shadow-lg min-w-[12rem] max-w-[12rem] unicolor-panels-color dark:bg-bg-dark-tone"
|
||||
class="relative flex flex-col no-scrollbar shadow-lg min-w-[12rem] max-w-[12rem]"
|
||||
>
|
||||
<!-- LEFT SIDE PANEL -->
|
||||
<div id="leftPanel" class="flex flex-col flex-grow overflow-y-scroll no-scrollbar "
|
||||
@dragover.stop.prevent="setDropZoneDiscussion()">
|
||||
<div class="toolbar">
|
||||
<div class="toolbar discussion">
|
||||
<!-- Toolbar container -->
|
||||
<div class="toolbar-container">
|
||||
<!-- "+" button -->
|
||||
@ -92,61 +81,87 @@
|
||||
</button>
|
||||
|
||||
<!-- Expandable menu -->
|
||||
<div class="expandable-menu z-50" :class="{ 'menu-visible': isMenuVisible }">
|
||||
<!-- Menu items -->
|
||||
<button class="text-2xl hover:text-secondary duration-75 active:scale-90" title="Edit discussion list" type="button" @click="isCheckbox = !isCheckbox" :class="isCheckbox ? 'text-secondary' : ''">
|
||||
<i data-feather="check-square"></i>
|
||||
</button> <button class="text-2xl hover:text-secondary duration-75 active:scale-90" title="Reset database, remove all discussions" @click.stop="">
|
||||
<i data-feather="trash-2"></i>
|
||||
</button>
|
||||
<button class="text-2xl hover:text-secondary duration-75 active:scale-90" title="Export database" type="button" @click.stop="database_selectorDialogVisible=true">
|
||||
<i data-feather="database"></i>
|
||||
</button>
|
||||
<input type="file" ref="fileDialog" style="display: none" @change="importDiscussions" />
|
||||
<button class="text-2xl hover:text-secondary duration-75 active:scale-90 rotate-90" title="Import discussions" type="button" @click.stop="$refs.fileDialog.click()">
|
||||
<i data-feather="log-in"></i>
|
||||
</button>
|
||||
<input type="file" ref="bundleLoadingDialog" style="display: none" @change="importDiscussionsBundle" />
|
||||
<button v-if="!showSaveConfirmation" title="Import discussion bundle" @click.stop="$refs.bundleLoadingDialog.click()" class="text-2xl hover:text-secondary duration-75 active:scale-90">
|
||||
<i data-feather="folder"></i>
|
||||
</button>
|
||||
<div v-if="isOpen" class="flex flex-col space-y-2">
|
||||
<button @click="importDiscussions" class="text-sm hover:text-secondary">LOLLMS</button>
|
||||
<button @click="importChatGPT" class="text-sm hover:text-secondary">ChatGPT</button>
|
||||
<div class="expandable-menu z-50 p-4 bg-white dark:bg-gray-800 rounded-lg shadow-lg" :class="{ 'menu-visible': isMenuVisible }">
|
||||
<div class="grid grid-cols-4 gap-4">
|
||||
<!-- Edit discussion list -->
|
||||
<button class="text-3xl hover:text-secondary dark:hover:text-secondary-light duration-150 active:scale-95" title="Edit discussion list" type="button" @click="isCheckbox = !isCheckbox" :class="isCheckbox ? 'text-secondary dark:text-secondary-light' : 'text-gray-700 dark:text-gray-300'">
|
||||
<i data-feather="check-square"></i>
|
||||
</button>
|
||||
|
||||
<!-- Reset database -->
|
||||
<button class="text-3xl hover:text-red-500 dark:hover:text-red-400 duration-150 active:scale-95" title="Reset database, remove all discussions" @click.stop="">
|
||||
<i data-feather="trash-2"></i>
|
||||
</button>
|
||||
|
||||
<!-- Export database -->
|
||||
<button class="text-3xl hover:text-secondary dark:hover:text-secondary-light duration-150 active:scale-95" title="Export database" type="button" @click.stop="database_selectorDialogVisible=true">
|
||||
<i data-feather="database"></i>
|
||||
</button>
|
||||
|
||||
<!-- Import discussions -->
|
||||
<input type="file" ref="fileDialog" class="hidden" @change="importDiscussions" />
|
||||
<button class="text-3xl hover:text-secondary dark:hover:text-secondary-light duration-150 active:scale-95 rotate-90" title="Import discussions" type="button" @click.stop="$refs.fileDialog.click()">
|
||||
<i data-feather="log-in"></i>
|
||||
</button>
|
||||
|
||||
<!-- Import discussion bundle -->
|
||||
<input type="file" ref="bundleLoadingDialog" class="hidden" @change="importDiscussionsBundle" />
|
||||
<button v-if="!showSaveConfirmation" title="Import discussion bundle" @click.stop="$refs.bundleLoadingDialog.click()" class="text-3xl hover:text-secondary dark:hover:text-secondary-light duration-150 active:scale-95">
|
||||
<i data-feather="folder"></i>
|
||||
</button>
|
||||
|
||||
<!-- Filter discussions -->
|
||||
<button class="text-3xl hover:text-secondary dark:hover:text-secondary-light duration-150 active:scale-95" title="Filter discussions" type="button" @click="isSearch = !isSearch" :class="isSearch ? 'text-secondary dark:text-secondary-light' : 'text-gray-700 dark:text-gray-300'">
|
||||
<i data-feather="search"></i>
|
||||
</button>
|
||||
|
||||
<!-- Add to skills database -->
|
||||
<button v-if="!loading" type="button" @click.stop="addDiscussion2SkillsLibrary" title="Add this discussion content to skills database" class="text-3xl hover:text-secondary dark:hover:text-secondary-light duration-150 active:scale-95">
|
||||
<i data-feather="hard-drive"></i>
|
||||
</button>
|
||||
|
||||
<!-- Toggle skills database -->
|
||||
<button v-if="!loading && $store.state.config.activate_skills_lib" type="button" @click.stop="toggleSkillsLib" title="Skills database is activated" class="text-3xl hover:text-secondary dark:hover:text-secondary-light duration-150 active:scale-95">
|
||||
<i data-feather="check-circle"></i>
|
||||
</button>
|
||||
<button v-if="!loading && !$store.state.config.activate_skills_lib" type="button" @click.stop="toggleSkillsLib" title="Skills database is deactivated" class="text-3xl hover:text-secondary dark:hover:text-secondary-light duration-150 active:scale-95">
|
||||
<i data-feather="x-octagon"></i>
|
||||
</button>
|
||||
|
||||
<!-- Show skills database -->
|
||||
<button v-if="!loading" type="button" @click.stop="showSkillsLib" title="Show Skills database" class="text-3xl hover:text-secondary dark:hover:text-secondary-light duration-150 active:scale-95">
|
||||
<i data-feather="book"></i>
|
||||
</button>
|
||||
</div>
|
||||
<button class="text-2xl hover:text-secondary duration-75 active:scale-90" title="Filter discussions" type="button" @click="isSearch = !isSearch" :class="isSearch ? 'text-secondary' : ''">
|
||||
<i data-feather="search"></i>
|
||||
</button>
|
||||
<div v-if="showSaveConfirmation" class="flex flex-col space-y-2">
|
||||
<button class="text-2xl hover:text-red-600 duration-75 active:scale-90" title="Cancel" type="button" @click.stop="showSaveConfirmation = false">
|
||||
<i data-feather="x"></i>
|
||||
</button>
|
||||
<button class="text-2xl hover:text-secondary duration-75 active:scale-90" title="Confirm save changes" type="button" @click.stop="save_configuration()">
|
||||
<i data-feather="check"></i>
|
||||
</button>
|
||||
</div>
|
||||
<button v-if="!loading" type="button" @click.stop="addDiscussion2SkillsLibrary" title="Add this discussion content to skills database" class="text-2xl hover:text-secondary duration-75 active:scale-90">
|
||||
<i data-feather="hard-drive"></i>
|
||||
</button>
|
||||
<button v-if="!loading && $store.state.config.activate_skills_lib" type="button" @click.stop="toggleSkillsLib" title="Skills database is activated" class="text-2xl hover:text-secondary duration-75 active:scale-90">
|
||||
<i data-feather="check-circle"></i>
|
||||
</button>
|
||||
<button v-if="!loading && !$store.state.config.activate_skills_lib" type="button" @click.stop="toggleSkillsLib" title="Skills database is deactivated" class="text-2xl hover:text-secondary duration-75 active:scale-90">
|
||||
<i data-feather="x-octagon"></i>
|
||||
</button>
|
||||
<button v-if="!loading" type="button" @click.stop="showSkillsLib" title="Show Skills database" class="text-2xl hover:text-secondary duration-75 active:scale-90">
|
||||
<i data-feather="book"></i>
|
||||
</button>
|
||||
<div v-if="loading" title="Loading.." class="flex justify-center">
|
||||
<div role="status">
|
||||
<svg aria-hidden="true" class="w-6 h-6 animate-spin fill-secondary" viewBox="0 0 100 101" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z" fill="currentColor" />
|
||||
<path d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z" fill="currentFill" />
|
||||
|
||||
<!-- Loading spinner -->
|
||||
<div v-if="loading" title="Loading.." class="flex justify-center mt-4">
|
||||
<div role="status">
|
||||
<svg aria-hidden="true" class="w-8 h-8 animate-spin fill-secondary dark:fill-secondary-light" viewBox="0 0 100 101" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z" fill="currentColor" />
|
||||
<path d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z" fill="currentFill" />
|
||||
</svg>
|
||||
<span class="sr-only">Loading...</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Save confirmation -->
|
||||
<div v-if="showSaveConfirmation" class="flex justify-center mt-4 space-x-4">
|
||||
<button class="text-3xl hover:text-red-500 dark:hover:text-red-400 duration-150 active:scale-95" title="Cancel" type="button" @click.stop="showSaveConfirmation = false">
|
||||
<i data-feather="x"></i>
|
||||
</button>
|
||||
<button class="text-3xl hover:text-green-500 dark:hover:text-green-400 duration-150 active:scale-95" title="Confirm save changes" type="button" @click.stop="save_configuration()">
|
||||
<i data-feather="check"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Import options -->
|
||||
<div v-if="isOpen" class="flex flex-col space-y-2 mt-4">
|
||||
<button @click="importDiscussions" class="text-sm hover:text-secondary dark:hover:text-secondary-light">LOLLMS</button>
|
||||
<button @click="importChatGPT" class="text-sm hover:text-secondary dark:hover:text-secondary-light">ChatGPT</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Search bar -->
|
||||
<div v-if="isSearch" class="absolute top-0 left-12 w-64 p-4 bg-bg-light dark:bg-bg-dark">
|
||||
@ -546,29 +561,20 @@ animation: custom-pulse 2s infinite;
|
||||
|
||||
|
||||
.toolbar {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
@apply relative w-full;
|
||||
}
|
||||
|
||||
.toolbar-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background-color: #f0f0f0;
|
||||
height: 40px; /* Adjust the height as needed */
|
||||
}
|
||||
.toolbar-container {
|
||||
@apply flex items-center h-10; /* h-10 is equivalent to 40px */
|
||||
}
|
||||
|
||||
.toolbar-button {
|
||||
background: none;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
padding: 8px;
|
||||
color: #333;
|
||||
transition: color 0.3s;
|
||||
}
|
||||
.toolbar-button {
|
||||
@apply bg-transparent border-none cursor-pointer p-2 transition-colors duration-300;
|
||||
}
|
||||
|
||||
.toolbar-button:hover {
|
||||
color: #007bff;
|
||||
}
|
||||
.toolbar-button:hover {
|
||||
@apply text-blue-500; /* Assuming #007bff is close to Tailwind's blue-500 */
|
||||
}
|
||||
|
||||
.menu-container {
|
||||
position: relative;
|
||||
@ -761,7 +767,6 @@ export default {
|
||||
database_selectorDialogVisible:false,
|
||||
isDragOverDiscussion: false,
|
||||
isDragOverChat: false,
|
||||
rightPanelCollapsed: true, // right panel
|
||||
isOpen: false,
|
||||
discussion_id: 0,
|
||||
}
|
||||
@ -1937,14 +1942,14 @@ export default {
|
||||
if (item) {
|
||||
if (item.id) {
|
||||
const realTitle = item.title ? item.title === "untitled" ? "New discussion" : item.title : "New discussion"
|
||||
document.title = 'L🪶LLMS WebUI - ' + realTitle
|
||||
document.title = 'L🌟LLMS WebUI - ' + realTitle
|
||||
} else {
|
||||
const title = item || "Welcome"
|
||||
document.title = 'L🪶LLMS WebUI - ' + title
|
||||
document.title = 'L🌟LLMS WebUI - ' + title
|
||||
}
|
||||
} else {
|
||||
const title = item || "Welcome"
|
||||
document.title = 'L🪶LLMS WebUI - ' + title
|
||||
document.title = 'L🌟LLMS WebUI - ' + title
|
||||
}
|
||||
|
||||
},
|
||||
@ -2707,8 +2712,10 @@ export default {
|
||||
return this.$store.state.ready && !this.$store.state.leftPanelCollapsed;
|
||||
},
|
||||
showRightPanel() {
|
||||
return this.$store.state.ready && !this.rightPanelCollapsed;
|
||||
},
|
||||
console.log("showRightPanel")
|
||||
console.log(this.$store.state.rightPanelCollapsed)
|
||||
return this.$store.state.ready && !this.$store.state.rightPanelCollapsed;
|
||||
},
|
||||
socketConnected() {
|
||||
console.log(" --- > Websocket connected")
|
||||
this.$store.commit('setIsConnected', true);
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 00a08dcd830e501d0c2ce5b7c15ebe7996ecbac9
|
||||
Subproject commit dbf465af36302d4d8ecfb7f86332062006f5d2eb
|
Loading…
x
Reference in New Issue
Block a user