analytica-frontend-lib 1.2.51 → 1.2.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/ActivitiesHistory/index.css +19387 -0
  2. package/dist/ActivitiesHistory/index.css.map +1 -0
  3. package/dist/ActivitiesHistory/index.d.ts +2 -0
  4. package/dist/ActivitiesHistory/index.d.ts.map +1 -0
  5. package/dist/ActivitiesHistory/index.js +7381 -0
  6. package/dist/ActivitiesHistory/index.js.map +1 -0
  7. package/dist/ActivitiesHistory/index.mjs +7424 -0
  8. package/dist/ActivitiesHistory/index.mjs.map +1 -0
  9. package/dist/ActivityCardQuestionBanks/index.css +13 -0
  10. package/dist/ActivityCardQuestionBanks/index.css.map +1 -1
  11. package/dist/ActivityCardQuestionPreview/index.css +13 -0
  12. package/dist/ActivityCardQuestionPreview/index.css.map +1 -1
  13. package/dist/ActivityDetails/index.css +13 -0
  14. package/dist/ActivityDetails/index.css.map +1 -1
  15. package/dist/ActivityFilters/index.css +13 -0
  16. package/dist/ActivityFilters/index.css.map +1 -1
  17. package/dist/ActivityPreview/index.css +13 -0
  18. package/dist/ActivityPreview/index.css.map +1 -1
  19. package/dist/AlertManager/index.css +13 -0
  20. package/dist/AlertManager/index.css.map +1 -1
  21. package/dist/RecommendedLessonsHistory/index.css +13 -0
  22. package/dist/RecommendedLessonsHistory/index.css.map +1 -1
  23. package/dist/RecommendedLessonsHistory/index.js +10 -2
  24. package/dist/RecommendedLessonsHistory/index.js.map +1 -1
  25. package/dist/RecommendedLessonsHistory/index.mjs +10 -2
  26. package/dist/RecommendedLessonsHistory/index.mjs.map +1 -1
  27. package/dist/SendActivityModal/SendActivityModal.css +13 -0
  28. package/dist/SendActivityModal/SendActivityModal.css.map +1 -1
  29. package/dist/SendActivityModal/index.css +13 -0
  30. package/dist/SendActivityModal/index.css.map +1 -1
  31. package/dist/TableProvider/index.css +13 -0
  32. package/dist/TableProvider/index.css.map +1 -1
  33. package/dist/hooks/useActivitiesHistory/index.d.ts +210 -0
  34. package/dist/hooks/useActivitiesHistory/index.d.ts.map +1 -0
  35. package/dist/hooks/useActivitiesHistory/index.js +181 -0
  36. package/dist/hooks/useActivitiesHistory/index.js.map +1 -0
  37. package/dist/hooks/useActivitiesHistory/index.mjs +141 -0
  38. package/dist/hooks/useActivitiesHistory/index.mjs.map +1 -0
  39. package/dist/hooks/useActivitiesHistory.d.ts +210 -0
  40. package/dist/hooks/useActivitiesHistory.d.ts.map +1 -0
  41. package/dist/hooks/useActivityModels/index.d.ts +220 -0
  42. package/dist/hooks/useActivityModels/index.d.ts.map +1 -0
  43. package/dist/hooks/useActivityModels/index.js +186 -0
  44. package/dist/hooks/useActivityModels/index.js.map +1 -0
  45. package/dist/hooks/useActivityModels/index.mjs +146 -0
  46. package/dist/hooks/useActivityModels/index.mjs.map +1 -0
  47. package/dist/hooks/useActivityModels.d.ts +220 -0
  48. package/dist/hooks/useActivityModels.d.ts.map +1 -0
  49. package/dist/index.css +13 -0
  50. package/dist/index.css.map +1 -1
  51. package/dist/index.d.ts +8 -0
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +1069 -23
  54. package/dist/index.js.map +1 -1
  55. package/dist/index.mjs +1049 -23
  56. package/dist/index.mjs.map +1 -1
  57. package/dist/styles.css +13 -0
  58. package/dist/styles.css.map +1 -1
  59. package/dist/types/activitiesHistory/index.d.ts +196 -0
  60. package/dist/types/activitiesHistory/index.d.ts.map +1 -0
  61. package/dist/types/activitiesHistory/index.js +92 -0
  62. package/dist/types/activitiesHistory/index.js.map +1 -0
  63. package/dist/types/activitiesHistory/index.mjs +59 -0
  64. package/dist/types/activitiesHistory/index.mjs.map +1 -0
  65. package/dist/types/activitiesHistory.d.ts +196 -0
  66. package/dist/types/activitiesHistory.d.ts.map +1 -0
  67. package/dist/types/common.d.ts +44 -0
  68. package/dist/types/common.d.ts.map +1 -0
  69. package/dist/types/recommendedLessons/index.d.ts +10 -18
  70. package/dist/types/recommendedLessons/index.d.ts.map +1 -1
  71. package/dist/types/recommendedLessons/index.js +27 -22
  72. package/dist/types/recommendedLessons/index.js.map +1 -1
  73. package/dist/types/recommendedLessons/index.mjs +26 -23
  74. package/dist/types/recommendedLessons/index.mjs.map +1 -1
  75. package/dist/types/recommendedLessons.d.ts +10 -18
  76. package/dist/types/recommendedLessons.d.ts.map +1 -1
  77. package/dist/utils/hookErrorHandler.d.ts +24 -0
  78. package/dist/utils/hookErrorHandler.d.ts.map +1 -0
  79. package/package.json +7 -1
  80. package/dist/RecommendedLessonDetails/index.d.ts +0 -5
  81. package/dist/RecommendedLessonDetails/index.d.ts.map +0 -1
  82. package/dist/RecommendedLessonDetails/index.js +0 -4854
  83. package/dist/RecommendedLessonDetails/index.js.map +0 -1
  84. package/dist/RecommendedLessonDetails/index.mjs +0 -4872
  85. package/dist/RecommendedLessonDetails/index.mjs.map +0 -1
  86. package/dist/hooks/useRecommendedLessonDetails/index.d.ts +0 -780
  87. package/dist/hooks/useRecommendedLessonDetails/index.d.ts.map +0 -1
  88. package/dist/hooks/useRecommendedLessonDetails/index.js +0 -204
  89. package/dist/hooks/useRecommendedLessonDetails/index.js.map +0 -1
  90. package/dist/hooks/useRecommendedLessonDetails/index.mjs +0 -174
  91. package/dist/hooks/useRecommendedLessonDetails/index.mjs.map +0 -1
@@ -0,0 +1,210 @@
1
+ import { z } from 'zod';
2
+ import { ActivityApiStatus } from '../types/activitiesHistory';
3
+ import type { ActivityHistoryResponse, ActivityTableItem, ActivitiesHistoryApiResponse, ActivityHistoryFilters, ActivityPagination } from '../types/activitiesHistory';
4
+ export declare const activitiesHistoryApiResponseSchema: z.ZodObject<{
5
+ message: z.ZodString;
6
+ data: z.ZodObject<{
7
+ activities: z.ZodArray<z.ZodObject<{
8
+ id: z.ZodString;
9
+ title: z.ZodString;
10
+ startDate: z.ZodNullable<z.ZodString>;
11
+ finalDate: z.ZodNullable<z.ZodString>;
12
+ status: z.ZodNativeEnum<typeof ActivityApiStatus>;
13
+ completionPercentage: z.ZodNumber;
14
+ subjectId: z.ZodString;
15
+ schoolId: z.ZodOptional<z.ZodString>;
16
+ schoolName: z.ZodOptional<z.ZodString>;
17
+ year: z.ZodOptional<z.ZodString>;
18
+ className: z.ZodOptional<z.ZodString>;
19
+ subjectName: z.ZodOptional<z.ZodString>;
20
+ }, "strip", z.ZodTypeAny, {
21
+ id: string;
22
+ title: string;
23
+ status: ActivityApiStatus;
24
+ subjectId: string;
25
+ startDate: string | null;
26
+ finalDate: string | null;
27
+ completionPercentage: number;
28
+ className?: string | undefined;
29
+ schoolName?: string | undefined;
30
+ year?: string | undefined;
31
+ subjectName?: string | undefined;
32
+ schoolId?: string | undefined;
33
+ }, {
34
+ id: string;
35
+ title: string;
36
+ status: ActivityApiStatus;
37
+ subjectId: string;
38
+ startDate: string | null;
39
+ finalDate: string | null;
40
+ completionPercentage: number;
41
+ className?: string | undefined;
42
+ schoolName?: string | undefined;
43
+ year?: string | undefined;
44
+ subjectName?: string | undefined;
45
+ schoolId?: string | undefined;
46
+ }>, "many">;
47
+ pagination: z.ZodObject<{
48
+ total: z.ZodNumber;
49
+ page: z.ZodNumber;
50
+ limit: z.ZodNumber;
51
+ totalPages: z.ZodNumber;
52
+ }, "strip", z.ZodTypeAny, {
53
+ page: number;
54
+ limit: number;
55
+ totalPages: number;
56
+ total: number;
57
+ }, {
58
+ page: number;
59
+ limit: number;
60
+ totalPages: number;
61
+ total: number;
62
+ }>;
63
+ }, "strip", z.ZodTypeAny, {
64
+ activities: {
65
+ id: string;
66
+ title: string;
67
+ status: ActivityApiStatus;
68
+ subjectId: string;
69
+ startDate: string | null;
70
+ finalDate: string | null;
71
+ completionPercentage: number;
72
+ className?: string | undefined;
73
+ schoolName?: string | undefined;
74
+ year?: string | undefined;
75
+ subjectName?: string | undefined;
76
+ schoolId?: string | undefined;
77
+ }[];
78
+ pagination: {
79
+ page: number;
80
+ limit: number;
81
+ totalPages: number;
82
+ total: number;
83
+ };
84
+ }, {
85
+ activities: {
86
+ id: string;
87
+ title: string;
88
+ status: ActivityApiStatus;
89
+ subjectId: string;
90
+ startDate: string | null;
91
+ finalDate: string | null;
92
+ completionPercentage: number;
93
+ className?: string | undefined;
94
+ schoolName?: string | undefined;
95
+ year?: string | undefined;
96
+ subjectName?: string | undefined;
97
+ schoolId?: string | undefined;
98
+ }[];
99
+ pagination: {
100
+ page: number;
101
+ limit: number;
102
+ totalPages: number;
103
+ total: number;
104
+ };
105
+ }>;
106
+ }, "strip", z.ZodTypeAny, {
107
+ data: {
108
+ activities: {
109
+ id: string;
110
+ title: string;
111
+ status: ActivityApiStatus;
112
+ subjectId: string;
113
+ startDate: string | null;
114
+ finalDate: string | null;
115
+ completionPercentage: number;
116
+ className?: string | undefined;
117
+ schoolName?: string | undefined;
118
+ year?: string | undefined;
119
+ subjectName?: string | undefined;
120
+ schoolId?: string | undefined;
121
+ }[];
122
+ pagination: {
123
+ page: number;
124
+ limit: number;
125
+ totalPages: number;
126
+ total: number;
127
+ };
128
+ };
129
+ message: string;
130
+ }, {
131
+ data: {
132
+ activities: {
133
+ id: string;
134
+ title: string;
135
+ status: ActivityApiStatus;
136
+ subjectId: string;
137
+ startDate: string | null;
138
+ finalDate: string | null;
139
+ completionPercentage: number;
140
+ className?: string | undefined;
141
+ schoolName?: string | undefined;
142
+ year?: string | undefined;
143
+ subjectName?: string | undefined;
144
+ schoolId?: string | undefined;
145
+ }[];
146
+ pagination: {
147
+ page: number;
148
+ limit: number;
149
+ totalPages: number;
150
+ total: number;
151
+ };
152
+ };
153
+ message: string;
154
+ }>;
155
+ /**
156
+ * Hook state interface
157
+ */
158
+ export interface UseActivitiesHistoryState {
159
+ activities: ActivityTableItem[];
160
+ loading: boolean;
161
+ error: string | null;
162
+ pagination: ActivityPagination;
163
+ }
164
+ /**
165
+ * Hook return type
166
+ */
167
+ export interface UseActivitiesHistoryReturn extends UseActivitiesHistoryState {
168
+ fetchActivities: (filters?: ActivityHistoryFilters) => Promise<void>;
169
+ }
170
+ /**
171
+ * Default pagination values
172
+ */
173
+ export declare const DEFAULT_ACTIVITIES_PAGINATION: ActivityPagination;
174
+ /**
175
+ * Transform API response to table item format
176
+ * @param activity - Activity from API response
177
+ * @returns Formatted activity for table display
178
+ */
179
+ export declare const transformActivityToTableItem: (activity: ActivityHistoryResponse) => ActivityTableItem;
180
+ /**
181
+ * Handle errors during activity fetch
182
+ * Uses the generic error handler factory to reduce code duplication
183
+ */
184
+ export declare const handleActivityFetchError: (error: unknown) => string;
185
+ /**
186
+ * Factory function to create useActivitiesHistory hook
187
+ *
188
+ * @param fetchActivitiesHistory - Function to fetch activities from API
189
+ * @returns Hook for managing activities history
190
+ *
191
+ * @example
192
+ * ```tsx
193
+ * // In your app setup
194
+ * const fetchActivitiesHistory = async (filters) => {
195
+ * const response = await api.get('/activities/history', { params: filters });
196
+ * return response.data;
197
+ * };
198
+ *
199
+ * const useActivitiesHistory = createUseActivitiesHistory(fetchActivitiesHistory);
200
+ *
201
+ * // In your component
202
+ * const { activities, loading, error, pagination, fetchActivities } = useActivitiesHistory();
203
+ * ```
204
+ */
205
+ export declare const createUseActivitiesHistory: (fetchActivitiesHistory: (filters?: ActivityHistoryFilters) => Promise<ActivitiesHistoryApiResponse>) => () => UseActivitiesHistoryReturn;
206
+ /**
207
+ * Alias for createUseActivitiesHistory
208
+ */
209
+ export declare const createActivitiesHistoryHook: (fetchActivitiesHistory: (filters?: ActivityHistoryFilters) => Promise<ActivitiesHistoryApiResponse>) => () => UseActivitiesHistoryReturn;
210
+ //# sourceMappingURL=useActivitiesHistory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActivitiesHistory.d.ts","sourceRoot":"","sources":["../../src/hooks/useActivitiesHistory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,iBAAiB,EAElB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,uBAAuB,EACvB,iBAAiB,EACjB,4BAA4B,EAC5B,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAsBpC,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW7C,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,yBAAyB;IAC3E,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE;AAED;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,kBAK3C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GACvC,UAAU,uBAAuB,KAChC,iBAiBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,4BAGpC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,0BAA0B,GACrC,wBAAwB,CACtB,OAAO,CAAC,EAAE,sBAAsB,KAC7B,OAAO,CAAC,4BAA4B,CAAC,WAE/B,0BAqDZ,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,2BA9Dd,CACtB,OAAO,CAAC,EAAE,sBAAsB,KAC7B,OAAO,CAAC,4BAA4B,CAAC,WAE/B,0BA0DwD,CAAC"}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/hooks/useActivitiesHistory.ts
31
+ var useActivitiesHistory_exports = {};
32
+ __export(useActivitiesHistory_exports, {
33
+ DEFAULT_ACTIVITIES_PAGINATION: () => DEFAULT_ACTIVITIES_PAGINATION,
34
+ activitiesHistoryApiResponseSchema: () => activitiesHistoryApiResponseSchema,
35
+ createActivitiesHistoryHook: () => createActivitiesHistoryHook,
36
+ createUseActivitiesHistory: () => createUseActivitiesHistory,
37
+ handleActivityFetchError: () => handleActivityFetchError,
38
+ transformActivityToTableItem: () => transformActivityToTableItem
39
+ });
40
+ module.exports = __toCommonJS(useActivitiesHistory_exports);
41
+ var import_react = require("react");
42
+ var import_zod2 = require("zod");
43
+ var import_dayjs = __toESM(require("dayjs"));
44
+
45
+ // src/types/common.ts
46
+ var GenericApiStatus = /* @__PURE__ */ ((GenericApiStatus2) => {
47
+ GenericApiStatus2["A_VENCER"] = "A_VENCER";
48
+ GenericApiStatus2["VENCIDA"] = "VENCIDA";
49
+ GenericApiStatus2["CONCLUIDA"] = "CONCLUIDA";
50
+ return GenericApiStatus2;
51
+ })(GenericApiStatus || {});
52
+ var mapApiStatusToDisplay = (apiStatus) => {
53
+ const statusMap = {
54
+ ["A_VENCER" /* A_VENCER */]: "ATIVA" /* ATIVA */,
55
+ ["VENCIDA" /* VENCIDA */]: "VENCIDA" /* VENCIDA */,
56
+ ["CONCLUIDA" /* CONCLUIDA */]: "CONCLU\xCDDA" /* CONCLUIDA */
57
+ };
58
+ return statusMap[apiStatus];
59
+ };
60
+
61
+ // src/types/activitiesHistory.ts
62
+ var ACTIVITY_FILTER_STATUS_OPTIONS = [
63
+ { id: "A_VENCER" /* A_VENCER */, name: "A Vencer" },
64
+ { id: "VENCIDA" /* VENCIDA */, name: "Vencida" },
65
+ { id: "CONCLUIDA" /* CONCLUIDA */, name: "Conclu\xEDda" }
66
+ ];
67
+ var mapActivityStatusToDisplay = (apiStatus) => mapApiStatusToDisplay(apiStatus);
68
+
69
+ // src/utils/hookErrorHandler.ts
70
+ var import_zod = require("zod");
71
+ var createFetchErrorHandler = (validationErrorMessage, genericErrorMessage) => (error) => {
72
+ if (error instanceof import_zod.z.ZodError) {
73
+ console.error(validationErrorMessage, error);
74
+ return validationErrorMessage;
75
+ }
76
+ console.error(genericErrorMessage, error);
77
+ return genericErrorMessage;
78
+ };
79
+
80
+ // src/hooks/useActivitiesHistory.ts
81
+ var activityHistoryResponseSchema = import_zod2.z.object({
82
+ id: import_zod2.z.string().uuid(),
83
+ title: import_zod2.z.string(),
84
+ startDate: import_zod2.z.string().nullable(),
85
+ finalDate: import_zod2.z.string().nullable(),
86
+ status: import_zod2.z.nativeEnum(GenericApiStatus),
87
+ completionPercentage: import_zod2.z.number().min(0).max(100),
88
+ subjectId: import_zod2.z.string().uuid(),
89
+ schoolId: import_zod2.z.string().optional(),
90
+ schoolName: import_zod2.z.string().optional(),
91
+ year: import_zod2.z.string().optional(),
92
+ className: import_zod2.z.string().optional(),
93
+ subjectName: import_zod2.z.string().optional()
94
+ });
95
+ var activitiesHistoryApiResponseSchema = import_zod2.z.object({
96
+ message: import_zod2.z.string(),
97
+ data: import_zod2.z.object({
98
+ activities: import_zod2.z.array(activityHistoryResponseSchema),
99
+ pagination: import_zod2.z.object({
100
+ total: import_zod2.z.number(),
101
+ page: import_zod2.z.number(),
102
+ limit: import_zod2.z.number(),
103
+ totalPages: import_zod2.z.number()
104
+ })
105
+ })
106
+ });
107
+ var DEFAULT_ACTIVITIES_PAGINATION = {
108
+ total: 0,
109
+ page: 1,
110
+ limit: 10,
111
+ totalPages: 0
112
+ };
113
+ var transformActivityToTableItem = (activity) => {
114
+ return {
115
+ id: activity.id,
116
+ startDate: activity.startDate ? (0, import_dayjs.default)(activity.startDate).format("DD/MM") : "-",
117
+ deadline: activity.finalDate ? (0, import_dayjs.default)(activity.finalDate).format("DD/MM") : "-",
118
+ title: activity.title,
119
+ school: activity.schoolName || "-",
120
+ year: activity.year || "-",
121
+ subject: activity.subjectName || "-",
122
+ class: activity.className || "-",
123
+ status: mapActivityStatusToDisplay(activity.status),
124
+ completionPercentage: activity.completionPercentage
125
+ };
126
+ };
127
+ var handleActivityFetchError = createFetchErrorHandler(
128
+ "Erro ao validar dados de hist\xF3rico de atividades",
129
+ "Erro ao carregar hist\xF3rico de atividades"
130
+ );
131
+ var createUseActivitiesHistory = (fetchActivitiesHistory) => {
132
+ return () => {
133
+ const [state, setState] = (0, import_react.useState)({
134
+ activities: [],
135
+ loading: false,
136
+ error: null,
137
+ pagination: DEFAULT_ACTIVITIES_PAGINATION
138
+ });
139
+ const fetchActivities = (0, import_react.useCallback)(
140
+ async (filters) => {
141
+ setState((prev) => ({ ...prev, loading: true, error: null }));
142
+ try {
143
+ const responseData = await fetchActivitiesHistory(filters);
144
+ const validatedData = activitiesHistoryApiResponseSchema.parse(responseData);
145
+ const tableItems = validatedData.data.activities.map(
146
+ transformActivityToTableItem
147
+ );
148
+ setState({
149
+ activities: tableItems,
150
+ loading: false,
151
+ error: null,
152
+ pagination: validatedData.data.pagination
153
+ });
154
+ } catch (error) {
155
+ const errorMessage = handleActivityFetchError(error);
156
+ setState((prev) => ({
157
+ ...prev,
158
+ loading: false,
159
+ error: errorMessage
160
+ }));
161
+ }
162
+ },
163
+ [fetchActivitiesHistory]
164
+ );
165
+ return {
166
+ ...state,
167
+ fetchActivities
168
+ };
169
+ };
170
+ };
171
+ var createActivitiesHistoryHook = createUseActivitiesHistory;
172
+ // Annotate the CommonJS export names for ESM import in node:
173
+ 0 && (module.exports = {
174
+ DEFAULT_ACTIVITIES_PAGINATION,
175
+ activitiesHistoryApiResponseSchema,
176
+ createActivitiesHistoryHook,
177
+ createUseActivitiesHistory,
178
+ handleActivityFetchError,
179
+ transformActivityToTableItem
180
+ });
181
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useActivitiesHistory.ts","../../../src/types/common.ts","../../../src/types/activitiesHistory.ts","../../../src/utils/hookErrorHandler.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { z } from 'zod';\nimport dayjs from 'dayjs';\nimport {\n ActivityApiStatus,\n mapActivityStatusToDisplay,\n} from '../types/activitiesHistory';\nimport type {\n ActivityHistoryResponse,\n ActivityTableItem,\n ActivitiesHistoryApiResponse,\n ActivityHistoryFilters,\n ActivityPagination,\n} from '../types/activitiesHistory';\nimport { createFetchErrorHandler } from '../utils/hookErrorHandler';\n\n/**\n * Zod schema for activity history API response validation\n * Based on /activities/history endpoint\n */\nconst activityHistoryResponseSchema = z.object({\n id: z.string().uuid(),\n title: z.string(),\n startDate: z.string().nullable(),\n finalDate: z.string().nullable(),\n status: z.nativeEnum(ActivityApiStatus),\n completionPercentage: z.number().min(0).max(100),\n subjectId: z.string().uuid(),\n schoolId: z.string().optional(),\n schoolName: z.string().optional(),\n year: z.string().optional(),\n className: z.string().optional(),\n subjectName: z.string().optional(),\n});\n\nexport const activitiesHistoryApiResponseSchema = z.object({\n message: z.string(),\n data: z.object({\n activities: z.array(activityHistoryResponseSchema),\n pagination: z.object({\n total: z.number(),\n page: z.number(),\n limit: z.number(),\n totalPages: z.number(),\n }),\n }),\n});\n\n/**\n * Hook state interface\n */\nexport interface UseActivitiesHistoryState {\n activities: ActivityTableItem[];\n loading: boolean;\n error: string | null;\n pagination: ActivityPagination;\n}\n\n/**\n * Hook return type\n */\nexport interface UseActivitiesHistoryReturn extends UseActivitiesHistoryState {\n fetchActivities: (filters?: ActivityHistoryFilters) => Promise<void>;\n}\n\n/**\n * Default pagination values\n */\nexport const DEFAULT_ACTIVITIES_PAGINATION: ActivityPagination = {\n total: 0,\n page: 1,\n limit: 10,\n totalPages: 0,\n};\n\n/**\n * Transform API response to table item format\n * @param activity - Activity from API response\n * @returns Formatted activity for table display\n */\nexport const transformActivityToTableItem = (\n activity: ActivityHistoryResponse\n): ActivityTableItem => {\n return {\n id: activity.id,\n startDate: activity.startDate\n ? dayjs(activity.startDate).format('DD/MM')\n : '-',\n deadline: activity.finalDate\n ? dayjs(activity.finalDate).format('DD/MM')\n : '-',\n title: activity.title,\n school: activity.schoolName || '-',\n year: activity.year || '-',\n subject: activity.subjectName || '-',\n class: activity.className || '-',\n status: mapActivityStatusToDisplay(activity.status),\n completionPercentage: activity.completionPercentage,\n };\n};\n\n/**\n * Handle errors during activity fetch\n * Uses the generic error handler factory to reduce code duplication\n */\nexport const handleActivityFetchError = createFetchErrorHandler(\n 'Erro ao validar dados de histórico de atividades',\n 'Erro ao carregar histórico de atividades'\n);\n\n/**\n * Factory function to create useActivitiesHistory hook\n *\n * @param fetchActivitiesHistory - Function to fetch activities from API\n * @returns Hook for managing activities history\n *\n * @example\n * ```tsx\n * // In your app setup\n * const fetchActivitiesHistory = async (filters) => {\n * const response = await api.get('/activities/history', { params: filters });\n * return response.data;\n * };\n *\n * const useActivitiesHistory = createUseActivitiesHistory(fetchActivitiesHistory);\n *\n * // In your component\n * const { activities, loading, error, pagination, fetchActivities } = useActivitiesHistory();\n * ```\n */\nexport const createUseActivitiesHistory = (\n fetchActivitiesHistory: (\n filters?: ActivityHistoryFilters\n ) => Promise<ActivitiesHistoryApiResponse>\n) => {\n return (): UseActivitiesHistoryReturn => {\n const [state, setState] = useState<UseActivitiesHistoryState>({\n activities: [],\n loading: false,\n error: null,\n pagination: DEFAULT_ACTIVITIES_PAGINATION,\n });\n\n /**\n * Fetch activities history from API\n * @param filters - Optional filters for pagination, search, sorting, etc.\n */\n const fetchActivities = useCallback(\n async (filters?: ActivityHistoryFilters) => {\n setState((prev) => ({ ...prev, loading: true, error: null }));\n\n try {\n // Fetch data from API\n const responseData = await fetchActivitiesHistory(filters);\n\n // Validate response with Zod\n const validatedData =\n activitiesHistoryApiResponseSchema.parse(responseData);\n\n // Transform activities to table format\n const tableItems = validatedData.data.activities.map(\n transformActivityToTableItem\n );\n\n // Update state with validated and transformed data\n setState({\n activities: tableItems,\n loading: false,\n error: null,\n pagination: validatedData.data.pagination,\n });\n } catch (error) {\n const errorMessage = handleActivityFetchError(error);\n setState((prev) => ({\n ...prev,\n loading: false,\n error: errorMessage,\n }));\n }\n },\n [fetchActivitiesHistory]\n );\n\n return {\n ...state,\n fetchActivities,\n };\n };\n};\n\n/**\n * Alias for createUseActivitiesHistory\n */\nexport const createActivitiesHistoryHook = createUseActivitiesHistory;\n","/**\n * Common Type Definitions\n * Shared types used across multiple features (activities, goals, etc.)\n */\n\n/**\n * Generic API status for activities and goals\n * Used by backend endpoints for status filtering\n */\nexport enum GenericApiStatus {\n A_VENCER = 'A_VENCER',\n VENCIDA = 'VENCIDA',\n CONCLUIDA = 'CONCLUIDA',\n}\n\n/**\n * Generic display status for UI components\n * Used for Badge and status display in tables\n */\nexport enum GenericDisplayStatus {\n ATIVA = 'ATIVA',\n VENCIDA = 'VENCIDA',\n CONCLUIDA = 'CONCLUÍDA',\n}\n\n/**\n * Badge action types for status visualization\n * Maps to Badge component action prop\n */\nexport enum BadgeActionType {\n SUCCESS = 'success',\n WARNING = 'warning',\n ERROR = 'error',\n}\n\n/**\n * Get badge action based on display status\n * @param status - Display status value\n * @returns Badge action type for styling\n */\nexport const getStatusBadgeAction = (\n status: GenericDisplayStatus\n): BadgeActionType => {\n const actionMap: Record<GenericDisplayStatus, BadgeActionType> = {\n [GenericDisplayStatus.CONCLUIDA]: BadgeActionType.SUCCESS,\n [GenericDisplayStatus.ATIVA]: BadgeActionType.WARNING,\n [GenericDisplayStatus.VENCIDA]: BadgeActionType.ERROR,\n };\n return actionMap[status] ?? BadgeActionType.WARNING;\n};\n\n/**\n * Map API status to display status\n * @param apiStatus - Status from backend API\n * @returns Formatted status for UI display\n */\nexport const mapApiStatusToDisplay = (\n apiStatus: GenericApiStatus\n): GenericDisplayStatus => {\n const statusMap: Record<GenericApiStatus, GenericDisplayStatus> = {\n [GenericApiStatus.A_VENCER]: GenericDisplayStatus.ATIVA,\n [GenericApiStatus.VENCIDA]: GenericDisplayStatus.VENCIDA,\n [GenericApiStatus.CONCLUIDA]: GenericDisplayStatus.CONCLUIDA,\n };\n return statusMap[apiStatus];\n};\n","/**\n * Activities History Type Definitions\n * Types and interfaces for activities history and models functionality\n * Based on /activities/history and /activity-drafts endpoints\n */\n\nimport {\n GenericApiStatus,\n GenericDisplayStatus,\n BadgeActionType,\n getStatusBadgeAction,\n mapApiStatusToDisplay,\n} from './common';\n\n/**\n * Activity status from backend API /activities/history\n * Re-exported from common for backward compatibility\n */\nexport { GenericApiStatus as ActivityApiStatus } from './common';\n\n/**\n * Activity status for display in UI (Badge component)\n * Re-exported from common for backward compatibility\n */\nexport { GenericDisplayStatus as ActivityDisplayStatus } from './common';\n\n/**\n * Badge action types for activity status visualization\n * Re-exported from common for backward compatibility\n */\nexport { BadgeActionType as ActivityBadgeActionType } from './common';\n\n/**\n * Activity draft type enum (matches backend ACTIVITY_DRAFT_TYPE)\n */\nexport enum ActivityDraftType {\n MODELO = 'MODELO',\n RASCUNHO = 'RASCUNHO',\n}\n\n/**\n * Activity history response from backend API /activities/history\n */\nexport interface ActivityHistoryResponse {\n id: string;\n title: string;\n startDate: string | null;\n finalDate: string | null;\n status: GenericApiStatus;\n completionPercentage: number;\n subjectId: string;\n schoolId?: string;\n schoolName?: string;\n year?: string;\n className?: string;\n subjectName?: string;\n}\n\n/**\n * Activity table item interface for activities list table\n */\nexport interface ActivityTableItem extends Record<string, unknown> {\n id: string;\n startDate: string | null;\n deadline: string | null;\n title: string;\n school: string;\n year: string;\n subject: string;\n class: string;\n status: GenericDisplayStatus;\n completionPercentage: number;\n}\n\n/**\n * Pagination info from API\n */\nexport interface ActivityPagination {\n total: number;\n page: number;\n limit: number;\n totalPages: number;\n}\n\n/**\n * Activities history API complete response\n */\nexport interface ActivitiesHistoryApiResponse {\n message: string;\n data: {\n activities: ActivityHistoryResponse[];\n pagination: ActivityPagination;\n };\n}\n\n/**\n * Activity history filters for API query parameters\n */\nexport interface ActivityHistoryFilters {\n page?: number;\n limit?: number;\n status?: GenericApiStatus;\n search?: string;\n startDate?: string;\n finalDate?: string;\n subjectId?: string;\n schoolId?: string;\n sortBy?: 'finalDate' | 'title' | 'completionPercentage';\n sortOrder?: 'asc' | 'desc';\n}\n\n/**\n * Activity draft filters object from backend\n */\nexport interface ActivityDraftFilters {\n questionTypes?: string[];\n questionBanks?: string[];\n subjects?: string[];\n topics?: string[];\n subtopics?: string[];\n contents?: string[];\n}\n\n/**\n * Activity model response from backend API (/activity-drafts)\n */\nexport interface ActivityModelResponse {\n id: string;\n type: ActivityDraftType;\n title: string | null;\n creatorUserInstitutionId: string | null;\n subjectId: string | null;\n filters: ActivityDraftFilters | null;\n createdAt: string;\n updatedAt: string;\n}\n\n/**\n * Activity model table item for display\n */\nexport interface ActivityModelTableItem extends Record<string, unknown> {\n id: string;\n title: string;\n savedAt: string;\n subject: string;\n subjectId: string | null;\n}\n\n/**\n * Activity models API response\n */\nexport interface ActivityModelsApiResponse {\n message: string;\n data: {\n activityDrafts: ActivityModelResponse[];\n total: number;\n };\n}\n\n/**\n * Activity model filters for API query\n */\nexport interface ActivityModelFilters {\n page?: number;\n limit?: number;\n search?: string;\n subjectId?: string;\n type?: ActivityDraftType;\n}\n\n/**\n * Filter option for dropdowns\n * Extends with index signature to be compatible with CheckBoxGroup Item type\n */\nexport interface ActivityFilterOption {\n id: string;\n name: string;\n [key: string]: unknown;\n}\n\n/**\n * User data for filter options (schools, classes, subjects)\n */\nexport interface ActivityUserFilterData {\n schools?: Array<{ id: string; name: string }>;\n classes?: Array<{ id: string; name: string; schoolId?: string }>;\n subjects?: Array<{ id: string; name: string }>;\n schoolYears?: Array<{ id: string; name: string }>;\n}\n\n/**\n * Get status badge action based on activity display status\n * @param status - Activity display status\n * @returns Badge action type for styling\n */\nexport const getActivityStatusBadgeAction = (\n status: GenericDisplayStatus\n): BadgeActionType => getStatusBadgeAction(status);\n\n/**\n * Activity status options for filter\n */\nexport const ACTIVITY_FILTER_STATUS_OPTIONS: ActivityFilterOption[] = [\n { id: GenericApiStatus.A_VENCER, name: 'A Vencer' },\n { id: GenericApiStatus.VENCIDA, name: 'Vencida' },\n { id: GenericApiStatus.CONCLUIDA, name: 'Concluída' },\n];\n\n/**\n * Map API status to display status\n * @param apiStatus - Status from backend API\n * @returns Formatted status for UI display\n */\nexport const mapActivityStatusToDisplay = (\n apiStatus: GenericApiStatus\n): GenericDisplayStatus => mapApiStatusToDisplay(apiStatus);\n","import { z } from 'zod';\n\n/**\n * Factory function to create a fetch error handler\n * This reduces code duplication across data fetching hooks\n *\n * @param validationErrorMessage - Message to display for Zod validation errors\n * @param genericErrorMessage - Message to display for other errors\n * @returns Error handler function that returns appropriate error message\n *\n * @example\n * ```typescript\n * const handleFetchError = createFetchErrorHandler(\n * 'Erro ao validar dados',\n * 'Erro ao carregar dados'\n * );\n *\n * try {\n * // fetch data\n * } catch (error) {\n * const errorMessage = handleFetchError(error);\n * }\n * ```\n */\nexport const createFetchErrorHandler =\n (validationErrorMessage: string, genericErrorMessage: string) =>\n (error: unknown): string => {\n if (error instanceof z.ZodError) {\n console.error(validationErrorMessage, error);\n return validationErrorMessage;\n }\n\n console.error(genericErrorMessage, error);\n return genericErrorMessage;\n };\n"],"mappings":"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","names":["import_zod","GenericApiStatus","dayjs"]}
@@ -0,0 +1,141 @@
1
+ // src/hooks/useActivitiesHistory.ts
2
+ import { useState, useCallback } from "react";
3
+ import { z as z2 } from "zod";
4
+ import dayjs from "dayjs";
5
+
6
+ // src/types/common.ts
7
+ var GenericApiStatus = /* @__PURE__ */ ((GenericApiStatus2) => {
8
+ GenericApiStatus2["A_VENCER"] = "A_VENCER";
9
+ GenericApiStatus2["VENCIDA"] = "VENCIDA";
10
+ GenericApiStatus2["CONCLUIDA"] = "CONCLUIDA";
11
+ return GenericApiStatus2;
12
+ })(GenericApiStatus || {});
13
+ var mapApiStatusToDisplay = (apiStatus) => {
14
+ const statusMap = {
15
+ ["A_VENCER" /* A_VENCER */]: "ATIVA" /* ATIVA */,
16
+ ["VENCIDA" /* VENCIDA */]: "VENCIDA" /* VENCIDA */,
17
+ ["CONCLUIDA" /* CONCLUIDA */]: "CONCLU\xCDDA" /* CONCLUIDA */
18
+ };
19
+ return statusMap[apiStatus];
20
+ };
21
+
22
+ // src/types/activitiesHistory.ts
23
+ var ACTIVITY_FILTER_STATUS_OPTIONS = [
24
+ { id: "A_VENCER" /* A_VENCER */, name: "A Vencer" },
25
+ { id: "VENCIDA" /* VENCIDA */, name: "Vencida" },
26
+ { id: "CONCLUIDA" /* CONCLUIDA */, name: "Conclu\xEDda" }
27
+ ];
28
+ var mapActivityStatusToDisplay = (apiStatus) => mapApiStatusToDisplay(apiStatus);
29
+
30
+ // src/utils/hookErrorHandler.ts
31
+ import { z } from "zod";
32
+ var createFetchErrorHandler = (validationErrorMessage, genericErrorMessage) => (error) => {
33
+ if (error instanceof z.ZodError) {
34
+ console.error(validationErrorMessage, error);
35
+ return validationErrorMessage;
36
+ }
37
+ console.error(genericErrorMessage, error);
38
+ return genericErrorMessage;
39
+ };
40
+
41
+ // src/hooks/useActivitiesHistory.ts
42
+ var activityHistoryResponseSchema = z2.object({
43
+ id: z2.string().uuid(),
44
+ title: z2.string(),
45
+ startDate: z2.string().nullable(),
46
+ finalDate: z2.string().nullable(),
47
+ status: z2.nativeEnum(GenericApiStatus),
48
+ completionPercentage: z2.number().min(0).max(100),
49
+ subjectId: z2.string().uuid(),
50
+ schoolId: z2.string().optional(),
51
+ schoolName: z2.string().optional(),
52
+ year: z2.string().optional(),
53
+ className: z2.string().optional(),
54
+ subjectName: z2.string().optional()
55
+ });
56
+ var activitiesHistoryApiResponseSchema = z2.object({
57
+ message: z2.string(),
58
+ data: z2.object({
59
+ activities: z2.array(activityHistoryResponseSchema),
60
+ pagination: z2.object({
61
+ total: z2.number(),
62
+ page: z2.number(),
63
+ limit: z2.number(),
64
+ totalPages: z2.number()
65
+ })
66
+ })
67
+ });
68
+ var DEFAULT_ACTIVITIES_PAGINATION = {
69
+ total: 0,
70
+ page: 1,
71
+ limit: 10,
72
+ totalPages: 0
73
+ };
74
+ var transformActivityToTableItem = (activity) => {
75
+ return {
76
+ id: activity.id,
77
+ startDate: activity.startDate ? dayjs(activity.startDate).format("DD/MM") : "-",
78
+ deadline: activity.finalDate ? dayjs(activity.finalDate).format("DD/MM") : "-",
79
+ title: activity.title,
80
+ school: activity.schoolName || "-",
81
+ year: activity.year || "-",
82
+ subject: activity.subjectName || "-",
83
+ class: activity.className || "-",
84
+ status: mapActivityStatusToDisplay(activity.status),
85
+ completionPercentage: activity.completionPercentage
86
+ };
87
+ };
88
+ var handleActivityFetchError = createFetchErrorHandler(
89
+ "Erro ao validar dados de hist\xF3rico de atividades",
90
+ "Erro ao carregar hist\xF3rico de atividades"
91
+ );
92
+ var createUseActivitiesHistory = (fetchActivitiesHistory) => {
93
+ return () => {
94
+ const [state, setState] = useState({
95
+ activities: [],
96
+ loading: false,
97
+ error: null,
98
+ pagination: DEFAULT_ACTIVITIES_PAGINATION
99
+ });
100
+ const fetchActivities = useCallback(
101
+ async (filters) => {
102
+ setState((prev) => ({ ...prev, loading: true, error: null }));
103
+ try {
104
+ const responseData = await fetchActivitiesHistory(filters);
105
+ const validatedData = activitiesHistoryApiResponseSchema.parse(responseData);
106
+ const tableItems = validatedData.data.activities.map(
107
+ transformActivityToTableItem
108
+ );
109
+ setState({
110
+ activities: tableItems,
111
+ loading: false,
112
+ error: null,
113
+ pagination: validatedData.data.pagination
114
+ });
115
+ } catch (error) {
116
+ const errorMessage = handleActivityFetchError(error);
117
+ setState((prev) => ({
118
+ ...prev,
119
+ loading: false,
120
+ error: errorMessage
121
+ }));
122
+ }
123
+ },
124
+ [fetchActivitiesHistory]
125
+ );
126
+ return {
127
+ ...state,
128
+ fetchActivities
129
+ };
130
+ };
131
+ };
132
+ var createActivitiesHistoryHook = createUseActivitiesHistory;
133
+ export {
134
+ DEFAULT_ACTIVITIES_PAGINATION,
135
+ activitiesHistoryApiResponseSchema,
136
+ createActivitiesHistoryHook,
137
+ createUseActivitiesHistory,
138
+ handleActivityFetchError,
139
+ transformActivityToTableItem
140
+ };
141
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useActivitiesHistory.ts","../../../src/types/common.ts","../../../src/types/activitiesHistory.ts","../../../src/utils/hookErrorHandler.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport { z } from 'zod';\nimport dayjs from 'dayjs';\nimport {\n ActivityApiStatus,\n mapActivityStatusToDisplay,\n} from '../types/activitiesHistory';\nimport type {\n ActivityHistoryResponse,\n ActivityTableItem,\n ActivitiesHistoryApiResponse,\n ActivityHistoryFilters,\n ActivityPagination,\n} from '../types/activitiesHistory';\nimport { createFetchErrorHandler } from '../utils/hookErrorHandler';\n\n/**\n * Zod schema for activity history API response validation\n * Based on /activities/history endpoint\n */\nconst activityHistoryResponseSchema = z.object({\n id: z.string().uuid(),\n title: z.string(),\n startDate: z.string().nullable(),\n finalDate: z.string().nullable(),\n status: z.nativeEnum(ActivityApiStatus),\n completionPercentage: z.number().min(0).max(100),\n subjectId: z.string().uuid(),\n schoolId: z.string().optional(),\n schoolName: z.string().optional(),\n year: z.string().optional(),\n className: z.string().optional(),\n subjectName: z.string().optional(),\n});\n\nexport const activitiesHistoryApiResponseSchema = z.object({\n message: z.string(),\n data: z.object({\n activities: z.array(activityHistoryResponseSchema),\n pagination: z.object({\n total: z.number(),\n page: z.number(),\n limit: z.number(),\n totalPages: z.number(),\n }),\n }),\n});\n\n/**\n * Hook state interface\n */\nexport interface UseActivitiesHistoryState {\n activities: ActivityTableItem[];\n loading: boolean;\n error: string | null;\n pagination: ActivityPagination;\n}\n\n/**\n * Hook return type\n */\nexport interface UseActivitiesHistoryReturn extends UseActivitiesHistoryState {\n fetchActivities: (filters?: ActivityHistoryFilters) => Promise<void>;\n}\n\n/**\n * Default pagination values\n */\nexport const DEFAULT_ACTIVITIES_PAGINATION: ActivityPagination = {\n total: 0,\n page: 1,\n limit: 10,\n totalPages: 0,\n};\n\n/**\n * Transform API response to table item format\n * @param activity - Activity from API response\n * @returns Formatted activity for table display\n */\nexport const transformActivityToTableItem = (\n activity: ActivityHistoryResponse\n): ActivityTableItem => {\n return {\n id: activity.id,\n startDate: activity.startDate\n ? dayjs(activity.startDate).format('DD/MM')\n : '-',\n deadline: activity.finalDate\n ? dayjs(activity.finalDate).format('DD/MM')\n : '-',\n title: activity.title,\n school: activity.schoolName || '-',\n year: activity.year || '-',\n subject: activity.subjectName || '-',\n class: activity.className || '-',\n status: mapActivityStatusToDisplay(activity.status),\n completionPercentage: activity.completionPercentage,\n };\n};\n\n/**\n * Handle errors during activity fetch\n * Uses the generic error handler factory to reduce code duplication\n */\nexport const handleActivityFetchError = createFetchErrorHandler(\n 'Erro ao validar dados de histórico de atividades',\n 'Erro ao carregar histórico de atividades'\n);\n\n/**\n * Factory function to create useActivitiesHistory hook\n *\n * @param fetchActivitiesHistory - Function to fetch activities from API\n * @returns Hook for managing activities history\n *\n * @example\n * ```tsx\n * // In your app setup\n * const fetchActivitiesHistory = async (filters) => {\n * const response = await api.get('/activities/history', { params: filters });\n * return response.data;\n * };\n *\n * const useActivitiesHistory = createUseActivitiesHistory(fetchActivitiesHistory);\n *\n * // In your component\n * const { activities, loading, error, pagination, fetchActivities } = useActivitiesHistory();\n * ```\n */\nexport const createUseActivitiesHistory = (\n fetchActivitiesHistory: (\n filters?: ActivityHistoryFilters\n ) => Promise<ActivitiesHistoryApiResponse>\n) => {\n return (): UseActivitiesHistoryReturn => {\n const [state, setState] = useState<UseActivitiesHistoryState>({\n activities: [],\n loading: false,\n error: null,\n pagination: DEFAULT_ACTIVITIES_PAGINATION,\n });\n\n /**\n * Fetch activities history from API\n * @param filters - Optional filters for pagination, search, sorting, etc.\n */\n const fetchActivities = useCallback(\n async (filters?: ActivityHistoryFilters) => {\n setState((prev) => ({ ...prev, loading: true, error: null }));\n\n try {\n // Fetch data from API\n const responseData = await fetchActivitiesHistory(filters);\n\n // Validate response with Zod\n const validatedData =\n activitiesHistoryApiResponseSchema.parse(responseData);\n\n // Transform activities to table format\n const tableItems = validatedData.data.activities.map(\n transformActivityToTableItem\n );\n\n // Update state with validated and transformed data\n setState({\n activities: tableItems,\n loading: false,\n error: null,\n pagination: validatedData.data.pagination,\n });\n } catch (error) {\n const errorMessage = handleActivityFetchError(error);\n setState((prev) => ({\n ...prev,\n loading: false,\n error: errorMessage,\n }));\n }\n },\n [fetchActivitiesHistory]\n );\n\n return {\n ...state,\n fetchActivities,\n };\n };\n};\n\n/**\n * Alias for createUseActivitiesHistory\n */\nexport const createActivitiesHistoryHook = createUseActivitiesHistory;\n","/**\n * Common Type Definitions\n * Shared types used across multiple features (activities, goals, etc.)\n */\n\n/**\n * Generic API status for activities and goals\n * Used by backend endpoints for status filtering\n */\nexport enum GenericApiStatus {\n A_VENCER = 'A_VENCER',\n VENCIDA = 'VENCIDA',\n CONCLUIDA = 'CONCLUIDA',\n}\n\n/**\n * Generic display status for UI components\n * Used for Badge and status display in tables\n */\nexport enum GenericDisplayStatus {\n ATIVA = 'ATIVA',\n VENCIDA = 'VENCIDA',\n CONCLUIDA = 'CONCLUÍDA',\n}\n\n/**\n * Badge action types for status visualization\n * Maps to Badge component action prop\n */\nexport enum BadgeActionType {\n SUCCESS = 'success',\n WARNING = 'warning',\n ERROR = 'error',\n}\n\n/**\n * Get badge action based on display status\n * @param status - Display status value\n * @returns Badge action type for styling\n */\nexport const getStatusBadgeAction = (\n status: GenericDisplayStatus\n): BadgeActionType => {\n const actionMap: Record<GenericDisplayStatus, BadgeActionType> = {\n [GenericDisplayStatus.CONCLUIDA]: BadgeActionType.SUCCESS,\n [GenericDisplayStatus.ATIVA]: BadgeActionType.WARNING,\n [GenericDisplayStatus.VENCIDA]: BadgeActionType.ERROR,\n };\n return actionMap[status] ?? BadgeActionType.WARNING;\n};\n\n/**\n * Map API status to display status\n * @param apiStatus - Status from backend API\n * @returns Formatted status for UI display\n */\nexport const mapApiStatusToDisplay = (\n apiStatus: GenericApiStatus\n): GenericDisplayStatus => {\n const statusMap: Record<GenericApiStatus, GenericDisplayStatus> = {\n [GenericApiStatus.A_VENCER]: GenericDisplayStatus.ATIVA,\n [GenericApiStatus.VENCIDA]: GenericDisplayStatus.VENCIDA,\n [GenericApiStatus.CONCLUIDA]: GenericDisplayStatus.CONCLUIDA,\n };\n return statusMap[apiStatus];\n};\n","/**\n * Activities History Type Definitions\n * Types and interfaces for activities history and models functionality\n * Based on /activities/history and /activity-drafts endpoints\n */\n\nimport {\n GenericApiStatus,\n GenericDisplayStatus,\n BadgeActionType,\n getStatusBadgeAction,\n mapApiStatusToDisplay,\n} from './common';\n\n/**\n * Activity status from backend API /activities/history\n * Re-exported from common for backward compatibility\n */\nexport { GenericApiStatus as ActivityApiStatus } from './common';\n\n/**\n * Activity status for display in UI (Badge component)\n * Re-exported from common for backward compatibility\n */\nexport { GenericDisplayStatus as ActivityDisplayStatus } from './common';\n\n/**\n * Badge action types for activity status visualization\n * Re-exported from common for backward compatibility\n */\nexport { BadgeActionType as ActivityBadgeActionType } from './common';\n\n/**\n * Activity draft type enum (matches backend ACTIVITY_DRAFT_TYPE)\n */\nexport enum ActivityDraftType {\n MODELO = 'MODELO',\n RASCUNHO = 'RASCUNHO',\n}\n\n/**\n * Activity history response from backend API /activities/history\n */\nexport interface ActivityHistoryResponse {\n id: string;\n title: string;\n startDate: string | null;\n finalDate: string | null;\n status: GenericApiStatus;\n completionPercentage: number;\n subjectId: string;\n schoolId?: string;\n schoolName?: string;\n year?: string;\n className?: string;\n subjectName?: string;\n}\n\n/**\n * Activity table item interface for activities list table\n */\nexport interface ActivityTableItem extends Record<string, unknown> {\n id: string;\n startDate: string | null;\n deadline: string | null;\n title: string;\n school: string;\n year: string;\n subject: string;\n class: string;\n status: GenericDisplayStatus;\n completionPercentage: number;\n}\n\n/**\n * Pagination info from API\n */\nexport interface ActivityPagination {\n total: number;\n page: number;\n limit: number;\n totalPages: number;\n}\n\n/**\n * Activities history API complete response\n */\nexport interface ActivitiesHistoryApiResponse {\n message: string;\n data: {\n activities: ActivityHistoryResponse[];\n pagination: ActivityPagination;\n };\n}\n\n/**\n * Activity history filters for API query parameters\n */\nexport interface ActivityHistoryFilters {\n page?: number;\n limit?: number;\n status?: GenericApiStatus;\n search?: string;\n startDate?: string;\n finalDate?: string;\n subjectId?: string;\n schoolId?: string;\n sortBy?: 'finalDate' | 'title' | 'completionPercentage';\n sortOrder?: 'asc' | 'desc';\n}\n\n/**\n * Activity draft filters object from backend\n */\nexport interface ActivityDraftFilters {\n questionTypes?: string[];\n questionBanks?: string[];\n subjects?: string[];\n topics?: string[];\n subtopics?: string[];\n contents?: string[];\n}\n\n/**\n * Activity model response from backend API (/activity-drafts)\n */\nexport interface ActivityModelResponse {\n id: string;\n type: ActivityDraftType;\n title: string | null;\n creatorUserInstitutionId: string | null;\n subjectId: string | null;\n filters: ActivityDraftFilters | null;\n createdAt: string;\n updatedAt: string;\n}\n\n/**\n * Activity model table item for display\n */\nexport interface ActivityModelTableItem extends Record<string, unknown> {\n id: string;\n title: string;\n savedAt: string;\n subject: string;\n subjectId: string | null;\n}\n\n/**\n * Activity models API response\n */\nexport interface ActivityModelsApiResponse {\n message: string;\n data: {\n activityDrafts: ActivityModelResponse[];\n total: number;\n };\n}\n\n/**\n * Activity model filters for API query\n */\nexport interface ActivityModelFilters {\n page?: number;\n limit?: number;\n search?: string;\n subjectId?: string;\n type?: ActivityDraftType;\n}\n\n/**\n * Filter option for dropdowns\n * Extends with index signature to be compatible with CheckBoxGroup Item type\n */\nexport interface ActivityFilterOption {\n id: string;\n name: string;\n [key: string]: unknown;\n}\n\n/**\n * User data for filter options (schools, classes, subjects)\n */\nexport interface ActivityUserFilterData {\n schools?: Array<{ id: string; name: string }>;\n classes?: Array<{ id: string; name: string; schoolId?: string }>;\n subjects?: Array<{ id: string; name: string }>;\n schoolYears?: Array<{ id: string; name: string }>;\n}\n\n/**\n * Get status badge action based on activity display status\n * @param status - Activity display status\n * @returns Badge action type for styling\n */\nexport const getActivityStatusBadgeAction = (\n status: GenericDisplayStatus\n): BadgeActionType => getStatusBadgeAction(status);\n\n/**\n * Activity status options for filter\n */\nexport const ACTIVITY_FILTER_STATUS_OPTIONS: ActivityFilterOption[] = [\n { id: GenericApiStatus.A_VENCER, name: 'A Vencer' },\n { id: GenericApiStatus.VENCIDA, name: 'Vencida' },\n { id: GenericApiStatus.CONCLUIDA, name: 'Concluída' },\n];\n\n/**\n * Map API status to display status\n * @param apiStatus - Status from backend API\n * @returns Formatted status for UI display\n */\nexport const mapActivityStatusToDisplay = (\n apiStatus: GenericApiStatus\n): GenericDisplayStatus => mapApiStatusToDisplay(apiStatus);\n","import { z } from 'zod';\n\n/**\n * Factory function to create a fetch error handler\n * This reduces code duplication across data fetching hooks\n *\n * @param validationErrorMessage - Message to display for Zod validation errors\n * @param genericErrorMessage - Message to display for other errors\n * @returns Error handler function that returns appropriate error message\n *\n * @example\n * ```typescript\n * const handleFetchError = createFetchErrorHandler(\n * 'Erro ao validar dados',\n * 'Erro ao carregar dados'\n * );\n *\n * try {\n * // fetch data\n * } catch (error) {\n * const errorMessage = handleFetchError(error);\n * }\n * ```\n */\nexport const createFetchErrorHandler =\n (validationErrorMessage: string, genericErrorMessage: string) =>\n (error: unknown): string => {\n if (error instanceof z.ZodError) {\n console.error(validationErrorMessage, error);\n return validationErrorMessage;\n }\n\n console.error(genericErrorMessage, error);\n return genericErrorMessage;\n };\n"],"mappings":"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","names":["z","GenericApiStatus","z"]}