feat: invitaciones trial como pestaña en admin usuarios + sidebar

- Quitado Invitaciones Trial del sidebar (4 layouts)
- Agregado tab Invitaciones Trial dentro de /admin/usuarios
- Componente reutilizable invitaciones-trial-tab.tsx
- Agregada nueva opcion Tareas en el sidebar principal
This commit is contained in:
Horux Dev
2026-05-23 23:41:58 +00:00
parent bba000d308
commit be96ecc324
6 changed files with 276 additions and 5 deletions

View File

@@ -2,13 +2,14 @@
import { useState, useEffect } from 'react';
import { DashboardShell } from '@/components/layouts/dashboard-shell';
import { Card, CardContent, CardHeader, CardTitle, Button, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@horux/shared-ui';
import { Card, CardContent, CardHeader, CardTitle, Button, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Tabs, TabsList, TabsTrigger, TabsContent } from '@horux/shared-ui';
import { useAllUsuarios, useCreateUsuarioGlobal, useUpdateUsuarioGlobal, useDeleteUsuarioGlobal } from '@/lib/hooks/use-usuarios';
import { getTenants, type Tenant } from '@/lib/api/tenants';
import { useAuthStore } from '@/stores/auth-store';
import { isGlobalAdminRfc } from '@horux/shared';
import { Users, Pencil, Trash2, Shield, Eye, Calculator, Building2, X, Check, UserCog, UserCheck, User, Briefcase, Plus } from 'lucide-react';
import { cn } from '@horux/shared-ui';
import InvitacionesTrialTab from '../_components/invitaciones-trial-tab';
// Mapa de roles + fallback defensivo. El fork despacho introduce roles
// adicionales (cfo, supervisor, auxiliar, cliente) que no estaban en
@@ -43,6 +44,7 @@ export default function AdminUsuariosPage() {
const [editingUser, setEditingUser] = useState<EditingUser | null>(null);
const [filterTenant, setFilterTenant] = useState<string>('all');
const [searchTerm, setSearchTerm] = useState('');
const [activeTab, setActiveTab] = useState('usuarios');
const [showCreateForm, setShowCreateForm] = useState(false);
const [createFormData, setCreateFormData] = useState({
email: '',
@@ -152,6 +154,13 @@ export default function AdminUsuariosPage() {
return (
<DashboardShell title="Administracion de Usuarios">
<Tabs value={activeTab} onValueChange={setActiveTab} defaultValue="usuarios" className="space-y-4">
<TabsList>
<TabsTrigger value="usuarios">Usuarios</TabsTrigger>
<TabsTrigger value="invitaciones-trial">Invitaciones Trial</TabsTrigger>
</TabsList>
<TabsContent value="usuarios">
<div className="space-y-4">
{/* Filtros */}
<Card>
@@ -425,6 +434,12 @@ export default function AdminUsuariosPage() {
))
)}
</div>
</TabsContent>
<TabsContent value="invitaciones-trial">
<InvitacionesTrialTab />
</TabsContent>
</Tabs>
</DashboardShell>
);
}