analytica-frontend-lib 1.7.21 → 1.7.23

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 (384) hide show
  1. package/dist/AccessReportModal/index.js +3 -3
  2. package/dist/AccessReportModal/index.mjs +2 -2
  3. package/dist/ActivitiesHistory/index.js +49 -49
  4. package/dist/ActivitiesHistory/index.mjs +48 -48
  5. package/dist/ActivityCardQuestionBanks/index.js +49 -49
  6. package/dist/ActivityCardQuestionBanks/index.mjs +48 -48
  7. package/dist/ActivityCardQuestionPreview/index.js +49 -49
  8. package/dist/ActivityCardQuestionPreview/index.mjs +48 -48
  9. package/dist/ActivityCreate/ActivityCreateContent/index.js +49 -49
  10. package/dist/ActivityCreate/ActivityCreateContent/index.mjs +48 -48
  11. package/dist/ActivityCreate/index.js +49 -49
  12. package/dist/ActivityCreate/index.mjs +48 -48
  13. package/dist/ActivityDetails/index.js +49 -49
  14. package/dist/ActivityDetails/index.mjs +48 -48
  15. package/dist/ActivityFilters/index.js +49 -49
  16. package/dist/ActivityFilters/index.mjs +48 -48
  17. package/dist/ActivityPageLayout/index.js +49 -49
  18. package/dist/ActivityPageLayout/index.mjs +48 -48
  19. package/dist/ActivityPreview/index.js +49 -49
  20. package/dist/ActivityPreview/index.mjs +48 -48
  21. package/dist/AlertManager/index.js +49 -49
  22. package/dist/AlertManager/index.mjs +48 -48
  23. package/dist/AlertManagerView/index.js +3 -3
  24. package/dist/AlertManagerView/index.mjs +2 -2
  25. package/dist/AnnouncementModal/index.js +3 -3
  26. package/dist/AnnouncementModal/index.mjs +2 -2
  27. package/dist/AnnouncementsGate/index.js +4 -4
  28. package/dist/AnnouncementsGate/index.mjs +3 -3
  29. package/dist/AnswerKeyModal/index.js +3 -3
  30. package/dist/AnswerKeyModal/index.mjs +2 -2
  31. package/dist/AppHeader/index.js +6 -6
  32. package/dist/AppHeader/index.mjs +5 -5
  33. package/dist/CalendarCard/index.js +4 -4
  34. package/dist/CalendarCard/index.mjs +3 -3
  35. package/dist/Chat/index.js +3 -3
  36. package/dist/Chat/index.mjs +2 -2
  37. package/dist/CheckBox/index.d.ts.map +1 -1
  38. package/dist/CheckBox/index.js +2 -2
  39. package/dist/CheckBox/index.mjs +1 -1
  40. package/dist/CheckBoxGroup/index.js +49 -49
  41. package/dist/CheckBoxGroup/index.mjs +48 -48
  42. package/dist/ComparatorChart/ComparatorView/index.js +3 -3
  43. package/dist/ComparatorChart/ComparatorView/index.mjs +2 -2
  44. package/dist/CorrectActivityModal/index.js +7 -7
  45. package/dist/CorrectActivityModal/index.mjs +6 -6
  46. package/dist/DownloadButton/index.js +4 -4
  47. package/dist/DownloadButton/index.mjs +3 -3
  48. package/dist/DownloadModal/index.js +3 -3
  49. package/dist/DownloadModal/index.mjs +2 -2
  50. package/dist/DropdownMenu/index.js +3 -3
  51. package/dist/DropdownMenu/index.mjs +2 -2
  52. package/dist/EnemClassroomStartModal/index.d.ts.map +1 -1
  53. package/dist/EnemClassroomStartModal/index.js +7 -7
  54. package/dist/EnemClassroomStartModal/index.mjs +6 -6
  55. package/dist/EnemMoment/index.js +57 -57
  56. package/dist/EnemMoment/index.mjs +51 -51
  57. package/dist/EnemMomentStudentModal/index.js +50 -50
  58. package/dist/EnemMomentStudentModal/index.mjs +48 -48
  59. package/dist/ExamDetailsLayout/ExamDetailsPage/index.js +49 -49
  60. package/dist/ExamDetailsLayout/ExamDetailsPage/index.mjs +48 -48
  61. package/dist/ExamPageLayout/index.js +49 -49
  62. package/dist/ExamPageLayout/index.mjs +48 -48
  63. package/dist/Forum/index.js +5 -5
  64. package/dist/Forum/index.mjs +4 -4
  65. package/dist/KnowledgePerformanceCard/index.js +51 -51
  66. package/dist/KnowledgePerformanceCard/index.mjs +50 -50
  67. package/dist/LessonCardPreview/index.js +49 -49
  68. package/dist/LessonCardPreview/index.mjs +48 -48
  69. package/dist/LessonMediaSections/index.js +49 -49
  70. package/dist/LessonMediaSections/index.mjs +48 -48
  71. package/dist/LessonsCatalog/index.js +49 -49
  72. package/dist/LessonsCatalog/index.mjs +48 -48
  73. package/dist/Modal/index.d.ts.map +1 -1
  74. package/dist/Modal/index.js +2 -2
  75. package/dist/Modal/index.mjs +1 -1
  76. package/dist/MultiCheckSelect/index.js +5 -5
  77. package/dist/MultiCheckSelect/index.mjs +4 -4
  78. package/dist/MultiSearchSelect/index.js +3 -3
  79. package/dist/MultiSearchSelect/index.mjs +2 -2
  80. package/dist/MultipleChoice/index.js +3 -3
  81. package/dist/MultipleChoice/index.mjs +2 -2
  82. package/dist/NotificationCard/index.js +4 -4
  83. package/dist/NotificationCard/index.mjs +3 -3
  84. package/dist/PerformanceReportModal/index.js +3 -3
  85. package/dist/PerformanceReportModal/index.mjs +2 -2
  86. package/dist/PrintableUsersTable/index.js +49 -49
  87. package/dist/PrintableUsersTable/index.mjs +48 -48
  88. package/dist/ProgressModal/index.js +3 -3
  89. package/dist/ProgressModal/index.mjs +2 -2
  90. package/dist/QuestionsPerformanceCard/index.js +50 -50
  91. package/dist/QuestionsPerformanceCard/index.mjs +49 -49
  92. package/dist/Quiz/index.js +6 -6
  93. package/dist/Quiz/index.mjs +5 -5
  94. package/dist/RecommendedLessonCreate/index.js +49 -49
  95. package/dist/RecommendedLessonCreate/index.mjs +48 -48
  96. package/dist/RecommendedLessonDetails/index.js +7 -7
  97. package/dist/RecommendedLessonDetails/index.mjs +6 -6
  98. package/dist/RecommendedLessonsHistory/index.js +49 -49
  99. package/dist/RecommendedLessonsHistory/index.mjs +48 -48
  100. package/dist/ReportDetailModal/index.js +4 -4
  101. package/dist/ReportDetailModal/index.mjs +3 -3
  102. package/dist/RichEditor/index.js +5 -5
  103. package/dist/RichEditor/index.mjs +4 -4
  104. package/dist/{RichEditorCore-6MTYSSKS.mjs → RichEditorCore-2S5YUAOI.mjs} +5 -5
  105. package/dist/{RichEditorCore-KDARBEK4.js → RichEditorCore-N7A2445B.js} +16 -16
  106. package/dist/{RichEditorCore-KDARBEK4.js.map → RichEditorCore-N7A2445B.js.map} +1 -1
  107. package/dist/Search/index.js +4 -4
  108. package/dist/Search/index.mjs +3 -3
  109. package/dist/SendActivityModal/SendActivityModal.js +49 -49
  110. package/dist/SendActivityModal/SendActivityModal.mjs +48 -48
  111. package/dist/SendActivityModal/index.js +49 -49
  112. package/dist/SendActivityModal/index.mjs +48 -48
  113. package/dist/SendLessonModal/index.js +49 -49
  114. package/dist/SendLessonModal/index.mjs +48 -48
  115. package/dist/SimulatedPerformance/SimulatedPerformanceView/index.js +49 -49
  116. package/dist/SimulatedPerformance/SimulatedPerformanceView/index.mjs +48 -48
  117. package/dist/SimulatedPerformance/useSimulatedPerformance/index.js +5 -5
  118. package/dist/SimulatedPerformance/useSimulatedPerformance/index.mjs +4 -4
  119. package/dist/SimulatedStudentSimulationsModal/index.js +6 -6
  120. package/dist/SimulatedStudentSimulationsModal/index.mjs +5 -5
  121. package/dist/SimulationsPage/index.js +49 -49
  122. package/dist/SimulationsPage/index.mjs +48 -48
  123. package/dist/StudentLessonProgressModal/index.js +3 -3
  124. package/dist/StudentLessonProgressModal/index.mjs +2 -2
  125. package/dist/StudentPerformanceDetailsModal/index.js +5 -5
  126. package/dist/StudentPerformanceDetailsModal/index.mjs +4 -4
  127. package/dist/Support/TicketModal/index.js +3 -3
  128. package/dist/Support/TicketModal/index.mjs +2 -2
  129. package/dist/Support/index.js +4 -4
  130. package/dist/Support/index.mjs +3 -3
  131. package/dist/SupportChatComposer/index.js +3 -3
  132. package/dist/SupportChatComposer/index.mjs +2 -2
  133. package/dist/SupportChatEvent/index.js +3 -3
  134. package/dist/SupportChatEvent/index.mjs +2 -2
  135. package/dist/SupportChatMessage/index.js +3 -3
  136. package/dist/SupportChatMessage/index.mjs +2 -2
  137. package/dist/SupportChatWidget/index.js +3 -3
  138. package/dist/SupportChatWidget/index.mjs +2 -2
  139. package/dist/SupportConcludeModal/index.js +4 -4
  140. package/dist/SupportConcludeModal/index.mjs +3 -3
  141. package/dist/SupportConversationHeader/index.js +4 -4
  142. package/dist/SupportConversationHeader/index.mjs +3 -3
  143. package/dist/SupportConversationMessages/index.js +5 -5
  144. package/dist/SupportConversationMessages/index.mjs +4 -4
  145. package/dist/SupportTicketConversation/index.js +12 -12
  146. package/dist/SupportTicketConversation/index.mjs +11 -11
  147. package/dist/TableProvider/index.js +49 -49
  148. package/dist/TableProvider/index.mjs +48 -48
  149. package/dist/UnifiedDraftModelPage/index.js +49 -49
  150. package/dist/UnifiedDraftModelPage/index.mjs +48 -48
  151. package/dist/UnifiedHistoryPage/index.js +49 -49
  152. package/dist/UnifiedHistoryPage/index.mjs +48 -48
  153. package/dist/VideoPlayer/index.js +5 -5
  154. package/dist/VideoPlayer/index.mjs +4 -4
  155. package/dist/Whiteboard/index.js +3 -3
  156. package/dist/Whiteboard/index.mjs +2 -2
  157. package/dist/{chunk-B6QOBHZM.mjs → chunk-24BEZK43.mjs} +2 -2
  158. package/dist/{chunk-CYSODZGX.js → chunk-27Y6V3GM.js} +169 -66
  159. package/dist/chunk-27Y6V3GM.js.map +1 -0
  160. package/dist/{chunk-OQTXTDSK.mjs → chunk-2OJ3QSLU.mjs} +3 -3
  161. package/dist/{chunk-VDUO65VK.mjs → chunk-3EGJJDIM.mjs} +2 -2
  162. package/dist/{chunk-VDUO65VK.mjs.map → chunk-3EGJJDIM.mjs.map} +1 -1
  163. package/dist/{chunk-4OUBPEVS.mjs → chunk-3HKLGNUE.mjs} +3 -3
  164. package/dist/{chunk-YA7XLH7D.js → chunk-3MFACEZ2.js} +3 -3
  165. package/dist/{chunk-YA7XLH7D.js.map → chunk-3MFACEZ2.js.map} +1 -1
  166. package/dist/{chunk-IHBWJM4C.mjs → chunk-3Q7RJKUP.mjs} +2 -2
  167. package/dist/{chunk-PY6WD6SB.mjs → chunk-3WRB4WCD.mjs} +4 -4
  168. package/dist/{chunk-4RHCBMMP.js → chunk-46VHAL4S.js} +3 -3
  169. package/dist/{chunk-4RHCBMMP.js.map → chunk-46VHAL4S.js.map} +1 -1
  170. package/dist/{chunk-POT3ALY3.js → chunk-5DINXU6W.js} +1 -1
  171. package/dist/{chunk-POT3ALY3.js.map → chunk-5DINXU6W.js.map} +1 -1
  172. package/dist/{chunk-L52NFNFK.mjs → chunk-5VC4BK65.mjs} +3 -3
  173. package/dist/{chunk-B67RLIUM.js → chunk-72D7G6YQ.js} +3 -3
  174. package/dist/{chunk-B67RLIUM.js.map → chunk-72D7G6YQ.js.map} +1 -1
  175. package/dist/{chunk-C65DG2RI.mjs → chunk-7FSBWUOM.mjs} +2 -2
  176. package/dist/{chunk-QWMFWYII.js → chunk-7IZNLARX.js} +3 -3
  177. package/dist/{chunk-QWMFWYII.js.map → chunk-7IZNLARX.js.map} +1 -1
  178. package/dist/{chunk-ZCBT2BUZ.js → chunk-7RFHXFFV.js} +13 -13
  179. package/dist/{chunk-ZCBT2BUZ.js.map → chunk-7RFHXFFV.js.map} +1 -1
  180. package/dist/{chunk-EMWX6IKP.js → chunk-7VJP5D26.js} +13 -13
  181. package/dist/{chunk-EMWX6IKP.js.map → chunk-7VJP5D26.js.map} +1 -1
  182. package/dist/{chunk-HCQJR5CE.mjs → chunk-7ZWEBNFB.mjs} +2 -2
  183. package/dist/{chunk-3RHNJUXU.mjs → chunk-ACSEJOW6.mjs} +2 -2
  184. package/dist/{chunk-WQZHUW7C.mjs → chunk-ANFHLSDB.mjs} +3 -3
  185. package/dist/{chunk-H6NQOLQY.mjs → chunk-ANFLWCVD.mjs} +2 -2
  186. package/dist/{chunk-BKBDQXZX.js → chunk-AOYPUZRO.js} +3 -3
  187. package/dist/{chunk-BKBDQXZX.js.map → chunk-AOYPUZRO.js.map} +1 -1
  188. package/dist/{chunk-5WS6IENQ.mjs → chunk-AU2HLQDJ.mjs} +2 -2
  189. package/dist/{chunk-P6FX3NT6.mjs → chunk-AZGDHAP5.mjs} +2 -2
  190. package/dist/{chunk-NCGO7FPB.js → chunk-AZKNYREH.js} +8 -8
  191. package/dist/{chunk-NCGO7FPB.js.map → chunk-AZKNYREH.js.map} +1 -1
  192. package/dist/{chunk-R6MTPYYW.js → chunk-AZTBNERQ.js} +3 -3
  193. package/dist/{chunk-R6MTPYYW.js.map → chunk-AZTBNERQ.js.map} +1 -1
  194. package/dist/{chunk-NPB2JTYC.mjs → chunk-BO3QVQ37.mjs} +4 -4
  195. package/dist/{chunk-2WI4Q2I2.mjs → chunk-BPMWRFSI.mjs} +4 -4
  196. package/dist/{chunk-TEW33GLR.mjs → chunk-BXN3VO6I.mjs} +2 -2
  197. package/dist/{chunk-7ZB3YHF2.mjs → chunk-C6LC5LD5.mjs} +1 -1
  198. package/dist/{chunk-7ZB3YHF2.mjs.map → chunk-C6LC5LD5.mjs.map} +1 -1
  199. package/dist/{chunk-5HONWYQA.js → chunk-C7ILTLT5.js} +3 -3
  200. package/dist/{chunk-5HONWYQA.js.map → chunk-C7ILTLT5.js.map} +1 -1
  201. package/dist/{chunk-OES54VU6.mjs → chunk-CFV2OZ3P.mjs} +116 -13
  202. package/dist/chunk-CFV2OZ3P.mjs.map +1 -0
  203. package/dist/{chunk-4OVIHZ3I.js → chunk-CGXWWPEA.js} +6 -6
  204. package/dist/{chunk-4OVIHZ3I.js.map → chunk-CGXWWPEA.js.map} +1 -1
  205. package/dist/{chunk-MNU45FM3.js → chunk-COT4KW3H.js} +2 -2
  206. package/dist/{chunk-MNU45FM3.js.map → chunk-COT4KW3H.js.map} +1 -1
  207. package/dist/{chunk-JDQUXG75.js → chunk-CVDNCU6L.js} +3 -3
  208. package/dist/{chunk-JDQUXG75.js.map → chunk-CVDNCU6L.js.map} +1 -1
  209. package/dist/{chunk-HBZHWSMZ.mjs → chunk-D46PJSQ7.mjs} +13 -13
  210. package/dist/{chunk-ARYIJ4RU.js → chunk-DDORKDQO.js} +3 -3
  211. package/dist/{chunk-ARYIJ4RU.js.map → chunk-DDORKDQO.js.map} +1 -1
  212. package/dist/{chunk-7YQTDJFA.js → chunk-DKXSR2V3.js} +3 -3
  213. package/dist/{chunk-7YQTDJFA.js.map → chunk-DKXSR2V3.js.map} +1 -1
  214. package/dist/{chunk-I6EAPPBL.mjs → chunk-DZMYIOKZ.mjs} +5 -5
  215. package/dist/{chunk-SKM7NFPY.js → chunk-EPXAFJVW.js} +6 -6
  216. package/dist/{chunk-SKM7NFPY.js.map → chunk-EPXAFJVW.js.map} +1 -1
  217. package/dist/{chunk-AYYMS23L.js → chunk-ESIQ2GB4.js} +7 -7
  218. package/dist/{chunk-AYYMS23L.js.map → chunk-ESIQ2GB4.js.map} +1 -1
  219. package/dist/{chunk-NU2WNYOD.js → chunk-EW7HGUFV.js} +87 -87
  220. package/dist/{chunk-NU2WNYOD.js.map → chunk-EW7HGUFV.js.map} +1 -1
  221. package/dist/{chunk-I4QGQMXI.mjs → chunk-EXYXZFNK.mjs} +2 -2
  222. package/dist/{chunk-RBJAO57A.js → chunk-FAAR4XC5.js} +3 -3
  223. package/dist/{chunk-RBJAO57A.js.map → chunk-FAAR4XC5.js.map} +1 -1
  224. package/dist/{chunk-N2VNE3ON.js → chunk-FDTDJDZI.js} +13 -13
  225. package/dist/{chunk-N2VNE3ON.js.map → chunk-FDTDJDZI.js.map} +1 -1
  226. package/dist/{chunk-SU5Q64TW.mjs → chunk-FVCTKS33.mjs} +6 -5
  227. package/dist/chunk-FVCTKS33.mjs.map +1 -0
  228. package/dist/{chunk-AVHZHWI3.js → chunk-GBIFSFWJ.js} +15 -15
  229. package/dist/{chunk-AVHZHWI3.js.map → chunk-GBIFSFWJ.js.map} +1 -1
  230. package/dist/{chunk-KSUPPAKH.js → chunk-GIQSHTB5.js} +9 -9
  231. package/dist/{chunk-KSUPPAKH.js.map → chunk-GIQSHTB5.js.map} +1 -1
  232. package/dist/{chunk-4QBKD4JN.js → chunk-GUUJYGXF.js} +3 -3
  233. package/dist/{chunk-4QBKD4JN.js.map → chunk-GUUJYGXF.js.map} +1 -1
  234. package/dist/{chunk-M4O46VDY.mjs → chunk-GX2PKLN2.mjs} +2 -2
  235. package/dist/{chunk-5BUTINIM.mjs → chunk-HLVLSWKD.mjs} +3 -3
  236. package/dist/{chunk-FU23WOTY.js → chunk-HSV5VZ4Z.js} +6 -6
  237. package/dist/{chunk-FU23WOTY.js.map → chunk-HSV5VZ4Z.js.map} +1 -1
  238. package/dist/{chunk-MMS2ELDK.mjs → chunk-IIQCS3A2.mjs} +2 -2
  239. package/dist/{chunk-NKWLCZUZ.mjs → chunk-JGGUMHM6.mjs} +2 -2
  240. package/dist/{chunk-HT2GREFH.js → chunk-JLD46DL7.js} +11 -11
  241. package/dist/{chunk-HT2GREFH.js.map → chunk-JLD46DL7.js.map} +1 -1
  242. package/dist/{chunk-NVL5TKWD.mjs → chunk-JYFLOQYT.mjs} +2 -2
  243. package/dist/{chunk-DWGDEUEW.mjs → chunk-KG563P7F.mjs} +5 -5
  244. package/dist/{chunk-TCIC5556.mjs → chunk-KH4TEDGD.mjs} +2 -2
  245. package/dist/{chunk-23PAYKWB.js → chunk-KM27ZDHZ.js} +2 -2
  246. package/dist/{chunk-23PAYKWB.js.map → chunk-KM27ZDHZ.js.map} +1 -1
  247. package/dist/{chunk-XZUMD3CB.mjs → chunk-LODDYDTP.mjs} +2 -2
  248. package/dist/{chunk-XZUMD3CB.mjs.map → chunk-LODDYDTP.mjs.map} +1 -1
  249. package/dist/{chunk-E6CGJBID.mjs → chunk-LUHKMY56.mjs} +2 -2
  250. package/dist/{chunk-TVLEUNKE.mjs → chunk-LZP5VZCO.mjs} +2 -2
  251. package/dist/{chunk-EHNEBXS7.mjs → chunk-M6DXZ2FM.mjs} +2 -2
  252. package/dist/{chunk-B4C5DWAP.mjs → chunk-MMMJDO75.mjs} +2 -2
  253. package/dist/{chunk-AFCWMJQO.js → chunk-MOUPNP53.js} +3 -3
  254. package/dist/{chunk-AFCWMJQO.js.map → chunk-MOUPNP53.js.map} +1 -1
  255. package/dist/{chunk-36KFIZ43.js → chunk-MYPUZ6EG.js} +3 -3
  256. package/dist/{chunk-36KFIZ43.js.map → chunk-MYPUZ6EG.js.map} +1 -1
  257. package/dist/{chunk-6JHIKIPA.js → chunk-NUGLTWEA.js} +23 -23
  258. package/dist/{chunk-6JHIKIPA.js.map → chunk-NUGLTWEA.js.map} +1 -1
  259. package/dist/{chunk-KWXOYHYK.mjs → chunk-P7MORXSE.mjs} +2 -2
  260. package/dist/{chunk-YG4IZ5Q3.mjs → chunk-Q2OSEROT.mjs} +2 -2
  261. package/dist/{chunk-L5SXG6T6.mjs → chunk-QQKOHKO2.mjs} +3 -3
  262. package/dist/{chunk-SADSJ2MV.js → chunk-QVGUYPXO.js} +3 -3
  263. package/dist/{chunk-SADSJ2MV.js.map → chunk-QVGUYPXO.js.map} +1 -1
  264. package/dist/{chunk-K45PTE7F.mjs → chunk-RBKQXT73.mjs} +4 -4
  265. package/dist/{chunk-JZFISWTP.js → chunk-RIN2IN7E.js} +2 -2
  266. package/dist/{chunk-JZFISWTP.js.map → chunk-RIN2IN7E.js.map} +1 -1
  267. package/dist/{chunk-BXLAOYAG.mjs → chunk-RIUVPTG7.mjs} +2 -2
  268. package/dist/{chunk-QVB54LBS.mjs → chunk-RNZGX6MX.mjs} +3 -3
  269. package/dist/{chunk-VSVLIRO2.js → chunk-RXEU77VN.js} +15 -15
  270. package/dist/{chunk-VSVLIRO2.js.map → chunk-RXEU77VN.js.map} +1 -1
  271. package/dist/{chunk-ZRIYCU2V.js → chunk-S2BZPPAI.js} +5 -5
  272. package/dist/{chunk-ZRIYCU2V.js.map → chunk-S2BZPPAI.js.map} +1 -1
  273. package/dist/{chunk-MES2BP4T.mjs → chunk-SGL5IUCV.mjs} +2 -2
  274. package/dist/{chunk-7LS5UQCQ.mjs → chunk-STKUPDHG.mjs} +2 -2
  275. package/dist/{chunk-PPYCCT2K.js → chunk-SWDVSCQJ.js} +9 -8
  276. package/dist/chunk-SWDVSCQJ.js.map +1 -0
  277. package/dist/{chunk-JCA76TCX.mjs → chunk-SZKLJOTN.mjs} +2 -2
  278. package/dist/{chunk-F5WR6XZZ.js → chunk-T73HPYF2.js} +3 -3
  279. package/dist/{chunk-F5WR6XZZ.js.map → chunk-T73HPYF2.js.map} +1 -1
  280. package/dist/{chunk-ZB6HDDE4.js → chunk-TQO37PVW.js} +14 -14
  281. package/dist/{chunk-ZB6HDDE4.js.map → chunk-TQO37PVW.js.map} +1 -1
  282. package/dist/{chunk-VKQ5AJDT.mjs → chunk-UENZQF2Y.mjs} +2 -2
  283. package/dist/{chunk-DCG7EUBC.js → chunk-UWLW5YVB.js} +6 -6
  284. package/dist/{chunk-DCG7EUBC.js.map → chunk-UWLW5YVB.js.map} +1 -1
  285. package/dist/{chunk-37AJ2GVO.mjs → chunk-UXJIZDXQ.mjs} +2 -2
  286. package/dist/{chunk-PLLPFCN3.js → chunk-UXMDPRAI.js} +14 -14
  287. package/dist/{chunk-PLLPFCN3.js.map → chunk-UXMDPRAI.js.map} +1 -1
  288. package/dist/{chunk-7BOTKRY6.mjs → chunk-V55DG5B4.mjs} +2 -2
  289. package/dist/{chunk-YRTIDZTN.js → chunk-VHEDMUAW.js} +4 -4
  290. package/dist/{chunk-YRTIDZTN.js.map → chunk-VHEDMUAW.js.map} +1 -1
  291. package/dist/{chunk-4RD55E4R.js → chunk-VWLWSO4J.js} +3 -3
  292. package/dist/{chunk-4RD55E4R.js.map → chunk-VWLWSO4J.js.map} +1 -1
  293. package/dist/{chunk-VJQIKFMG.mjs → chunk-W3CWEZDB.mjs} +3 -3
  294. package/dist/{chunk-JM6SLU7D.js → chunk-W7NNH4VY.js} +6 -6
  295. package/dist/{chunk-JM6SLU7D.js.map → chunk-W7NNH4VY.js.map} +1 -1
  296. package/dist/{chunk-VQ7MSYIH.js → chunk-WUN5NHZE.js} +4 -4
  297. package/dist/{chunk-VQ7MSYIH.js.map → chunk-WUN5NHZE.js.map} +1 -1
  298. package/dist/{chunk-AAU7ABJN.js → chunk-WWTRSQ3X.js} +3 -3
  299. package/dist/{chunk-AAU7ABJN.js.map → chunk-WWTRSQ3X.js.map} +1 -1
  300. package/dist/{chunk-BR6D2TGF.js → chunk-WZOA2PVJ.js} +3 -3
  301. package/dist/{chunk-BR6D2TGF.js.map → chunk-WZOA2PVJ.js.map} +1 -1
  302. package/dist/{chunk-TZKR5Z4J.mjs → chunk-XJF2F36N.mjs} +2 -2
  303. package/dist/{chunk-P6ACVNQK.mjs → chunk-YD2XBEKO.mjs} +2 -2
  304. package/dist/{chunk-LMXWIPGR.js → chunk-YWPLHFAK.js} +3 -3
  305. package/dist/{chunk-LMXWIPGR.js.map → chunk-YWPLHFAK.js.map} +1 -1
  306. package/dist/{chunk-DCEWWHV5.mjs → chunk-Z3HGYPH7.mjs} +2 -2
  307. package/dist/{chunk-Q3PKW6TH.js → chunk-ZCV3HWI2.js} +6 -6
  308. package/dist/{chunk-Q3PKW6TH.js.map → chunk-ZCV3HWI2.js.map} +1 -1
  309. package/dist/{chunk-OSA3YVDZ.mjs → chunk-ZF46DCAC.mjs} +2 -2
  310. package/dist/{chunk-5T6IDXSB.js → chunk-ZO2GA23I.js} +3 -3
  311. package/dist/{chunk-5T6IDXSB.js.map → chunk-ZO2GA23I.js.map} +1 -1
  312. package/dist/{chunk-ZN3763VZ.js → chunk-ZQLW4EJB.js} +9 -9
  313. package/dist/{chunk-ZN3763VZ.js.map → chunk-ZQLW4EJB.js.map} +1 -1
  314. package/dist/{chunk-CM5R4SPF.js → chunk-ZQQJTO6T.js} +3 -3
  315. package/dist/{chunk-CM5R4SPF.js.map → chunk-ZQQJTO6T.js.map} +1 -1
  316. package/dist/{chunk-SEL4QDCO.js → chunk-ZSXSAE3D.js} +3 -3
  317. package/dist/{chunk-SEL4QDCO.js.map → chunk-ZSXSAE3D.js.map} +1 -1
  318. package/dist/components/SupportChatWidget/guestSupportChatAdapter.d.ts +6 -1
  319. package/dist/components/SupportChatWidget/guestSupportChatAdapter.d.ts.map +1 -1
  320. package/dist/hooks/useAppContent/index.js +49 -49
  321. package/dist/hooks/useAppContent/index.mjs +48 -48
  322. package/dist/hooks/useSupportChat.d.ts +2 -0
  323. package/dist/hooks/useSupportChat.d.ts.map +1 -1
  324. package/dist/index.js +49 -49
  325. package/dist/index.mjs +48 -48
  326. package/dist/types/supportChat/index.d.ts +14 -0
  327. package/dist/types/supportChat/index.d.ts.map +1 -1
  328. package/dist/types/supportChat/index.js +2 -2
  329. package/dist/types/supportChat/index.mjs +1 -1
  330. package/dist/types/supportChat.d.ts +14 -0
  331. package/dist/types/supportChat.d.ts.map +1 -1
  332. package/package.json +1 -1
  333. package/dist/chunk-CYSODZGX.js.map +0 -1
  334. package/dist/chunk-OES54VU6.mjs.map +0 -1
  335. package/dist/chunk-PPYCCT2K.js.map +0 -1
  336. package/dist/chunk-SU5Q64TW.mjs.map +0 -1
  337. /package/dist/{RichEditorCore-6MTYSSKS.mjs.map → RichEditorCore-2S5YUAOI.mjs.map} +0 -0
  338. /package/dist/{chunk-B6QOBHZM.mjs.map → chunk-24BEZK43.mjs.map} +0 -0
  339. /package/dist/{chunk-OQTXTDSK.mjs.map → chunk-2OJ3QSLU.mjs.map} +0 -0
  340. /package/dist/{chunk-4OUBPEVS.mjs.map → chunk-3HKLGNUE.mjs.map} +0 -0
  341. /package/dist/{chunk-IHBWJM4C.mjs.map → chunk-3Q7RJKUP.mjs.map} +0 -0
  342. /package/dist/{chunk-PY6WD6SB.mjs.map → chunk-3WRB4WCD.mjs.map} +0 -0
  343. /package/dist/{chunk-L52NFNFK.mjs.map → chunk-5VC4BK65.mjs.map} +0 -0
  344. /package/dist/{chunk-C65DG2RI.mjs.map → chunk-7FSBWUOM.mjs.map} +0 -0
  345. /package/dist/{chunk-HCQJR5CE.mjs.map → chunk-7ZWEBNFB.mjs.map} +0 -0
  346. /package/dist/{chunk-3RHNJUXU.mjs.map → chunk-ACSEJOW6.mjs.map} +0 -0
  347. /package/dist/{chunk-WQZHUW7C.mjs.map → chunk-ANFHLSDB.mjs.map} +0 -0
  348. /package/dist/{chunk-H6NQOLQY.mjs.map → chunk-ANFLWCVD.mjs.map} +0 -0
  349. /package/dist/{chunk-5WS6IENQ.mjs.map → chunk-AU2HLQDJ.mjs.map} +0 -0
  350. /package/dist/{chunk-P6FX3NT6.mjs.map → chunk-AZGDHAP5.mjs.map} +0 -0
  351. /package/dist/{chunk-NPB2JTYC.mjs.map → chunk-BO3QVQ37.mjs.map} +0 -0
  352. /package/dist/{chunk-2WI4Q2I2.mjs.map → chunk-BPMWRFSI.mjs.map} +0 -0
  353. /package/dist/{chunk-TEW33GLR.mjs.map → chunk-BXN3VO6I.mjs.map} +0 -0
  354. /package/dist/{chunk-HBZHWSMZ.mjs.map → chunk-D46PJSQ7.mjs.map} +0 -0
  355. /package/dist/{chunk-I6EAPPBL.mjs.map → chunk-DZMYIOKZ.mjs.map} +0 -0
  356. /package/dist/{chunk-I4QGQMXI.mjs.map → chunk-EXYXZFNK.mjs.map} +0 -0
  357. /package/dist/{chunk-M4O46VDY.mjs.map → chunk-GX2PKLN2.mjs.map} +0 -0
  358. /package/dist/{chunk-5BUTINIM.mjs.map → chunk-HLVLSWKD.mjs.map} +0 -0
  359. /package/dist/{chunk-MMS2ELDK.mjs.map → chunk-IIQCS3A2.mjs.map} +0 -0
  360. /package/dist/{chunk-NKWLCZUZ.mjs.map → chunk-JGGUMHM6.mjs.map} +0 -0
  361. /package/dist/{chunk-NVL5TKWD.mjs.map → chunk-JYFLOQYT.mjs.map} +0 -0
  362. /package/dist/{chunk-DWGDEUEW.mjs.map → chunk-KG563P7F.mjs.map} +0 -0
  363. /package/dist/{chunk-TCIC5556.mjs.map → chunk-KH4TEDGD.mjs.map} +0 -0
  364. /package/dist/{chunk-E6CGJBID.mjs.map → chunk-LUHKMY56.mjs.map} +0 -0
  365. /package/dist/{chunk-TVLEUNKE.mjs.map → chunk-LZP5VZCO.mjs.map} +0 -0
  366. /package/dist/{chunk-EHNEBXS7.mjs.map → chunk-M6DXZ2FM.mjs.map} +0 -0
  367. /package/dist/{chunk-B4C5DWAP.mjs.map → chunk-MMMJDO75.mjs.map} +0 -0
  368. /package/dist/{chunk-KWXOYHYK.mjs.map → chunk-P7MORXSE.mjs.map} +0 -0
  369. /package/dist/{chunk-YG4IZ5Q3.mjs.map → chunk-Q2OSEROT.mjs.map} +0 -0
  370. /package/dist/{chunk-L5SXG6T6.mjs.map → chunk-QQKOHKO2.mjs.map} +0 -0
  371. /package/dist/{chunk-K45PTE7F.mjs.map → chunk-RBKQXT73.mjs.map} +0 -0
  372. /package/dist/{chunk-BXLAOYAG.mjs.map → chunk-RIUVPTG7.mjs.map} +0 -0
  373. /package/dist/{chunk-QVB54LBS.mjs.map → chunk-RNZGX6MX.mjs.map} +0 -0
  374. /package/dist/{chunk-MES2BP4T.mjs.map → chunk-SGL5IUCV.mjs.map} +0 -0
  375. /package/dist/{chunk-7LS5UQCQ.mjs.map → chunk-STKUPDHG.mjs.map} +0 -0
  376. /package/dist/{chunk-JCA76TCX.mjs.map → chunk-SZKLJOTN.mjs.map} +0 -0
  377. /package/dist/{chunk-VKQ5AJDT.mjs.map → chunk-UENZQF2Y.mjs.map} +0 -0
  378. /package/dist/{chunk-37AJ2GVO.mjs.map → chunk-UXJIZDXQ.mjs.map} +0 -0
  379. /package/dist/{chunk-7BOTKRY6.mjs.map → chunk-V55DG5B4.mjs.map} +0 -0
  380. /package/dist/{chunk-VJQIKFMG.mjs.map → chunk-W3CWEZDB.mjs.map} +0 -0
  381. /package/dist/{chunk-TZKR5Z4J.mjs.map → chunk-XJF2F36N.mjs.map} +0 -0
  382. /package/dist/{chunk-P6ACVNQK.mjs.map → chunk-YD2XBEKO.mjs.map} +0 -0
  383. /package/dist/{chunk-DCEWWHV5.mjs.map → chunk-Z3HGYPH7.mjs.map} +0 -0
  384. /package/dist/{chunk-OSA3YVDZ.mjs.map → chunk-ZF46DCAC.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-JDQUXG75.js","../src/components/ComparatorChart/ComparatorView.tsx","../src/components/ComparatorChart/ComparatorEmptyState.tsx","../src/components/ComparatorChart/ComparatorLoadingState.tsx","../src/components/ComparatorChart/ComparatorSelectTypeStep.tsx","../src/components/ComparatorChart/ComparatorSelectItemsStep.tsx","../src/components/ComparatorChart/Legend.tsx","../src/components/ComparatorChart/PercentageScale.tsx","../src/components/ComparatorChart/ChartArea.tsx","../src/components/ComparatorChart/BarChartRow.tsx","../src/components/ComparatorChart/KnowledgeAreasContent.tsx","../src/components/ComparatorChart/CurricularComponentsContent.tsx","../src/components/ComparatorChart/CompetenciesContent.tsx","../src/components/ComparatorChart/NationalAverageCard.tsx","../src/components/ComparatorChart/NationalAveragesContent.tsx","../src/components/ComparatorChart/ComparatorTabContent.tsx"],"names":["jsxs","jsx"],"mappings":"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","file":"/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-JDQUXG75.js","sourcesContent":[null,"import { useState, useMemo, useCallback, useEffect, useRef } from 'react';\nimport { CaretLeftIcon } from '@phosphor-icons/react/dist/csr/CaretLeft';\nimport Text from '../Text/Text';\nimport Button from '../Button/Button';\nimport Modal from '../Modal/Modal';\nimport type { SearchSelectOption } from '../SearchSelect/SearchSelect';\nimport { ComparatorEmptyState } from './ComparatorEmptyState';\nimport { ComparatorLoadingState } from './ComparatorLoadingState';\nimport { ComparatorSelectTypeStep } from './ComparatorSelectTypeStep';\nimport { ComparatorSelectItemsStep } from './ComparatorSelectItemsStep';\nimport { ComparatorTabContent } from './ComparatorTabContent';\nimport {\n ComparatorTabValue,\n DEFAULT_COMPARATOR_LABELS,\n DEFAULT_COMPARATOR_TABS,\n type ComparisonType,\n type ComparatorTabType,\n type ComparatorStoreState,\n type UseComparatorReturn,\n type ComparatorLabels,\n type ComparatorTab,\n} from '../../types/comparator';\n\nexport interface ComparatorViewProps {\n // Data sources\n readonly schools: SearchSelectOption[];\n readonly schoolYears: SearchSelectOption[];\n\n // Store hooks (injected)\n readonly useComparatorStore: () => ComparatorStoreState;\n readonly useComparator: () => UseComparatorReturn;\n\n // Navigation\n readonly onBack?: () => void;\n\n // Tab management\n readonly activeTab?: ComparatorTabType;\n readonly onTabChange?: (tab: ComparatorTabType) => void;\n readonly tabs?: ComparatorTab[];\n\n // Customization\n readonly labels?: Partial<ComparatorLabels>;\n readonly isUserLoading?: boolean;\n\n // Callbacks\n readonly onFetchUserData?: (force?: boolean) => void;\n}\n\nexport function ComparatorView({\n schools,\n schoolYears,\n useComparatorStore,\n useComparator,\n onBack,\n activeTab: externalActiveTab,\n onTabChange,\n tabs = DEFAULT_COMPARATOR_TABS,\n labels: customLabels,\n isUserLoading = false,\n onFetchUserData,\n}: ComparatorViewProps) {\n const labels = useMemo(\n () => ({ ...DEFAULT_COMPARATOR_LABELS, ...customLabels }),\n [customLabels]\n );\n\n // Store state\n const {\n comparisonType,\n selectedItems,\n setComparisonType,\n addItem,\n removeItem,\n clearSelection,\n } = useComparatorStore();\n\n // Data hook\n const { data, loading, fetchData } = useComparator();\n\n // Local UI state\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [modalStep, setModalStep] = useState<1 | 2>(1);\n const [internalActiveTab, setInternalActiveTab] = useState<ComparatorTabType>(\n ComparatorTabValue.KNOWLEDGE_AREAS\n );\n const hasInitializedRef = useRef(false);\n\n // Use external tab if provided, otherwise internal\n const activeTab = externalActiveTab ?? internalActiveTab;\n\n // Determine comparison availability\n const canCompareSchools = schools.length > 1;\n const canCompareSchoolYears = schoolYears.length > 1;\n const hasAnyComparisonOption = canCompareSchools || canCompareSchoolYears;\n\n // Fetch user data on mount\n useEffect(() => {\n onFetchUserData?.(true);\n }, [onFetchUserData]);\n\n // Load comparison data on mount if there are persisted selections\n useEffect(() => {\n if (hasInitializedRef.current) return;\n if (selectedItems.length > 0 && comparisonType) {\n hasInitializedRef.current = true;\n fetchData(\n selectedItems.map((i) => i.id),\n comparisonType,\n activeTab\n );\n }\n }, [selectedItems, comparisonType, activeTab, fetchData]);\n\n // Options based on comparison type\n const options = useMemo((): SearchSelectOption[] => {\n if (comparisonType === 'school') return schools;\n if (comparisonType === 'schoolYear') return schoolYears;\n return [];\n }, [comparisonType, schools, schoolYears]);\n\n // Filter out already selected items\n const availableOptions = useMemo(() => {\n return options.filter(\n (opt) => !selectedItems.some((item) => item.id === opt.value)\n );\n }, [options, selectedItems]);\n\n // Handlers\n const handleTabChange = useCallback(\n (tab: ComparatorTabType) => {\n if (onTabChange) {\n onTabChange(tab);\n } else {\n setInternalActiveTab(tab);\n }\n\n if (selectedItems.length > 0 && comparisonType) {\n fetchData(\n selectedItems.map((i) => i.id),\n comparisonType,\n tab\n );\n }\n },\n [selectedItems, comparisonType, onTabChange, fetchData]\n );\n\n const handleOpenModal = useCallback(() => {\n if (comparisonType) {\n setModalStep(2);\n setIsModalOpen(true);\n return;\n }\n\n if (canCompareSchools && !canCompareSchoolYears) {\n setComparisonType('school');\n setModalStep(2);\n } else if (canCompareSchoolYears && !canCompareSchools) {\n setComparisonType('schoolYear');\n setModalStep(2);\n } else {\n setModalStep(1);\n }\n setIsModalOpen(true);\n }, [\n comparisonType,\n canCompareSchools,\n canCompareSchoolYears,\n setComparisonType,\n ]);\n\n const handleSelectType = useCallback(\n (type: ComparisonType) => {\n clearSelection();\n setComparisonType(type);\n setModalStep(2);\n },\n [clearSelection, setComparisonType]\n );\n\n const handleSelectItem = useCallback(\n (value: string) => {\n if (selectedItems.length >= 5) return;\n\n const option = options.find((opt) => opt.value === value);\n if (!option) return;\n\n addItem({\n id: option.value,\n name: option.label,\n color: '',\n });\n },\n [options, selectedItems.length, addItem]\n );\n\n const handleRemoveItem = useCallback(\n (itemId: string) => {\n removeItem(itemId);\n },\n [removeItem]\n );\n\n const handleConfirmSelection = useCallback(() => {\n setIsModalOpen(false);\n if (selectedItems.length > 0 && comparisonType) {\n fetchData(\n selectedItems.map((i) => i.id),\n comparisonType,\n activeTab\n );\n }\n }, [selectedItems, comparisonType, activeTab, fetchData]);\n\n const handleCloseModal = useCallback(() => {\n setIsModalOpen(false);\n }, []);\n\n const handleChangeType = useCallback(() => {\n setModalStep(1);\n clearSelection();\n }, [clearSelection]);\n\n // Get button text\n const buttonText = useMemo(() => {\n if (selectedItems.length > 0) {\n return comparisonType === 'school'\n ? labels.selectSchools\n : labels.selectSchoolYears;\n }\n if (canCompareSchools && canCompareSchoolYears) {\n return labels.selectComparison;\n }\n return canCompareSchools ? labels.selectSchools : labels.selectSchoolYears;\n }, [\n selectedItems.length,\n comparisonType,\n canCompareSchools,\n canCompareSchoolYears,\n labels,\n ]);\n\n const renderMainContent = () => {\n if (selectedItems.length === 0) {\n return (\n <ComparatorEmptyState\n onSelectClick={handleOpenModal}\n canCompareSchools={canCompareSchools}\n canCompareSchoolYears={canCompareSchoolYears}\n isLoading={isUserLoading}\n labels={labels}\n />\n );\n }\n\n if (loading) {\n return <ComparatorLoadingState />;\n }\n\n return (\n <ComparatorTabContent\n activeTab={activeTab}\n data={data}\n selectedItems={selectedItems}\n labels={labels}\n />\n );\n };\n\n return (\n <div className=\"h-screen bg-background flex flex-col\">\n {/* Header */}\n <header className=\"flex items-center justify-between px-6 py-4 border-b border-border-100 bg-secondary-50\">\n {onBack ? (\n <Button\n variant=\"raw\"\n onClick={onBack}\n className=\"flex items-center gap-2 text-text-950 hover:text-text-700 transition-colors\"\n >\n <CaretLeftIcon size={20} weight=\"bold\" />\n <Text size=\"lg\" weight=\"semibold\">\n {labels.title}\n </Text>\n </Button>\n ) : (\n <div className=\"flex items-center gap-2 text-text-950\">\n <Text size=\"lg\" weight=\"semibold\">\n {labels.title}\n </Text>\n </div>\n )}\n <Button\n variant=\"solid\"\n action=\"primary\"\n size=\"medium\"\n onClick={handleOpenModal}\n disabled={!hasAnyComparisonOption || isUserLoading}\n >\n {buttonText}\n </Button>\n </header>\n\n {/* Tabs */}\n <div className=\"flex gap-2 px-6 py-4 border-b border-border-100 bg-secondary-50\">\n {tabs.map((tab) => (\n <Button\n variant=\"raw\"\n key={tab.value}\n onClick={() => handleTabChange(tab.value)}\n className={`px-4 py-2 text-sm font-medium transition-colors ${\n activeTab === tab.value\n ? 'text-primary-700 border-b-2 border-primary-600'\n : 'text-text-500 hover:text-text-700'\n }`}\n >\n {tab.label}\n </Button>\n ))}\n </div>\n\n {/* Content */}\n <main className=\"flex-1 overflow-auto p-6\">{renderMainContent()}</main>\n\n {/* Selection Modal */}\n <Modal\n isOpen={isModalOpen}\n onClose={handleCloseModal}\n title={labels.filters}\n size=\"md\"\n footer={\n modalStep === 2 ? (\n <div className=\"flex justify-end gap-3 w-full\">\n <Button variant=\"outline\" onClick={handleChangeType}>\n {labels.back}\n </Button>\n <Button\n variant=\"solid\"\n action=\"primary\"\n onClick={handleConfirmSelection}\n disabled={selectedItems.length === 0}\n >\n {labels.confirm} ({selectedItems.length}/5)\n </Button>\n </div>\n ) : undefined\n }\n >\n {modalStep === 1 ? (\n <ComparatorSelectTypeStep\n onSelectType={handleSelectType}\n canCompareSchools={canCompareSchools}\n canCompareSchoolYears={canCompareSchoolYears}\n labels={labels}\n />\n ) : (\n <ComparatorSelectItemsStep\n options={availableOptions}\n selectedItems={selectedItems}\n onSelectItem={handleSelectItem}\n onRemoveItem={handleRemoveItem}\n comparisonType={comparisonType!}\n labels={labels}\n />\n )}\n </Modal>\n </div>\n );\n}\n","import { PlusIcon } from '@phosphor-icons/react/dist/csr/Plus';\nimport Text from '../Text/Text';\nimport Button from '../Button/Button';\nimport type { ComparatorLabels } from '../../types/comparator';\nimport { DEFAULT_COMPARATOR_LABELS } from '../../types/comparator';\n\nexport interface ComparatorEmptyStateProps {\n readonly onSelectClick: () => void;\n readonly canCompareSchools: boolean;\n readonly canCompareSchoolYears: boolean;\n readonly isLoading?: boolean;\n readonly labels?: Partial<ComparatorLabels>;\n}\n\nexport function ComparatorEmptyState({\n onSelectClick,\n canCompareSchools,\n canCompareSchoolYears,\n isLoading = false,\n labels: customLabels,\n}: ComparatorEmptyStateProps) {\n const labels = { ...DEFAULT_COMPARATOR_LABELS, ...customLabels };\n const hasAnyOption = canCompareSchools || canCompareSchoolYears;\n\n const getButtonText = (): string => {\n if (canCompareSchools && canCompareSchoolYears) {\n return labels.selectComparison;\n }\n if (canCompareSchools) {\n return labels.selectSchools;\n }\n return labels.selectSchoolYears;\n };\n\n const getDescriptionText = (): string => {\n if (canCompareSchools && canCompareSchoolYears) {\n return labels.emptyStateDescriptionBoth;\n }\n if (canCompareSchools) {\n return labels.emptyStateDescriptionSchools;\n }\n if (canCompareSchoolYears) {\n return labels.emptyStateDescriptionSchoolYears;\n }\n return labels.noAccessMessage;\n };\n\n const buttonText = getButtonText();\n const descriptionText = getDescriptionText();\n\n return (\n <div className=\"flex flex-col items-center justify-center h-full gap-6\">\n <div className=\"w-24 h-24 rounded-full bg-primary-100 flex items-center justify-center\">\n <svg\n className=\"w-12 h-12 text-primary-600\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z\"\n />\n </svg>\n </div>\n <div className=\"text-center\">\n <Text size=\"lg\" weight=\"semibold\" className=\"text-text-950 mb-2\">\n {labels.title}\n </Text>\n <Text size=\"sm\" className=\"text-text-500\">\n {descriptionText}\n </Text>\n </div>\n {hasAnyOption && (\n <Button\n variant=\"outline\"\n action=\"primary\"\n size=\"medium\"\n onClick={onSelectClick}\n disabled={isLoading}\n >\n <PlusIcon size={18} />\n {buttonText}\n </Button>\n )}\n </div>\n );\n}\n","import { SkeletonCard } from '../Skeleton/Skeleton';\n\nexport function ComparatorLoadingState() {\n return (\n <div\n className=\"flex flex-col gap-6\"\n data-testid=\"comparator-loading-skeleton\"\n >\n <SkeletonCard className=\"h-12 w-full\" />\n <SkeletonCard className=\"h-64 w-full\" />\n <SkeletonCard className=\"h-64 w-full\" />\n </div>\n );\n}\n","import Text from '../Text/Text';\nimport Button from '../Button/Button';\nimport type { ComparisonType, ComparatorLabels } from '../../types/comparator';\nimport { DEFAULT_COMPARATOR_LABELS } from '../../types/comparator';\n\nexport interface ComparatorSelectTypeStepProps {\n readonly onSelectType: (type: ComparisonType) => void;\n readonly canCompareSchools: boolean;\n readonly canCompareSchoolYears: boolean;\n readonly labels?: Partial<ComparatorLabels>;\n}\n\nexport function ComparatorSelectTypeStep({\n onSelectType,\n canCompareSchools,\n canCompareSchoolYears,\n labels: customLabels,\n}: ComparatorSelectTypeStepProps) {\n const labels = { ...DEFAULT_COMPARATOR_LABELS, ...customLabels };\n\n if (!canCompareSchools && !canCompareSchoolYears) {\n return (\n <div className=\"flex flex-col gap-4\">\n <Text size=\"sm\" className=\"text-text-600\">\n {labels.noAccessMessage}\n </Text>\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Text size=\"sm\" className=\"text-text-600\">\n {labels.selectComparisonType}\n </Text>\n <div className=\"flex gap-4\">\n {canCompareSchools && (\n <Button\n variant=\"raw\"\n onClick={() => onSelectType('school')}\n className=\"flex-1 p-4 border border-border-200 rounded-xl hover:border-primary-500 hover:bg-primary-50 transition-colors text-left\"\n >\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950\">\n {labels.schools}\n </Text>\n <Text size=\"sm\" className=\"text-text-500\">\n {labels.compareSchoolsDescription}\n </Text>\n </Button>\n )}\n {canCompareSchoolYears && (\n <Button\n variant=\"raw\"\n onClick={() => onSelectType('schoolYear')}\n className=\"flex-1 p-4 border border-border-200 rounded-xl hover:border-primary-500 hover:bg-primary-50 transition-colors text-left\"\n >\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950\">\n {labels.schoolYears}\n </Text>\n <Text size=\"sm\" className=\"text-text-500\">\n {labels.compareSchoolYearsDescription}\n </Text>\n </Button>\n )}\n </div>\n </div>\n );\n}\n","import { XIcon } from '@phosphor-icons/react/dist/csr/X';\nimport Text from '../Text/Text';\nimport Button from '../Button/Button';\nimport Badge from '../Badge/Badge';\nimport SearchSelect from '../SearchSelect/SearchSelect';\nimport type { SearchSelectOption } from '../SearchSelect/SearchSelect';\nimport type {\n ComparisonType,\n ComparisonItem,\n ComparatorLabels,\n} from '../../types/comparator';\nimport { DEFAULT_COMPARATOR_LABELS } from '../../types/comparator';\n\nexport interface ComparatorSelectItemsStepProps {\n readonly options: SearchSelectOption[];\n readonly selectedItems: ComparisonItem[];\n readonly onSelectItem: (value: string) => void;\n readonly onRemoveItem: (itemId: string) => void;\n readonly comparisonType: ComparisonType;\n readonly labels?: Partial<ComparatorLabels>;\n}\n\nexport function ComparatorSelectItemsStep({\n options,\n selectedItems,\n onSelectItem,\n onRemoveItem,\n comparisonType,\n labels: customLabels,\n}: ComparatorSelectItemsStepProps) {\n const labels = { ...DEFAULT_COMPARATOR_LABELS, ...customLabels };\n const isMaxReached = selectedItems.length >= 5;\n const placeholder =\n comparisonType === 'school' ? labels.schools : labels.schoolYears;\n const itemTypeName =\n comparisonType === 'school'\n ? labels.schools.toLowerCase()\n : labels.schoolYears.toLowerCase();\n const singularItemTypeName =\n comparisonType === 'school' ? labels.school : labels.schoolYear;\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Text size=\"sm\" className=\"text-text-600\">\n {labels.selectItemInstruction.replace('{item}', singularItemTypeName)}\n </Text>\n\n <SearchSelect\n options={options}\n placeholder={placeholder}\n searchPlaceholder={`${labels.search} ${placeholder.toLowerCase()}...`}\n onValueChange={onSelectItem}\n disabled={isMaxReached}\n emptyText=\"Nenhum resultado encontrado\"\n size=\"medium\"\n variant=\"outlined\"\n />\n\n {selectedItems.length > 0 && (\n <div className=\"flex flex-wrap gap-2 p-3 bg-secondary-50 rounded-xl border border-border-100\">\n {selectedItems.map((item) => (\n <Badge\n key={item.id}\n variant=\"outlined\"\n action=\"info\"\n size=\"medium\"\n className=\"flex items-center gap-1 pr-1\"\n >\n <span\n className=\"w-2 h-2 rounded-full mr-1\"\n style={{ backgroundColor: item.color }}\n />\n <span className=\"truncate max-w-[200px]\">{item.name}</span>\n <Button\n variant=\"raw\"\n onClick={() => onRemoveItem(item.id)}\n className=\"ml-1 p-0.5 rounded-full hover:bg-secondary-200 transition-colors\"\n aria-label={`Remover ${item.name}`}\n >\n <XIcon size={14} />\n </Button>\n </Badge>\n ))}\n </div>\n )}\n\n {isMaxReached && (\n <Text size=\"xs\" className=\"text-warning-600\">\n {labels.maxLimitWarning}\n </Text>\n )}\n\n <Text size=\"xs\" className=\"text-text-500\">\n {selectedItems.length} de 5 {itemTypeName} {labels.ofSelected}\n </Text>\n </div>\n );\n}\n","import Text from '../Text/Text';\n\nexport interface LegendItem {\n id: string;\n name: string;\n color: string;\n}\n\nexport interface LegendProps {\n readonly items: LegendItem[];\n}\n\nexport function Legend({ items }: LegendProps) {\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex flex-wrap gap-4 items-center\">\n {items.map((item) => (\n <div key={item.id} className=\"flex items-center gap-2\">\n <div\n className=\"w-3 h-3 rounded-full\"\n style={{ backgroundColor: item.color }}\n />\n <Text size=\"sm\" className=\"text-text-700\">\n {item.name}\n </Text>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import Text from '../Text/Text';\n\nexport function PercentageScale() {\n return (\n <div className=\"flex items-center gap-4 mb-2 border-b border-border-100 pb-2\">\n {/* Spacer for label column (matches BarChartRow label width) */}\n <div className=\"w-64 shrink-0\" />\n {/* Scale markers */}\n <div className=\"flex-1 flex justify-between px-1\">\n <Text size=\"xs\" className=\"text-text-400\">\n 0%\n </Text>\n <Text size=\"xs\" className=\"text-text-400\">\n 25%\n </Text>\n <Text size=\"xs\" className=\"text-text-400\">\n 50%\n </Text>\n <Text size=\"xs\" className=\"text-text-400\">\n 75%\n </Text>\n <Text size=\"xs\" className=\"text-text-400\">\n 100%\n </Text>\n </div>\n </div>\n );\n}\n","import { ReactNode } from 'react';\n\nexport interface ChartAreaProps {\n readonly children: ReactNode;\n}\n\nexport function ChartArea({ children }: ChartAreaProps) {\n return (\n <div className=\"relative\">\n {/* Grid lines */}\n <div className=\"absolute inset-0 flex items-stretch pointer-events-none gap-4\">\n {/* Spacer for label column (matches BarChartRow label width) */}\n <div className=\"w-64 shrink-0\" />\n <div className=\"flex-1 flex\">\n <div className=\"w-1/4 border-r border-dashed border-border-200\" />\n <div className=\"w-1/4 border-r border-dashed border-border-200\" />\n <div className=\"w-1/4 border-r border-dashed border-border-200\" />\n <div className=\"w-1/4\" />\n </div>\n </div>\n {/* Content */}\n <div className=\"relative space-y-6\">{children}</div>\n </div>\n );\n}\n","import { useState } from 'react';\nimport Text from '../Text/Text';\nimport type { LegendItem } from './Legend';\n\nexport interface BarChartValue {\n itemId: string;\n percentage: number;\n}\n\nexport interface BarChartRowProps {\n readonly label: string;\n readonly values: BarChartValue[];\n readonly items: LegendItem[];\n}\n\nexport function BarChartRow({ label, values, items }: BarChartRowProps) {\n const [hoveredItem, setHoveredItem] = useState<string | null>(null);\n\n return (\n <div className=\"flex items-center gap-4\">\n <Text size=\"sm\" className=\"text-text-700 w-64 shrink-0\">\n {label}\n </Text>\n <div className=\"flex-1 space-y-1.5\">\n {items.map((item) => {\n const value = values.find((v) => v.itemId === item.id);\n const percentage = value?.percentage ?? 0;\n const clampedPercentage = Math.max(0, Math.min(percentage, 100));\n const isHovered = hoveredItem === item.id;\n\n return (\n <div\n key={item.id}\n className=\"relative group\"\n onMouseEnter={() => setHoveredItem(item.id)}\n onMouseLeave={() => setHoveredItem(null)}\n >\n <div className=\"flex-1 h-5 bg-secondary-100 rounded-full overflow-hidden relative\">\n <div\n className={`h-full rounded-full transition-all duration-500 ${\n isHovered ? 'opacity-90' : ''\n }`}\n style={{\n width: `${clampedPercentage}%`,\n backgroundColor: item.color,\n minWidth: clampedPercentage > 0 ? '8px' : '0px',\n }}\n />\n </div>\n {/* Tooltip */}\n {isHovered && (\n <div\n className=\"absolute z-10 px-2 py-1 bg-text-900 rounded shadow-lg whitespace-nowrap\"\n style={{\n left: `${Math.min(Math.max(percentage, 5), 95)}%`,\n top: '-28px',\n transform: 'translateX(-50%)',\n }}\n >\n <Text size=\"xs\" weight=\"medium\" className=\"text-white\">\n {item.name}: {percentage.toFixed(1)}%\n </Text>\n <div\n className=\"absolute w-2 h-2 bg-text-900 rotate-45\"\n style={{\n left: '50%',\n bottom: '-4px',\n transform: 'translateX(-50%)',\n }}\n />\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import Text from '../Text/Text';\nimport { Legend } from './Legend';\nimport { PercentageScale } from './PercentageScale';\nimport { ChartArea } from './ChartArea';\nimport { BarChartRow } from './BarChartRow';\nimport type { KnowledgeAreaData, ComparisonItem } from '../../types/comparator';\n\nexport interface KnowledgeAreasContentProps {\n readonly data: KnowledgeAreaData[];\n readonly items: ComparisonItem[];\n readonly title?: string;\n}\n\nexport function KnowledgeAreasContent({\n data,\n items,\n title = 'Proficiência média das escolas por área do Enem',\n}: KnowledgeAreasContentProps) {\n return (\n <div className=\"bg-secondary-50 rounded-2xl p-6\">\n <div className=\"mb-6\">\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950 mb-4\">\n {title}\n </Text>\n <Legend items={items} />\n </div>\n <PercentageScale />\n <ChartArea>\n {data.map((area) => (\n <BarChartRow\n key={area.area}\n label={area.area}\n values={area.values}\n items={items}\n />\n ))}\n </ChartArea>\n </div>\n );\n}\n","import Text from '../Text/Text';\nimport { Legend } from './Legend';\nimport { PercentageScale } from './PercentageScale';\nimport { ChartArea } from './ChartArea';\nimport { BarChartRow } from './BarChartRow';\nimport type {\n CurricularComponentData,\n ComparisonItem,\n} from '../../types/comparator';\n\nexport interface CurricularComponentsContentProps {\n readonly data: CurricularComponentData[];\n readonly items: ComparisonItem[];\n readonly title?: string;\n}\n\nexport function CurricularComponentsContent({\n data,\n items,\n title = 'Proficiência média por componente curricular',\n}: CurricularComponentsContentProps) {\n return (\n <div className=\"bg-secondary-50 rounded-2xl p-6\">\n <div className=\"mb-6\">\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950 mb-4\">\n {title}\n </Text>\n <Legend items={items} />\n </div>\n <PercentageScale />\n <ChartArea>\n {data.map((component) => (\n <BarChartRow\n key={component.component}\n label={component.component}\n values={component.values}\n items={items}\n />\n ))}\n </ChartArea>\n </div>\n );\n}\n","import Text from '../Text/Text';\nimport { Legend } from './Legend';\nimport { PercentageScale } from './PercentageScale';\nimport { ChartArea } from './ChartArea';\nimport { BarChartRow } from './BarChartRow';\nimport type { CompetencyData, ComparisonItem } from '../../types/comparator';\n\nexport interface CompetenciesContentProps {\n readonly data: CompetencyData[];\n readonly items: ComparisonItem[];\n readonly title?: string;\n}\n\nexport function CompetenciesContent({\n data,\n items,\n title = 'Proficiência média por competência',\n}: CompetenciesContentProps) {\n return (\n <div className=\"bg-secondary-50 rounded-2xl p-6\">\n <div className=\"mb-6\">\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950 mb-4\">\n {title}\n </Text>\n <Legend items={items} />\n </div>\n <PercentageScale />\n <ChartArea>\n {data.map((competency) => (\n <BarChartRow\n key={competency.competency}\n label={competency.competency}\n values={competency.values}\n items={items}\n />\n ))}\n </ChartArea>\n </div>\n );\n}\n","import Text from '../Text/Text';\nimport Badge from '../Badge/Badge';\nimport type {\n NationalAverageData,\n ComparatorLabels,\n} from '../../types/comparator';\nimport { DEFAULT_COMPARATOR_LABELS } from '../../types/comparator';\n\nexport interface NationalAverageCardProps {\n readonly data: NationalAverageData;\n readonly color?: string;\n readonly labels?: Partial<ComparatorLabels>;\n}\n\nconst DETAIL_LABELS = [\n { key: 'languages', label: 'LINGUAGENS, CÓDIGOS E SUAS TECNOLOGIAS' },\n { key: 'humanities', label: 'CIÊNCIAS HUMANAS E SUAS TECNOLOGIAS' },\n { key: 'essay', label: 'REDAÇÃO' },\n { key: 'naturalSciences', label: 'CIÊNCIAS DA NATUREZA E SUAS TECNOLOGIAS' },\n { key: 'mathematics', label: 'MATEMÁTICA E SUAS TECNOLOGIAS' },\n] as const;\n\nexport function NationalAverageCard({\n data,\n color,\n labels: customLabels,\n}: NationalAverageCardProps) {\n const labels = { ...DEFAULT_COMPARATOR_LABELS, ...customLabels };\n\n return (\n <div className=\"bg-secondary-50 rounded-2xl p-6\">\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950 mb-4\">\n {data.itemName}\n </Text>\n\n {/* Main scores */}\n <div className=\"grid grid-cols-3 gap-4 mb-6\">\n <div\n className=\"bg-background rounded-xl p-4 text-center border-l-4\"\n style={{ borderColor: color }}\n >\n <Text size=\"2xl\" weight=\"bold\" className=\"text-primary-700\">\n {data.simulatedProficiency.toFixed(1)}\n </Text>\n <Text size=\"xs\" className=\"text-text-500 uppercase\">\n {labels.simulatedProficiency}\n </Text>\n </div>\n <div className=\"bg-warning-50 rounded-xl p-4 text-center\">\n <Text size=\"2xl\" weight=\"bold\" className=\"text-warning-700\">\n {data.publicAverage}\n </Text>\n <Text size=\"xs\" className=\"text-text-500 uppercase\">\n {labels.publicSchoolAverage}\n </Text>\n </div>\n <div className=\"bg-success-50 rounded-xl p-4 text-center\">\n <Text size=\"2xl\" weight=\"bold\" className=\"text-success-700\">\n {data.privateAverage}\n </Text>\n <Text size=\"xs\" className=\"text-text-500 uppercase\">\n {labels.privateSchoolAverage}\n </Text>\n </div>\n </div>\n\n {/* Detail scores */}\n <div className=\"grid grid-cols-5 gap-4 mb-4\">\n {DETAIL_LABELS.map(({ key, label }) => (\n <div key={key} className=\"bg-background rounded-xl p-3 text-center\">\n <Text\n size=\"xs\"\n className=\"text-text-500 uppercase mb-1 line-clamp-2\"\n >\n {label}\n </Text>\n <Text size=\"lg\" weight=\"bold\" className=\"text-primary-700\">\n {data.details[key]}\n </Text>\n </div>\n ))}\n </div>\n\n {/* Status */}\n <Badge\n variant=\"solid\"\n action={data.status === 'above' ? 'success' : 'warning'}\n size=\"medium\"\n className=\"w-full justify-center py-3\"\n >\n {data.status === 'above' ? labels.aboveAverage : labels.belowAverage}\n </Badge>\n </div>\n );\n}\n","import Text from '../Text/Text';\nimport { NationalAverageCard } from './NationalAverageCard';\nimport type {\n NationalAverageData,\n ComparisonItem,\n ComparatorLabels,\n} from '../../types/comparator';\nimport { DEFAULT_COMPARATOR_LABELS } from '../../types/comparator';\n\nexport interface NationalAveragesContentProps {\n readonly data: NationalAverageData[];\n readonly items: ComparisonItem[];\n readonly title?: string;\n readonly labels?: Partial<ComparatorLabels>;\n}\n\nexport function NationalAveragesContent({\n data,\n items,\n title,\n labels: customLabels,\n}: NationalAveragesContentProps) {\n const labels = { ...DEFAULT_COMPARATOR_LABELS, ...customLabels };\n\n return (\n <div className=\"space-y-6\">\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950\">\n {title || labels.nationalAveragesTitle}\n </Text>\n {data.map((item) => {\n const selectedItem = items.find((i) => i.id === item.itemId);\n return (\n <NationalAverageCard\n key={item.itemId}\n data={item}\n color={selectedItem?.color}\n labels={labels}\n />\n );\n })}\n </div>\n );\n}\n","import { KnowledgeAreasContent } from './KnowledgeAreasContent';\nimport { CurricularComponentsContent } from './CurricularComponentsContent';\nimport { CompetenciesContent } from './CompetenciesContent';\nimport { NationalAveragesContent } from './NationalAveragesContent';\nimport {\n ComparatorTabValue,\n type ComparatorTabType,\n type ComparatorData,\n type ComparisonItem,\n type ComparatorLabels,\n} from '../../types/comparator';\n\nexport interface ComparatorTabContentProps {\n readonly activeTab: ComparatorTabType;\n readonly data: ComparatorData;\n readonly selectedItems: ComparisonItem[];\n readonly labels?: Partial<ComparatorLabels>;\n}\n\nexport function ComparatorTabContent({\n activeTab,\n data,\n selectedItems,\n labels,\n}: ComparatorTabContentProps) {\n switch (activeTab) {\n case ComparatorTabValue.KNOWLEDGE_AREAS:\n return (\n <KnowledgeAreasContent\n data={data.knowledgeAreas}\n items={selectedItems}\n title={labels?.knowledgeAreasTitle}\n />\n );\n case ComparatorTabValue.CURRICULAR_COMPONENTS:\n return (\n <CurricularComponentsContent\n data={data.curricularComponents}\n items={selectedItems}\n title={labels?.curricularComponentsTitle}\n />\n );\n case ComparatorTabValue.COMPETENCIES:\n return (\n <CompetenciesContent\n data={data.competencies}\n items={selectedItems}\n title={labels?.competenciesTitle}\n />\n );\n case ComparatorTabValue.NATIONAL_AVERAGES:\n return (\n <NationalAveragesContent\n data={data.nationalAverages}\n items={selectedItems}\n title={labels?.nationalAveragesTitle}\n labels={labels}\n />\n );\n default:\n return null;\n }\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-CVDNCU6L.js","../src/components/ComparatorChart/ComparatorView.tsx","../src/components/ComparatorChart/ComparatorEmptyState.tsx","../src/components/ComparatorChart/ComparatorLoadingState.tsx","../src/components/ComparatorChart/ComparatorSelectTypeStep.tsx","../src/components/ComparatorChart/ComparatorSelectItemsStep.tsx","../src/components/ComparatorChart/Legend.tsx","../src/components/ComparatorChart/PercentageScale.tsx","../src/components/ComparatorChart/ChartArea.tsx","../src/components/ComparatorChart/BarChartRow.tsx","../src/components/ComparatorChart/KnowledgeAreasContent.tsx","../src/components/ComparatorChart/CurricularComponentsContent.tsx","../src/components/ComparatorChart/CompetenciesContent.tsx","../src/components/ComparatorChart/NationalAverageCard.tsx","../src/components/ComparatorChart/NationalAveragesContent.tsx","../src/components/ComparatorChart/ComparatorTabContent.tsx"],"names":["jsxs","jsx"],"mappings":"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","file":"/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-CVDNCU6L.js","sourcesContent":[null,"import { useState, useMemo, useCallback, useEffect, useRef } from 'react';\nimport { CaretLeftIcon } from '@phosphor-icons/react/dist/csr/CaretLeft';\nimport Text from '../Text/Text';\nimport Button from '../Button/Button';\nimport Modal from '../Modal/Modal';\nimport type { SearchSelectOption } from '../SearchSelect/SearchSelect';\nimport { ComparatorEmptyState } from './ComparatorEmptyState';\nimport { ComparatorLoadingState } from './ComparatorLoadingState';\nimport { ComparatorSelectTypeStep } from './ComparatorSelectTypeStep';\nimport { ComparatorSelectItemsStep } from './ComparatorSelectItemsStep';\nimport { ComparatorTabContent } from './ComparatorTabContent';\nimport {\n ComparatorTabValue,\n DEFAULT_COMPARATOR_LABELS,\n DEFAULT_COMPARATOR_TABS,\n type ComparisonType,\n type ComparatorTabType,\n type ComparatorStoreState,\n type UseComparatorReturn,\n type ComparatorLabels,\n type ComparatorTab,\n} from '../../types/comparator';\n\nexport interface ComparatorViewProps {\n // Data sources\n readonly schools: SearchSelectOption[];\n readonly schoolYears: SearchSelectOption[];\n\n // Store hooks (injected)\n readonly useComparatorStore: () => ComparatorStoreState;\n readonly useComparator: () => UseComparatorReturn;\n\n // Navigation\n readonly onBack?: () => void;\n\n // Tab management\n readonly activeTab?: ComparatorTabType;\n readonly onTabChange?: (tab: ComparatorTabType) => void;\n readonly tabs?: ComparatorTab[];\n\n // Customization\n readonly labels?: Partial<ComparatorLabels>;\n readonly isUserLoading?: boolean;\n\n // Callbacks\n readonly onFetchUserData?: (force?: boolean) => void;\n}\n\nexport function ComparatorView({\n schools,\n schoolYears,\n useComparatorStore,\n useComparator,\n onBack,\n activeTab: externalActiveTab,\n onTabChange,\n tabs = DEFAULT_COMPARATOR_TABS,\n labels: customLabels,\n isUserLoading = false,\n onFetchUserData,\n}: ComparatorViewProps) {\n const labels = useMemo(\n () => ({ ...DEFAULT_COMPARATOR_LABELS, ...customLabels }),\n [customLabels]\n );\n\n // Store state\n const {\n comparisonType,\n selectedItems,\n setComparisonType,\n addItem,\n removeItem,\n clearSelection,\n } = useComparatorStore();\n\n // Data hook\n const { data, loading, fetchData } = useComparator();\n\n // Local UI state\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [modalStep, setModalStep] = useState<1 | 2>(1);\n const [internalActiveTab, setInternalActiveTab] = useState<ComparatorTabType>(\n ComparatorTabValue.KNOWLEDGE_AREAS\n );\n const hasInitializedRef = useRef(false);\n\n // Use external tab if provided, otherwise internal\n const activeTab = externalActiveTab ?? internalActiveTab;\n\n // Determine comparison availability\n const canCompareSchools = schools.length > 1;\n const canCompareSchoolYears = schoolYears.length > 1;\n const hasAnyComparisonOption = canCompareSchools || canCompareSchoolYears;\n\n // Fetch user data on mount\n useEffect(() => {\n onFetchUserData?.(true);\n }, [onFetchUserData]);\n\n // Load comparison data on mount if there are persisted selections\n useEffect(() => {\n if (hasInitializedRef.current) return;\n if (selectedItems.length > 0 && comparisonType) {\n hasInitializedRef.current = true;\n fetchData(\n selectedItems.map((i) => i.id),\n comparisonType,\n activeTab\n );\n }\n }, [selectedItems, comparisonType, activeTab, fetchData]);\n\n // Options based on comparison type\n const options = useMemo((): SearchSelectOption[] => {\n if (comparisonType === 'school') return schools;\n if (comparisonType === 'schoolYear') return schoolYears;\n return [];\n }, [comparisonType, schools, schoolYears]);\n\n // Filter out already selected items\n const availableOptions = useMemo(() => {\n return options.filter(\n (opt) => !selectedItems.some((item) => item.id === opt.value)\n );\n }, [options, selectedItems]);\n\n // Handlers\n const handleTabChange = useCallback(\n (tab: ComparatorTabType) => {\n if (onTabChange) {\n onTabChange(tab);\n } else {\n setInternalActiveTab(tab);\n }\n\n if (selectedItems.length > 0 && comparisonType) {\n fetchData(\n selectedItems.map((i) => i.id),\n comparisonType,\n tab\n );\n }\n },\n [selectedItems, comparisonType, onTabChange, fetchData]\n );\n\n const handleOpenModal = useCallback(() => {\n if (comparisonType) {\n setModalStep(2);\n setIsModalOpen(true);\n return;\n }\n\n if (canCompareSchools && !canCompareSchoolYears) {\n setComparisonType('school');\n setModalStep(2);\n } else if (canCompareSchoolYears && !canCompareSchools) {\n setComparisonType('schoolYear');\n setModalStep(2);\n } else {\n setModalStep(1);\n }\n setIsModalOpen(true);\n }, [\n comparisonType,\n canCompareSchools,\n canCompareSchoolYears,\n setComparisonType,\n ]);\n\n const handleSelectType = useCallback(\n (type: ComparisonType) => {\n clearSelection();\n setComparisonType(type);\n setModalStep(2);\n },\n [clearSelection, setComparisonType]\n );\n\n const handleSelectItem = useCallback(\n (value: string) => {\n if (selectedItems.length >= 5) return;\n\n const option = options.find((opt) => opt.value === value);\n if (!option) return;\n\n addItem({\n id: option.value,\n name: option.label,\n color: '',\n });\n },\n [options, selectedItems.length, addItem]\n );\n\n const handleRemoveItem = useCallback(\n (itemId: string) => {\n removeItem(itemId);\n },\n [removeItem]\n );\n\n const handleConfirmSelection = useCallback(() => {\n setIsModalOpen(false);\n if (selectedItems.length > 0 && comparisonType) {\n fetchData(\n selectedItems.map((i) => i.id),\n comparisonType,\n activeTab\n );\n }\n }, [selectedItems, comparisonType, activeTab, fetchData]);\n\n const handleCloseModal = useCallback(() => {\n setIsModalOpen(false);\n }, []);\n\n const handleChangeType = useCallback(() => {\n setModalStep(1);\n clearSelection();\n }, [clearSelection]);\n\n // Get button text\n const buttonText = useMemo(() => {\n if (selectedItems.length > 0) {\n return comparisonType === 'school'\n ? labels.selectSchools\n : labels.selectSchoolYears;\n }\n if (canCompareSchools && canCompareSchoolYears) {\n return labels.selectComparison;\n }\n return canCompareSchools ? labels.selectSchools : labels.selectSchoolYears;\n }, [\n selectedItems.length,\n comparisonType,\n canCompareSchools,\n canCompareSchoolYears,\n labels,\n ]);\n\n const renderMainContent = () => {\n if (selectedItems.length === 0) {\n return (\n <ComparatorEmptyState\n onSelectClick={handleOpenModal}\n canCompareSchools={canCompareSchools}\n canCompareSchoolYears={canCompareSchoolYears}\n isLoading={isUserLoading}\n labels={labels}\n />\n );\n }\n\n if (loading) {\n return <ComparatorLoadingState />;\n }\n\n return (\n <ComparatorTabContent\n activeTab={activeTab}\n data={data}\n selectedItems={selectedItems}\n labels={labels}\n />\n );\n };\n\n return (\n <div className=\"h-screen bg-background flex flex-col\">\n {/* Header */}\n <header className=\"flex items-center justify-between px-6 py-4 border-b border-border-100 bg-secondary-50\">\n {onBack ? (\n <Button\n variant=\"raw\"\n onClick={onBack}\n className=\"flex items-center gap-2 text-text-950 hover:text-text-700 transition-colors\"\n >\n <CaretLeftIcon size={20} weight=\"bold\" />\n <Text size=\"lg\" weight=\"semibold\">\n {labels.title}\n </Text>\n </Button>\n ) : (\n <div className=\"flex items-center gap-2 text-text-950\">\n <Text size=\"lg\" weight=\"semibold\">\n {labels.title}\n </Text>\n </div>\n )}\n <Button\n variant=\"solid\"\n action=\"primary\"\n size=\"medium\"\n onClick={handleOpenModal}\n disabled={!hasAnyComparisonOption || isUserLoading}\n >\n {buttonText}\n </Button>\n </header>\n\n {/* Tabs */}\n <div className=\"flex gap-2 px-6 py-4 border-b border-border-100 bg-secondary-50\">\n {tabs.map((tab) => (\n <Button\n variant=\"raw\"\n key={tab.value}\n onClick={() => handleTabChange(tab.value)}\n className={`px-4 py-2 text-sm font-medium transition-colors ${\n activeTab === tab.value\n ? 'text-primary-700 border-b-2 border-primary-600'\n : 'text-text-500 hover:text-text-700'\n }`}\n >\n {tab.label}\n </Button>\n ))}\n </div>\n\n {/* Content */}\n <main className=\"flex-1 overflow-auto p-6\">{renderMainContent()}</main>\n\n {/* Selection Modal */}\n <Modal\n isOpen={isModalOpen}\n onClose={handleCloseModal}\n title={labels.filters}\n size=\"md\"\n footer={\n modalStep === 2 ? (\n <div className=\"flex justify-end gap-3 w-full\">\n <Button variant=\"outline\" onClick={handleChangeType}>\n {labels.back}\n </Button>\n <Button\n variant=\"solid\"\n action=\"primary\"\n onClick={handleConfirmSelection}\n disabled={selectedItems.length === 0}\n >\n {labels.confirm} ({selectedItems.length}/5)\n </Button>\n </div>\n ) : undefined\n }\n >\n {modalStep === 1 ? (\n <ComparatorSelectTypeStep\n onSelectType={handleSelectType}\n canCompareSchools={canCompareSchools}\n canCompareSchoolYears={canCompareSchoolYears}\n labels={labels}\n />\n ) : (\n <ComparatorSelectItemsStep\n options={availableOptions}\n selectedItems={selectedItems}\n onSelectItem={handleSelectItem}\n onRemoveItem={handleRemoveItem}\n comparisonType={comparisonType!}\n labels={labels}\n />\n )}\n </Modal>\n </div>\n );\n}\n","import { PlusIcon } from '@phosphor-icons/react/dist/csr/Plus';\nimport Text from '../Text/Text';\nimport Button from '../Button/Button';\nimport type { ComparatorLabels } from '../../types/comparator';\nimport { DEFAULT_COMPARATOR_LABELS } from '../../types/comparator';\n\nexport interface ComparatorEmptyStateProps {\n readonly onSelectClick: () => void;\n readonly canCompareSchools: boolean;\n readonly canCompareSchoolYears: boolean;\n readonly isLoading?: boolean;\n readonly labels?: Partial<ComparatorLabels>;\n}\n\nexport function ComparatorEmptyState({\n onSelectClick,\n canCompareSchools,\n canCompareSchoolYears,\n isLoading = false,\n labels: customLabels,\n}: ComparatorEmptyStateProps) {\n const labels = { ...DEFAULT_COMPARATOR_LABELS, ...customLabels };\n const hasAnyOption = canCompareSchools || canCompareSchoolYears;\n\n const getButtonText = (): string => {\n if (canCompareSchools && canCompareSchoolYears) {\n return labels.selectComparison;\n }\n if (canCompareSchools) {\n return labels.selectSchools;\n }\n return labels.selectSchoolYears;\n };\n\n const getDescriptionText = (): string => {\n if (canCompareSchools && canCompareSchoolYears) {\n return labels.emptyStateDescriptionBoth;\n }\n if (canCompareSchools) {\n return labels.emptyStateDescriptionSchools;\n }\n if (canCompareSchoolYears) {\n return labels.emptyStateDescriptionSchoolYears;\n }\n return labels.noAccessMessage;\n };\n\n const buttonText = getButtonText();\n const descriptionText = getDescriptionText();\n\n return (\n <div className=\"flex flex-col items-center justify-center h-full gap-6\">\n <div className=\"w-24 h-24 rounded-full bg-primary-100 flex items-center justify-center\">\n <svg\n className=\"w-12 h-12 text-primary-600\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z\"\n />\n </svg>\n </div>\n <div className=\"text-center\">\n <Text size=\"lg\" weight=\"semibold\" className=\"text-text-950 mb-2\">\n {labels.title}\n </Text>\n <Text size=\"sm\" className=\"text-text-500\">\n {descriptionText}\n </Text>\n </div>\n {hasAnyOption && (\n <Button\n variant=\"outline\"\n action=\"primary\"\n size=\"medium\"\n onClick={onSelectClick}\n disabled={isLoading}\n >\n <PlusIcon size={18} />\n {buttonText}\n </Button>\n )}\n </div>\n );\n}\n","import { SkeletonCard } from '../Skeleton/Skeleton';\n\nexport function ComparatorLoadingState() {\n return (\n <div\n className=\"flex flex-col gap-6\"\n data-testid=\"comparator-loading-skeleton\"\n >\n <SkeletonCard className=\"h-12 w-full\" />\n <SkeletonCard className=\"h-64 w-full\" />\n <SkeletonCard className=\"h-64 w-full\" />\n </div>\n );\n}\n","import Text from '../Text/Text';\nimport Button from '../Button/Button';\nimport type { ComparisonType, ComparatorLabels } from '../../types/comparator';\nimport { DEFAULT_COMPARATOR_LABELS } from '../../types/comparator';\n\nexport interface ComparatorSelectTypeStepProps {\n readonly onSelectType: (type: ComparisonType) => void;\n readonly canCompareSchools: boolean;\n readonly canCompareSchoolYears: boolean;\n readonly labels?: Partial<ComparatorLabels>;\n}\n\nexport function ComparatorSelectTypeStep({\n onSelectType,\n canCompareSchools,\n canCompareSchoolYears,\n labels: customLabels,\n}: ComparatorSelectTypeStepProps) {\n const labels = { ...DEFAULT_COMPARATOR_LABELS, ...customLabels };\n\n if (!canCompareSchools && !canCompareSchoolYears) {\n return (\n <div className=\"flex flex-col gap-4\">\n <Text size=\"sm\" className=\"text-text-600\">\n {labels.noAccessMessage}\n </Text>\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Text size=\"sm\" className=\"text-text-600\">\n {labels.selectComparisonType}\n </Text>\n <div className=\"flex gap-4\">\n {canCompareSchools && (\n <Button\n variant=\"raw\"\n onClick={() => onSelectType('school')}\n className=\"flex-1 p-4 border border-border-200 rounded-xl hover:border-primary-500 hover:bg-primary-50 transition-colors text-left\"\n >\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950\">\n {labels.schools}\n </Text>\n <Text size=\"sm\" className=\"text-text-500\">\n {labels.compareSchoolsDescription}\n </Text>\n </Button>\n )}\n {canCompareSchoolYears && (\n <Button\n variant=\"raw\"\n onClick={() => onSelectType('schoolYear')}\n className=\"flex-1 p-4 border border-border-200 rounded-xl hover:border-primary-500 hover:bg-primary-50 transition-colors text-left\"\n >\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950\">\n {labels.schoolYears}\n </Text>\n <Text size=\"sm\" className=\"text-text-500\">\n {labels.compareSchoolYearsDescription}\n </Text>\n </Button>\n )}\n </div>\n </div>\n );\n}\n","import { XIcon } from '@phosphor-icons/react/dist/csr/X';\nimport Text from '../Text/Text';\nimport Button from '../Button/Button';\nimport Badge from '../Badge/Badge';\nimport SearchSelect from '../SearchSelect/SearchSelect';\nimport type { SearchSelectOption } from '../SearchSelect/SearchSelect';\nimport type {\n ComparisonType,\n ComparisonItem,\n ComparatorLabels,\n} from '../../types/comparator';\nimport { DEFAULT_COMPARATOR_LABELS } from '../../types/comparator';\n\nexport interface ComparatorSelectItemsStepProps {\n readonly options: SearchSelectOption[];\n readonly selectedItems: ComparisonItem[];\n readonly onSelectItem: (value: string) => void;\n readonly onRemoveItem: (itemId: string) => void;\n readonly comparisonType: ComparisonType;\n readonly labels?: Partial<ComparatorLabels>;\n}\n\nexport function ComparatorSelectItemsStep({\n options,\n selectedItems,\n onSelectItem,\n onRemoveItem,\n comparisonType,\n labels: customLabels,\n}: ComparatorSelectItemsStepProps) {\n const labels = { ...DEFAULT_COMPARATOR_LABELS, ...customLabels };\n const isMaxReached = selectedItems.length >= 5;\n const placeholder =\n comparisonType === 'school' ? labels.schools : labels.schoolYears;\n const itemTypeName =\n comparisonType === 'school'\n ? labels.schools.toLowerCase()\n : labels.schoolYears.toLowerCase();\n const singularItemTypeName =\n comparisonType === 'school' ? labels.school : labels.schoolYear;\n\n return (\n <div className=\"flex flex-col gap-4\">\n <Text size=\"sm\" className=\"text-text-600\">\n {labels.selectItemInstruction.replace('{item}', singularItemTypeName)}\n </Text>\n\n <SearchSelect\n options={options}\n placeholder={placeholder}\n searchPlaceholder={`${labels.search} ${placeholder.toLowerCase()}...`}\n onValueChange={onSelectItem}\n disabled={isMaxReached}\n emptyText=\"Nenhum resultado encontrado\"\n size=\"medium\"\n variant=\"outlined\"\n />\n\n {selectedItems.length > 0 && (\n <div className=\"flex flex-wrap gap-2 p-3 bg-secondary-50 rounded-xl border border-border-100\">\n {selectedItems.map((item) => (\n <Badge\n key={item.id}\n variant=\"outlined\"\n action=\"info\"\n size=\"medium\"\n className=\"flex items-center gap-1 pr-1\"\n >\n <span\n className=\"w-2 h-2 rounded-full mr-1\"\n style={{ backgroundColor: item.color }}\n />\n <span className=\"truncate max-w-[200px]\">{item.name}</span>\n <Button\n variant=\"raw\"\n onClick={() => onRemoveItem(item.id)}\n className=\"ml-1 p-0.5 rounded-full hover:bg-secondary-200 transition-colors\"\n aria-label={`Remover ${item.name}`}\n >\n <XIcon size={14} />\n </Button>\n </Badge>\n ))}\n </div>\n )}\n\n {isMaxReached && (\n <Text size=\"xs\" className=\"text-warning-600\">\n {labels.maxLimitWarning}\n </Text>\n )}\n\n <Text size=\"xs\" className=\"text-text-500\">\n {selectedItems.length} de 5 {itemTypeName} {labels.ofSelected}\n </Text>\n </div>\n );\n}\n","import Text from '../Text/Text';\n\nexport interface LegendItem {\n id: string;\n name: string;\n color: string;\n}\n\nexport interface LegendProps {\n readonly items: LegendItem[];\n}\n\nexport function Legend({ items }: LegendProps) {\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex flex-wrap gap-4 items-center\">\n {items.map((item) => (\n <div key={item.id} className=\"flex items-center gap-2\">\n <div\n className=\"w-3 h-3 rounded-full\"\n style={{ backgroundColor: item.color }}\n />\n <Text size=\"sm\" className=\"text-text-700\">\n {item.name}\n </Text>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import Text from '../Text/Text';\n\nexport function PercentageScale() {\n return (\n <div className=\"flex items-center gap-4 mb-2 border-b border-border-100 pb-2\">\n {/* Spacer for label column (matches BarChartRow label width) */}\n <div className=\"w-64 shrink-0\" />\n {/* Scale markers */}\n <div className=\"flex-1 flex justify-between px-1\">\n <Text size=\"xs\" className=\"text-text-400\">\n 0%\n </Text>\n <Text size=\"xs\" className=\"text-text-400\">\n 25%\n </Text>\n <Text size=\"xs\" className=\"text-text-400\">\n 50%\n </Text>\n <Text size=\"xs\" className=\"text-text-400\">\n 75%\n </Text>\n <Text size=\"xs\" className=\"text-text-400\">\n 100%\n </Text>\n </div>\n </div>\n );\n}\n","import { ReactNode } from 'react';\n\nexport interface ChartAreaProps {\n readonly children: ReactNode;\n}\n\nexport function ChartArea({ children }: ChartAreaProps) {\n return (\n <div className=\"relative\">\n {/* Grid lines */}\n <div className=\"absolute inset-0 flex items-stretch pointer-events-none gap-4\">\n {/* Spacer for label column (matches BarChartRow label width) */}\n <div className=\"w-64 shrink-0\" />\n <div className=\"flex-1 flex\">\n <div className=\"w-1/4 border-r border-dashed border-border-200\" />\n <div className=\"w-1/4 border-r border-dashed border-border-200\" />\n <div className=\"w-1/4 border-r border-dashed border-border-200\" />\n <div className=\"w-1/4\" />\n </div>\n </div>\n {/* Content */}\n <div className=\"relative space-y-6\">{children}</div>\n </div>\n );\n}\n","import { useState } from 'react';\nimport Text from '../Text/Text';\nimport type { LegendItem } from './Legend';\n\nexport interface BarChartValue {\n itemId: string;\n percentage: number;\n}\n\nexport interface BarChartRowProps {\n readonly label: string;\n readonly values: BarChartValue[];\n readonly items: LegendItem[];\n}\n\nexport function BarChartRow({ label, values, items }: BarChartRowProps) {\n const [hoveredItem, setHoveredItem] = useState<string | null>(null);\n\n return (\n <div className=\"flex items-center gap-4\">\n <Text size=\"sm\" className=\"text-text-700 w-64 shrink-0\">\n {label}\n </Text>\n <div className=\"flex-1 space-y-1.5\">\n {items.map((item) => {\n const value = values.find((v) => v.itemId === item.id);\n const percentage = value?.percentage ?? 0;\n const clampedPercentage = Math.max(0, Math.min(percentage, 100));\n const isHovered = hoveredItem === item.id;\n\n return (\n <div\n key={item.id}\n className=\"relative group\"\n onMouseEnter={() => setHoveredItem(item.id)}\n onMouseLeave={() => setHoveredItem(null)}\n >\n <div className=\"flex-1 h-5 bg-secondary-100 rounded-full overflow-hidden relative\">\n <div\n className={`h-full rounded-full transition-all duration-500 ${\n isHovered ? 'opacity-90' : ''\n }`}\n style={{\n width: `${clampedPercentage}%`,\n backgroundColor: item.color,\n minWidth: clampedPercentage > 0 ? '8px' : '0px',\n }}\n />\n </div>\n {/* Tooltip */}\n {isHovered && (\n <div\n className=\"absolute z-10 px-2 py-1 bg-text-900 rounded shadow-lg whitespace-nowrap\"\n style={{\n left: `${Math.min(Math.max(percentage, 5), 95)}%`,\n top: '-28px',\n transform: 'translateX(-50%)',\n }}\n >\n <Text size=\"xs\" weight=\"medium\" className=\"text-white\">\n {item.name}: {percentage.toFixed(1)}%\n </Text>\n <div\n className=\"absolute w-2 h-2 bg-text-900 rotate-45\"\n style={{\n left: '50%',\n bottom: '-4px',\n transform: 'translateX(-50%)',\n }}\n />\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import Text from '../Text/Text';\nimport { Legend } from './Legend';\nimport { PercentageScale } from './PercentageScale';\nimport { ChartArea } from './ChartArea';\nimport { BarChartRow } from './BarChartRow';\nimport type { KnowledgeAreaData, ComparisonItem } from '../../types/comparator';\n\nexport interface KnowledgeAreasContentProps {\n readonly data: KnowledgeAreaData[];\n readonly items: ComparisonItem[];\n readonly title?: string;\n}\n\nexport function KnowledgeAreasContent({\n data,\n items,\n title = 'Proficiência média das escolas por área do Enem',\n}: KnowledgeAreasContentProps) {\n return (\n <div className=\"bg-secondary-50 rounded-2xl p-6\">\n <div className=\"mb-6\">\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950 mb-4\">\n {title}\n </Text>\n <Legend items={items} />\n </div>\n <PercentageScale />\n <ChartArea>\n {data.map((area) => (\n <BarChartRow\n key={area.area}\n label={area.area}\n values={area.values}\n items={items}\n />\n ))}\n </ChartArea>\n </div>\n );\n}\n","import Text from '../Text/Text';\nimport { Legend } from './Legend';\nimport { PercentageScale } from './PercentageScale';\nimport { ChartArea } from './ChartArea';\nimport { BarChartRow } from './BarChartRow';\nimport type {\n CurricularComponentData,\n ComparisonItem,\n} from '../../types/comparator';\n\nexport interface CurricularComponentsContentProps {\n readonly data: CurricularComponentData[];\n readonly items: ComparisonItem[];\n readonly title?: string;\n}\n\nexport function CurricularComponentsContent({\n data,\n items,\n title = 'Proficiência média por componente curricular',\n}: CurricularComponentsContentProps) {\n return (\n <div className=\"bg-secondary-50 rounded-2xl p-6\">\n <div className=\"mb-6\">\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950 mb-4\">\n {title}\n </Text>\n <Legend items={items} />\n </div>\n <PercentageScale />\n <ChartArea>\n {data.map((component) => (\n <BarChartRow\n key={component.component}\n label={component.component}\n values={component.values}\n items={items}\n />\n ))}\n </ChartArea>\n </div>\n );\n}\n","import Text from '../Text/Text';\nimport { Legend } from './Legend';\nimport { PercentageScale } from './PercentageScale';\nimport { ChartArea } from './ChartArea';\nimport { BarChartRow } from './BarChartRow';\nimport type { CompetencyData, ComparisonItem } from '../../types/comparator';\n\nexport interface CompetenciesContentProps {\n readonly data: CompetencyData[];\n readonly items: ComparisonItem[];\n readonly title?: string;\n}\n\nexport function CompetenciesContent({\n data,\n items,\n title = 'Proficiência média por competência',\n}: CompetenciesContentProps) {\n return (\n <div className=\"bg-secondary-50 rounded-2xl p-6\">\n <div className=\"mb-6\">\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950 mb-4\">\n {title}\n </Text>\n <Legend items={items} />\n </div>\n <PercentageScale />\n <ChartArea>\n {data.map((competency) => (\n <BarChartRow\n key={competency.competency}\n label={competency.competency}\n values={competency.values}\n items={items}\n />\n ))}\n </ChartArea>\n </div>\n );\n}\n","import Text from '../Text/Text';\nimport Badge from '../Badge/Badge';\nimport type {\n NationalAverageData,\n ComparatorLabels,\n} from '../../types/comparator';\nimport { DEFAULT_COMPARATOR_LABELS } from '../../types/comparator';\n\nexport interface NationalAverageCardProps {\n readonly data: NationalAverageData;\n readonly color?: string;\n readonly labels?: Partial<ComparatorLabels>;\n}\n\nconst DETAIL_LABELS = [\n { key: 'languages', label: 'LINGUAGENS, CÓDIGOS E SUAS TECNOLOGIAS' },\n { key: 'humanities', label: 'CIÊNCIAS HUMANAS E SUAS TECNOLOGIAS' },\n { key: 'essay', label: 'REDAÇÃO' },\n { key: 'naturalSciences', label: 'CIÊNCIAS DA NATUREZA E SUAS TECNOLOGIAS' },\n { key: 'mathematics', label: 'MATEMÁTICA E SUAS TECNOLOGIAS' },\n] as const;\n\nexport function NationalAverageCard({\n data,\n color,\n labels: customLabels,\n}: NationalAverageCardProps) {\n const labels = { ...DEFAULT_COMPARATOR_LABELS, ...customLabels };\n\n return (\n <div className=\"bg-secondary-50 rounded-2xl p-6\">\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950 mb-4\">\n {data.itemName}\n </Text>\n\n {/* Main scores */}\n <div className=\"grid grid-cols-3 gap-4 mb-6\">\n <div\n className=\"bg-background rounded-xl p-4 text-center border-l-4\"\n style={{ borderColor: color }}\n >\n <Text size=\"2xl\" weight=\"bold\" className=\"text-primary-700\">\n {data.simulatedProficiency.toFixed(1)}\n </Text>\n <Text size=\"xs\" className=\"text-text-500 uppercase\">\n {labels.simulatedProficiency}\n </Text>\n </div>\n <div className=\"bg-warning-50 rounded-xl p-4 text-center\">\n <Text size=\"2xl\" weight=\"bold\" className=\"text-warning-700\">\n {data.publicAverage}\n </Text>\n <Text size=\"xs\" className=\"text-text-500 uppercase\">\n {labels.publicSchoolAverage}\n </Text>\n </div>\n <div className=\"bg-success-50 rounded-xl p-4 text-center\">\n <Text size=\"2xl\" weight=\"bold\" className=\"text-success-700\">\n {data.privateAverage}\n </Text>\n <Text size=\"xs\" className=\"text-text-500 uppercase\">\n {labels.privateSchoolAverage}\n </Text>\n </div>\n </div>\n\n {/* Detail scores */}\n <div className=\"grid grid-cols-5 gap-4 mb-4\">\n {DETAIL_LABELS.map(({ key, label }) => (\n <div key={key} className=\"bg-background rounded-xl p-3 text-center\">\n <Text\n size=\"xs\"\n className=\"text-text-500 uppercase mb-1 line-clamp-2\"\n >\n {label}\n </Text>\n <Text size=\"lg\" weight=\"bold\" className=\"text-primary-700\">\n {data.details[key]}\n </Text>\n </div>\n ))}\n </div>\n\n {/* Status */}\n <Badge\n variant=\"solid\"\n action={data.status === 'above' ? 'success' : 'warning'}\n size=\"medium\"\n className=\"w-full justify-center py-3\"\n >\n {data.status === 'above' ? labels.aboveAverage : labels.belowAverage}\n </Badge>\n </div>\n );\n}\n","import Text from '../Text/Text';\nimport { NationalAverageCard } from './NationalAverageCard';\nimport type {\n NationalAverageData,\n ComparisonItem,\n ComparatorLabels,\n} from '../../types/comparator';\nimport { DEFAULT_COMPARATOR_LABELS } from '../../types/comparator';\n\nexport interface NationalAveragesContentProps {\n readonly data: NationalAverageData[];\n readonly items: ComparisonItem[];\n readonly title?: string;\n readonly labels?: Partial<ComparatorLabels>;\n}\n\nexport function NationalAveragesContent({\n data,\n items,\n title,\n labels: customLabels,\n}: NationalAveragesContentProps) {\n const labels = { ...DEFAULT_COMPARATOR_LABELS, ...customLabels };\n\n return (\n <div className=\"space-y-6\">\n <Text size=\"md\" weight=\"semibold\" className=\"text-text-950\">\n {title || labels.nationalAveragesTitle}\n </Text>\n {data.map((item) => {\n const selectedItem = items.find((i) => i.id === item.itemId);\n return (\n <NationalAverageCard\n key={item.itemId}\n data={item}\n color={selectedItem?.color}\n labels={labels}\n />\n );\n })}\n </div>\n );\n}\n","import { KnowledgeAreasContent } from './KnowledgeAreasContent';\nimport { CurricularComponentsContent } from './CurricularComponentsContent';\nimport { CompetenciesContent } from './CompetenciesContent';\nimport { NationalAveragesContent } from './NationalAveragesContent';\nimport {\n ComparatorTabValue,\n type ComparatorTabType,\n type ComparatorData,\n type ComparisonItem,\n type ComparatorLabels,\n} from '../../types/comparator';\n\nexport interface ComparatorTabContentProps {\n readonly activeTab: ComparatorTabType;\n readonly data: ComparatorData;\n readonly selectedItems: ComparisonItem[];\n readonly labels?: Partial<ComparatorLabels>;\n}\n\nexport function ComparatorTabContent({\n activeTab,\n data,\n selectedItems,\n labels,\n}: ComparatorTabContentProps) {\n switch (activeTab) {\n case ComparatorTabValue.KNOWLEDGE_AREAS:\n return (\n <KnowledgeAreasContent\n data={data.knowledgeAreas}\n items={selectedItems}\n title={labels?.knowledgeAreasTitle}\n />\n );\n case ComparatorTabValue.CURRICULAR_COMPONENTS:\n return (\n <CurricularComponentsContent\n data={data.curricularComponents}\n items={selectedItems}\n title={labels?.curricularComponentsTitle}\n />\n );\n case ComparatorTabValue.COMPETENCIES:\n return (\n <CompetenciesContent\n data={data.competencies}\n items={selectedItems}\n title={labels?.competenciesTitle}\n />\n );\n case ComparatorTabValue.NATIONAL_AVERAGES:\n return (\n <NationalAveragesContent\n data={data.nationalAverages}\n items={selectedItems}\n title={labels?.nationalAveragesTitle}\n labels={labels}\n />\n );\n default:\n return null;\n }\n}\n"]}
@@ -23,7 +23,7 @@ import {
23
23
  isClassesData,
24
24
  isMunicipalitiesData,
25
25
  isStudentsData
26
- } from "./chunk-TEW33GLR.mjs";
26
+ } from "./chunk-BXN3VO6I.mjs";
27
27
  import {
28
28
  useModulesStore
29
29
  } from "./chunk-IJXNISWM.mjs";
@@ -109,7 +109,7 @@ import {
109
109
  } from "./chunk-RV6HA5CB.mjs";
110
110
  import {
111
111
  ReportDetailModal_default
112
- } from "./chunk-QVB54LBS.mjs";
112
+ } from "./chunk-RNZGX6MX.mjs";
113
113
  import {
114
114
  createUseActivitiesHistory,
115
115
  getClassOptionsFromUserData,
@@ -213,13 +213,13 @@ import {
213
213
  } from "./chunk-E5KQ4LYQ.mjs";
214
214
  import {
215
215
  VideoPlayer_default
216
- } from "./chunk-5WS6IENQ.mjs";
216
+ } from "./chunk-AU2HLQDJ.mjs";
217
217
  import {
218
218
  DownloadButton_default
219
- } from "./chunk-OSA3YVDZ.mjs";
219
+ } from "./chunk-ZF46DCAC.mjs";
220
220
  import {
221
221
  Whiteboard_default
222
- } from "./chunk-MES2BP4T.mjs";
222
+ } from "./chunk-SGL5IUCV.mjs";
223
223
  import {
224
224
  PerformanceDistributionChart
225
225
  } from "./chunk-ANKVQHNP.mjs";
@@ -235,11 +235,11 @@ import {
235
235
  import {
236
236
  CorrectActivityModal_default,
237
237
  renderFromMap
238
- } from "./chunk-DWGDEUEW.mjs";
238
+ } from "./chunk-KG563P7F.mjs";
239
239
  import {
240
240
  SimulationsDetailModal,
241
241
  convertApiResponseToCorrectionData
242
- } from "./chunk-5BUTINIM.mjs";
242
+ } from "./chunk-HLVLSWKD.mjs";
243
243
  import {
244
244
  createUseSimulations
245
245
  } from "./chunk-MHRJKJBN.mjs";
@@ -258,7 +258,7 @@ import {
258
258
  } from "./chunk-ISA7EZU4.mjs";
259
259
  import {
260
260
  MultipleChoiceList
261
- } from "./chunk-P6ACVNQK.mjs";
261
+ } from "./chunk-YD2XBEKO.mjs";
262
262
  import {
263
263
  HtmlMathRenderer_default,
264
264
  stripHtml
@@ -329,7 +329,7 @@ import {
329
329
  } from "./chunk-4WPEHJCN.mjs";
330
330
  import {
331
331
  Search_default
332
- } from "./chunk-JCA76TCX.mjs";
332
+ } from "./chunk-SZKLJOTN.mjs";
333
333
  import {
334
334
  ProgressBar_default
335
335
  } from "./chunk-YUX6DM2Z.mjs";
@@ -359,7 +359,7 @@ import {
359
359
  } from "./chunk-N26PFH64.mjs";
360
360
  import {
361
361
  CheckBox_default
362
- } from "./chunk-VDUO65VK.mjs";
362
+ } from "./chunk-3EGJJDIM.mjs";
363
363
  import {
364
364
  Chips_default
365
365
  } from "./chunk-TVFP3HZX.mjs";
@@ -371,13 +371,13 @@ import {
371
371
  DropdownMenuItem,
372
372
  DropdownMenuTrigger,
373
373
  DropdownMenu_default
374
- } from "./chunk-HCQJR5CE.mjs";
374
+ } from "./chunk-7ZWEBNFB.mjs";
375
375
  import {
376
376
  SelectionButton_default
377
377
  } from "./chunk-W46HZ2AP.mjs";
378
378
  import {
379
379
  Modal_default
380
- } from "./chunk-XZUMD3CB.mjs";
380
+ } from "./chunk-LODDYDTP.mjs";
381
381
  import {
382
382
  readingFluencyFallbackPortrait
383
383
  } from "./chunk-624IUGB4.mjs";
@@ -23469,4 +23469,4 @@ export {
23469
23469
  ExamDetailsPage,
23470
23470
  ExamDetailsPage_default
23471
23471
  };
23472
- //# sourceMappingURL=chunk-HBZHWSMZ.mjs.map
23472
+ //# sourceMappingURL=chunk-D46PJSQ7.mjs.map
@@ -6,7 +6,7 @@ var _chunk5DY2JMMJjs = require('./chunk-5DY2JMMJ.js');
6
6
  var _chunkK74NP7Q7js = require('./chunk-K74NP7Q7.js');
7
7
 
8
8
 
9
- var _chunkZRIYCU2Vjs = require('./chunk-ZRIYCU2V.js');
9
+ var _chunkS2BZPPAIjs = require('./chunk-S2BZPPAI.js');
10
10
 
11
11
 
12
12
 
@@ -1065,7 +1065,7 @@ function SimulatedStudentDetailsModal({
1065
1065
  ] });
1066
1066
  };
1067
1067
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1068
- _chunkZRIYCU2Vjs.ReportDetailModal_default,
1068
+ _chunkS2BZPPAIjs.ReportDetailModal_default,
1069
1069
  {
1070
1070
  isOpen,
1071
1071
  onClose,
@@ -2010,4 +2010,4 @@ function useSimulatedPerformance({
2010
2010
 
2011
2011
 
2012
2012
  exports.GeneralOverviewSection = GeneralOverviewSection; exports.useGeneralOverview = useGeneralOverview; exports.ESSAY_AREA_ID = ESSAY_AREA_ID; exports.AreaKnowledgeSelector = AreaKnowledgeSelector; exports.SIMULATED_PERFORMANCE_TAG_CONFIG = SIMULATED_PERFORMANCE_TAG_CONFIG; exports.PerformanceBadgeAction = PerformanceBadgeAction; exports.PERFORMANCE_TAG_TO_BADGE_ACTION = PERFORMANCE_TAG_TO_BADGE_ACTION; exports.ReportSimulationType = ReportSimulationType; exports.isStudentSubjectsData = isStudentSubjectsData; exports.isStudentContentsData = isStudentContentsData; exports.simulationTypeToActivityFilters = simulationTypeToActivityFilters; exports.useSimulatedStudentDetails = useSimulatedStudentDetails; exports.SimulatedStudentDetailsModal = SimulatedStudentDetailsModal; exports.useSimulatedContents = useSimulatedContents; exports.isStudentsData = isStudentsData; exports.isClassesData = isClassesData; exports.isMunicipalitiesData = isMunicipalitiesData; exports.useSimulatedOverview = useSimulatedOverview; exports.useAggregatedOverview = useAggregatedOverview; exports.getAggregationTypeByProfile = getAggregationTypeByProfile; exports.shouldUseAggregatedOverview = shouldUseAggregatedOverview; exports.SimulatedViewTab = SimulatedViewTab; exports.useSimulatedPerformance = useSimulatedPerformance;
2013
- //# sourceMappingURL=chunk-ARYIJ4RU.js.map
2013
+ //# sourceMappingURL=chunk-DDORKDQO.js.map