analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
78 lines • 2.38 kB
TypeScript
import { ComponentType } from 'react';
import type { CategoryConfig } from '../../CheckBoxGroup/index';
import type { FetchStudentsByFiltersFunction } from '../../utils/studentTypes';
export type { RecipientItem } from '../useAlertForm/index';
export type { CategoryConfig } from '../../CheckBoxGroup/index';
export type { Item } from '../../CheckBoxGroup/index';
export interface StepConfig {
id: string;
label: string;
component?: ComponentType<StepComponentProps>;
validate?: (formData: unknown) => boolean | string;
shouldShow?: (formData: unknown) => boolean;
}
export interface StepComponentProps {
onNext?: () => void;
onPrevious?: () => void;
formData?: unknown;
}
export interface LabelsConfig {
pageTitle?: string;
modalTitle?: string;
sendButton?: string;
cancelButton?: string;
nextButton?: string;
previousButton?: string;
finishButton?: string;
titleLabel?: string;
titlePlaceholder?: string;
messageLabel?: string;
messagePlaceholder?: string;
imageLabel?: string;
recipientsTitle?: string;
recipientsDescription?: string;
dateLabel?: string;
timeLabel?: string;
sendTodayLabel?: string;
sendCopyToEmailLabel?: string;
previewTitle?: string;
previewWarning?: string;
noRecipientsSelected?: string;
titleNotDefined?: string;
messageNotDefined?: string;
dateNotDefined?: string;
}
export interface AlertsConfig {
categories: CategoryConfig[];
steps?: StepConfig[];
labels?: LabelsConfig;
behavior?: {
showAlertsTable?: boolean;
allowImageAttachment?: boolean;
allowScheduling?: boolean;
allowEmailCopy?: boolean;
onSendAlert?: (alertData: AlertData) => Promise<void>;
fetchStudentsByFilters?: FetchStudentsByFiltersFunction;
};
}
export interface AlertData {
title: string;
message: string;
image?: string | File | null;
date: string;
time: string;
sendToday: boolean;
/** Whether to also send a copy of the alert to each recipient's email. */
sendCopyToEmail?: boolean;
recipientCategories: Record<string, {
selectedIds: string[];
allSelected: boolean;
}>;
}
export interface AlertTableItem {
id: string;
title: string;
sentAt: string;
recipientsCount?: number;
}
//# sourceMappingURL=types.d.ts.map