/* Copyright (C) 2024 Manuel Bustillo*/ // This file contains type definitions for your data. // It describes the shape of the data, and what data type each property should accept. // For simplicity of teaching, we're manually defining these types. // However, these types are generated automatically if you're using an ORM such as Prisma. export type User = { id: string; name: string; email: string; password: string; }; export type Customer = { id: string; name: string; email: string; image_url: string; }; export type Guest = { id: string; name: string; group_name?: string; color?: string; status?: 'Considered' | 'Invited' | 'Confirmed' | 'Declined' | 'Tentative'; } export type Expense = { id: string; name: string; amount: number; pricingType: 'fixed' | 'per person'; }; export type TableArrangement = { id: string; number: number; name: string; guests?: Guest[]; discomfort?: number } export type Group = { id: string; name: string; guest_count: number; icon: string; children: Group[]; color?: string; attendance?: AttendanceSummary }; export type AttendanceSummary = { considered: number; invited: number; confirmed: number; declined: number; tentative: number; total: number; } export type Invoice = { id: string; customer_id: string; amount: number; date: string; // In TypeScript, this is called a string union type. // It means that the "status" property can only be one of the two strings: 'pending' or 'paid'. status: 'pending' | 'paid'; }; export type Revenue = { month: string; revenue: number; }; export type LatestInvoice = { id: string; name: string; image_url: string; email: string; amount: string; }; // The database returns a number for amount, but we later format it to a string with the formatCurrency function export type LatestInvoiceRaw = Omit & { amount: number; }; export type guestsTable = { id: string; customer_id: string; name: string; email: string; image_url: string; date: string; amount: number; status: 'pending' | 'paid'; }; export type CustomersTableType = { id: string; name: string; email: string; image_url: string; total_guests: number; total_pending: number; total_paid: number; }; export type FormattedCustomersTable = { id: string; name: string; email: string; image_url: string; total_guests: number; total_pending: string; total_paid: string; }; export type CustomerField = { id: string; name: string; }; export type InvoiceForm = { id: string; customer_id: string; amount: number; status: 'pending' | 'paid'; };