- Backend: Implementada lógica de importação de Agenda (Upsert) em `internal/agenda`. - Backend: Criadas queries SQL para busca de FOT e Tipos de Evento. - Frontend: Adicionada aba de Importação de Agenda em `ImportData.tsx`. - Frontend: Implementado Parser de Excel para Agenda com tratamento de datas. - UX: Adicionada Barra de Rolagem Superior Sincronizada na Tabela de Eventos. - UX: Implementado `LoadingScreen` global unificado (Auth + DataContext). - Perf: Adicionada Paginação no `EventTable` para resolver travamentos com grandes listas. - Security: Proteção de rotas de importação (RequireWriteAccess).
21 lines
931 B
TypeScript
21 lines
931 B
TypeScript
import React from 'react';
|
|
|
|
export const LoadingScreen: React.FC = () => {
|
|
return (
|
|
<div className="fixed inset-0 bg-white z-50 flex flex-col items-center justify-center">
|
|
<div className="relative w-20 h-20">
|
|
{/* Animated Rings */}
|
|
<div className="absolute inset-0 border-4 border-gray-100 rounded-full"></div>
|
|
<div className="absolute inset-0 border-4 border-brand-gold rounded-full border-t-transparent animate-spin"></div>
|
|
|
|
{/* Logo or Icon in Center */}
|
|
<div className="absolute inset-0 flex items-center justify-center">
|
|
<div className="w-8 h-8 bg-brand-black rounded-sm transform rotate-45 flex items-center justify-center">
|
|
<div className="w-3 h-3 bg-white rounded-full"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<p className="mt-4 text-gray-500 text-sm font-medium animate-pulse">Carregando...</p>
|
|
</div>
|
|
);
|
|
};
|