Tipos TypeScript
Todos os tipos abaixo são exportados por @oondemand/oon-core-front.
import type { OonCoreFrontConfig, CollectionViewDef, ... } from "@oondemand/oon-core-front";
Config de bootstrap
OonCoreFrontConfig
interface OonCoreFrontConfig {
app: OonAppConfig;
api: OonApiConfig;
auth?: OonAuthConfig;
theme?: Record<string, unknown>;
modules?: OonModule[];
ui?: OonUiManifest;
security?: OonSecurityConfig;
rootElementId?: string;
}
OonAppConfig
interface OonAppConfig {
id: string;
name: string;
title?: string;
logo?: string;
favicon?: string;
version?: string;
}
OonApiConfig
interface OonApiConfig {
baseUrl: string;
assistantBaseUrl?: string;
meusAppsUrl?: string;
versionPrefix?: string;
timeout?: number;
}
OonAuthConfig
interface OonAuthConfig {
mode?: "bearer" | "cookie" | "external-sso";
loginUrl?: string;
tokenParam?: string;
}
OonSecurityConfig
interface OonSecurityConfig {
enableRouteGuard?: boolean;
enablePermissionGate?: boolean;
redactAssistantContext?: boolean;
disableConsoleInProduction?: boolean;
}
Views
CollectionViewDef
interface CollectionViewDef {
type: "collection";
id?: string;
model: string;
label?: string;
path?: string;
icon?: ReactNode;
section?: string;
mode?: "full" | "minimal" | "dynamic";
columns?: OonColumnDef[];
form?: OonFormFieldDef[];
importExport?: boolean;
permissions?: string[];
}
DocumentViewDef
interface DocumentViewDef {
type: "document";
id?: string;
model: string;
label?: string;
approval?: boolean;
attachments?: boolean;
permissions?: string[];
}
PipelineViewDef
interface PipelineViewDef {
type: "pipeline";
id?: string;
model: string;
label?: string;
stageField?: string;
stages?: Array<{ id: string; label: string }>;
permissions?: string[];
}
DashboardViewDef
interface DashboardViewDef {
type: "dashboard";
id?: string;
label?: string;
widgets?: DashboardWidgetDef[];
}
Campos e metadata
FieldKind
type FieldKind =
| "string" | "number" | "boolean" | "date"
| "ref" | "enum"
| "currency" | "currencyCode" | "currencyConverted"
| "raw";
FieldMeta
interface FieldMeta {
name: string;
kind: FieldKind;
label?: string;
searchable?: boolean;
ref?: string; // quando kind === "ref"
options?: string[]; // quando kind === "enum"
base?: string; // quando kind === "currencyConverted"
}
REST
PaginatedResult<T>
interface PaginatedResult<T> {
results: T[];
pagination: {
currentPage: number;
totalPages: number;
totalItems: number;
itemsPerPage: number;
};
}
OonError
interface OonError {
code: string;
message: string;
status?: number;
details?: unknown;
requestId?: string;
}
OonUser
interface OonUser {
tipo: string;
nome: string;
email: string;
[extra: string]: unknown;
}