diff --git a/src/components/admin/ManufacturerForm.tsx b/src/components/admin/ManufacturerForm.tsx
index 0ffe469f..3da8f99f 100644
--- a/src/components/admin/ManufacturerForm.tsx
+++ b/src/components/admin/ManufacturerForm.tsx
@@ -170,7 +170,11 @@ export function ManufacturerForm({ onSubmit, onCancel, initialData }: Manufactur
})()}
precision={(watch('founded_date_precision') as DatePrecision) || 'year'}
onChange={(date, precision) => {
- setValue('founded_date', date ? toDateOnly(date) : undefined);
+ if (date && typeof date === 'string') {
+ setValue('founded_date', toDateOnly(date) as any);
+ } else {
+ setValue('founded_date', null as any);
+ }
setValue('founded_date_precision', precision);
}}
label="Founded Date"
diff --git a/src/components/homepage/RecentChangeCard.tsx b/src/components/homepage/RecentChangeCard.tsx
index 0e6de9a6..7415373d 100644
--- a/src/components/homepage/RecentChangeCard.tsx
+++ b/src/components/homepage/RecentChangeCard.tsx
@@ -116,7 +116,7 @@ export function RecentChangeCard({
{changedByUsername && (
-
+
diff --git a/src/components/lists/ListDisplay.tsx b/src/components/lists/ListDisplay.tsx
index c77555a6..0f3a29ca 100644
--- a/src/components/lists/ListDisplay.tsx
+++ b/src/components/lists/ListDisplay.tsx
@@ -39,7 +39,7 @@ export function ListDisplay({ list }: ListDisplayProps) {
// Then, fetch the entities for each item
const enrichedItems = await Promise.all(
(itemsData as UserTopListItem[]).map(async (item) => {
- let entity = null;
+ let entity: Park | Ride | Company | null = null;
if (item.entity_type === "park") {
const { data } = await supabase
@@ -47,28 +47,28 @@ export function ListDisplay({ list }: ListDisplayProps) {
.select("id, name, slug, park_type, location_id")
.eq("id", item.entity_id)
.single();
- entity = data;
+ entity = data as Park | null;
} else if (item.entity_type === "ride") {
const { data } = await supabase
.from("rides")
.select("id, name, slug, category, park_id")
.eq("id", item.entity_id)
.single();
- entity = data;
+ entity = data as Ride | null;
} else if (item.entity_type === "company") {
const { data } = await supabase
.from("companies")
.select("id, name, slug, company_type")
.eq("id", item.entity_id)
.single();
- entity = data;
+ entity = data as Company | null;
}
return { ...item, entity };
})
);
- setItems(enrichedItems);
+ setItems(enrichedItems as EnrichedListItem[]);
setLoading(false);
};
diff --git a/src/types/database.ts b/src/types/database.ts
index 332505a9..f00a5fbd 100644
--- a/src/types/database.ts
+++ b/src/types/database.ts
@@ -2,31 +2,31 @@ export interface Location {
id: string;
name: string;
country: string;
- state_province?: string;
- city?: string;
- postal_code?: string;
- latitude?: number;
- longitude?: number;
- timezone?: string;
+ state_province?: string | null;
+ city?: string | null;
+ postal_code?: string | null;
+ latitude?: number | null;
+ longitude?: number | null;
+ timezone?: string | null;
}
export interface Company {
id: string;
name: string;
slug: string;
- description?: string;
+ description?: string | null;
company_type: string; // Allow any string from database
- person_type?: string; // Database returns string, validated at form level
- website_url?: string;
- founded_year?: number; // Legacy field
- founded_date?: string;
- founded_date_precision?: string;
- headquarters_location?: string;
- logo_url?: string;
- banner_image_url?: string;
- banner_image_id?: string;
- card_image_url?: string;
- card_image_id?: string;
+ person_type?: string | null; // Database returns string, validated at form level
+ website_url?: string | null;
+ founded_year?: number | null; // Legacy field
+ founded_date?: string | null;
+ founded_date_precision?: string | null;
+ headquarters_location?: string | null;
+ logo_url?: string | null;
+ banner_image_url?: string | null;
+ banner_image_id?: string | null;
+ card_image_url?: string | null;
+ card_image_id?: string | null;
average_rating: number;
review_count: number;
}
@@ -42,16 +42,16 @@ export interface Park {
opening_date_precision?: string | null;
closing_date?: string | null;
closing_date_precision?: string | null;
- website_url?: string;
- phone?: string;
- email?: string;
- location?: Location;
- operator?: Company;
- property_owner?: Company;
- banner_image_url?: string;
- banner_image_id?: string;
- card_image_url?: string;
- card_image_id?: string;
+ website_url?: string | null;
+ phone?: string | null;
+ email?: string | null;
+ location?: Location | null;
+ operator?: Company | null;
+ property_owner?: Company | null;
+ banner_image_url?: string | null;
+ banner_image_id?: string | null;
+ card_image_url?: string | null;
+ card_image_id?: string | null;
average_rating: number;
review_count: number;
ride_count: number;