Add business registration for customers, owner panel, role-based nav, and Montime branding.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-23 18:13:25 +03:30
co-authored by Cursor
parent e07527c1db
commit 6897acc846
10 changed files with 404 additions and 9 deletions
+16
View File
@@ -0,0 +1,16 @@
import { api } from './client';
import type {
BusinessRegistrationRequest,
CreateBusinessRegistrationPayload,
} from './types';
export function fetchMyBusinessRegistrations() {
return api<BusinessRegistrationRequest[]>('/business-registration-requests/mine');
}
export function submitBusinessRegistration(payload: CreateBusinessRegistrationPayload) {
return api<BusinessRegistrationRequest>('/business-registration-requests', {
method: 'POST',
body: JSON.stringify(payload),
});
}
+12 -1
View File
@@ -1,5 +1,5 @@
import { api } from './client';
import type { Business } from './types';
import type { Business, UpdateBusinessPayload } from './types';
export function fetchBusinesses(params?: {
categoryId?: string;
@@ -19,3 +19,14 @@ export function fetchBusinesses(params?: {
export function fetchBusiness(id: string) {
return api<Business>(`/businesses/${id}`);
}
export function fetchMyBusinesses() {
return api<Business[]>('/businesses/mine');
}
export function updateBusiness(id: string, payload: UpdateBusinessPayload) {
return api<Business>(`/businesses/${id}`, {
method: 'PATCH',
body: JSON.stringify(payload),
});
}
+37
View File
@@ -23,10 +23,47 @@ export type Business = {
longitude: number | null;
isActive: boolean;
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;
description?: string;
contactPhone?: string;
address?: string;
};
export type UpdateBusinessPayload = {
title?: string;
description?: string | null;
contactPhone?: string | null;
address?: string | null;
latitude?: number | null;
longitude?: number | null;
};
export type ServiceTemplate = {
id: string;
title: string;