gallabs's picture
Add 3 files
fd28fc5 verified
<!DOCTYPE html>
<html lang="pt-BR" class="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TOM System - Compras</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script>
tailwind.config = {
darkMode: 'class',
theme: {
extend: {
colors: {
primary: {
50: '#f0f9ff',
100: '#e0f2fe',
200: '#bae6fd',
300: '#7dd3fc',
400: '#38bdf8',
500: '#0ea5e9',
600: '#0284c7',
700: '#0369a1',
800: '#075985',
900: '#0c4a6e',
},
dark: {
900: '#0f172a',
800: '#1e293b',
700: '#334155',
600: '#475569',
500: '#64748b',
}
}
}
}
}
</script>
<style>
.sidebar-collapsed {
width: 80px;
}
.sidebar-collapsed .sidebar-item-text {
display: none;
}
.sidebar-collapsed .logo-text {
display: none;
}
.sidebar-collapsed .sidebar-item {
justify-content: center;
}
.sidebar-collapsed .user-info {
display: none;
}
.sidebar-collapsed .toggle-sidebar {
left: 25px;
}
.fade-in {
animation: fadeIn 0.3s ease-in-out;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
.card-hover:hover {
transform: translateY(-5px);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}
.transition-all {
transition: all 0.3s ease;
}
</style>
</head>
<body class="bg-gray-900 text-gray-100 min-h-screen flex">
<!-- Sidebar -->
<div id="sidebar" class="bg-gray-800 text-white w-64 min-h-screen flex flex-col transition-all duration-300 fixed z-10">
<div class="p-4 flex items-center space-x-3 border-b border-gray-700">
<div class="bg-blue-600 p-2 rounded-lg">
<i class="fas fa-shopping-cart text-white text-xl"></i>
</div>
<span class="logo-text text-xl font-bold">TOM System</span>
</div>
<div class="p-4 border-b border-gray-700 flex items-center space-x-3">
<div class="w-10 h-10 rounded-full bg-blue-600 flex items-center justify-center">
<span class="text-white font-bold">AD</span>
</div>
<div class="user-info">
<p class="font-medium">Admin User</p>
<p class="text-gray-400 text-sm">[email protected]</p>
</div>
</div>
<div class="p-4 flex-1 overflow-y-auto">
<div class="mb-6">
<p class="text-gray-400 uppercase text-xs font-bold mb-2">Menu Principal</p>
<ul>
<li>
<a href="#" class="sidebar-item flex items-center space-x-3 p-2 rounded-lg bg-blue-900 text-white mb-1">
<i class="fas fa-tachometer-alt"></i>
<span class="sidebar-item-text">Dashboard</span>
</a>
</li>
<li>
<a href="#" class="sidebar-item flex items-center space-x-3 p-2 rounded-lg hover:bg-gray-700 mb-1">
<i class="fas fa-file-invoice-dollar"></i>
<span class="sidebar-item-text">Orçamentos</span>
</a>
</li>
<li>
<a href="#" class="sidebar-item flex items-center space-x-3 p-2 rounded-lg hover:bg-gray-700 mb-1">
<i class="fas fa-shopping-basket"></i>
<span class="sidebar-item-text">Pedidos</span>
</a>
</li>
<li>
<a href="#" class="sidebar-item flex items-center space-x-3 p-2 rounded-lg hover:bg-gray-700 mb-1">
<i class="fas fa-users"></i>
<span class="sidebar-item-text">Clientes</span>
</a>
</li>
<li>
<a href="#" class="sidebar-item flex items-center space-x-3 p-2 rounded-lg hover:bg-gray-700 mb-1">
<i class="fas fa-truck"></i>
<span class="sidebar-item-text">Fornecedores</span>
</a>
</li>
<li>
<a href="#" class="sidebar-item flex items-center space-x-3 p-2 rounded-lg hover:bg-gray-700 mb-1">
<i class="fas fa-boxes"></i>
<span class="sidebar-item-text">Produtos</span>
</a>
</li>
</ul>
</div>
<div class="mb-6">
<p class="text-gray-400 uppercase text-xs font-bold mb-2">Administrativo</p>
<ul>
<li>
<a href="#" class="sidebar-item flex items-center space-x-3 p-2 rounded-lg hover:bg-gray-700 mb-1">
<i class="fas fa-user-shield"></i>
<span class="sidebar-item-text">Usuários</span>
</a>
</li>
<li>
<a href="#" class="sidebar-item flex items-center space-x-3 p-2 rounded-lg hover:bg-gray-700 mb-1">
<i class="fas fa-key"></i>
<span class="sidebar-item-text">Permissões</span>
</a>
</li>
<li>
<a href="#" class="sidebar-item flex items-center space-x-3 p-2 rounded-lg hover:bg-gray-700 mb-1">
<i class="fas fa-chart-bar"></i>
<span class="sidebar-item-text">Relatórios</span>
</a>
</li>
<li>
<a href="#" class="sidebar-item flex items-center space-x-3 p-2 rounded-lg hover:bg-gray-700 mb-1">
<i class="fas fa-cog"></i>
<span class="sidebar-item-text">Configurações</span>
</a>
</li>
</ul>
</div>
</div>
<div class="p-4 border-t border-gray-700">
<button onclick="toggleSidebar()" class="toggle-sidebar flex items-center space-x-3 p-2 rounded-lg hover:bg-gray-700 w-full">
<i class="fas fa-chevron-left"></i>
<span class="sidebar-item-text">Recolher Menu</span>
</button>
<a href="#" class="sidebar-item flex items-center space-x-3 p-2 rounded-lg hover:bg-gray-700 mt-2">
<i class="fas fa-sign-out-alt"></i>
<span class="sidebar-item-text">Sair</span>
</a>
</div>
</div>
<!-- Main Content -->
<div class="flex-1 ml-64 transition-all duration-300" id="main-content">
<!-- Top Navigation -->
<nav class="bg-gray-800 p-4 flex justify-between items-center border-b border-gray-700">
<div class="flex items-center space-x-4">
<button class="md:hidden text-gray-300 hover:text-white" onclick="toggleMobileSidebar()">
<i class="fas fa-bars"></i>
</button>
<h1 class="text-xl font-bold">Dashboard</h1>
</div>
<div class="flex items-center space-x-4">
<div class="relative">
<button class="text-gray-300 hover:text-white" onclick="toggleDropdown('notifications-dropdown')">
<i class="fas fa-bell"></i>
<span class="absolute top-0 right-0 h-2 w-2 rounded-full bg-red-500"></span>
</button>
<div id="notifications-dropdown" class="hidden absolute right-0 mt-2 w-72 bg-gray-800 rounded-lg shadow-lg border border-gray-700 z-20">
<div class="p-3 border-b border-gray-700">
<h3 class="font-bold">Notificações (3)</h3>
</div>
<div class="max-h-60 overflow-y-auto">
<a href="#" class="block p-3 hover:bg-gray-700 border-b border-gray-700">
<div class="flex items-start">
<div class="bg-blue-600 p-2 rounded-full mr-3">
<i class="fas fa-shopping-basket text-white text-sm"></i>
</div>
<div>
<p class="font-medium">Novo pedido para aprovação</p>
<p class="text-gray-400 text-sm">Pedido #1234 aguardando sua análise</p>
<p class="text-gray-500 text-xs mt-1">2 minutos atrás</p>
</div>
</div>
</a>
<a href="#" class="block p-3 hover:bg-gray-700 border-b border-gray-700">
<div class="flex items-start">
<div class="bg-green-600 p-2 rounded-full mr-3">
<i class="fas fa-check-circle text-white text-sm"></i>
</div>
<div>
<p class="font-medium">Pedido aprovado</p>
<p class="text-gray-400 text-sm">Seu pedido #1233 foi aprovado</p>
<p class="text-gray-500 text-xs mt-1">1 hora atrás</p>
</div>
</div>
</a>
<a href="#" class="block p-3 hover:bg-gray-700">
<div class="flex items-start">
<div class="bg-yellow-600 p-2 rounded-full mr-3">
<i class="fas fa-exclamation-triangle text-white text-sm"></i>
</div>
<div>
<p class="font-medium">Orçamento expirando</p>
<p class="text-gray-400 text-sm">Orçamento #1221 expira em 2 dias</p>
<p class="text-gray-500 text-xs mt-1">Ontem</p>
</div>
</div>
</a>
</div>
<div class="p-3 border-t border-gray-700">
<a href="#" class="text-blue-400 hover:text-blue-300 text-sm font-medium">Ver todas</a>
</div>
</div>
</div>
<div class="relative">
<button class="flex items-center space-x-2" onclick="toggleDropdown('profile-dropdown')">
<div class="w-8 h-8 rounded-full bg-blue-600 flex items-center justify-center">
<span class="text-white font-bold">AD</span>
</div>
<span class="hidden md:inline">Admin User</span>
<i class="fas fa-chevron-down text-xs hidden md:inline"></i>
</button>
<div id="profile-dropdown" class="hidden absolute right-0 mt-2 w-48 bg-gray-800 rounded-lg shadow-lg border border-gray-700 z-20">
<a href="#" class="block px-4 py-2 hover:bg-gray-700">Meu Perfil</a>
<a href="#" class="block px-4 py-2 hover:bg-gray-700">Configurações</a>
<div class="border-t border-gray-700"></div>
<a href="#" class="block px-4 py-2 hover:bg-gray-700 text-red-400 hover:text-red-300">Sair</a>
</div>
</div>
</div>
</nav>
<!-- Content -->
<main class="p-6">
<!-- Stats Cards -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-6">
<div class="bg-gray-800 rounded-lg p-6 shadow-lg card-hover transition-all">
<div class="flex justify-between items-start">
<div>
<p class="text-gray-400">Orçamentos</p>
<h3 class="text-2xl font-bold mt-1">1,254</h3>
<p class="text-green-400 text-sm mt-2"><i class="fas fa-arrow-up mr-1"></i> 12% este mês</p>
</div>
<div class="bg-blue-900 p-3 rounded-lg">
<i class="fas fa-file-invoice-dollar text-blue-400"></i>
</div>
</div>
</div>
<div class="bg-gray-800 rounded-lg p-6 shadow-lg card-hover transition-all">
<div class="flex justify-between items-start">
<div>
<p class="text-gray-400">Pedidos</p>
<h3 class="text-2xl font-bold mt-1">842</h3>
<p class="text-green-400 text-sm mt-2"><i class="fas fa-arrow-up mr-1"></i> 8% este mês</p>
</div>
<div class="bg-green-900 p-3 rounded-lg">
<i class="fas fa-shopping-basket text-green-400"></i>
</div>
</div>
</div>
<div class="bg-gray-800 rounded-lg p-6 shadow-lg card-hover transition-all">
<div class="flex justify-between items-start">
<div>
<p class="text-gray-400">Aprovações Pendentes</p>
<h3 class="text-2xl font-bold mt-1">23</h3>
<p class="text-red-400 text-sm mt-2"><i class="fas fa-arrow-down mr-1"></i> 5% este mês</p>
</div>
<div class="bg-yellow-900 p-3 rounded-lg">
<i class="fas fa-clock text-yellow-400"></i>
</div>
</div>
</div>
<div class="bg-gray-800 rounded-lg p-6 shadow-lg card-hover transition-all">
<div class="flex justify-between items-start">
<div>
<p class="text-gray-400">Receita Total</p>
<h3 class="text-2xl font-bold mt-1">R$ 1.2M</h3>
<p class="text-green-400 text-sm mt-2"><i class="fas fa-arrow-up mr-1"></i> 15% este mês</p>
</div>
<div class="bg-purple-900 p-3 rounded-lg">
<i class="fas fa-dollar-sign text-purple-400"></i>
</div>
</div>
</div>
</div>
<!-- Charts and Recent Activity -->
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-6">
<!-- Sales Chart -->
<div class="bg-gray-800 rounded-lg p-6 shadow-lg lg:col-span-2">
<div class="flex justify-between items-center mb-6">
<h2 class="text-lg font-bold">Desempenho Mensal</h2>
<div class="flex space-x-2">
<button class="px-3 py-1 bg-blue-900 text-blue-400 rounded-lg text-sm">Mensal</button>
<button class="px-3 py-1 bg-gray-700 hover:bg-gray-600 rounded-lg text-sm">Anual</button>
</div>
</div>
<div class="h-64">
<!-- Chart Placeholder -->
<div class="bg-gray-700 rounded-lg h-full flex items-center justify-center">
<p class="text-gray-400">Gráfico de desempenho</p>
</div>
</div>
</div>
<!-- Recent Activity -->
<div class="bg-gray-800 rounded-lg p-6 shadow-lg">
<h2 class="text-lg font-bold mb-6">Atividade Recente</h2>
<div class="space-y-4">
<div class="flex items-start">
<div class="bg-blue-600 p-2 rounded-full mr-3">
<i class="fas fa-check-circle text-white text-sm"></i>
</div>
<div>
<p class="font-medium">Pedido aprovado</p>
<p class="text-gray-400 text-sm">Pedido #1234 foi aprovado por Admin User</p>
<p class="text-gray-500 text-xs mt-1">10 minutos atrás</p>
</div>
</div>
<div class="flex items-start">
<div class="bg-green-600 p-2 rounded-full mr-3">
<i class="fas fa-plus-circle text-white text-sm"></i>
</div>
<div>
<p class="font-medium">Novo orçamento</p>
<p class="text-gray-400 text-sm">João Silva criou um novo orçamento</p>
<p class="text-gray-500 text-xs mt-1">1 hora atrás</p>
</div>
</div>
<div class="flex items-start">
<div class="bg-yellow-600 p-2 rounded-full mr-3">
<i class="fas fa-exclamation-triangle text-white text-sm"></i>
</div>
<div>
<p class="font-medium">Pedido rejeitado</p>
<p class="text-gray-400 text-sm">Pedido #1233 foi rejeitado por Admin User</p>
<p class="text-gray-500 text-xs mt-1">2 horas atrás</p>
</div>
</div>
<div class="flex items-start">
<div class="bg-purple-600 p-2 rounded-full mr-3">
<i class="fas fa-user-plus text-white text-sm"></i>
</div>
<div>
<p class="font-medium">Novo cliente</p>
<p class="text-gray-400 text-sm">Empresa XYZ foi cadastrada no sistema</p>
<p class="text-gray-500 text-xs mt-1">Ontem</p>
</div>
</div>
</div>
<a href="#" class="block text-center mt-4 text-blue-400 hover:text-blue-300 text-sm font-medium">Ver todas as atividades</a>
</div>
</div>
<!-- Pending Approvals and Recent Orders -->
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
<!-- Pending Approvals -->
<div class="bg-gray-800 rounded-lg shadow-lg">
<div class="p-6 border-b border-gray-700">
<h2 class="text-lg font-bold">Aprovações Pendentes</h2>
</div>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-700">
<thead class="bg-gray-700">
<tr>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Pedido</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Cliente</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Valor</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Ações</th>
</tr>
</thead>
<tbody class="bg-gray-800 divide-y divide-gray-700">
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">#1234</div>
<div class="text-gray-400 text-sm">12/06/2023</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">Empresa ABC</div>
<div class="text-gray-400 text-sm">João Silva</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">R$ 12,450.00</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<button class="bg-green-600 hover:bg-green-700 text-white px-3 py-1 rounded text-sm mr-2">Aprovar</button>
<button class="bg-red-600 hover:bg-red-700 text-white px-3 py-1 rounded text-sm">Rejeitar</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">#1233</div>
<div class="text-gray-400 text-sm">10/06/2023</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">Indústria XYZ</div>
<div class="text-gray-400 text-sm">Maria Souza</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">R$ 8,720.50</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<button class="bg-green-600 hover:bg-green-700 text-white px-3 py-1 rounded text-sm mr-2">Aprovar</button>
<button class="bg-red-600 hover:bg-red-700 text-white px-3 py-1 rounded text-sm">Rejeitar</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">#1232</div>
<div class="text-gray-400 text-sm">08/06/2023</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">Comércio LTDA</div>
<div class="text-gray-400 text-sm">Carlos Oliveira</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">R$ 5,340.00</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<button class="bg-green-600 hover:bg-green-700 text-white px-3 py-1 rounded text-sm mr-2">Aprovar</button>
<button class="bg-red-600 hover:bg-red-700 text-white px-3 py-1 rounded text-sm">Rejeitar</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="p-4 border-t border-gray-700">
<a href="#" class="text-blue-400 hover:text-blue-300 text-sm font-medium">Ver todas as aprovações pendentes</a>
</div>
</div>
<!-- Recent Orders -->
<div class="bg-gray-800 rounded-lg shadow-lg">
<div class="p-6 border-b border-gray-700">
<h2 class="text-lg font-bold">Pedidos Recentes</h2>
</div>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-700">
<thead class="bg-gray-700">
<tr>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Pedido</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Status</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Valor</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Ações</th>
</tr>
</thead>
<tbody class="bg-gray-800 divide-y divide-gray-700">
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">#1231</div>
<div class="text-gray-400 text-sm">05/06/2023</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 bg-green-900 text-green-300 rounded-full text-xs">Aprovado</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">R$ 15,200.00</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<button class="bg-blue-600 hover:bg-blue-700 text-white px-3 py-1 rounded text-sm">Detalhes</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">#1230</div>
<div class="text-gray-400 text-sm">03/06/2023</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 bg-yellow-900 text-yellow-300 rounded-full text-xs">Processando</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">R$ 9,870.50</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<button class="bg-blue-600 hover:bg-blue-700 text-white px-3 py-1 rounded text-sm">Detalhes</button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">#1229</div>
<div class="text-gray-400 text-sm">01/06/2023</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 py-1 bg-red-900 text-red-300 rounded-full text-xs">Rejeitado</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="font-medium">R$ 7,430.00</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<button class="bg-blue-600 hover:bg-blue-700 text-white px-3 py-1 rounded text-sm">Detalhes</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="p-4 border-t border-gray-700">
<a href="#" class="text-blue-400 hover:text-blue-300 text-sm font-medium">Ver todos os pedidos</a>
</div>
</div>
</div>
</main>
</div>
<!-- Mobile Sidebar Overlay -->
<div id="mobile-sidebar-overlay" class="fixed inset-0 bg-black bg-opacity-50 z-20 hidden" onclick="toggleMobileSidebar()"></div>
<script>
// Toggle sidebar
function toggleSidebar() {
const sidebar = document.getElementById('sidebar');
const mainContent = document.getElementById('main-content');
sidebar.classList.toggle('sidebar-collapsed');
mainContent.classList.toggle('ml-64');
mainContent.classList.toggle('ml-20');
}
// Toggle mobile sidebar
function toggleMobileSidebar() {
const sidebar = document.getElementById('sidebar');
const overlay = document.getElementById('mobile-sidebar-overlay');
sidebar.classList.toggle('hidden');
sidebar.classList.toggle('block');
overlay.classList.toggle('hidden');
}
// Toggle dropdowns
function toggleDropdown(id) {
const dropdown = document.getElementById(id);
dropdown.classList.toggle('hidden');
}
// Close dropdowns when clicking outside
document.addEventListener('click', function(event) {
if (!event.target.matches('.relative *')) {
const dropdowns = document.querySelectorAll('.absolute');
dropdowns.forEach(function(dropdown) {
if (!dropdown.classList.contains('hidden')) {
dropdown.classList.add('hidden');
}
});
}
});
// Dark mode toggle (if needed)
function toggleDarkMode() {
const html = document.documentElement;
html.classList.toggle('dark');
}
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=gallabs/dashboard-orcamento-pcompras" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>