landing desktop

This commit is contained in:
2026-06-12 20:16:14 +03:30
parent 820e80ac16
commit 5eec309b54
89 changed files with 4343 additions and 2309 deletions
+82 -103
View File
@@ -1,3 +1,5 @@
export type BookingStatus = 'pending' | 'confirmed' | 'cancelled' | 'completed';
export type BusinessCategory = {
id: string;
slug: string;
@@ -8,94 +10,68 @@ export type BusinessCategory = {
export type BusinessImage = {
id: string;
url: string;
isCover: boolean;
originalName?: string | null;
sortOrder: number;
isCover: boolean;
};
export type Business = {
id: string;
title: string;
subtitle?: string | null;
slug: string;
description: string | null;
contactPhone: string | null;
address: string | null;
latitude: number | null;
longitude: number | null;
description?: string | null;
address?: string | null;
phone?: string | null;
isActive: boolean;
serviceClassesEnabled?: boolean;
concurrentCapacity?: number;
slotStepMinutes?: number;
categoryId: string;
ownerId?: string | null;
category?: BusinessCategory;
images?: BusinessImage[];
};
export type BusinessRegistrationStatus = 'pending' | 'approved' | 'rejected';
export type BusinessRegistrationRequest = {
id: string;
applicantId: string;
status: BusinessRegistrationStatus;
title: string;
slug: string;
categoryId: string;
description: string | null;
contactPhone: string | null;
address: string | null;
adminNote: string | null;
businessId: string | null;
createdAt: string;
category?: BusinessCategory;
applicant?: { id: string; mobile: string; fullName: string | null };
};
export type CreateBusinessRegistrationPayload = {
title: string;
categoryId: string;
slug?: string;
description?: string;
contactPhone?: string;
address?: string;
concurrentCapacity?: number;
slotStepMinutes?: number;
serviceClassesEnabled?: boolean;
createdAt?: string;
updatedAt?: string;
};
export type UpdateBusinessPayload = {
title?: string;
subtitle?: string | null;
description?: string | null;
contactPhone?: string | null;
address?: string | null;
latitude?: number | null;
longitude?: number | null;
serviceClassesEnabled?: boolean;
phone?: string | null;
isActive?: boolean;
concurrentCapacity?: number;
slotStepMinutes?: number;
};
export type BusinessServiceClass = {
id: string;
businessId: string;
title: string;
description: string | null;
sortOrder: number;
isActive: boolean;
};
export type BusinessServiceClassPrice = {
id: string;
businessServiceId: string;
classId: string;
price: string;
durationMinutes: number | null;
isActive: boolean;
serviceClass?: BusinessServiceClass;
serviceClassesEnabled?: boolean;
};
export type ServiceTemplate = {
id: string;
title: string;
slug: string;
description: string | null;
defaultDurationMinutes: number | null;
description?: string | null;
defaultDurationMinutes?: number | null;
isActive: boolean;
categoryId: string;
};
export type BusinessServiceClassPrice = {
id: string;
classId: string;
price: string;
durationMinutes?: number | null;
isActive: boolean;
};
export type BusinessServiceClass = {
id: string;
businessId: string;
title: string;
description?: string | null;
sortOrder: number;
isActive: boolean;
classPrices?: BusinessServiceClassPrice[];
};
export type BusinessService = {
@@ -103,43 +79,12 @@ export type BusinessService = {
businessId: string;
serviceTemplateId: string;
price: string;
durationMinutes: number | null;
durationMinutes?: number | null;
isActive: boolean;
serviceTemplate?: ServiceTemplate;
classPrices?: BusinessServiceClassPrice[];
};
export type BusinessServiceRequestStatus = 'pending' | 'approved' | 'rejected';
export type BusinessServiceRequest = {
id: string;
businessId: string;
requestedById: string;
status: BusinessServiceRequestStatus;
title: string;
description: string | null;
price: string;
durationMinutes: number | null;
adminNote: string | null;
serviceTemplateId: string | null;
businessServiceId: string | null;
createdAt?: string;
business?: Business;
};
export type CreateBusinessServiceRequestPayload = {
title: string;
description?: string;
price: number;
durationMinutes?: number;
};
export type BookingStatus =
| 'pending'
| 'confirmed'
| 'cancelled'
| 'completed';
export type Booking = {
id: string;
customerId: string;
@@ -149,15 +94,49 @@ export type Booking = {
bookingGroupId?: string | null;
scheduledAt: string;
status: BookingStatus;
note: string | null;
createdAt?: string;
updatedAt?: string;
customer?: {
id: string;
mobile: string;
fullName: string | null;
};
note?: string | null;
business?: Business;
businessService?: BusinessService;
serviceClass?: BusinessServiceClass;
customer?: {
id: string;
mobile: string;
fullName?: string | null;
};
};
export type BusinessRegistrationRequest = {
id: string;
status: string;
businessTitle: string;
categoryId: string;
ownerMobile: string;
createdAt: string;
};
export type CreateBusinessRegistrationPayload = {
businessTitle: string;
categoryId: string;
description?: string;
address?: string;
phone?: string;
};
export type BusinessServiceRequest = {
id: string;
businessId: string;
status: string;
title: string;
description?: string | null;
price: string;
durationMinutes?: number | null;
createdAt: string;
};
export type CreateBusinessServiceRequestPayload = {
businessId: string;
title: string;
description?: string;
price: number;
durationMinutes?: number;
};