From 480b3ec4739fb2b06c294eb9f164a7cc32a7e3c1 Mon Sep 17 00:00:00 2001 From: Rodribm10 Date: Mon, 13 Apr 2026 23:05:38 -0300 Subject: [PATCH] feat: renderiza marcas reais do supabase na pagina inicial --- src/App.tsx | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 74 insertions(+), 3 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 9ed5be7..5be6992 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,7 +1,78 @@ +import { useEffect, useState } from 'react' +import { supabase } from '@/lib/supabase' +import type { Database } from '@/types/database' + +type Marca = Database['reserva_hotel']['Tables']['marcas']['Row'] + export default function App() { + const [marcas, setMarcas] = useState([]) + const [loading, setLoading] = useState(true) + const [error, setError] = useState(null) + + useEffect(() => { + async function loadMarcas() { + const { data, error } = await supabase + .from('marcas') + .select('*') + .eq('ativa', true) + .order('nome', { ascending: true }) + + if (error) { + setError(error.message) + } else { + setMarcas(data ?? []) + } + setLoading(false) + } + loadMarcas() + }, []) + return ( -
-

Reserva Rede 1001

-
+
+
+

+ Experiência exclusiva +

+

+ Reserva Rede 1001 +

+

Escolha uma das nossas marcas para começar

+
+ + {loading &&

Carregando marcas...

} + + {error && ( +
+ Erro ao carregar: {error} +
+ )} + + {!loading && !error && marcas.length === 0 && ( +

Nenhuma marca cadastrada ainda.

+ )} + + {!loading && !error && marcas.length > 0 && ( +
    + {marcas.map((marca) => ( +
  • +

    {marca.nome}

    + {marca.descricao &&

    {marca.descricao}

    } + {marca.categorias && marca.categorias.length > 0 && ( +

    + {marca.categorias.join(' · ')} +

    + )} +
  • + ))} +
+ )} + + +
) }