Vamos criar o esqueleto de nossa página HTML e CSS baseado no design no Figma. Começamos pelo layout estático com header, footer, textos, e áreas para upload e galeria de fotos. Utilizamos Tailwind CSS para estilização e trocamos a fonte para Roboto com NextFont, ajustando headers, parágrafos e dimensões do layout.
1. Definindo a Estrutura HTML
Começamos criando os elementos principais da nossa página dentro do componente Home
em pages/index.tsx
:
export default function Home() {return (<main className="flex flex-1 max-w-[900px] mx-auto px-4 py-8 text-center"><header><h1 className="text-3xl font-black text-slate-600 mb-2 font-bold text-slate-600 mb-4">Foto Upload</h1><p className="text-gray-500 mb-8 font-light">Galeria de fotos com Next.js, upload de imagens e S3</p></header>{/* Dropdown de arquivos */}{/* Galeria de Fotos */}<hr /><h2 className="text-2xl font-bold text-slate-600 mb-4 mt-4">Galeria de Fotos</h2>{/* Fotos */}<footer className="bg-slate-600 py-4 w-full"></footer></main>)}
Aqui, definimos as seguintes seções:
header
: Contém o título principal "Foto Upload" e uma breve descrição do projeto.{/* Dropdown de arquivos */}
: Um espaço reservado para a funcionalidade de upload que implementaremos posteriormente.{/* Galeria de Fotos */}
: Contém o título "Galeria de Fotos" e um espaço reservado para exibir as fotos.footer
: Um rodapé simples com um background escuro.2. Estilizando com Tailwind CSS
Utilizamos classes do Tailwind CSS para estilizar os elementos:
text-3xl
, font-black
, text-slate-600
, mb-2
, font-bold
, mb-4
, text-gray-500
, mb-8
, font-light
, text-2xl
, mt-4
, bg-slate-600
, py-4
, w-full
: Essas classes definem o tamanho da fonte, cor, peso, margens e padding dos elementos de texto e do rodapé.flex
, flex-1
, max-w-[900px]
, mx-auto
, px-4
, py-8
, text-center
: Classes para definir o layout do componente main
, centralizando-o na tela com uma largura máxima de 900 pixels e espaçamentos internos.3. Configurando a Fonte Roboto
No arquivo layout.tsx
, importamos a fonte Roboto do Google Fonts utilizando o pacote next/font/google
:
import {Roboto} from 'next/font/google'const roboto = Roboto({subsets: ['latin'],weight: ['100', '300', '400', '500', '700', '900'],})export const metadata: Metadata = {title: 'Foto Upload',description: 'Uma galeria de fotos no S3 da AWS',}export default function RootLayout({children,}: {children: React.ReactNode}) {return (<html lang="en"><body className={`${roboto.className} bg-blue-50 min-h-screen`}>{children}</body></html>)}
Adicionamos a classe roboto.className
ao elemento body
no layout para aplicar a fonte em toda a aplicação, garantindo uma experiência visual consistente.
Com esse esqueleto pronto, temos a base visual para a nossa aplicação. Nos próximos passos, implementaremos as funcionalidades de upload de fotos e exibição da galeria.