Skip to content

Latest commit

 

History

History
319 lines (266 loc) · 7.25 KB

File metadata and controls

319 lines (266 loc) · 7.25 KB

🚀 DASHBOARD REDESIGN - GUIA COMPLETO DE IMPLEMENTAÇÃO

📋 Pré-requisitos

Todos instalados:

  • ✅ React 19
  • ✅ Tailwind CSS 4
  • ✅ Recharts
  • ✅ Lucide React
  • ✅ Framer Motion

📁 Estrutura de Pastas a Criar

/components/dashboard/
├── utils/
│   ├── dashboardCalculations.js      (funções de cálculo)
│   └── formatters.js                 (formatadores)
├── hooks/
│   └── useDashboardData.js           (hook principal)
├── atoms/
│   ├── KPICard.jsx                   (card reutilizável)
│   └── Alert.jsx                     (componente de alerta)
├── sections/
│   ├── HeroKPI.jsx                   (4 KPIs principais)
│   ├── RevenueChart.jsx              (gráfico receita)
│   ├── OccupancyChart.jsx            (gráfico ocupação)
│   ├── PropertyRevenue.jsx           (receita por propriedade)
│   ├── AlertsPanel.jsx               (panel de alertas)
│   └── CalendarIntegration.jsx       (calendário otimizado)
├── Dashboard.jsx                     (container principal)
├── Dashboard_Redesign.jsx            (nova versão)
└── dashboard-redesign.module.css     (estilos específicos)

🛠️ Passos de Implementação

1️⃣ Criar Estrutura de Pastas

Execute no terminal:

cd front-end/src/components/dashboard
mkdir utils hooks atoms sections styles

2️⃣ Copiar Cálculos (dashboardCalculations.js)

Arquivo: utils/dashboardCalculations.js
Contém: Todas as funções de cálculo da Etapa 3
Tamanho: ~3KB

3️⃣ Copiar Hook (useDashboardData.js)

Arquivo: hooks/useDashboardData.js
Contém: Hook que chama API e processa dados
Dependências: dashboardCalculations.js

4️⃣ Criar Componentes Atômicos

atoms/KPICard.jsx

// Card reutilizável com:
// - Label + valor principal (monospace)
// - Trend indicator (up/down)
// - Progress bar
// - Hover effects
// - 4 temas de cor (emerald, blue, amber, purple)

Props:
- label: string
- value: string | number
- icon?: React.Component
- trend?: 'up' | 'down'
- trendValue?: number
- subtext?: string
- color?: 'emerald' | 'blue' | 'amber' | 'purple'
- progress?: number (0-100)
- onClick?: () => void

atoms/Alert.jsx

// Componente de alerta com 4 severidades:
// - critical (red)
// - warning (amber)
// - success (emerald)
// - info (blue)

Props:
- id: string
- title: string
- description?: string
- action?: string
- severity?: 'critical' | 'warning' | 'success' | 'info'
- onDismiss?: (id) => void

5️⃣ Criar Seções (Components)

sections/HeroKPI.jsx

// Exibe 4 KPIs em grid responsivo
// Usa: KPICard (4x)

Props:
- revenue: number
- occupancy: number
- bookings: number
- rating: number
- revenueGrowth?: number (%)
- occupancyTrend?: number (%)

sections/RevenueChart.jsx

// Area Chart - Receita ao longo do tempo
// Usa: Recharts AreaChart

Props:
- data: Array<{ month, value, bookings }>
- isLoading?: boolean

sections/OccupancyChart.jsx

// Bar Chart - Ocupação semanal
// Usa: Recharts BarChart

Props:
- data: Array<{ day, occupancy }>
- isLoading?: boolean

sections/PropertyRevenue.jsx

// Donut/Pie Chart - Receita por propriedade
// Usa: Recharts PieChart

Props:
- data: Array<{ id, name, revenue }>
- isLoading?: boolean

sections/AlertsPanel.jsx

// Panel com alertas priorizados
// Usa: Alert (múltiplos)

Props:
- alerts: { critical: [], warning: [], info: [] }
- onDismiss?: (id) => void

6️⃣ Container Principal (Dashboard_Redesign.jsx)

// Orquestra tudo
// Usa: useDashboardData hook
// Renderiza: Todas as seções acima

Estrutura:
1. useD ashboardData()  carrega dados
2. Loading state  skeleton ou spinner
3. Error state  erro message
4. Success  renderiza todas seções

Layout (Tailwind):
- max-w-7xl container
- px-6 / px-8 padding
- gap-6 entre seções
- grid responsivo

💾 Dados Esperados da API

/dashboard/host Response:

{
  "bookings": [
    {
      "id": "b1",
      "propertyId": "p1",
      "guestName": "João Silva",
      "checkInDate": "2026-04-25T14:00:00Z",
      "checkOutDate": "2026-04-28T11:00:00Z",
      "totalPrice": 1500.00,
      "status": "confirmed",
      "reviewedByHost": false
    }
  ],
  "properties": [
    {
      "id": "p1",
      "title": "Apartamento Praia",
      "location": "Praia, SC",
      "isActive": true
    }
  ],
  "reviews": [
    {
      "id": "r1",
      "bookingId": "b1",
      "rating": 4.8,
      "comment": "Excelente!"
    }
  ],
  "today": {
    "checkins": 2,
    "checkouts": 1,
    "pendingBookings": 0
  }
}

🎨 Tailwind Classes Principais

Colors (CSS Variables)

--emerald-50: #f0fdf4
--emerald-600: #16a34a
--blue-50: #eff6ff
--blue-600: #2563eb
--amber-50: #fffbeb
--amber-600: #d97706
--red-50: #fef2f2
--red-600: #dc2626
--slate-50: #f8fafc
--slate-900: #0f172b

Componentes Reutilizáveis

// Card base
className="rounded-2xl border border-slate-200 bg-white p-6 shadow-sm hover:shadow-lg transition-all"

// KPI valor
className="text-4xl font-bold text-slate-900 font-mono"

// Label
className="text-xs font-semibold uppercase tracking-widest"

// Progress bar
className="h-1.5 bg-slate-200 rounded-full overflow-hidden"

📊 Exemplo de Uso Completo

import Dashboard_Redesign from '@/components/dashboard/Dashboard_Redesign';

// Em sua página/rota
export default function HostPage() {
  return (
    <div className="min-h-screen bg-slate-50">
      <Dashboard_Redesign />
    </div>
  );
}

🔄 Fluxo de Dados

API: /dashboard/host
    ↓
useDashboardData() hook
    ├→ calculateMonthlyRevenue()
    ├→ calculateWeeklyOccupancy()
    ├→ calculatePerformanceMetrics()
    ├→ calculateRevenueByProperty()
    ├→ calculateFinancialMetrics()
    └→ generateAlerts()
    ↓
Dashboard_Redesign
    ├→ HeroKPI (metrics + finance)
    ├→ RevenueChart (revenueData)
    ├→ OccupancyChart (occupancyData)
    ├→ PropertyRevenue (propertyData)
    ├→ AlertsPanel (alerts)
    └→ CalendarSection (events)

✅ Checklist de Implementação

  • Criar pasta utils/ e adicionar dashboardCalculations.js
  • Criar pasta hooks/ e adicionar useDashboardData.js
  • Criar pasta atoms/ e adicionar KPICard.jsx, Alert.jsx
  • Criar pasta sections/ e adicionar todos 6 componentes
  • Criar Dashboard_Redesign.jsx container
  • Importar em sua rota/página
  • Testar com dados da API
  • Ajustar cores/espaçamento conforme necessário
  • Adicionar responsividade (mobile)
  • Otimizar performance (useMemo, lazy load)

🚀 Próximas Melhorias (Futuro)

  • Dark mode tema
  • Export dados (CSV/PDF)
  • Comparação período (mês anterior)
  • Filtros avançados
  • Integração com Stripe (dados reais)
  • Notificações push de alertas
  • Analytics avançado
  • A/B testing de preços

📞 Support

Dúvidas? Consulte:

  1. DASHBOARD_COMPONENTS_GUIDE.js - Código base
  2. plan.md - Visão geral do projeto
  3. Componentes existentes em /components/dashboard/

Status: 🟢 Pronto para implementação
Última atualização: 2026-04-25
Autor: Dashboard Redesign Agent