analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
75 lines • 2.43 kB
TypeScript
import type { CategoryConfig } from '../../CheckBoxGroup/index';
export type { CategoryConfig, Item } from '../../CheckBoxGroup/index';
/**
* Form data structure for sending lesson
*/
export interface SendLessonFormData {
/** Lesson title (Step 1) */
title: string;
/** Notification message (Step 1) */
notification?: string;
/** Array of students to send lesson to (Step 2) */
students: Array<{
studentId: string;
userInstitutionId: string;
}>;
/** Start date in YYYY-MM-DD format (Step 3) */
startDate: string;
/** Start time in HH:MM format (Step 3) */
startTime: string;
/** End date in YYYY-MM-DD format (Step 3) */
finalDate: string;
/** End time in HH:MM format (Step 3) */
finalTime: string;
/** Whether attached activities can be retried by the student.
* Only relevant when the model has activity drafts attached. */
canRetry?: boolean;
}
/**
* Modal props
*/
export interface SendLessonModalProps {
/** Controls modal visibility */
isOpen: boolean;
/** Callback when modal is closed */
onClose: () => void;
/** Callback when lesson is submitted */
onSubmit: (data: SendLessonFormData) => Promise<void>;
/** Recipient categories configuration (same format as CheckboxGroup) */
categories: CategoryConfig[];
/** Callback when categories change (optional - for controlled state) */
onCategoriesChange?: (categories: CategoryConfig[]) => void;
/** Loading state for submit button */
isLoading?: boolean;
/** Callback when submission fails (optional - if not provided, error propagates) */
onError?: (error: unknown) => void;
/** Modal title for display */
modalTitle?: string;
/** When true, render the "Permitir refazer?" radio on step 3.
* Caller decides based on whether the selected model has any
* activity drafts attached. Defaults to false (no radio shown). */
hasAttachedActivities?: boolean;
}
/**
* Step validation errors
*/
export interface StepErrors {
title?: string;
students?: string;
startDate?: string;
startTime?: string;
finalDate?: string;
finalTime?: string;
}
/**
* Step state for stepper
*/
export type StepState = 'pending' | 'current' | 'completed';
/**
* Step configuration
*/
export interface StepConfig {
label: string;
state: StepState;
}
//# sourceMappingURL=types.d.ts.map