mirror of https://github.com/Lukibeg/OmniBoard.git
Compare commits
No commits in common. "ccbd343127f675432e41dcace17f32b660524de2" and "80a4731cd0fdddcf9a08c23eeb1ba9650fbcc8eb" have entirely different histories.
ccbd343127
...
80a4731cd0
|
|
@ -3,7 +3,6 @@ APP_ENV=local
|
||||||
APP_KEY=
|
APP_KEY=
|
||||||
APP_DEBUG=true
|
APP_DEBUG=true
|
||||||
APP_URL=http://localhost
|
APP_URL=http://localhost
|
||||||
APP_TIMEZONE=America/Sao_Paulo
|
|
||||||
|
|
||||||
APP_LOCALE=en
|
APP_LOCALE=en
|
||||||
APP_FALLBACK_LOCALE=en
|
APP_FALLBACK_LOCALE=en
|
||||||
|
|
@ -43,7 +42,7 @@ SESSION_DOMAIN=null
|
||||||
|
|
||||||
BROADCAST_CONNECTION=log
|
BROADCAST_CONNECTION=log
|
||||||
FILESYSTEM_DISK=local
|
FILESYSTEM_DISK=local
|
||||||
QUEUE_CONNECTION=redis
|
QUEUE_CONNECTION=database
|
||||||
|
|
||||||
CACHE_STORE=database
|
CACHE_STORE=database
|
||||||
# CACHE_PREFIX=
|
# CACHE_PREFIX=
|
||||||
|
|
|
||||||
|
|
@ -23,5 +23,11 @@ public function run(): void
|
||||||
'email' => 'admin@omniboard.com',
|
'email' => 'admin@omniboard.com',
|
||||||
'password' => bcrypt('password'), // A senha será 'password'
|
'password' => bcrypt('password'), // A senha será 'password'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
User::factory()->create([
|
||||||
|
'name' => 'Test User',
|
||||||
|
'email' => 'test@example.com',
|
||||||
|
]);
|
||||||
|
$this->call([OmniBoardSeeder::class]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,53 +1,3 @@
|
||||||
@tailwind base;
|
@tailwind base;
|
||||||
@tailwind components;
|
@tailwind components;
|
||||||
@tailwind utilities;
|
@tailwind utilities;
|
||||||
|
|
||||||
|
|
||||||
/* Animações para a página de welcome */
|
|
||||||
@keyframes float {
|
|
||||||
0% {
|
|
||||||
transform: translateY(0px);
|
|
||||||
}
|
|
||||||
|
|
||||||
50% {
|
|
||||||
transform: translateY(-15px);
|
|
||||||
}
|
|
||||||
|
|
||||||
100% {
|
|
||||||
transform: translateY(0px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes slide-up {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateY(20px);
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.animate-float {
|
|
||||||
animation: float 6s ease-in-out infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
.animate-slide-up {
|
|
||||||
animation: slide-up 0.8s ease-out forwards;
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delay-100 {
|
|
||||||
animation-delay: 0.1s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delay-200 {
|
|
||||||
animation-delay: 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delay-300 {
|
|
||||||
animation-delay: 0.3s;
|
|
||||||
}
|
|
||||||
/* Fim das animações */
|
|
||||||
|
|
@ -10,13 +10,17 @@ const props = defineProps({
|
||||||
const page = usePage();
|
const page = usePage();
|
||||||
const userTenantId = page.props.auth.user.tenant_id;
|
const userTenantId = page.props.auth.user.tenant_id;
|
||||||
|
|
||||||
|
// Variável para guardar a inscrição do canal
|
||||||
let channel = null;
|
let channel = null;
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
if (userTenantId) {
|
if (userTenantId) {
|
||||||
|
// Verifica se o Echo já está carregado
|
||||||
if (window.Echo) {
|
if (window.Echo) {
|
||||||
connectToChannel();
|
connectToChannel();
|
||||||
} else {
|
} else {
|
||||||
|
// Se não, espera um pouco e tenta de novo (Fallback simples)
|
||||||
|
// Ou melhor: escuta o evento de carregamento, mas o setInterval é mais prático aqui
|
||||||
const checkEcho = setInterval(() => {
|
const checkEcho = setInterval(() => {
|
||||||
if (window.Echo) {
|
if (window.Echo) {
|
||||||
clearInterval(checkEcho);
|
clearInterval(checkEcho);
|
||||||
|
|
@ -37,6 +41,7 @@ const connectToChannel = () => {
|
||||||
})
|
})
|
||||||
.error((err) => {
|
.error((err) => {
|
||||||
console.error("❌ Erro de Conexão/Auth:", err);
|
console.error("❌ Erro de Conexão/Auth:", err);
|
||||||
|
// Dica: Se o erro for detalhado, ele vai aparecer aqui.
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,16 +19,65 @@
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* Animações Suaves */
|
||||||
|
@keyframes float {
|
||||||
|
0% {
|
||||||
|
transform: translateY(0px);
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
transform: translateY(-15px);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translateY(0px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes slide-up {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(20px);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-float {
|
||||||
|
animation: float 6s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-slide-up {
|
||||||
|
animation: slide-up 0.8s ease-out forwards;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delay-100 {
|
||||||
|
animation-delay: 0.1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delay-200 {
|
||||||
|
animation-delay: 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delay-300 {
|
||||||
|
animation-delay: 0.3s;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
||||||
<Head title="OmniBoard - Dashboard Inteligente" />
|
<Head title="OmniBoard - Dashboard Inteligente" />
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="min-h-screen flex flex-col bg-gray-50 text-slate-800 selection:bg-blue-100 selection:text-blue-900 overflow-hidden relative font-sans">
|
class="min-h-screen bg-gray-50 text-slate-800 selection:bg-blue-100 selection:text-blue-900 overflow-hidden relative font-sans">
|
||||||
|
|
||||||
<div class="absolute top-0 left-0 w-full h-full overflow-hidden z-0 pointer-events-none">
|
<div class="absolute top-0 left-0 w-full h-full overflow-hidden z-0 pointer-events-none">
|
||||||
<div class="absolute -top-[10%] -right-[5%] w-[40%] h-[40%] bg-blue-200/40 rounded-full blur-[100px]">
|
<div class="absolute -top-[10%] -right-[5%] w-[40%] h-[40%] bg-blue-200/40 rounded-full blur-[100px]"></div>
|
||||||
</div>
|
|
||||||
<div class="absolute top-[30%] -left-[10%] w-[30%] h-[30%] bg-purple-200/40 rounded-full blur-[100px]">
|
<div class="absolute top-[30%] -left-[10%] w-[30%] h-[30%] bg-purple-200/40 rounded-full blur-[100px]">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -217,7 +266,7 @@
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<footer class="relative z-10 mt-auto border-t border-gray-100 py-8 text-center text-slate-400 text-sm bg-white">
|
<footer class="relative z-10 border-t border-gray-100 py-8 text-center text-slate-400 text-sm bg-white">
|
||||||
<p>Ingline Systems © 2025. Monitoramento Profissional.</p>
|
<p>Ingline Systems © 2025. Monitoramento Profissional.</p>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue