Pular para o conteúdo principal

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;
}