2026-06-11 00:10:43 -03:00
@page "/"
2025-04-30 17:22:52 -03:00
@using phronCare.UIBlazor.Pages.Authorization
2026-06-11 00:10:43 -03:00
@inject NavigationManager Navigation
2025-01-24 19:17:26 -03:00
2026-07-21 09:48:54 -03:00
<PageTitle>PhronCare · SaludLAB</PageTitle>
2026-06-11 00:10:43 -03:00
2025-01-24 19:17:26 -03:00
<AuthorizeView>
<Authorized>
2026-07-21 09:48:54 -03:00
<section class="home-dashboard" aria-label="Panel principal">
<header class="home-intro">
2026-06-11 00:10:43 -03:00
<div>
2026-07-21 09:48:54 -03:00
<span class="section-eyebrow">Centro operativo</span>
<h1>Panel principal</h1>
<p>Gestión asistencial, comercial y logística de PhronCare.</p>
2026-06-11 00:10:43 -03:00
</div>
2026-07-21 09:48:54 -03:00
<div class="platform-status" aria-label="Estado general: plataforma operativa">
<span class="status-dot"></span>
2026-06-11 00:10:43 -03:00
Plataforma operativa
</div>
2026-07-21 09:48:54 -03:00
</header>
2026-06-11 00:10:43 -03:00
2026-07-21 09:48:54 -03:00
<section class="dashboard-section" aria-labelledby="daily-title">
<div class="section-heading">
<div>
<span class="section-eyebrow">Accesos principales</span>
<h2 id="daily-title">Operación diaria</h2>
</div>
<p>Herramientas centrales para la atención y la gestión comercial.</p>
</div>
<div class="featured-grid">
@foreach (var item in PrimaryItems)
{
<button type="button" class="featured-card @item.ToneClass" @onclick="() => NavigateTo(item.Url)">
<span class="featured-card-topline">
<span class="feature-icon"><i class="@item.Icon" aria-hidden="true"></i></span>
<span class="feature-tag">@item.Category</span>
</span>
<span class="featured-copy">
<strong>@item.Title</strong>
<small>@item.Description</small>
</span>
<span class="card-action">@item.Action <i class="fas fa-arrow-right" aria-hidden="true"></i></span>
</button>
}
</div>
</section>
<section class="dashboard-section" aria-labelledby="management-title">
<div class="section-heading">
<div>
<span class="section-eyebrow">Administración</span>
<h2 id="management-title">Gestión del backoffice</h2>
</div>
<p>Módulos que acompañan la operación comercial, documental y logística.</p>
</div>
2026-06-11 00:10:43 -03:00
2026-07-21 09:48:54 -03:00
<div class="management-grid">
@foreach (var item in ManagementItems)
{
<button type="button" class="management-card" @onclick="() => NavigateTo(item.Url)">
<span class="management-icon @item.AccentClass"><i class="@item.Icon" aria-hidden="true"></i></span>
<span class="management-copy">
<strong>@item.Title</strong>
<small>@item.Description</small>
</span>
<i class="fas fa-arrow-right management-arrow" aria-hidden="true"></i>
</button>
}
</div>
</section>
2026-06-11 00:10:43 -03:00
2026-07-21 09:48:54 -03:00
<section class="dashboard-section" aria-labelledby="overview-title">
<div class="section-heading section-heading-compact">
<div>
<span class="section-eyebrow">Panorama actual</span>
<h2 id="overview-title">Resumen operativo</h2>
2026-06-11 00:10:43 -03:00
</div>
2026-07-21 09:48:54 -03:00
<span class="sample-label">Datos de muestra</span>
</div>
2026-06-11 00:10:43 -03:00
2026-07-21 09:48:54 -03:00
<div class="overview-grid">
<div class="metrics-panel">
2026-06-11 00:10:43 -03:00
@foreach (var item in SummaryItems)
{
2026-07-21 09:48:54 -03:00
<article class="metric-item">
<span class="metric-icon @item.AccentClass"><i class="@item.Icon" aria-hidden="true"></i></span>
<span class="metric-copy">
2026-06-11 00:10:43 -03:00
<strong>@item.Value</strong>
2026-07-21 09:48:54 -03:00
<small>@item.Title</small>
</span>
</article>
2026-06-11 00:10:43 -03:00
}
</div>
2025-01-24 19:17:26 -03:00
2026-07-21 09:48:54 -03:00
<div class="activity-panel">
<div class="activity-header">
<div>
<h3>Actividad reciente</h3>
<p>Últimos movimientos registrados</p>
2026-06-11 00:10:43 -03:00
</div>
2026-07-21 09:48:54 -03:00
<i class="fas fa-clock" aria-hidden="true"></i>
</div>
<div class="activity-list">
@foreach (var item in RecentActivity)
{
<div class="activity-item">
<span class="activity-icon @item.AccentClass"><i class="@item.Icon" aria-hidden="true"></i></span>
<span>
<strong>@item.Title</strong>
<small>@item.Description</small>
</span>
</div>
}
</div>
2026-06-11 00:10:43 -03:00
</div>
2026-07-21 09:48:54 -03:00
</div>
</section>
2026-06-11 00:10:43 -03:00
</section>
2025-01-24 19:17:26 -03:00
</Authorized>
<NotAuthorized>
2026-06-11 00:10:43 -03:00
<LoginPage />
2025-01-24 19:17:26 -03:00
</NotAuthorized>
</AuthorizeView>
2026-06-11 00:10:43 -03:00
2025-01-24 19:17:26 -03:00
@code
{
2026-07-21 09:48:54 -03:00
private readonly List<PrimaryAccessItem> PrimaryItems =
[
new("Presupuestos", "Creá, consultá y realizá el seguimiento del circuito de presupuestos.", "/quotes/dashboard", "fas fa-file-invoice-dollar", "Gestión comercial", "Ver presupuestos", "tone-green"),
new("Notas de expedición", "Emití, consultá y controlá las entregas asociadas a la operación logística.", "/deliverynotes", "fas fa-truck", "Gestión logística", "Ver notas de expedición", "tone-blue")
];
private readonly List<ManagementAccessItem> ManagementItems =
2026-06-11 00:10:43 -03:00
[
2026-07-21 09:48:54 -03:00
new("Pacientes", "Información asistencial", "/sales/patients", "fas fa-user-injured", "accent-blue"),
new("Ventas", "Clientes y productos", "/sales/customers", "fas fa-briefcase", "accent-indigo"),
new("Documentos comerciales", "Documentación y facturación", "/salesdocuments", "fas fa-receipt", "accent-teal"),
new("Stock", "Productos y trazabilidad", "/stock/products", "fas fa-boxes-stacked", "accent-violet"),
new("Tickets", "Alta y seguimiento", "/dashboardpanel", "fas fa-ticket-alt", "accent-red")
2026-06-11 00:10:43 -03:00
];
private readonly List<SummaryItem> SummaryItems =
[
2026-07-21 09:48:54 -03:00
new("Presupuestos activos", "128", "fas fa-file-signature", "accent-green"),
new("Remitos emitidos", "42", "fas fa-truck-fast", "accent-orange"),
new("Facturas pendientes", "15", "fas fa-file-invoice", "accent-teal"),
new("Tickets abiertos", "6", "fas fa-headset", "accent-red")
2026-06-11 00:10:43 -03:00
];
private readonly List<ActivityItem> RecentActivity =
[
new("Presupuesto aprobado", "Hace 12 minutos", "fas fa-check-circle", "accent-green"),
new("Remito emitido", "Hace 38 minutos", "fas fa-truck", "accent-orange"),
new("Factura generada", "Hoy, 10:45", "fas fa-receipt", "accent-teal"),
new("Ticket cerrado", "Hoy, 09:20", "fas fa-circle-check", "accent-red")
];
2026-07-21 09:48:54 -03:00
private void NavigateTo(string url) => Navigation.NavigateTo(url);
2026-06-11 00:10:43 -03:00
2026-07-21 09:48:54 -03:00
private sealed record PrimaryAccessItem(string Title, string Description, string Url, string Icon, string Category, string Action, string ToneClass);
private sealed record ManagementAccessItem(string Title, string Description, string Url, string Icon, string AccentClass);
2026-06-11 00:10:43 -03:00
private sealed record SummaryItem(string Title, string Value, string Icon, string AccentClass);
private sealed record ActivityItem(string Title, string Description, string Icon, string AccentClass);
}