ba062e92d0
- App.tsx: wrappers de padding (p-4/md:p-8) e max-w-7xl/mx-auto agora só se aplicam quando não é tela standalone; login/landing/public renderizam full-bleed - OnboardingChat.tsx: classe ob-noscroll esconde a barra de rolagem do slide intro (mantém scroll), substituindo a custom-scrollbar indefinida no fluxo de login Inclui também demais alterações pendentes do working tree (snapshot do estado atual de dev). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
22 lines
1.0 KiB
TypeScript
22 lines
1.0 KiB
TypeScript
import React from 'react';
|
|
import { Inbox } from 'lucide-react';
|
|
|
|
// Estado vazio padrão (profissional): ícone + título + descrição + ação opcional.
|
|
// Use quando uma lista não tem dados (em vez de deixar a área em branco).
|
|
export const EmptyState: React.FC<{
|
|
icon?: React.ElementType;
|
|
title?: string;
|
|
description?: string;
|
|
action?: React.ReactNode;
|
|
className?: string;
|
|
}> = ({ icon: Icon = Inbox, title = 'Nada por aqui ainda', description, action, className }) => (
|
|
<div className={`flex flex-col items-center justify-center text-center py-14 px-6 ${className || ''}`}>
|
|
<div className="w-16 h-16 rounded-2xl bg-gray-50 border border-gray-100 flex items-center justify-center mb-4">
|
|
<Icon size={28} className="text-gray-300" />
|
|
</div>
|
|
<h3 className="text-sm font-black text-gray-700 uppercase tracking-tight">{title}</h3>
|
|
{description && <p className="text-xs text-gray-400 mt-1.5 max-w-sm leading-relaxed">{description}</p>}
|
|
{action && <div className="mt-4">{action}</div>}
|
|
</div>
|
|
);
|