analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
123 lines • 4.15 kB
TypeScript
import { REPORT_MODAL_VARIANT } from '../types/common';
/**
* Time + percentage pair returned by the backend for platform/hours breakdowns.
*/
export interface AccessReportTimePercentage {
time: string;
percentage: number;
}
/**
* User context returned by the backend inside every access report response.
*/
export interface AccessReportUser {
id: string;
name: string;
profileType: string;
school: string;
group: string | null;
class: string | null;
year: number;
}
/**
* Platform access breakdown — web vs mobile.
*/
export interface AccessReportByPlatform {
web: AccessReportTimePercentage;
mobile: AccessReportTimePercentage;
}
/**
* Full 200 response for STUDENT access report.
* Mirrors backend shape from GET /access-report/access/user/:userId (student variant).
*/
export interface AccessReportStudentData {
user: AccessReportUser;
accessData: {
totalTime: string;
activitiesTime: string;
contentTime: string;
recommendedLessonsTime: string;
simulationsTime: string;
questionnairesTime: string;
accessCount: number;
lastAccess: string | null;
};
accessByPlatform: AccessReportByPlatform;
hoursByItem: {
activities: AccessReportTimePercentage;
content: AccessReportTimePercentage;
simulations: AccessReportTimePercentage;
questionnaires: AccessReportTimePercentage;
recommendedLessons: AccessReportTimePercentage;
};
}
/**
* Full 200 response for TEACHER / UNIT_MANAGER / REGIONAL_MANAGER access report.
* Mirrors backend shape from GET /access-report/access/user/:userId (professional variant).
*/
export interface AccessReportProfessionalData {
user: AccessReportUser;
accessData: {
totalTime: string;
activitiesTime: string;
recommendedLessonsTime: string;
accessCount: number;
lastAccess: string | null;
};
accessByPlatform: AccessReportByPlatform;
hoursByItem: {
activities: AccessReportTimePercentage;
recommendedLessons: AccessReportTimePercentage;
};
}
/** @deprecated Use {@link REPORT_MODAL_VARIANT} instead. Re-exported for backwards compatibility. */
export { REPORT_MODAL_VARIANT as AccessReportModalVariant } from '../types/common';
/**
* Access count by period item for bar chart
*/
export interface AccessCountByPeriodItem {
label: string;
count: number;
}
interface AccessReportModalBaseProps {
isOpen: boolean;
onClose: () => void;
/** Modal title (default: "Relatório de acesso") */
title?: string;
loading?: boolean;
error?: string | null;
/** Optional access count by period data for rendering the access count chart */
accessCountByPeriod?: AccessCountByPeriodItem[];
}
type AccessReportModalStudentProps = {
variant: REPORT_MODAL_VARIANT.STUDENT;
data: AccessReportStudentData | null;
};
type AccessReportModalProfessionalProps = {
variant: REPORT_MODAL_VARIANT.PROFESSIONAL;
data: AccessReportProfessionalData | null;
};
export type AccessReportModalProps = AccessReportModalBaseProps & (AccessReportModalStudentProps | AccessReportModalProfessionalProps);
/**
* AccessReportModal component
*
* Displays a modal with access data for a user.
*
* Two variants driven by the profile type:
* - `STUDENT` — 6 metric boxes (totalTime, contentTime, recommendedLessonsTime,
* simulationsTime, accessCount, lastAccess) + platform pie chart + hours-by-item pie chart
* - `PROFESSIONAL` — 3 metric boxes (totalTime, accessCount, lastAccess) +
* platform pie chart only (no hours-by-item breakdown for professionals)
*
* @example
* ```tsx
* <AccessReportModal
* isOpen={isOpen}
* onClose={() => setIsOpen(false)}
* variant={REPORT_MODAL_VARIANT.STUDENT}
* data={apiResponse.data}
* />
* ```
*/
export declare const AccessReportModal: ({ isOpen, onClose, title, loading, error, accessCountByPeriod, ...variantProps }: AccessReportModalProps) => import("react/jsx-runtime").JSX.Element;
export default AccessReportModal;
//# sourceMappingURL=AccessReportModal.d.ts.map