import { Navigate, createFileRoute } from '@tanstack/react-router' import { m } from '@/i18n/messages' import { useLocale, getLocale } from '@/i18n/config' import { asI18n } from '@pikku/react' import { Badge, Box, Button, Container, Paper, Progress, Stack, Table, Text, Title, } from '@pikku/mantine/core' import { BrandHeader } from '../components/Brand' import { RequireAuth, useAuth } from '../auth' import { usePageTitle } from '../components/AppLayout' import { fmtDate } from '../lib/dates' import { usePikkuQuery } from '@project/functions-sdk/pikku/api.gen' function MarketingPage({ hero, sections }: { hero: React.ReactNode; sections: React.ReactNode[] }) { return ( {hero} {sections} ) } function IndexPage() { useLocale() return ( )} sections={[ {m.common_pages_launchpad_title()} {m.common_pages_launchpad_client_title()} {m.common_pages_launchpad_client_body()} {m.common_pages_launchpad_availability_title()} {m.common_pages_launchpad_availability_body()} {m.common_pages_launchpad_admin_title()} {m.common_pages_launchpad_admin_body()} {m.common_pages_launchpad_events_title()} {m.common_pages_launchpad_events_body()} {m.common_pages_launchpad_enquiry_title()} {m.common_pages_launchpad_enquiry_body()} , ]} /> ) } function ClientOverview() { useLocale() usePageTitle(m.common_pages_client_title()) const { data, isLoading, error } = usePikkuQuery('getClientOverview', null) if (isLoading && !data) { return {m.common_states_loading()} } if (error && !data) { return {m.common_states_error()} } if (!data) return null return ( {m.common_pages_client_title()} {m.common_brand_name()} {data.clients.length > 0 && ( {asI18n(data.clients.map((client) => client.name).join(', '))} )} {m.common_pages_client_upcoming()} {data.upcomingBookings.length === 0 ? ( {m.common_pages_client_no_upcoming()} ) : ( data.upcomingBookings.map((booking) => ( {asI18n(`${booking.eventName}`)} {asI18n(`${fmtDate(booking.startDate, getLocale())} - ${fmtDate(booking.endDate, getLocale())}`)} {booking.isCurrentEvent && ( {m.common_pages_client_current_badge()} )} {booking.expectedPersons ? m.common_pages_client_participants_count({ count: booking.participantCount, target: booking.expectedPersons, }) : m.common_pages_client_participants_count_unknown({ count: booking.participantCount, })} {m.common_pages_client_completeness()} )) )} {m.common_pages_client_recent_invoices()} {data.recentInvoices.length === 0 ? ( {m.common_pages_client_no_invoices()} ) : ( {m.common_pages_client_invoice_cols_booking()} {m.common_pages_client_invoice_cols_number()} {m.common_pages_client_invoice_cols_kind()} {m.common_pages_client_invoice_cols_amount()} {m.common_pages_client_invoice_cols_status()} {m.common_pages_client_invoice_cols_issued()} {data.recentInvoices.map((invoice) => ( {invoice.bookingName} {invoice.pdfUrl ? ( ) : ( invoice.invoiceNumber )} {invoice.kind} {(invoice.amountCents / 100).toFixed(2)} € {invoice.status} {fmtDate(invoice.issuedOn, getLocale())} ))}
)}
) } function Dashboard() { const { role } = useAuth() if (role === 'admin' || role === 'owner') return if (role === 'client') return return } function IndexRoute() { return ( ) } export const Route = createFileRoute('/')({ component: IndexRoute, })