academe-kit 0.12.1 → 0.14.0

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.
@@ -20,6 +20,9 @@ export { createAcademeApiClient } from "./services";
20
20
  export type { AcademeApiClient, AcademeServices } from "./services";
21
21
  export type { ChallengeUserQuizAttempt, ChallengeUserQuizAttemptsResponse, } from "./services/ChallengeService";
22
22
  export type { JourneyStepView, JourneyChallengeView, JourneyView, } from "./services/UserProgressService";
23
+ export type { AccessibleSerie, ClassroomSummary, UserEnrollment, } from "./services/userService";
24
+ export type { VitrineHome, VitrinePlaylist, VitrineCard, VitrineCardKind, VitrinePlaylistSource, VitrineCardOrientation, } from "./services/VitrineService";
25
+ export type { WatchlistItem, WatchlistResponse, WatchlistType, } from "./services/WatchlistService";
23
26
  export { cn } from "./lib/utils";
24
27
  import "./index.css";
25
28
  import "./styles/globals.css";
@@ -397,7 +397,6 @@ export declare function createChallengeService(apiClient: AcademeApiClient): {
397
397
  tutorialTitle?: string;
398
398
  tutorialDescription?: string;
399
399
  tutorialVideoUrl?: string;
400
- redirectUrl?: string;
401
400
  isActive?: boolean;
402
401
  };
403
402
  };
@@ -432,7 +431,6 @@ export declare function createChallengeService(apiClient: AcademeApiClient): {
432
431
  tutorialTitle?: string;
433
432
  tutorialDescription?: string;
434
433
  tutorialVideoUrl?: string;
435
- redirectUrl?: string;
436
434
  isActive?: boolean;
437
435
  };
438
436
  }, `${string}/${string}`>>;
@@ -161,12 +161,12 @@ export declare function createQuizService(apiClient: AcademeApiClient): {
161
161
  "application/json": {
162
162
  status?: string;
163
163
  data?: {
164
- question_text?: string;
165
- question_type?: "multiple_choice" | "true_false";
166
- points?: number;
167
- options?: {
168
- text?: string;
169
- is_correct?: boolean;
164
+ question_text: string;
165
+ question_type: "multiple_choice" | "true_false";
166
+ points: number;
167
+ options: {
168
+ text: string;
169
+ is_correct: boolean;
170
170
  }[];
171
171
  }[];
172
172
  };
@@ -494,8 +494,8 @@ export declare function createQuizService(apiClient: AcademeApiClient): {
494
494
  type: "multiple_choice" | "true_false" | "open";
495
495
  points?: number;
496
496
  options?: {
497
- text?: string;
498
- is_correct?: boolean;
497
+ text: string;
498
+ is_correct: boolean;
499
499
  }[];
500
500
  }[];
501
501
  };
@@ -525,8 +525,8 @@ export declare function createQuizService(apiClient: AcademeApiClient): {
525
525
  type: "multiple_choice" | "true_false" | "open";
526
526
  points?: number;
527
527
  options?: {
528
- text?: string;
529
- is_correct?: boolean;
528
+ text: string;
529
+ is_correct: boolean;
530
530
  }[];
531
531
  }[];
532
532
  };
@@ -10,7 +10,7 @@ export declare function createStepService(apiClient: AcademeApiClient): {
10
10
  getAll(params?: GetStepsParams): Promise<import("openapi-fetch").FetchResponse<{
11
11
  parameters: {
12
12
  query?: {
13
- type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate" | "redirect";
13
+ type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate";
14
14
  isActive?: boolean;
15
15
  };
16
16
  header?: never;
@@ -36,7 +36,7 @@ export declare function createStepService(apiClient: AcademeApiClient): {
36
36
  }, {
37
37
  params: {
38
38
  query: {
39
- type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate" | "redirect";
39
+ type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate";
40
40
  isActive?: boolean;
41
41
  } | undefined;
42
42
  };
@@ -94,7 +94,7 @@ export declare function createStepService(apiClient: AcademeApiClient): {
94
94
  name: string;
95
95
  color: string;
96
96
  icon: string;
97
- type: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate" | "redirect";
97
+ type: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate";
98
98
  isActive?: boolean;
99
99
  };
100
100
  };
@@ -120,7 +120,7 @@ export declare function createStepService(apiClient: AcademeApiClient): {
120
120
  name: string;
121
121
  color: string;
122
122
  icon: string;
123
- type: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate" | "redirect";
123
+ type: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate";
124
124
  isActive?: boolean;
125
125
  };
126
126
  }, `${string}/${string}`>>;
@@ -142,7 +142,7 @@ export declare function createStepService(apiClient: AcademeApiClient): {
142
142
  name?: string;
143
143
  color?: string;
144
144
  icon?: string;
145
- type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate" | "redirect";
145
+ type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate";
146
146
  isActive?: boolean;
147
147
  };
148
148
  };
@@ -174,7 +174,7 @@ export declare function createStepService(apiClient: AcademeApiClient): {
174
174
  name?: string;
175
175
  color?: string;
176
176
  icon?: string;
177
- type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate" | "redirect";
177
+ type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate";
178
178
  isActive?: boolean;
179
179
  };
180
180
  }, `${string}/${string}`>>;
@@ -16,8 +16,15 @@ export declare function createUserProgressService(apiClient: AcademeApiClient):
16
16
  * `userId` é [Admin]: quando informado, retorna a jornada do usuário-alvo
17
17
  * (ex.: backoffice visualizando a jornada de um aluno); omitido = jornada
18
18
  * do próprio usuário autenticado.
19
+ *
20
+ * `institutionId` é a escola ATUAL: a jornada é POR ESCOLA (o usuário pode
21
+ * estar em várias). Omitido = 1ª matrícula resolvida no backend.
22
+ *
23
+ * ⚠️ Ordem dos parâmetros: `institutionId` foi adicionado como 3º parâmetro
24
+ * (após `userId`) para NÃO quebrar chamadas posicionais existentes — o
25
+ * backoffice chama `getJourney(undefined, userId)`.
19
26
  */
20
- getJourney(serieId?: string, userId?: string): Promise<JourneyView>;
27
+ getJourney(serieId?: string, userId?: string, institutionId?: string): Promise<JourneyView>;
21
28
  /**
22
29
  * Visão step-by-step do progresso do usuário em um desafio. Cada step traz
23
30
  * `myStartedAt`, `myCompletedAt` e (em desafios em grupo) os agregados do
@@ -0,0 +1,51 @@
1
+ import type { AcademeApiClient } from "./index";
2
+ /**
3
+ * Vitrine (Home) do aluno — rails/playlists estilo Netflix.
4
+ * Consome `GET /vitrine/home` do api-academe-v2.
5
+ *
6
+ * ⚠️ O endpoint ainda NÃO está no OpenAPI gerado (`academe-api.ts`), então os
7
+ * tipos abaixo são MANTIDOS À MÃO e a chamada usa cast — mesmo padrão de
8
+ * `InstitutionService.setUserClassrooms`. Quando o backend expuser o schema,
9
+ * regenerar os tipos e apertar.
10
+ */
11
+ export type VitrineCardKind = "course" | "module" | "lesson" | "playlist";
12
+ export type VitrinePlaylistSource = "curated" | "continue_watching" | "trending" | "watchlist" | "recent" | "continue_playlist";
13
+ export type VitrineCardOrientation = "horizontal" | "vertical" | "square" | "fullImage";
14
+ export interface VitrineCard {
15
+ kind: VitrineCardKind;
16
+ id: string;
17
+ courseId?: string | null;
18
+ title: string;
19
+ subtitle?: string | null;
20
+ coverUrl?: string | null;
21
+ durationSeconds?: number | null;
22
+ progressPct?: number | null;
23
+ courseTitle?: string | null;
24
+ lessonLabel?: string | null;
25
+ rank?: number | null;
26
+ }
27
+ export interface VitrinePlaylist {
28
+ id: string;
29
+ title: string;
30
+ subtitle: string | null;
31
+ source: VitrinePlaylistSource;
32
+ variant: "common" | "featured";
33
+ cardOrientation: VitrineCardOrientation;
34
+ itemsPerViewDesktop: number;
35
+ itemsPerViewMobile: number;
36
+ autoplay: boolean;
37
+ style: Record<string, unknown>;
38
+ items: VitrineCard[];
39
+ }
40
+ export interface VitrineHome {
41
+ institutionId: string | null;
42
+ playlists: VitrinePlaylist[];
43
+ }
44
+ export declare function createVitrineService(apiClient: AcademeApiClient): {
45
+ /**
46
+ * Home do aluno para a escola atual. `institutionId` omitido = 1ª matrícula
47
+ * (o backend resolve). Recarregar ao trocar de escola no app.
48
+ */
49
+ getHome(institutionId?: string): Promise<VitrineHome>;
50
+ };
51
+ export type VitrineService = ReturnType<typeof createVitrineService>;
@@ -0,0 +1,29 @@
1
+ import type { AcademeApiClient } from "./index";
2
+ /**
3
+ * "Minha lista" (watchlist) do aluno. Consome `/me/watchlist` do api-academe-v2.
4
+ * Endpoint ainda NÃO no OpenAPI gerado → cast + tipos à mão (padrão do repo).
5
+ */
6
+ export type WatchlistType = "course" | "module" | "lesson";
7
+ export interface WatchlistItem {
8
+ /** id da linha (para remover pela tela). */
9
+ id: string;
10
+ type: WatchlistType;
11
+ /** id do conteúdo (curso/módulo/aula). */
12
+ contentId: string;
13
+ courseId: string | null;
14
+ title: string;
15
+ coverUrl: string | null;
16
+ }
17
+ export interface WatchlistResponse {
18
+ items: WatchlistItem[];
19
+ count: number;
20
+ }
21
+ export declare function createWatchlistService(apiClient: AcademeApiClient): {
22
+ /** Itens da "Minha lista" + contagem. */
23
+ getMine(): Promise<WatchlistResponse>;
24
+ /** Adiciona um conteúdo (idempotente). */
25
+ add(type: WatchlistType, id: string): Promise<void>;
26
+ /** Remove um conteúdo pelo alvo. */
27
+ remove(type: WatchlistType, id: string): Promise<void>;
28
+ };
29
+ export type WatchlistService = ReturnType<typeof createWatchlistService>;
@@ -22,6 +22,8 @@ import { type ChallengeService } from './ChallengeService';
22
22
  import { type StepService } from './StepService';
23
23
  import { type SubmissionService } from './SubmissionService';
24
24
  import { type UserProgressService } from './UserProgressService';
25
+ import { type VitrineService } from './VitrineService';
26
+ import { type WatchlistService } from './WatchlistService';
25
27
  export type AcademeApiClient = ReturnType<typeof createClient<paths>>;
26
28
  export declare function createAcademeApiClient(baseUrl: string): AcademeApiClient;
27
29
  export interface AcademeServices {
@@ -47,6 +49,8 @@ export interface AcademeServices {
47
49
  step: StepService;
48
50
  submission: SubmissionService;
49
51
  userProgress: UserProgressService;
52
+ vitrine: VitrineService;
53
+ watchlist: WatchlistService;
50
54
  }
51
55
  export declare function createAcademeServices(apiClient: AcademeApiClient): AcademeServices;
52
56
  export { createUserService, type UserService } from "./userService";
@@ -70,3 +74,5 @@ export { createChallengeService, type ChallengeService } from './ChallengeServic
70
74
  export { createStepService, type StepService } from './StepService';
71
75
  export { createSubmissionService, type SubmissionService } from './SubmissionService';
72
76
  export { createUserProgressService, type UserProgressService } from './UserProgressService';
77
+ export { createVitrineService, type VitrineService } from './VitrineService';
78
+ export { createWatchlistService, type WatchlistService } from './WatchlistService';
@@ -12,6 +12,30 @@ type GetUsersParams = {
12
12
  page?: number;
13
13
  limit?: number;
14
14
  };
15
+ /** Série acessível ao aluno (item do seletor de séries da jornada). */
16
+ export type AccessibleSerie = {
17
+ serieId: string;
18
+ serieValue: number;
19
+ serieLabel: string;
20
+ level: "fundamental" | "medio";
21
+ };
22
+ /** Turma do aluno (resumo) — para a listagem de turmas no perfil. */
23
+ export type ClassroomSummary = {
24
+ institutionClassroomId: string;
25
+ classroomId: string;
26
+ classroomName: string;
27
+ shiftName: string | null;
28
+ serie: AccessibleSerie | null;
29
+ institutionId: string;
30
+ institutionName: string | null;
31
+ };
32
+ /** Contexto de matrícula do usuário: turmas + escola atual + séries distintas. */
33
+ export type UserEnrollment = {
34
+ classrooms: ClassroomSummary[];
35
+ /** Escola atual resolvida pelo backend (1ª matrícula) — tem turma. */
36
+ currentInstitutionId: string | null;
37
+ series: AccessibleSerie[];
38
+ };
15
39
  export declare function createUserService(apiClient: AcademeApiClient): {
16
40
  /**
17
41
  * Get current authenticated user
@@ -63,6 +87,13 @@ export declare function createUserService(apiClient: AcademeApiClient): {
63
87
  500: components["responses"]["ServerError"];
64
88
  };
65
89
  }> | undefined, `${string}/${string}`>>;
90
+ /**
91
+ * Contexto de matrícula do usuário: turmas (para o perfil) + séries
92
+ * distintas (para o seletor de séries da jornada) + escola atual. Fonte
93
+ * única, deduplicada e ordenada no backend. Normaliza os campos opcionais do
94
+ * OpenAPI. Espelha o app-academe (user.service.getMyEnrollment).
95
+ */
96
+ getMyEnrollment(): Promise<UserEnrollment>;
66
97
  /**
67
98
  * List all users with optional filters
68
99
  */
@@ -2335,7 +2335,6 @@ export interface paths {
2335
2335
  * Add a step to the challenge
2336
2336
  * @description Polymorphic validation:
2337
2337
  * - When step.type=tutorial, tutorialVideoUrl is required
2338
- * - When step.type=redirect, redirectUrl is required
2339
2338
  * - The course of a step is determined by the parent challenge's courseId.
2340
2339
  * Optionally, courseModuleId pinpoints a specific module within that course.
2341
2340
  * - tutorial fields are optional on any step type.
@@ -2366,8 +2365,6 @@ export interface paths {
2366
2365
  tutorialTitle?: string;
2367
2366
  tutorialDescription?: string;
2368
2367
  tutorialVideoUrl?: string;
2369
- /** @description Required when parent step type=redirect */
2370
- redirectUrl?: string;
2371
2368
  /** @default true */
2372
2369
  isActive?: boolean;
2373
2370
  };
@@ -9640,69 +9637,6 @@ export interface paths {
9640
9637
  };
9641
9638
  trace?: never;
9642
9639
  };
9643
- "/quiz-questions/bulk": {
9644
- parameters: {
9645
- query?: never;
9646
- header?: never;
9647
- path?: never;
9648
- cookie?: never;
9649
- };
9650
- get?: never;
9651
- put?: never;
9652
- /**
9653
- * Bulk create quiz questions
9654
- * @description Cria várias perguntas (com suas respostas) de uma vez para um quiz. A ordem é atribuída sequencialmente a partir da última pergunta existente.
9655
- */
9656
- post: {
9657
- parameters: {
9658
- query?: never;
9659
- header?: never;
9660
- path?: never;
9661
- cookie?: never;
9662
- };
9663
- requestBody: {
9664
- content: {
9665
- "application/json": {
9666
- /** Format: uuid */
9667
- quizId: string;
9668
- questions: {
9669
- text: string;
9670
- /** @enum {string} */
9671
- type: "multiple_choice" | "true_false" | "open";
9672
- points?: number;
9673
- options?: {
9674
- text?: string;
9675
- is_correct?: boolean;
9676
- }[];
9677
- }[];
9678
- };
9679
- };
9680
- };
9681
- responses: {
9682
- /** @description Perguntas criadas */
9683
- 201: {
9684
- headers: {
9685
- [name: string]: unknown;
9686
- };
9687
- content: {
9688
- "application/json": {
9689
- /** @example success */
9690
- status?: string;
9691
- data?: components["schemas"]["QuizQuestion"][];
9692
- };
9693
- };
9694
- };
9695
- 400: components["responses"]["BadRequest"];
9696
- 401: components["responses"]["Unauthorized"];
9697
- 500: components["responses"]["ServerError"];
9698
- };
9699
- };
9700
- delete?: never;
9701
- options?: never;
9702
- head?: never;
9703
- patch?: never;
9704
- trace?: never;
9705
- };
9706
9640
  "/quiz-questions": {
9707
9641
  parameters: {
9708
9642
  query?: never;
@@ -9797,6 +9731,67 @@ export interface paths {
9797
9731
  patch?: never;
9798
9732
  trace?: never;
9799
9733
  };
9734
+ "/quiz-questions/bulk": {
9735
+ parameters: {
9736
+ query?: never;
9737
+ header?: never;
9738
+ path?: never;
9739
+ cookie?: never;
9740
+ };
9741
+ get?: never;
9742
+ put?: never;
9743
+ /**
9744
+ * Bulk create quiz questions
9745
+ * @description Cria várias perguntas (com respostas) de uma vez para um quiz.
9746
+ */
9747
+ post: {
9748
+ parameters: {
9749
+ query?: never;
9750
+ header?: never;
9751
+ path?: never;
9752
+ cookie?: never;
9753
+ };
9754
+ requestBody: {
9755
+ content: {
9756
+ "application/json": {
9757
+ quizId: string;
9758
+ questions: {
9759
+ text: string;
9760
+ type: "multiple_choice" | "true_false" | "open";
9761
+ points?: number;
9762
+ options?: {
9763
+ text: string;
9764
+ is_correct: boolean;
9765
+ }[];
9766
+ }[];
9767
+ };
9768
+ };
9769
+ };
9770
+ responses: {
9771
+ /** @description Questions created */
9772
+ 201: {
9773
+ headers: {
9774
+ [name: string]: unknown;
9775
+ };
9776
+ content: {
9777
+ "application/json": {
9778
+ /** @example success */
9779
+ status?: string;
9780
+ data?: components["schemas"]["QuizQuestion"][];
9781
+ };
9782
+ };
9783
+ };
9784
+ 400: components["responses"]["BadRequest"];
9785
+ 401: components["responses"]["Unauthorized"];
9786
+ 500: components["responses"]["ServerError"];
9787
+ };
9788
+ };
9789
+ delete?: never;
9790
+ options?: never;
9791
+ head?: never;
9792
+ patch?: never;
9793
+ trace?: never;
9794
+ };
9800
9795
  "/quiz-questions/{id}": {
9801
9796
  parameters: {
9802
9797
  query?: never;
@@ -10018,7 +10013,7 @@ export interface paths {
10018
10013
  };
10019
10014
  /**
10020
10015
  * List quizzes with course/module/category context
10021
- * @description Retrieve a paginated list of quizzes, each enriched with the course, module and category it belongs to. The relation is resolved on the server (Course.quizId / CourseModule.quizId), so consumers don't need to load every course to build the link map. `context` is null for standalone quizzes.
10016
+ * @description Retrieve a paginated list of quizzes, each enriched with the course, module and category it belongs to. `context` is null for standalone quizzes.
10022
10017
  */
10023
10018
  get: {
10024
10019
  parameters: {
@@ -10054,20 +10049,16 @@ export interface paths {
10054
10049
  data?: (components["schemas"]["Quiz"] & {
10055
10050
  context?: {
10056
10051
  course?: {
10057
- /** Format: uuid */
10058
10052
  id?: string;
10059
10053
  title?: string;
10060
10054
  } | null;
10061
10055
  module?: {
10062
- /** Format: uuid */
10063
10056
  id?: string;
10064
10057
  title?: string;
10065
10058
  } | null;
10066
10059
  category?: {
10067
- /** Format: uuid */
10068
10060
  id?: string;
10069
10061
  name?: string;
10070
- /** @example #44bd32 */
10071
10062
  color?: string | null;
10072
10063
  } | null;
10073
10064
  } | null;
@@ -10099,7 +10090,7 @@ export interface paths {
10099
10090
  put?: never;
10100
10091
  /**
10101
10092
  * Generate quiz questions with AI
10102
- * @description Gera perguntas de quiz a partir de um texto base usando IA (OpenRouter). NÃO persiste nada — apenas devolve as perguntas geradas para revisão no frontend. A chave da IA vive apenas no servidor.
10093
+ * @description Gera perguntas a partir de um texto base via IA. Não persiste — apenas devolve.
10103
10094
  */
10104
10095
  post: {
10105
10096
  parameters: {
@@ -10111,23 +10102,16 @@ export interface paths {
10111
10102
  requestBody: {
10112
10103
  content: {
10113
10104
  "application/json": {
10114
- /** @description Texto base para gerar as perguntas */
10115
10105
  text: string;
10116
10106
  numQuestions: number;
10117
- /**
10118
- * @default normal
10119
- * @enum {string}
10120
- */
10121
10107
  difficulty?: "facil" | "normal" | "dificil";
10122
- /** @description Textos de perguntas já existentes (para não repetir) */
10123
10108
  existingQuestions?: string[];
10124
- /** @description Modelo de IA a usar (OpenRouter); default do servidor quando omitido */
10125
10109
  model?: string;
10126
10110
  };
10127
10111
  };
10128
10112
  };
10129
10113
  responses: {
10130
- /** @description Perguntas geradas */
10114
+ /** @description Generated questions */
10131
10115
  200: {
10132
10116
  headers: {
10133
10117
  [name: string]: unknown;
@@ -10137,13 +10121,12 @@ export interface paths {
10137
10121
  /** @example success */
10138
10122
  status?: string;
10139
10123
  data?: {
10140
- question_text?: string;
10141
- /** @enum {string} */
10142
- question_type?: "multiple_choice" | "true_false";
10143
- points?: number;
10144
- options?: {
10145
- text?: string;
10146
- is_correct?: boolean;
10124
+ question_text: string;
10125
+ question_type: "multiple_choice" | "true_false";
10126
+ points: number;
10127
+ options: {
10128
+ text: string;
10129
+ is_correct: boolean;
10147
10130
  }[];
10148
10131
  }[];
10149
10132
  };
@@ -11845,7 +11828,7 @@ export interface paths {
11845
11828
  parameters: {
11846
11829
  query?: {
11847
11830
  /** @description Filter by step type */
11848
- type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate" | "redirect";
11831
+ type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate";
11849
11832
  /** @description Filter by active status */
11850
11833
  isActive?: boolean;
11851
11834
  };
@@ -11894,7 +11877,7 @@ export interface paths {
11894
11877
  /** @example play-circle */
11895
11878
  icon: string;
11896
11879
  /** @enum {string} */
11897
- type: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate" | "redirect";
11880
+ type: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate";
11898
11881
  /** @default true */
11899
11882
  isActive?: boolean;
11900
11883
  };
@@ -12021,7 +12004,7 @@ export interface paths {
12021
12004
  color?: string;
12022
12005
  icon?: string;
12023
12006
  /** @enum {string} */
12024
- type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate" | "redirect";
12007
+ type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate";
12025
12008
  isActive?: boolean;
12026
12009
  };
12027
12010
  };
@@ -15646,11 +15629,6 @@ export interface components {
15646
15629
  id?: string;
15647
15630
  /** @example Essential Skills */
15648
15631
  name?: string;
15649
- /**
15650
- * @description Hex color code for backoffice display. Null when not set.
15651
- * @example #44bd32
15652
- */
15653
- color?: string | null;
15654
15632
  /** Format: date-time */
15655
15633
  createdAt?: string;
15656
15634
  /** Format: date-time */
@@ -15922,7 +15900,7 @@ export interface components {
15922
15900
  /** @example play-circle */
15923
15901
  icon?: string;
15924
15902
  /** @enum {string} */
15925
- type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate" | "redirect";
15903
+ type?: "challenge" | "course" | "tutorial" | "publication" | "evaluation" | "certificate";
15926
15904
  /** @example true */
15927
15905
  isActive?: boolean;
15928
15906
  /** Format: date-time */
@@ -16020,8 +15998,6 @@ export interface components {
16020
15998
  tutorialDescription?: string | null;
16021
15999
  /** @description Obrigatório quando step type=tutorial */
16022
16000
  tutorialVideoUrl?: string | null;
16023
- /** @description Obrigatório quando step type=redirect. URL para onde o aluno é redirecionado ao clicar na etapa. */
16024
- redirectUrl?: string | null;
16025
16001
  isActive?: boolean;
16026
16002
  /** Format: date-time */
16027
16003
  createdAt?: string;
@@ -16151,10 +16127,7 @@ export interface components {
16151
16127
  * @example Introdução a IA
16152
16128
  */
16153
16129
  courseModuleName?: string | null;
16154
- /**
16155
- * @description URL de redirecionamento desta etapa (apenas quando type=redirect)
16156
- * @example https://exemplo.com/atividade
16157
- */
16130
+ /** @description URL de redirecionamento desta etapa (apenas quando type=redirect) */
16158
16131
  redirectUrl?: string | null;
16159
16132
  };
16160
16133
  /** @description Desafio da jornada com suas etapas e status computados */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "academe-kit",
3
- "version": "0.12.1",
3
+ "version": "0.14.0",
4
4
  "type": "module",
5
5
  "description": "Official React SDK for Academe ecosystem - Authentication, protected routes, API services, and UI components for educational management applications",
6
6
  "main": "dist/index.cjs",
@@ -99,4 +99,4 @@
99
99
  "tailwind-merge": "^3.3.1",
100
100
  "tailwindcss-animate": "^1.0.7"
101
101
  }
102
- }
102
+ }