feat: núcleo de tickets com Convex (CRUD, play, comentários com anexos) + auth placeholder; docs em AGENTS.md; toasts e updates otimistas; mapeadores Zod; refinos PT-BR e layout do painel de detalhes

This commit is contained in:
esdrasrenan 2025-10-04 00:31:44 -03:00
parent 2230590e57
commit 27b103cb46
97 changed files with 15117 additions and 15715 deletions

View file

@ -1,35 +1,51 @@
import type { Metadata } from "next"
import { Inter, JetBrains_Mono } from "next/font/google"
import "./globals.css"
const inter = Inter({
subsets: ["latin"],
variable: "--font-geist-sans",
display: "swap",
})
const jetBrainsMono = JetBrains_Mono({
subsets: ["latin"],
variable: "--font-geist-mono",
display: "swap",
})
export const metadata: Metadata = {
title: "Atlas Support",
description: "Plataforma omnichannel de gestão de chamados",
}
export default function RootLayout({
import { cookies } from "next/headers"
import { ConvexClientProvider } from "./ConvexClientProvider"
import { AuthProvider } from "@/lib/auth-client"
import { Toaster } from "@/components/ui/sonner"
const inter = Inter({
subsets: ["latin"],
variable: "--font-geist-sans",
display: "swap",
})
const jetBrainsMono = JetBrains_Mono({
subsets: ["latin"],
variable: "--font-geist-mono",
display: "swap",
})
export const metadata: Metadata = {
title: "Atlas Support",
description: "Plataforma omnichannel de gestão de chamados",
}
export default async function RootLayout({
children,
}: Readonly<{
children: React.ReactNode
}>) {
const cookieStore = await cookies()
const cookie = cookieStore.get("demoUser")?.value
let demoUser: { name: string; email: string } | null = null
try {
demoUser = cookie ? (JSON.parse(cookie) as { name: string; email: string }) : null
} catch {}
const tenantId = "tenant-atlas"
return (
<html lang="pt-BR" className="h-full">
<body
className={`${inter.variable} ${jetBrainsMono.variable} min-h-screen bg-background text-foreground antialiased`}
>
{children}
<ConvexClientProvider>
<AuthProvider demoUser={demoUser} tenantId={tenantId}>
{children}
<Toaster position="top-right" richColors />
</AuthProvider>
</ConvexClientProvider>
</body>
</html>
)