Enhanced Welcome ui

This commit is contained in:
Saifeddine ALOUI 2024-07-31 02:18:16 +02:00
parent 371a297eb4
commit 981323eb26
7 changed files with 227 additions and 135 deletions

@ -1 +1 @@
Subproject commit 208f57b1d71b2209543598b8bceafab1a336725f
Subproject commit ccf237faba17935efd1e8ecbbf12f494c837333b

8
web/dist/assets/index-c6c58977.css vendored Normal file

File diff suppressed because one or more lines are too long

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
View File

@ -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-9bc65a8f.js"></script>
<link rel="stylesheet" href="/assets/index-cac66727.css">
<script type="module" crossorigin src="/assets/index-fe749e52.js"></script>
<link rel="stylesheet" href="/assets/index-c6c58977.css">
</head>
<body>
<div id="app"></div>

View File

@ -1,43 +1,103 @@
<template>
<!-- DEFAULT FIRST PAGE LOAD VIEW -->
<div class="flex flex-col text-center w-full h-full">
<div class="flex flex-col text-center items-center">
<div class="flex items-center gap-3 text-5xl drop-shadow-md align-middle pt-24 ">
<img class="w-12 hover:scale-95 duration-150" title="LoLLMS WebUI" :src="$store.state.config==null?storeLogo:$store.state.config.app_custom_logo!=''?'/user_infos/'+$store.state.config.app_custom_logo: storeLogo" alt="Logo">
<div class="flex flex-col items-start">
<p class="text-2xl ">LoLLMS</p>
<p class="text-gray-400 text-base">One tool to rule them all</p>
</div>
</div>
<hr
class=" mt-1 w-96 h-1 mx-auto my-2 md:my-2 dark:bg-bg-dark-tone-panel bg-bg-light-tone-panel border-0 rounded ">
<p class="text-2xl">Welcome</p>
<p class="text-lg ">Please create a new discussion or select existing one to start</p>
<div class="flex flex-col items-center justify-center w-full h-full bg-gradient-to-br from-blue-100 to-purple-100 dark:from-blue-900 dark:to-purple-900">
<div class="text-center">
<div class="flex items-center justify-center gap-4 mb-8">
<div class="relative w-20 h-80">
<img
:src="logoSrc"
alt="LoLLMS Logo"
class="w-20 h-20 rounded-full absolute animate-ball-bounce"
>
</div>
<div class="flex flex-col items-start">
<h1 class="text-5xl font-bold text-transparent bg-clip-text bg-gradient-to-r from-blue-600 to-purple-600 dark:from-blue-400 dark:to-purple-400">
LoLLMS
</h1>
<p class="text-xl text-gray-600 dark:text-gray-300 italic">
One tool to rule them all
</p>
</div>
</div>
<div class="space-y-6 animate-fade-in-up">
<h2 class="text-3xl font-semibold text-gray-800 dark:text-gray-200">
Welcome to LoLLMS WebUI
</h2>
<p class="text-xl text-gray-600 dark:text-gray-300">
Your gateway to powerful language models and intelligent conversations
</p>
<div class="flex justify-center space-x-4 mt-8">
<button class="px-6 py-3 text-white bg-blue-600 rounded-full hover:bg-blue-700 transform hover:scale-105 transition-all duration-200 ease-in-out shadow-lg">
Create New Discussion
</button>
<button class="px-6 py-3 text-blue-600 bg-white border-2 border-blue-600 rounded-full hover:bg-blue-50 transform hover:scale-105 transition-all duration-200 ease-in-out shadow-lg">
Select Existing Discussion
</button>
</div>
</div>
</div>
</div>
</template>
<script>
import storeLogo from '@/assets/logo.png'
export default {
</template>
<script>
import { ref, computed } from 'vue'
import { useStore } from 'vuex'
import storeLogo from '@/assets/logo.png'
export default {
name: 'WelcomeComponent',
computed:{
storeLogo(){
if (this.$store.state.config){
return storeLogo
}
return this.$store.state.config.app_custom_logo!=''?'/user_infos/'+this.$store.state.config.app_custom_logo:storeLogo
},
},
data(){
},
setup() {
return {}
const store = useStore()
const logoSrc = computed(() => {
if (!store.state.config) return storeLogo
return store.state.config.app_custom_logo
? `/user_infos/${store.state.config.app_custom_logo}`
: storeLogo
})
return {
logoSrc
}
}
}
</script>
}
</script>
<style scoped>
@keyframes ball-bounce {
0%, 100% {
transform: translateY(0) rotate(0deg);
animation-timing-function: ease-out;
}
25% { transform: translateY(-120px) rotate(90deg); }
50% { transform: translateY(-160px) rotate(180deg); }
75% { transform: translateY(-40px) rotate(270deg); }
85%, 95% {
transform: translateY(0) rotate(360deg);
animation-timing-function: ease-in;
}
90%, 97% {
transform: translateY(-20px) rotate(360deg);
animation-timing-function: ease-out;
}
}
@keyframes fade-in-up {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-ball-bounce {
animation: ball-bounce 4s infinite;
}
.animate-fade-in-up {
animation: fade-in-up 1s ease-out;
}
</style>

View File

@ -1,33 +1,44 @@
<template>
<transition name="fade-and-fly">
<div v-if="!isReady" class="fixed top-0 left-0 w-screen h-screen flex items-center justify-center">
<!-- SPINNER -->
<div class="flex flex-col text-center">
<div class="flex flex-col text-center items-center">
<div class="flex items-center gap-3 text-5xl drop-shadow-md align-middle pt-24 ">
<img class="w-24 animate-bounce" title="LoLLMS WebUI" src="@/assets/logo.png" alt="Logo">
<div class="flex flex-col items-start">
<p class="text-2xl font-bold text-5xl drop-shadow-md align-middle">LoLLMS {{ version_info }} </p>
<p class="text-gray-400 text-base">One tool to rule them all</p>
<p class="text-gray-400 text-base">by ParisNeo</p>
<div v-if="!isReady" class="fixed top-0 left-0 w-screen h-screen flex items-center justify-center bg-gradient-to-br from-blue-100 to-purple-100 dark:from-blue-900 dark:to-purple-900">
<div class="flex flex-col items-center text-center max-w-4xl w-full px-4">
<div class="mb-8 w-full">
<h1 class="text-5xl md:text-6xl font-bold text-transparent bg-clip-text bg-gradient-to-r from-blue-600 to-purple-600 dark:from-blue-400 dark:to-purple-400 mb-2">
LoLLMS {{ version_info }}
</h1>
<p class="text-2xl text-gray-600 dark:text-gray-300 italic">
One tool to rule them all
</p>
<p class="text-xl text-gray-500 dark:text-gray-400 mb-6">
by ParisNeo
</p>
</div>
<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">
<img
class="w-24 h-24 rounded-full absolute top-0 transition-all duration-300 ease-linear"
:style="{ left: `calc(${loading_progress}% - 3rem)` }"
title="LoLLMS WebUI"
src="@/assets/logo.png"
alt="Logo"
>
</div>
<hr class=" mt-1 w-96 h-1 mx-auto my-2 md:my-2 dark:bg-bg-dark-tone-panel bg-bg-light-tone-panel border-0 rounded ">
<p class="text-2xl mb-10 font-bold drop-shadow-md ">Welcome</p>
<div role="status" class="text-center w-full display: flex; flex-row align-items: center;">
<ProgressBar ref="loading_progress" :progress="loading_progress"></ProgressBar>
<p class="text-2xl animate-pulse mt-2"> {{ loading_infos }} ...</p>
</div>
</div>
</div>
</div>
<div class="w-full max-w-2xl">
<h2 class="text-3xl font-semibold text-gray-800 dark:text-gray-200 mb-6">
Welcome
</h2>
<div role="status" class="w-full">
<p class="text-xl text-gray-700 dark:text-gray-300">
{{ loading_infos }}...
</p>
<p class="text-2xl font-bold text-blue-600 dark:text-blue-400 mt-2">
{{ Math.round(loading_progress) }}%
</p>
</div>
</div>
</div>
</div>
</transition>
<button v-if="isReady" @click="togglePanel" class="absolute top-2 left-2 p-3 bg-white bg-opacity-0 cursor-pointer transition-all duration-300 hover:scale-110 hover:bg-opacity-20 hover:shadow-xl group">
@ -455,6 +466,27 @@ animation: custom-pulse 2s infinite;
.list-leave-active {
position: absolute;
}
@keyframes float {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-10px); }
}
.animate-float {
animation: float 3s ease-in-out infinite;
}
@keyframes roll {
0% {
transform: translateX(-50%) rotate(0deg);
}
100% {
transform: translateX(50%) rotate(360deg);
}
}
.animate-roll {
animation: roll 4s linear infinite;
}
</style>
<script>
import SVGRedBrain from '@/assets/brain_red.svg';