merge: resolve conflicts between feat/impersonation-backend and main

Keep both backend impersonation (schema, routes, types) and main's
additions (settings, branding, dev login, full customer portal UI).

Portal frontend files retain main's versions (complete UI with sidebar,
sections, mock impersonation). Wiring frontend to real impersonation
backend API remains as follow-up work.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Groom Book CTO
2026-03-20 02:17:02 +00:00
50 changed files with 4677 additions and 503 deletions
+2 -2
View File
@@ -7,8 +7,8 @@
"types": "./src/index.ts",
"exports": {
".": {
"types": "./src/index.ts",
"default": "./dist/index.js"
"default": "./dist/index.js",
"types": "./src/index.ts"
}
},
"scripts": {
+15
View File
@@ -8,6 +8,8 @@ export type AppointmentStatus =
| "cancelled"
| "no_show";
export type ClientStatus = "active" | "disabled";
export interface Client {
id: string;
name: string;
@@ -16,6 +18,8 @@ export interface Client {
address: string | null;
notes: string | null;
emailOptOut: boolean;
status: ClientStatus;
disabledAt: string | null;
createdAt: string;
updatedAt: string;
}
@@ -170,6 +174,17 @@ export interface ImpersonationAuditLog {
createdAt: string;
}
export interface BusinessSettings {
id: string;
businessName: string;
logoBase64: string | null;
logoMimeType: string | null;
primaryColor: string;
accentColor: string;
createdAt: string;
updatedAt: string;
}
// Paginated list response
export interface PaginatedList<T> {
items: T[];