Files
clienthub/src/components/notes-section.tsx
T
simone 11870e15d3 feat: Client Portal redesign to Quiet Luxury + milestone stepper
- New MilestoneStepper primitive (horizontal per-phase progress)
- Token-migrate portal shell, phase cards, sidebar cards, kanban to dual-theme
- Soft-tint status pills (emerald/amber/muted) replacing solid badges
- embedded prop on ClientDashboard fixes double-header in multi-project tabs

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 22:54:58 +02:00

48 lines
1.4 KiB
TypeScript

import type { ClientView } from '@/lib/client-view';
interface NotesSectionProps {
notes: ClientView['notes'];
}
export function NotesSection({ notes }: NotesSectionProps) {
if (notes.length === 0) {
return (
<p className="text-sm text-muted-foreground italic">
Nessuna nota ancora registrata. Le decisioni appariranno qui man mano che il progetto avanza.
</p>
);
}
return (
<div className="space-y-3">
{notes.map((note) => {
const dateFormatted = new Date(note.created_at).toLocaleDateString('it-IT', {
year: 'numeric',
month: 'long',
day: 'numeric',
});
const timeFormatted = new Date(note.created_at).toLocaleTimeString('it-IT', {
hour: '2-digit',
minute: '2-digit',
});
return (
<div
key={note.id}
className="rounded-xl border border-border-light bg-card shadow-card p-5"
>
{/* Testo nota — sola lettura (D-12: admin scrive, cliente legge) */}
<p className="text-xs text-foreground leading-relaxed whitespace-pre-wrap">
{note.body}
</p>
{/* Timestamp */}
<p className="text-[11px] text-muted-foreground mt-3">
{dateFormatted} alle {timeFormatted}
</p>
</div>
);
})}
</div>
);
}