UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

101 lines 4.36 kB
import { z } from 'zod'; import { RecommendedClassDisplayStatus } from '../../types/recommendedLessons'; import type { RecommendedClassHistoryItem, RecommendedClassTableItem, RecommendedClassHistoryApiResponse, RecommendedClassHistoryFilters, RecommendedClassHistoryPagination } from '../../types/recommendedLessons'; export declare const recommendedClassHistoryApiResponseSchema: z.ZodObject<{ message: z.ZodString; data: z.ZodObject<{ recommendedClass: z.ZodArray<z.ZodObject<{ recommendedClass: z.ZodObject<{ id: z.ZodString; title: z.ZodString; startDate: z.ZodNullable<z.ZodString>; finalDate: z.ZodNullable<z.ZodString>; createdAt: z.ZodString; progress: z.ZodNumber; totalLessons: z.ZodNumber; }, z.core.$strip>; subject: z.ZodNullable<z.ZodObject<{ id: z.ZodString; name: z.ZodString; }, z.core.$strip>>; creator: z.ZodNullable<z.ZodObject<{ id: z.ZodString; name: z.ZodString; }, z.core.$strip>>; stats: z.ZodObject<{ totalStudents: z.ZodNumber; completedCount: z.ZodNumber; completionPercentage: z.ZodNumber; }, z.core.$strip>; breakdown: z.ZodArray<z.ZodObject<{ classId: z.ZodString; className: z.ZodString; schoolId: z.ZodString; schoolName: z.ZodString; studentCount: z.ZodNumber; completedCount: z.ZodNumber; }, z.core.$strip>>; }, z.core.$strip>>; total: z.ZodNumber; }, z.core.$strip>; }, z.core.$strip>; /** * Hook state interface */ export interface UseRecommendedLessonsHistoryState { recommendedClass: RecommendedClassTableItem[]; loading: boolean; error: string | null; pagination: RecommendedClassHistoryPagination; } /** * Hook return type */ export interface UseRecommendedLessonsHistoryReturn extends UseRecommendedLessonsHistoryState { fetchRecommendedClass: (filters?: RecommendedClassHistoryFilters) => Promise<void>; } /** * Determine status based on dates and completion * @param finalDate - RecommendedClass final date * @param completionPercentage - Completion percentage * @returns Display status for UI */ export declare const determineRecommendedClassStatus: (finalDate: string | null, completionPercentage: number) => RecommendedClassDisplayStatus; /** * Transform API response to table item format * @param item - RecommendedClass history item from API response * @returns Formatted recommendedClass for table display */ export declare const transformRecommendedClassToTableItem: (item: RecommendedClassHistoryItem) => RecommendedClassTableItem; /** * Handle errors during recommendedClass fetch * @param error - Error object * @returns Error message for UI display */ export declare const handleRecommendedClassFetchError: (error: unknown) => string; /** * Factory function to create useRecommendedLessonsHistory hook * * @param fetchRecommendedClassHistory - Function to fetch recommendedClass from API * @returns Hook for managing recommended lessons history * * @example * ```tsx * // In your app setup * const fetchRecommendedClassHistory = async (filters) => { * const response = await api.get('/recommended-class/history', { params: filters }); * return response.data; * }; * * const useRecommendedClassHistory = createUseRecommendedLessonsHistory(fetchRecommendedClassHistory); * * // In your component * const { recommendedClass, loading, error, pagination, fetchRecommendedClass } = useRecommendedClassHistory(); * ``` */ export declare const createUseRecommendedLessonsHistory: (fetchRecommendedClassHistory: (filters?: RecommendedClassHistoryFilters) => Promise<RecommendedClassHistoryApiResponse>) => () => UseRecommendedLessonsHistoryReturn; /** * Alias for createUseRecommendedLessonsHistory */ export declare const createRecommendedLessonsHistoryHook: (fetchRecommendedClassHistory: (filters?: RecommendedClassHistoryFilters) => Promise<RecommendedClassHistoryApiResponse>) => () => UseRecommendedLessonsHistoryReturn; //# sourceMappingURL=useRecommendedLessons.d.ts.map