add documenti archivio filament view

This commit is contained in:
michele 2026-04-20 10:36:36 +00:00
parent a506eba604
commit c883063543

View File

@ -0,0 +1,124 @@
<x-filament-panels::page>
@php
$tabs = [
'archivio-digitale' => 'Archivio digitale',
'template-drive' => 'Template Drive',
'archivio-fisico' => 'Archivio fisico',
'permessi' => 'Permessi',
];
$stats = $this->hubStats;
@endphp
<div class="space-y-6">
<div class="rounded-2xl border border-slate-200 bg-gradient-to-r from-amber-50 via-white to-sky-50 p-5">
<div class="flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between">
<div>
<div class="text-sm font-semibold uppercase tracking-[0.18em] text-slate-500">Hub Documenti</div>
<h2 class="mt-2 text-2xl font-semibold text-slate-900">Archivio digitale e fisico nello stesso flusso</h2>
<p class="mt-2 max-w-3xl text-sm text-slate-600">Questa pagina diventa la base unica per PDF, struttura Drive, contenitori fisici e regole di visibilita. Il modello resta coerente con il passaggio consegne dello stabile e con la futura gestione studio.</p>
</div>
<div class="rounded-xl border border-white/70 bg-white/80 px-4 py-3 text-right shadow-sm">
<div class="text-xs uppercase tracking-wide text-slate-500">Codice mnemonico suggerito</div>
<div class="mt-1 text-xl font-semibold text-slate-900">{{ $this->mnemonicCodeHint ?? 'STB00000' }}</div>
<div class="mt-1 text-xs text-slate-500">Formato guida per etichette, QR e archivio fisico.</div>
</div>
</div>
<div class="mt-5 grid gap-3 md:grid-cols-2 xl:grid-cols-4">
<div class="rounded-xl border bg-white p-4">
<div class="text-xs uppercase tracking-wide text-slate-500">Documenti</div>
<div class="mt-2 text-2xl font-semibold text-slate-900">{{ $stats['documenti'] ?? 0 }}</div>
<div class="mt-1 text-sm text-slate-500">Archivio PDF censito.</div>
</div>
<div class="rounded-xl border bg-white p-4">
<div class="text-xs uppercase tracking-wide text-slate-500">Archiviati</div>
<div class="mt-2 text-2xl font-semibold text-slate-900">{{ $stats['archiviati'] ?? 0 }}</div>
<div class="mt-1 text-sm text-slate-500">Documenti chiusi e consolidati.</div>
</div>
<div class="rounded-xl border bg-white p-4">
<div class="text-xs uppercase tracking-wide text-slate-500">In scadenza</div>
<div class="mt-2 text-2xl font-semibold text-slate-900">{{ $stats['in_scadenza'] ?? 0 }}</div>
<div class="mt-1 text-sm text-slate-500">Finestra dei prossimi 30 giorni.</div>
</div>
<div class="rounded-xl border bg-white p-4">
<div class="text-xs uppercase tracking-wide text-slate-500">Template Drive</div>
<div class="mt-2 text-2xl font-semibold text-slate-900">{{ $stats['template_drive'] ?? 0 }}</div>
<div class="mt-1 text-sm text-slate-500">Cartelle base replicabili per stabile.</div>
</div>
</div>
</div>
<div class="flex flex-wrap gap-2">
@foreach($tabs as $tabKey => $tabLabel)
<button
type="button"
wire:click="selectHubTab('{{ $tabKey }}')"
@class([
'rounded-full px-4 py-2 text-sm font-medium transition',
'bg-slate-900 text-white shadow-sm' => $this->hubTab === $tabKey,
'bg-white text-slate-600 ring-1 ring-inset ring-slate-300 hover:bg-slate-50' => $this->hubTab !== $tabKey,
])
>
{{ $tabLabel }}
</button>
@endforeach
</div>
@if($this->hubTab === 'archivio-digitale')
<x-filament::section>
<x-slot name="heading">Archivio digitale</x-slot>
<x-slot name="description">La tabella esistente resta il punto operativo per registrazione, OCR, stampa etichette e apertura PDF in modal.</x-slot>
{{ $this->table }}
</x-filament::section>
@elseif($this->hubTab === 'template-drive')
<x-filament::section>
<x-slot name="heading">Template cartelle Drive</x-slot>
<x-slot name="description">Questa struttura resta la base comune per archivio digitale, passaggio consegne e futura sincronizzazione Google.</x-slot>
<div class="grid gap-3 md:grid-cols-2 xl:grid-cols-3">
@foreach($this->driveTemplateFolders as $folder)
<div class="rounded-xl border bg-slate-50 px-4 py-3 text-sm text-slate-700">{{ $folder }}</div>
@endforeach
</div>
</x-filament::section>
@elseif($this->hubTab === 'archivio-fisico')
<x-filament::section>
<x-slot name="heading">Archivio fisico</x-slot>
<x-slot name="description">Prima base per faldoni, scatole, cartelle e buste collegate ai PDF. QR e NFC si innesteranno su questo schema.</x-slot>
<div class="grid gap-4 lg:grid-cols-[minmax(0,1.2fr)_minmax(280px,0.8fr)]">
<div class="rounded-xl border bg-white p-4">
<div class="text-sm font-semibold text-slate-900">Contenitori previsti</div>
<div class="mt-3 grid gap-3 sm:grid-cols-2 xl:grid-cols-4">
@foreach($this->archivioFisicoTypes as $type)
<div class="rounded-lg border border-slate-200 bg-slate-50 px-3 py-3">
<div class="text-sm font-semibold text-slate-900">{{ $type }}</div>
<div class="mt-1 text-xs text-slate-500">Collegabile a codice {{ $this->mnemonicCodeHint ?? 'STB00000' }} e documento digitale.</div>
</div>
@endforeach
</div>
</div>
<div class="rounded-xl border border-amber-200 bg-amber-50 p-4">
<div class="text-sm font-semibold text-amber-900">Stato di avanzamento</div>
<div class="mt-2 text-sm text-amber-800">In questa iterazione il modello e preparato lato HUB e codifica. Il prossimo step e aggiungere entita fisiche persistenti, posizione archivio e stampa QR/etichetta.</div>
</div>
</div>
</x-filament::section>
@else
<x-filament::section>
<x-slot name="heading">Permessi e visibilita</x-slot>
<x-slot name="description">Qui prepariamo la classificazione dei documenti per audience senza mischiare condomini, inquilini, fornitori e uso interno studio.</x-slot>
<div class="grid gap-3 md:grid-cols-2 xl:grid-cols-3">
@foreach($this->audienceGroups as $group)
<div class="rounded-xl border bg-white px-4 py-3">
<div class="text-sm font-semibold text-slate-900">{{ $group }}</div>
<div class="mt-1 text-xs text-slate-500">Audience candidata per visibilita documentale, export e portali dedicati.</div>
</div>
@endforeach
</div>
</x-filament::section>
@endif
</div>
</x-filament-panels::page>