import type { AdminData, AdminRecord } from '../admin-data';

export type ViewMode = 'all' | 'sections';

export interface DesignSystemActionUrls {
	adminPostUrl: string;
	ajaxUrl: string;
	nonce: string;
	restUrl: string;
	restNonce: string;
}

export interface DesignSystemViewModel {
	applicationName: string;
	brandLogoFallbackUrl: string;
	brandLogoUrl: string;
	dateFormat: string;
	timeFormat: string;
	entitlementProfile: string;
	notice: AdminRecord;
	permissions: AdminRecord;
	actions: DesignSystemActionUrls;
	navigation: AdminRecord[];
	dashboard: AdminRecord;
	calendar: AdminRecord[];
	launches: AdminRecord[];
	runs: AdminRecord[];
	recordings: AdminRecord[];
	targets: AdminRecord[];
	recordableTargets: AdminRecord[];
	fieldCatalog: AdminRecord[];
	supportedAreas: AdminRecord[];
	notifications: AdminRecord[];
	notificationPreferences: AdminRecord;
	settingsState: AdminRecord;
	system: AdminRecord[];
	adapters: AdminRecord[];
	featureDiagnostics: AdminRecord[];
	ownershipCollisions: AdminRecord[];
	schedulerDiagnostics: AdminRecord[];
	scheduleDefaults: AdminRecord;
	supportReportUrl: string;
	approvalsActive: boolean;
	futureSurfacesEnabled: boolean;
	source: AdminData;
}

export interface DesignSystemSectionDefinition {
	id: string;
	label: string;
	group: string;
	dataKeys: string[];
	actions: string[];
	paritySelectors: string[];
	render: () => JSX.Element;
}
