feat: restructure frontend routes — vendor/tenant persona split

Splits the flat 3-page UI into /vendor/* (platform:admin) and /tenant/*
(all authenticated users) route trees, with stub pages, new API hooks,
updated Layout with persona-aware sidebar, and SpaController forwarding.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-04-09 21:52:34 +02:00
parent e56e3fca8a
commit bf3aa57274
19 changed files with 329 additions and 496 deletions

View File

@@ -4,6 +4,8 @@ export interface TenantResponse {
slug: string;
tier: string;
status: string;
serverEndpoint: string | null;
provisionError: string | null;
createdAt: string;
updatedAt: string;
}
@@ -28,3 +30,64 @@ export interface MeResponse {
logtoOrgId: string;
}>;
}
// Vendor API types
export interface VendorTenantSummary {
id: string;
name: string;
slug: string;
tier: string;
status: string;
serverState: string;
licenseExpiry: string | null;
provisionError: string | null;
}
export interface VendorTenantDetail {
tenant: TenantResponse;
serverState: string;
serverHealthy: boolean;
serverStatus: string;
license: LicenseResponse | null;
}
export interface CreateTenantRequest {
name: string;
slug: string;
tier?: string;
}
// Tenant portal API types
export interface DashboardData {
name: string;
slug: string;
tier: string;
status: string;
serverHealthy: boolean;
serverStatus: string;
serverEndpoint: string | null;
licenseTier: string | null;
licenseDaysRemaining: number;
limits: Record<string, number>;
features: Record<string, boolean>;
}
export interface TenantLicenseData {
id: string;
tier: string;
features: Record<string, boolean>;
limits: Record<string, number>;
issuedAt: string;
expiresAt: string;
token: string;
daysRemaining: number;
}
export interface TenantSettings {
name: string;
slug: string;
tier: string;
status: string;
serverEndpoint: string | null;
createdAt: string;
}