@magmamath/students-features 1.3.26-rc.3 → 1.3.26-rc.4

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 (336) hide show
  1. package/dist/commonjs/features/fluency/components/Fluency.js +15 -32
  2. package/dist/commonjs/features/fluency/components/Fluency.js.map +1 -1
  3. package/dist/commonjs/features/fluency/components/FluencySolving.js +29 -9
  4. package/dist/commonjs/features/fluency/components/FluencySolving.js.map +1 -1
  5. package/dist/commonjs/features/fluency/components/day-streak-counter/DayStreak.js +17 -18
  6. package/dist/commonjs/features/fluency/components/day-streak-counter/DayStreak.js.map +1 -1
  7. package/dist/commonjs/features/fluency/components/day-streak-counter/DayStreakCounter.js +26 -24
  8. package/dist/commonjs/features/fluency/components/day-streak-counter/DayStreakCounter.js.map +1 -1
  9. package/dist/commonjs/features/fluency/components/fluency-solving/{EquationContent.js → components/EquationContent.js} +5 -5
  10. package/dist/commonjs/features/fluency/components/fluency-solving/components/EquationContent.js.map +1 -0
  11. package/dist/commonjs/features/fluency/components/fluency-solving/{FluencyEquationCard.js → components/FluencyEquationCard.js} +16 -8
  12. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.js.map +1 -0
  13. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyNumpad.js +62 -0
  14. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyNumpad.js.map +1 -0
  15. package/dist/commonjs/features/fluency/components/fluency-solving/{FluencySolvingCard.js → components/FluencySolvingCard.js} +40 -22
  16. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.js.map +1 -0
  17. package/dist/commonjs/features/fluency/components/fluency-solving/{FluencySolvingHeader.js → components/FluencySolvingHeader.js} +6 -8
  18. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingHeader.js.map +1 -0
  19. package/dist/commonjs/features/fluency/components/fluency-solving/{FluencySolvingProgress.js → components/FluencySolvingProgress.js} +32 -4
  20. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingProgress.js.map +1 -0
  21. package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.constants.js +29 -0
  22. package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.constants.js.map +1 -0
  23. package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.helpers.js +58 -0
  24. package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.helpers.js.map +1 -0
  25. package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.js +2 -0
  26. package/dist/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.js.map +1 -0
  27. package/dist/commonjs/features/fluency/components/matrix/FluencyMatrix.js +2 -2
  28. package/dist/commonjs/features/fluency/components/matrix/FluencyMatrix.js.map +1 -1
  29. package/dist/commonjs/features/fluency/components/matrix/components/MatrixCell.js +41 -12
  30. package/dist/commonjs/features/fluency/components/matrix/components/MatrixCell.js.map +1 -1
  31. package/dist/commonjs/features/fluency/components/matrix/components/MatrixFill.js +16 -26
  32. package/dist/commonjs/features/fluency/components/matrix/components/MatrixFill.js.map +1 -1
  33. package/dist/commonjs/features/fluency/components/matrix/components/MatrixLegend.js +4 -8
  34. package/dist/commonjs/features/fluency/components/matrix/components/MatrixLegend.js.map +1 -1
  35. package/dist/commonjs/features/fluency/components/mobile-menu/MobileMenu.js +38 -0
  36. package/dist/commonjs/features/fluency/components/mobile-menu/MobileMenu.js.map +1 -0
  37. package/dist/commonjs/features/fluency/components/select-math-operator/SelectMathOperator.js +6 -3
  38. package/dist/commonjs/features/fluency/components/select-math-operator/SelectMathOperator.js.map +1 -1
  39. package/dist/commonjs/features/fluency/components/session-results/FluencySessionResults.js +178 -0
  40. package/dist/commonjs/features/fluency/components/session-results/FluencySessionResults.js.map +1 -0
  41. package/dist/commonjs/features/fluency/components/session-results/SessionStatCard.js +99 -0
  42. package/dist/commonjs/features/fluency/components/session-results/SessionStatCard.js.map +1 -0
  43. package/dist/commonjs/features/fluency/components/session-results/SkillProgressionRow.js +113 -0
  44. package/dist/commonjs/features/fluency/components/session-results/SkillProgressionRow.js.map +1 -0
  45. package/dist/commonjs/features/fluency/fluency.constants.js +14 -6
  46. package/dist/commonjs/features/fluency/fluency.constants.js.map +1 -1
  47. package/dist/commonjs/features/fluency/fluency.helpers.js +53 -25
  48. package/dist/commonjs/features/fluency/fluency.helpers.js.map +1 -1
  49. package/dist/commonjs/features/fluency/hooks/useFluencyModePreset.js +16 -7
  50. package/dist/commonjs/features/fluency/hooks/useFluencyModePreset.js.map +1 -1
  51. package/dist/commonjs/features/fluency/{components/fluency-solving/FluencyNumpad.js → hooks/useFluencyNumpad.js} +58 -82
  52. package/dist/commonjs/features/fluency/hooks/useFluencyNumpad.js.map +1 -0
  53. package/dist/commonjs/features/fluency/hooks/useSuccessSound.js +0 -2
  54. package/dist/commonjs/features/fluency/hooks/useSuccessSound.js.map +1 -1
  55. package/dist/commonjs/features/fluency/model/FluencyApiModel.js +6 -1
  56. package/dist/commonjs/features/fluency/model/FluencyApiModel.js.map +1 -1
  57. package/dist/commonjs/features/fluency/model/FluencyDaysStreakModel.js +8 -1
  58. package/dist/commonjs/features/fluency/model/FluencyDaysStreakModel.js.map +1 -1
  59. package/dist/commonjs/features/fluency/model/FluencyMatrixModel.js +16 -1
  60. package/dist/commonjs/features/fluency/model/FluencyMatrixModel.js.map +1 -1
  61. package/dist/commonjs/features/fluency/model/FluencyModel.js +12 -28
  62. package/dist/commonjs/features/fluency/model/FluencyModel.js.map +1 -1
  63. package/dist/commonjs/features/fluency/model/FluencySolvingModel.js +57 -5
  64. package/dist/commonjs/features/fluency/model/FluencySolvingModel.js.map +1 -1
  65. package/dist/commonjs/lib/constants.js +1 -0
  66. package/dist/commonjs/lib/constants.js.map +1 -1
  67. package/dist/module/features/fluency/components/Fluency.js +17 -34
  68. package/dist/module/features/fluency/components/Fluency.js.map +1 -1
  69. package/dist/module/features/fluency/components/FluencySolving.js +29 -9
  70. package/dist/module/features/fluency/components/FluencySolving.js.map +1 -1
  71. package/dist/module/features/fluency/components/day-streak-counter/DayStreak.js +17 -18
  72. package/dist/module/features/fluency/components/day-streak-counter/DayStreak.js.map +1 -1
  73. package/dist/module/features/fluency/components/day-streak-counter/DayStreakCounter.js +26 -24
  74. package/dist/module/features/fluency/components/day-streak-counter/DayStreakCounter.js.map +1 -1
  75. package/dist/module/features/fluency/components/fluency-solving/{EquationContent.js → components/EquationContent.js} +5 -5
  76. package/dist/module/features/fluency/components/fluency-solving/components/EquationContent.js.map +1 -0
  77. package/dist/module/features/fluency/components/fluency-solving/{FluencyEquationCard.js → components/FluencyEquationCard.js} +16 -8
  78. package/dist/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.js.map +1 -0
  79. package/dist/module/features/fluency/components/fluency-solving/components/FluencyNumpad.js +56 -0
  80. package/dist/module/features/fluency/components/fluency-solving/components/FluencyNumpad.js.map +1 -0
  81. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js +84 -0
  82. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js.map +1 -0
  83. package/dist/module/features/fluency/components/fluency-solving/{FluencySolvingHeader.js → components/FluencySolvingHeader.js} +6 -8
  84. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingHeader.js.map +1 -0
  85. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingProgress.js +69 -0
  86. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingProgress.js.map +1 -0
  87. package/dist/module/features/fluency/components/fluency-solving/fluencySolving.constants.js +25 -0
  88. package/dist/module/features/fluency/components/fluency-solving/fluencySolving.constants.js.map +1 -0
  89. package/dist/module/features/fluency/components/fluency-solving/fluencySolving.helpers.js +52 -0
  90. package/dist/module/features/fluency/components/fluency-solving/fluencySolving.helpers.js.map +1 -0
  91. package/dist/module/features/fluency/components/fluency-solving/fluencySolving.types.js +2 -0
  92. package/dist/module/features/fluency/components/fluency-solving/fluencySolving.types.js.map +1 -0
  93. package/dist/module/features/fluency/components/matrix/FluencyMatrix.js +2 -2
  94. package/dist/module/features/fluency/components/matrix/FluencyMatrix.js.map +1 -1
  95. package/dist/module/features/fluency/components/matrix/components/MatrixCell.js +44 -15
  96. package/dist/module/features/fluency/components/matrix/components/MatrixCell.js.map +1 -1
  97. package/dist/module/features/fluency/components/matrix/components/MatrixFill.js +16 -26
  98. package/dist/module/features/fluency/components/matrix/components/MatrixFill.js.map +1 -1
  99. package/dist/module/features/fluency/components/matrix/components/MatrixLegend.js +4 -8
  100. package/dist/module/features/fluency/components/matrix/components/MatrixLegend.js.map +1 -1
  101. package/dist/module/features/fluency/components/mobile-menu/MobileMenu.js +32 -0
  102. package/dist/module/features/fluency/components/mobile-menu/MobileMenu.js.map +1 -0
  103. package/dist/module/features/fluency/components/select-math-operator/SelectMathOperator.js +6 -3
  104. package/dist/module/features/fluency/components/select-math-operator/SelectMathOperator.js.map +1 -1
  105. package/dist/module/features/fluency/components/session-results/FluencySessionResults.js +172 -0
  106. package/dist/module/features/fluency/components/session-results/FluencySessionResults.js.map +1 -0
  107. package/dist/module/features/fluency/components/session-results/SessionStatCard.js +93 -0
  108. package/dist/module/features/fluency/components/session-results/SessionStatCard.js.map +1 -0
  109. package/dist/module/features/fluency/components/session-results/SkillProgressionRow.js +107 -0
  110. package/dist/module/features/fluency/components/session-results/SkillProgressionRow.js.map +1 -0
  111. package/dist/module/features/fluency/fluency.constants.js +13 -5
  112. package/dist/module/features/fluency/fluency.constants.js.map +1 -1
  113. package/dist/module/features/fluency/fluency.helpers.js +51 -21
  114. package/dist/module/features/fluency/fluency.helpers.js.map +1 -1
  115. package/dist/module/features/fluency/hooks/useFluencyModePreset.js +16 -7
  116. package/dist/module/features/fluency/hooks/useFluencyModePreset.js.map +1 -1
  117. package/dist/module/features/fluency/{components/fluency-solving/FluencyNumpad.js → hooks/useFluencyNumpad.js} +58 -82
  118. package/dist/module/features/fluency/hooks/useFluencyNumpad.js.map +1 -0
  119. package/dist/module/features/fluency/hooks/useSuccessSound.js +0 -1
  120. package/dist/module/features/fluency/hooks/useSuccessSound.js.map +1 -1
  121. package/dist/module/features/fluency/model/FluencyApiModel.js +6 -1
  122. package/dist/module/features/fluency/model/FluencyApiModel.js.map +1 -1
  123. package/dist/module/features/fluency/model/FluencyDaysStreakModel.js +8 -1
  124. package/dist/module/features/fluency/model/FluencyDaysStreakModel.js.map +1 -1
  125. package/dist/module/features/fluency/model/FluencyMatrixModel.js +16 -1
  126. package/dist/module/features/fluency/model/FluencyMatrixModel.js.map +1 -1
  127. package/dist/module/features/fluency/model/FluencyModel.js +13 -29
  128. package/dist/module/features/fluency/model/FluencyModel.js.map +1 -1
  129. package/dist/module/features/fluency/model/FluencySolvingModel.js +58 -6
  130. package/dist/module/features/fluency/model/FluencySolvingModel.js.map +1 -1
  131. package/dist/module/lib/constants.js +1 -0
  132. package/dist/module/lib/constants.js.map +1 -1
  133. package/dist/typescript/commonjs/features/fluency/components/Fluency.d.ts +2 -1
  134. package/dist/typescript/commonjs/features/fluency/components/Fluency.d.ts.map +1 -1
  135. package/dist/typescript/commonjs/features/fluency/components/FluencySolving.d.ts +2 -1
  136. package/dist/typescript/commonjs/features/fluency/components/FluencySolving.d.ts.map +1 -1
  137. package/dist/typescript/commonjs/features/fluency/components/day-streak-counter/DayStreak.d.ts +5 -3
  138. package/dist/typescript/commonjs/features/fluency/components/day-streak-counter/DayStreak.d.ts.map +1 -1
  139. package/dist/typescript/commonjs/features/fluency/components/day-streak-counter/DayStreakCounter.d.ts.map +1 -1
  140. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/EquationContent.d.ts.map +1 -0
  141. package/dist/typescript/{module/features/fluency/components/fluency-solving → commonjs/features/fluency/components/fluency-solving/components}/FluencyEquationCard.d.ts +1 -1
  142. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts.map +1 -0
  143. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyNumpad.d.ts.map +1 -0
  144. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.d.ts.map +1 -0
  145. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingHeader.d.ts.map +1 -0
  146. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingProgress.d.ts +10 -0
  147. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingProgress.d.ts.map +1 -0
  148. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.constants.d.ts +5 -0
  149. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.constants.d.ts.map +1 -0
  150. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.helpers.d.ts +15 -0
  151. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.helpers.d.ts.map +1 -0
  152. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.d.ts +20 -0
  153. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.d.ts.map +1 -0
  154. package/dist/typescript/commonjs/features/fluency/components/matrix/FluencyMatrix.d.ts.map +1 -1
  155. package/dist/typescript/commonjs/features/fluency/components/matrix/components/MatrixCell.d.ts +5 -7
  156. package/dist/typescript/commonjs/features/fluency/components/matrix/components/MatrixCell.d.ts.map +1 -1
  157. package/dist/typescript/commonjs/features/fluency/components/matrix/components/MatrixFill.d.ts +1 -1
  158. package/dist/typescript/commonjs/features/fluency/components/matrix/components/MatrixFill.d.ts.map +1 -1
  159. package/dist/typescript/commonjs/features/fluency/components/mobile-menu/MobileMenu.d.ts +7 -0
  160. package/dist/typescript/commonjs/features/fluency/components/mobile-menu/MobileMenu.d.ts.map +1 -0
  161. package/dist/typescript/commonjs/features/fluency/components/select-math-operator/SelectMathOperator.d.ts.map +1 -1
  162. package/dist/typescript/commonjs/features/fluency/components/session-results/FluencySessionResults.d.ts +11 -0
  163. package/dist/typescript/commonjs/features/fluency/components/session-results/FluencySessionResults.d.ts.map +1 -0
  164. package/dist/typescript/commonjs/features/fluency/components/session-results/SessionStatCard.d.ts +9 -0
  165. package/dist/typescript/commonjs/features/fluency/components/session-results/SessionStatCard.d.ts.map +1 -0
  166. package/dist/typescript/commonjs/features/fluency/components/session-results/SkillProgressionRow.d.ts +15 -0
  167. package/dist/typescript/commonjs/features/fluency/components/session-results/SkillProgressionRow.d.ts.map +1 -0
  168. package/dist/typescript/commonjs/features/fluency/fluency.constants.d.ts +12 -5
  169. package/dist/typescript/commonjs/features/fluency/fluency.constants.d.ts.map +1 -1
  170. package/dist/typescript/commonjs/features/fluency/fluency.helpers.d.ts +3 -5
  171. package/dist/typescript/commonjs/features/fluency/fluency.helpers.d.ts.map +1 -1
  172. package/dist/typescript/commonjs/features/fluency/fluency.types.d.ts +58 -8
  173. package/dist/typescript/commonjs/features/fluency/fluency.types.d.ts.map +1 -1
  174. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyModePreset.d.ts +22 -3
  175. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyModePreset.d.ts.map +1 -1
  176. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyNumpad.d.ts +53 -0
  177. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyNumpad.d.ts.map +1 -0
  178. package/dist/typescript/commonjs/features/fluency/hooks/useSuccessSound.d.ts.map +1 -1
  179. package/dist/typescript/commonjs/features/fluency/model/FluencyApiModel.d.ts +6 -3
  180. package/dist/typescript/commonjs/features/fluency/model/FluencyApiModel.d.ts.map +1 -1
  181. package/dist/typescript/commonjs/features/fluency/model/FluencyDaysStreakModel.d.ts +5 -0
  182. package/dist/typescript/commonjs/features/fluency/model/FluencyDaysStreakModel.d.ts.map +1 -1
  183. package/dist/typescript/commonjs/features/fluency/model/FluencyMatrixModel.d.ts +9 -0
  184. package/dist/typescript/commonjs/features/fluency/model/FluencyMatrixModel.d.ts.map +1 -1
  185. package/dist/typescript/commonjs/features/fluency/model/FluencyModel.d.ts +3 -15
  186. package/dist/typescript/commonjs/features/fluency/model/FluencyModel.d.ts.map +1 -1
  187. package/dist/typescript/commonjs/features/fluency/model/FluencySolvingModel.d.ts +20 -7
  188. package/dist/typescript/commonjs/features/fluency/model/FluencySolvingModel.d.ts.map +1 -1
  189. package/dist/typescript/commonjs/lib/constants.d.ts +2 -1
  190. package/dist/typescript/commonjs/lib/constants.d.ts.map +1 -1
  191. package/dist/typescript/module/features/fluency/components/Fluency.d.ts +2 -1
  192. package/dist/typescript/module/features/fluency/components/Fluency.d.ts.map +1 -1
  193. package/dist/typescript/module/features/fluency/components/FluencySolving.d.ts +2 -1
  194. package/dist/typescript/module/features/fluency/components/FluencySolving.d.ts.map +1 -1
  195. package/dist/typescript/module/features/fluency/components/day-streak-counter/DayStreak.d.ts +5 -3
  196. package/dist/typescript/module/features/fluency/components/day-streak-counter/DayStreak.d.ts.map +1 -1
  197. package/dist/typescript/module/features/fluency/components/day-streak-counter/DayStreakCounter.d.ts.map +1 -1
  198. package/dist/typescript/module/features/fluency/components/fluency-solving/components/EquationContent.d.ts.map +1 -0
  199. package/dist/typescript/{commonjs/features/fluency/components/fluency-solving → module/features/fluency/components/fluency-solving/components}/FluencyEquationCard.d.ts +1 -1
  200. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts.map +1 -0
  201. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyNumpad.d.ts.map +1 -0
  202. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.d.ts.map +1 -0
  203. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingHeader.d.ts.map +1 -0
  204. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingProgress.d.ts +10 -0
  205. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingProgress.d.ts.map +1 -0
  206. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.constants.d.ts +5 -0
  207. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.constants.d.ts.map +1 -0
  208. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.helpers.d.ts +15 -0
  209. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.helpers.d.ts.map +1 -0
  210. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.types.d.ts +20 -0
  211. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.types.d.ts.map +1 -0
  212. package/dist/typescript/module/features/fluency/components/matrix/FluencyMatrix.d.ts.map +1 -1
  213. package/dist/typescript/module/features/fluency/components/matrix/components/MatrixCell.d.ts +5 -7
  214. package/dist/typescript/module/features/fluency/components/matrix/components/MatrixCell.d.ts.map +1 -1
  215. package/dist/typescript/module/features/fluency/components/matrix/components/MatrixFill.d.ts +1 -1
  216. package/dist/typescript/module/features/fluency/components/matrix/components/MatrixFill.d.ts.map +1 -1
  217. package/dist/typescript/module/features/fluency/components/mobile-menu/MobileMenu.d.ts +7 -0
  218. package/dist/typescript/module/features/fluency/components/mobile-menu/MobileMenu.d.ts.map +1 -0
  219. package/dist/typescript/module/features/fluency/components/select-math-operator/SelectMathOperator.d.ts.map +1 -1
  220. package/dist/typescript/module/features/fluency/components/session-results/FluencySessionResults.d.ts +11 -0
  221. package/dist/typescript/module/features/fluency/components/session-results/FluencySessionResults.d.ts.map +1 -0
  222. package/dist/typescript/module/features/fluency/components/session-results/SessionStatCard.d.ts +9 -0
  223. package/dist/typescript/module/features/fluency/components/session-results/SessionStatCard.d.ts.map +1 -0
  224. package/dist/typescript/module/features/fluency/components/session-results/SkillProgressionRow.d.ts +15 -0
  225. package/dist/typescript/module/features/fluency/components/session-results/SkillProgressionRow.d.ts.map +1 -0
  226. package/dist/typescript/module/features/fluency/fluency.constants.d.ts +12 -5
  227. package/dist/typescript/module/features/fluency/fluency.constants.d.ts.map +1 -1
  228. package/dist/typescript/module/features/fluency/fluency.helpers.d.ts +3 -5
  229. package/dist/typescript/module/features/fluency/fluency.helpers.d.ts.map +1 -1
  230. package/dist/typescript/module/features/fluency/fluency.types.d.ts +58 -8
  231. package/dist/typescript/module/features/fluency/fluency.types.d.ts.map +1 -1
  232. package/dist/typescript/module/features/fluency/hooks/useFluencyModePreset.d.ts +22 -3
  233. package/dist/typescript/module/features/fluency/hooks/useFluencyModePreset.d.ts.map +1 -1
  234. package/dist/typescript/module/features/fluency/hooks/useFluencyNumpad.d.ts +53 -0
  235. package/dist/typescript/module/features/fluency/hooks/useFluencyNumpad.d.ts.map +1 -0
  236. package/dist/typescript/module/features/fluency/hooks/useSuccessSound.d.ts.map +1 -1
  237. package/dist/typescript/module/features/fluency/model/FluencyApiModel.d.ts +6 -3
  238. package/dist/typescript/module/features/fluency/model/FluencyApiModel.d.ts.map +1 -1
  239. package/dist/typescript/module/features/fluency/model/FluencyDaysStreakModel.d.ts +5 -0
  240. package/dist/typescript/module/features/fluency/model/FluencyDaysStreakModel.d.ts.map +1 -1
  241. package/dist/typescript/module/features/fluency/model/FluencyMatrixModel.d.ts +9 -0
  242. package/dist/typescript/module/features/fluency/model/FluencyMatrixModel.d.ts.map +1 -1
  243. package/dist/typescript/module/features/fluency/model/FluencyModel.d.ts +3 -15
  244. package/dist/typescript/module/features/fluency/model/FluencyModel.d.ts.map +1 -1
  245. package/dist/typescript/module/features/fluency/model/FluencySolvingModel.d.ts +20 -7
  246. package/dist/typescript/module/features/fluency/model/FluencySolvingModel.d.ts.map +1 -1
  247. package/dist/typescript/module/lib/constants.d.ts +2 -1
  248. package/dist/typescript/module/lib/constants.d.ts.map +1 -1
  249. package/package.json +1 -1
  250. package/src/features/fluency/components/Fluency.tsx +17 -41
  251. package/src/features/fluency/components/FluencySolving.tsx +30 -5
  252. package/src/features/fluency/components/day-streak-counter/DayStreak.tsx +24 -20
  253. package/src/features/fluency/components/day-streak-counter/DayStreakCounter.tsx +41 -28
  254. package/src/features/fluency/components/fluency-solving/{EquationContent.tsx → components/EquationContent.tsx} +5 -5
  255. package/src/features/fluency/components/fluency-solving/{FluencyEquationCard.tsx → components/FluencyEquationCard.tsx} +12 -6
  256. package/src/features/fluency/components/fluency-solving/components/FluencyNumpad.tsx +54 -0
  257. package/src/features/fluency/components/fluency-solving/components/FluencySolvingCard.tsx +84 -0
  258. package/src/features/fluency/components/fluency-solving/{FluencySolvingHeader.tsx → components/FluencySolvingHeader.tsx} +6 -8
  259. package/src/features/fluency/components/fluency-solving/components/FluencySolvingProgress.tsx +68 -0
  260. package/src/features/fluency/components/fluency-solving/fluencySolving.constants.ts +25 -0
  261. package/src/features/fluency/components/fluency-solving/fluencySolving.helpers.ts +78 -0
  262. package/src/features/fluency/components/fluency-solving/fluencySolving.types.ts +21 -0
  263. package/src/features/fluency/components/matrix/FluencyMatrix.tsx +3 -2
  264. package/src/features/fluency/components/matrix/components/MatrixCell.tsx +46 -23
  265. package/src/features/fluency/components/matrix/components/MatrixFill.tsx +14 -24
  266. package/src/features/fluency/components/matrix/components/MatrixLegend.tsx +4 -4
  267. package/src/features/fluency/components/mobile-menu/MobileMenu.tsx +29 -0
  268. package/src/features/fluency/components/select-math-operator/SelectMathOperator.tsx +7 -3
  269. package/src/features/fluency/components/session-results/FluencySessionResults.tsx +204 -0
  270. package/src/features/fluency/components/session-results/SessionStatCard.tsx +100 -0
  271. package/src/features/fluency/components/session-results/SkillProgressionRow.tsx +100 -0
  272. package/src/features/fluency/fluency.constants.ts +13 -5
  273. package/src/features/fluency/fluency.helpers.ts +46 -27
  274. package/src/features/fluency/fluency.types.ts +70 -8
  275. package/src/features/fluency/hooks/useFluencyModePreset.ts +30 -20
  276. package/src/features/fluency/{components/fluency-solving/FluencyNumpad.tsx → hooks/useFluencyNumpad.tsx} +68 -94
  277. package/src/features/fluency/hooks/useSuccessSound.ts +0 -1
  278. package/src/features/fluency/model/FluencyApiModel.ts +18 -2
  279. package/src/features/fluency/model/FluencyDaysStreakModel.ts +11 -1
  280. package/src/features/fluency/model/FluencyMatrixModel.ts +20 -1
  281. package/src/features/fluency/model/FluencyModel.ts +15 -30
  282. package/src/features/fluency/model/FluencySolvingModel.ts +70 -8
  283. package/src/lib/constants.ts +3 -2
  284. package/src/types/types.d.ts +5 -0
  285. package/dist/commonjs/features/fluency/components/fluency-solving/EquationContent.js.map +0 -1
  286. package/dist/commonjs/features/fluency/components/fluency-solving/FluencyEquationCard.js.map +0 -1
  287. package/dist/commonjs/features/fluency/components/fluency-solving/FluencyNumpad.js.map +0 -1
  288. package/dist/commonjs/features/fluency/components/fluency-solving/FluencySolvingCard.js.map +0 -1
  289. package/dist/commonjs/features/fluency/components/fluency-solving/FluencySolvingHeader.js.map +0 -1
  290. package/dist/commonjs/features/fluency/components/fluency-solving/FluencySolvingProgress.js.map +0 -1
  291. package/dist/commonjs/features/fluency/model/FluencyInputModel.js +0 -20
  292. package/dist/commonjs/features/fluency/model/FluencyInputModel.js.map +0 -1
  293. package/dist/module/features/fluency/components/fluency-solving/EquationContent.js.map +0 -1
  294. package/dist/module/features/fluency/components/fluency-solving/FluencyEquationCard.js.map +0 -1
  295. package/dist/module/features/fluency/components/fluency-solving/FluencyNumpad.js.map +0 -1
  296. package/dist/module/features/fluency/components/fluency-solving/FluencySolvingCard.js +0 -66
  297. package/dist/module/features/fluency/components/fluency-solving/FluencySolvingCard.js.map +0 -1
  298. package/dist/module/features/fluency/components/fluency-solving/FluencySolvingHeader.js.map +0 -1
  299. package/dist/module/features/fluency/components/fluency-solving/FluencySolvingProgress.js +0 -41
  300. package/dist/module/features/fluency/components/fluency-solving/FluencySolvingProgress.js.map +0 -1
  301. package/dist/module/features/fluency/model/FluencyInputModel.js +0 -15
  302. package/dist/module/features/fluency/model/FluencyInputModel.js.map +0 -1
  303. package/dist/typescript/commonjs/features/fluency/__tests__/FluencyModel.test.d.ts +0 -2
  304. package/dist/typescript/commonjs/features/fluency/__tests__/FluencyModel.test.d.ts.map +0 -1
  305. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/EquationContent.d.ts.map +0 -1
  306. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencyEquationCard.d.ts.map +0 -1
  307. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencyNumpad.d.ts.map +0 -1
  308. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencySolvingCard.d.ts.map +0 -1
  309. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencySolvingHeader.d.ts.map +0 -1
  310. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencySolvingProgress.d.ts +0 -8
  311. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/FluencySolvingProgress.d.ts.map +0 -1
  312. package/dist/typescript/commonjs/features/fluency/model/FluencyInputModel.d.ts +0 -11
  313. package/dist/typescript/commonjs/features/fluency/model/FluencyInputModel.d.ts.map +0 -1
  314. package/dist/typescript/module/features/fluency/__tests__/FluencyModel.test.d.ts +0 -2
  315. package/dist/typescript/module/features/fluency/__tests__/FluencyModel.test.d.ts.map +0 -1
  316. package/dist/typescript/module/features/fluency/components/fluency-solving/EquationContent.d.ts.map +0 -1
  317. package/dist/typescript/module/features/fluency/components/fluency-solving/FluencyEquationCard.d.ts.map +0 -1
  318. package/dist/typescript/module/features/fluency/components/fluency-solving/FluencyNumpad.d.ts.map +0 -1
  319. package/dist/typescript/module/features/fluency/components/fluency-solving/FluencySolvingCard.d.ts.map +0 -1
  320. package/dist/typescript/module/features/fluency/components/fluency-solving/FluencySolvingHeader.d.ts.map +0 -1
  321. package/dist/typescript/module/features/fluency/components/fluency-solving/FluencySolvingProgress.d.ts +0 -8
  322. package/dist/typescript/module/features/fluency/components/fluency-solving/FluencySolvingProgress.d.ts.map +0 -1
  323. package/dist/typescript/module/features/fluency/model/FluencyInputModel.d.ts +0 -11
  324. package/dist/typescript/module/features/fluency/model/FluencyInputModel.d.ts.map +0 -1
  325. package/src/features/fluency/__tests__/FluencyModel.test.ts +0 -28
  326. package/src/features/fluency/components/fluency-solving/FluencySolvingCard.tsx +0 -59
  327. package/src/features/fluency/components/fluency-solving/FluencySolvingProgress.tsx +0 -40
  328. package/src/features/fluency/model/FluencyInputModel.ts +0 -17
  329. /package/dist/typescript/commonjs/features/fluency/components/fluency-solving/{EquationContent.d.ts → components/EquationContent.d.ts} +0 -0
  330. /package/dist/typescript/commonjs/features/fluency/components/fluency-solving/{FluencyNumpad.d.ts → components/FluencyNumpad.d.ts} +0 -0
  331. /package/dist/typescript/commonjs/features/fluency/components/fluency-solving/{FluencySolvingCard.d.ts → components/FluencySolvingCard.d.ts} +0 -0
  332. /package/dist/typescript/commonjs/features/fluency/components/fluency-solving/{FluencySolvingHeader.d.ts → components/FluencySolvingHeader.d.ts} +0 -0
  333. /package/dist/typescript/module/features/fluency/components/fluency-solving/{EquationContent.d.ts → components/EquationContent.d.ts} +0 -0
  334. /package/dist/typescript/module/features/fluency/components/fluency-solving/{FluencyNumpad.d.ts → components/FluencyNumpad.d.ts} +0 -0
  335. /package/dist/typescript/module/features/fluency/components/fluency-solving/{FluencySolvingCard.d.ts → components/FluencySolvingCard.d.ts} +0 -0
  336. /package/dist/typescript/module/features/fluency/components/fluency-solving/{FluencySolvingHeader.d.ts → components/FluencySolvingHeader.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","StyleSheet","useWindowDimensions","Button","ButtonVariant","SPACING","MenuIcon","isWeb","BURGER_MENU_BREAKPOINT","jsx","_jsx","MobileMenu","onPress","dimensions","isVisible","width","style","styles","container","children","variant","TERTIARY","icon","size","create","marginRight"],"sourceRoot":"../../../../../../src","sources":["features/fluency/components/mobile-menu/MobileMenu.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,EAAEC,mBAAmB,QAAQ,cAAc;AACpE,SAASC,MAAM,EAAEC,aAAa,EAAEC,OAAO,QAAQ,4BAA4B;AAC3E,SAASC,QAAQ,QAAQ,sCAAmC;AAC5D,SAASC,KAAK,QAAQ,wCAAqC;AAC3D,SAASC,sBAAsB,QAAQ,8BAA8B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAMrE,OAAO,MAAMC,UAAU,GAAGA,CAAC;EAAEC;AAAyB,CAAC,KAAK;EAC1D,MAAMC,UAAU,GAAGX,mBAAmB,CAAC,CAAC;EACxC,MAAMY,SAAS,GAAGP,KAAK,IAAIM,UAAU,CAACE,KAAK,IAAIP,sBAAsB;EAErE,IAAI,CAACM,SAAS,EAAE,OAAO,IAAI;EAE3B,oBACEJ,IAAA,CAACV,IAAI;IAACgB,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,eAC5BT,IAAA,CAACP,MAAM;MAACS,OAAO,EAAEA,OAAQ;MAACQ,OAAO,EAAEhB,aAAa,CAACiB,QAAS;MAACC,IAAI,eAAEZ,IAAA,CAACJ,QAAQ;QAACiB,IAAI,EAAE;MAAG,CAAE;IAAE,CAAE;EAAC,CACvF,CAAC;AAEX,CAAC;AAED,MAAMN,MAAM,GAAGhB,UAAU,CAACuB,MAAM,CAAC;EAC/BN,SAAS,EAAE;IACTO,WAAW,EAAEpB,OAAO,CAAC,GAAG;EAC1B;AACF,CAAC,CAAC","ignoreList":[]}
@@ -15,7 +15,8 @@ export const SelectMathOperator = () => {
15
15
  model,
16
16
  onModeSelectPress
17
17
  } = useFluency();
18
- const fluencyMode = useUnit(model.$mode);
18
+ const fluencyMode = useUnit(model.matrix.$mode);
19
+ const matrix = useUnit(model.matrix.$data);
19
20
  return /*#__PURE__*/_jsx(View, {
20
21
  style: styles.container,
21
22
  children: FLUENCY_MODES.map(({
@@ -25,16 +26,17 @@ export const SelectMathOperator = () => {
25
26
  select
26
27
  }, index) => {
27
28
  const isSelectedMode = mode === fluencyMode;
29
+ const progress = (matrix?.operations[mode].completionRate ?? 0) * 100;
28
30
  return /*#__PURE__*/_jsx(MathOperatorRow, {
29
31
  title: t(label),
30
32
  icon: /*#__PURE__*/_jsx(Icon, {
31
33
  color: isSelectedMode ? COLORS.NEUTRAL_1 : undefined
32
34
  }),
33
- progress: 0,
35
+ progress: progress,
34
36
  color: select,
35
37
  selected: isSelectedMode,
36
38
  onSelect: () => {
37
- model.setMode(mode);
39
+ model.matrix.setMode(mode);
38
40
  onModeSelectPress?.(mode);
39
41
  },
40
42
  showDivider: index < FLUENCY_MODES.length - 1
@@ -44,6 +46,7 @@ export const SelectMathOperator = () => {
44
46
  };
45
47
  const styles = StyleSheet.create({
46
48
  container: {
49
+ alignSelf: 'flex-start',
47
50
  width: 270,
48
51
  paddingVertical: SPACING[400],
49
52
  paddingHorizontal: SPACING[200],
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","View","BORDER_RADIUS","COLORS","SHADOWS","SPACING","useUnit","FLUENCY_MODES","MathOperatorRow","useFluency","useText","jsx","_jsx","SelectMathOperator","t","model","onModeSelectPress","fluencyMode","$mode","style","styles","container","children","map","mode","label","icon","Icon","select","index","isSelectedMode","title","color","NEUTRAL_1","undefined","progress","selected","onSelect","setMode","showDivider","length","create","width","paddingVertical","paddingHorizontal","borderRadius","backgroundColor"],"sourceRoot":"../../../../../../src","sources":["features/fluency/components/select-math-operator/SelectMathOperator.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,aAAa,EAAEC,MAAM,EAAEC,OAAO,EAAEC,OAAO,QAAQ,4BAA4B;AACpF,SAASC,OAAO,QAAQ,gBAAgB;AACxC,SAASC,aAAa,QAAQ,4BAAyB;AACvD,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,UAAU,QAAQ,iCAA8B;AACzD,SAASC,OAAO,QAAQ,0BAAuB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAE/C,OAAO,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;EACtC,MAAMC,CAAC,GAAGJ,OAAO,CAAC,CAAC;EACnB,MAAM;IAAEK,KAAK;IAAEC;EAAkB,CAAC,GAAGP,UAAU,CAAC,CAAC;EACjD,MAAMQ,WAAW,GAAGX,OAAO,CAACS,KAAK,CAACG,KAAK,CAAC;EAExC,oBACEN,IAAA,CAACX,IAAI;IAACkB,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,EAC3Bf,aAAa,CAACgB,GAAG,CAAC,CAAC;MAAEC,IAAI;MAAEC,KAAK;MAAEC,IAAI,EAAEC,IAAI;MAAEC;IAAO,CAAC,EAAEC,KAAK,KAAK;MACjE,MAAMC,cAAc,GAAGN,IAAI,KAAKP,WAAW;MAC3C,oBACEL,IAAA,CAACJ,eAAe;QAEduB,KAAK,EAAEjB,CAAC,CAACW,KAAK,CAAE;QAChBC,IAAI,eAAEd,IAAA,CAACe,IAAI;UAACK,KAAK,EAAEF,cAAc,GAAG3B,MAAM,CAAC8B,SAAS,GAAGC;QAAU,CAAE,CAAE;QACrEC,QAAQ,EAAE,CAAE;QACZH,KAAK,EAAEJ,MAAO;QACdQ,QAAQ,EAAEN,cAAe;QACzBO,QAAQ,EAAEA,CAAA,KAAM;UACdtB,KAAK,CAACuB,OAAO,CAACd,IAAI,CAAC;UACnBR,iBAAiB,GAAGQ,IAAI,CAAC;QAC3B,CAAE;QACFe,WAAW,EAAEV,KAAK,GAAGtB,aAAa,CAACiC,MAAM,GAAG;MAAE,GAVzChB,IAWN,CAAC;IAEN,CAAC;EAAC,CACE,CAAC;AAEX,CAAC;AAED,MAAMJ,MAAM,GAAGpB,UAAU,CAACyC,MAAM,CAAC;EAC/BpB,SAAS,EAAE;IACTqB,KAAK,EAAE,GAAG;IACVC,eAAe,EAAEtC,OAAO,CAAC,GAAG,CAAC;IAC7BuC,iBAAiB,EAAEvC,OAAO,CAAC,GAAG,CAAC;IAC/BwC,YAAY,EAAE3C,aAAa,CAAC,GAAG,CAAC;IAChC4C,eAAe,EAAE3C,MAAM,CAAC8B,SAAS;IACjC,GAAG7B,OAAO,CAAC,CAAC;EACd;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","StyleSheet","View","BORDER_RADIUS","COLORS","SHADOWS","SPACING","useUnit","FLUENCY_MODES","MathOperatorRow","useFluency","useText","jsx","_jsx","SelectMathOperator","t","model","onModeSelectPress","fluencyMode","matrix","$mode","$data","style","styles","container","children","map","mode","label","icon","Icon","select","index","isSelectedMode","progress","operations","completionRate","title","color","NEUTRAL_1","undefined","selected","onSelect","setMode","showDivider","length","create","alignSelf","width","paddingVertical","paddingHorizontal","borderRadius","backgroundColor"],"sourceRoot":"../../../../../../src","sources":["features/fluency/components/select-math-operator/SelectMathOperator.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,aAAa,EAAEC,MAAM,EAAEC,OAAO,EAAEC,OAAO,QAAQ,4BAA4B;AACpF,SAASC,OAAO,QAAQ,gBAAgB;AACxC,SAASC,aAAa,QAAQ,4BAAyB;AACvD,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,UAAU,QAAQ,iCAA8B;AACzD,SAASC,OAAO,QAAQ,0BAAuB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAE/C,OAAO,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;EACtC,MAAMC,CAAC,GAAGJ,OAAO,CAAC,CAAC;EACnB,MAAM;IAAEK,KAAK;IAAEC;EAAkB,CAAC,GAAGP,UAAU,CAAC,CAAC;EACjD,MAAMQ,WAAW,GAAGX,OAAO,CAACS,KAAK,CAACG,MAAM,CAACC,KAAK,CAAC;EAC/C,MAAMD,MAAM,GAAGZ,OAAO,CAACS,KAAK,CAACG,MAAM,CAACE,KAAK,CAAC;EAE1C,oBACER,IAAA,CAACX,IAAI;IAACoB,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,EAC3BjB,aAAa,CAACkB,GAAG,CAAC,CAAC;MAAEC,IAAI;MAAEC,KAAK;MAAEC,IAAI,EAAEC,IAAI;MAAEC;IAAO,CAAC,EAAEC,KAAK,KAAK;MACjE,MAAMC,cAAc,GAAGN,IAAI,KAAKT,WAAW;MAC3C,MAAMgB,QAAQ,GAAG,CAACf,MAAM,EAAEgB,UAAU,CAACR,IAAI,CAAC,CAACS,cAAc,IAAI,CAAC,IAAI,GAAG;MAErE,oBACEvB,IAAA,CAACJ,eAAe;QAEd4B,KAAK,EAAEtB,CAAC,CAACa,KAAK,CAAE;QAChBC,IAAI,eAAEhB,IAAA,CAACiB,IAAI;UAACQ,KAAK,EAAEL,cAAc,GAAG7B,MAAM,CAACmC,SAAS,GAAGC;QAAU,CAAE,CAAE;QACrEN,QAAQ,EAAEA,QAAS;QACnBI,KAAK,EAAEP,MAAO;QACdU,QAAQ,EAAER,cAAe;QACzBS,QAAQ,EAAEA,CAAA,KAAM;UACd1B,KAAK,CAACG,MAAM,CAACwB,OAAO,CAAChB,IAAI,CAAC;UAC1BV,iBAAiB,GAAGU,IAAI,CAAC;QAC3B,CAAE;QACFiB,WAAW,EAAEZ,KAAK,GAAGxB,aAAa,CAACqC,MAAM,GAAG;MAAE,GAVzClB,IAWN,CAAC;IAEN,CAAC;EAAC,CACE,CAAC;AAEX,CAAC;AAED,MAAMJ,MAAM,GAAGtB,UAAU,CAAC6C,MAAM,CAAC;EAC/BtB,SAAS,EAAE;IACTuB,SAAS,EAAE,YAAY;IACvBC,KAAK,EAAE,GAAG;IACVC,eAAe,EAAE3C,OAAO,CAAC,GAAG,CAAC;IAC7B4C,iBAAiB,EAAE5C,OAAO,CAAC,GAAG,CAAC;IAC/B6C,YAAY,EAAEhD,aAAa,CAAC,GAAG,CAAC;IAChCiD,eAAe,EAAEhD,MAAM,CAACmC,SAAS;IACjC,GAAGlC,OAAO,CAAC,CAAC;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { View, StyleSheet, ScrollView } from 'react-native';
5
+ import { BORDER_RADIUS, Button, ButtonColor, ButtonSize, ButtonVariant, COLORS, FONT_FAMILY, SHADOWS, SPACING, Typography } from '@magmamath/react-native-ui';
6
+ import { DEFAULT_PICKER_PARAMS } from "../fluency-solving/fluencySolving.constants.js";
7
+ import { SESSION_LENGTH } from "../../fluency.constants.js";
8
+ import { SessionStatCard } from "./SessionStatCard.js";
9
+ import { SkillProgressionRow } from "./SkillProgressionRow.js";
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ const STATIC_OPERATION_ROWS = [{
12
+ symbol: '−',
13
+ symbolColor: COLORS.PRIMARY_BLUE,
14
+ symbolBackground: COLORS.BLUE_1,
15
+ operationName: 'Subtraction',
16
+ levelLabel: 'Strong ↑',
17
+ levelColor: COLORS.PRIMARY_BLUE,
18
+ progressRate: 0.6,
19
+ progressColor: COLORS.PRIMARY_BLUE
20
+ }, {
21
+ symbol: '×',
22
+ symbolColor: COLORS.PRIMARY_ORANGE,
23
+ symbolBackground: COLORS.ORANGE_1,
24
+ operationName: 'Multiplication',
25
+ levelLabel: 'Growing ↑',
26
+ levelColor: COLORS.PRIMARY_ORANGE,
27
+ progressRate: 0.4,
28
+ progressColor: COLORS.PRIMARY_ORANGE
29
+ }, {
30
+ symbol: '÷',
31
+ symbolColor: COLORS.PRIMARY_PURPLE,
32
+ symbolBackground: COLORS.PURPLE_1,
33
+ operationName: 'Division',
34
+ levelLabel: 'Learning ↑',
35
+ levelColor: COLORS.PRIMARY_PURPLE,
36
+ progressRate: 0.2,
37
+ progressColor: COLORS.PRIMARY_PURPLE
38
+ }];
39
+ function computeMaxStreak(outcomes) {
40
+ let max = 0;
41
+ let current = 0;
42
+ for (const outcome of outcomes) {
43
+ current = outcome === 'correct' ? current + 1 : 0;
44
+ max = Math.max(max, current);
45
+ }
46
+ return max;
47
+ }
48
+ function levelLabelFromRate(rate) {
49
+ if (rate >= 0.85) return 'Mastered ↑';
50
+ if (rate >= 0.65) return 'Confident ↑';
51
+ if (rate >= 0.45) return 'Strong ↑';
52
+ if (rate >= 0.25) return 'Growing ↑';
53
+ return 'Learning ↑';
54
+ }
55
+ export const FluencySessionResults = ({
56
+ outcomes,
57
+ sessionDurationMs,
58
+ facts,
59
+ onEndModalPress
60
+ }) => {
61
+ const correctCount = outcomes.filter(o => o === 'correct').length;
62
+ const streak = computeMaxStreak(outcomes);
63
+ const sessionSecs = Math.round(sessionDurationMs / 1000);
64
+ const additionRate = facts.length > 0 ? facts.reduce((sum, f) => sum + f.box, 0) / (facts.length * DEFAULT_PICKER_PARAMS.numBoxes) : 0;
65
+ return /*#__PURE__*/_jsx(View, {
66
+ style: styles.overlay,
67
+ children: /*#__PURE__*/_jsx(ScrollView, {
68
+ contentContainerStyle: styles.scroll,
69
+ showsVerticalScrollIndicator: false,
70
+ children: /*#__PURE__*/_jsxs(View, {
71
+ style: styles.card,
72
+ children: [/*#__PURE__*/_jsx(Typography, {
73
+ style: styles.title,
74
+ children: "You leveled up!"
75
+ }), /*#__PURE__*/_jsxs(View, {
76
+ style: styles.statsRow,
77
+ children: [/*#__PURE__*/_jsx(SessionStatCard, {
78
+ variant: "on-fire",
79
+ value: String(streak)
80
+ }), /*#__PURE__*/_jsx(SessionStatCard, {
81
+ variant: "speedy",
82
+ value: `${sessionSecs}s`
83
+ }), /*#__PURE__*/_jsx(SessionStatCard, {
84
+ variant: "amazing",
85
+ value: `${correctCount}/${SESSION_LENGTH}`
86
+ })]
87
+ }), /*#__PURE__*/_jsx(Typography, {
88
+ style: styles.progressionHeader,
89
+ children: "Skill progression"
90
+ }), /*#__PURE__*/_jsxs(View, {
91
+ style: styles.progressionList,
92
+ children: [/*#__PURE__*/_jsx(SkillProgressionRow, {
93
+ symbol: "+",
94
+ symbolColor: COLORS.PRIMARY_GREEN,
95
+ symbolBackground: COLORS.GREEN_1,
96
+ operationName: "Addition",
97
+ levelLabel: levelLabelFromRate(additionRate),
98
+ levelColor: COLORS.PRIMARY_GREEN,
99
+ progressRate: additionRate,
100
+ progressColor: COLORS.PRIMARY_GREEN,
101
+ isActive: true
102
+ }), STATIC_OPERATION_ROWS.map(row => /*#__PURE__*/_jsx(SkillProgressionRow, {
103
+ ...row
104
+ }, row.operationName))]
105
+ }), /*#__PURE__*/_jsx(View, {
106
+ style: styles.homeButtonWrapper,
107
+ children: /*#__PURE__*/_jsx(Button, {
108
+ onPress: onEndModalPress,
109
+ variant: ButtonVariant.PRIMARY,
110
+ colorScheme: ButtonColor.YELLOW,
111
+ size: ButtonSize.LARGE,
112
+ raiseLevel: 6,
113
+ children: "HOME"
114
+ })
115
+ })]
116
+ })
117
+ })
118
+ });
119
+ };
120
+ const styles = StyleSheet.create({
121
+ overlay: {
122
+ position: 'absolute',
123
+ top: 0,
124
+ left: 0,
125
+ right: 0,
126
+ bottom: 0,
127
+ backgroundColor: 'rgba(242, 242, 244, 0.85)',
128
+ justifyContent: 'center',
129
+ padding: SPACING[400]
130
+ },
131
+ scroll: {
132
+ flexGrow: 1,
133
+ justifyContent: 'center',
134
+ alignItems: 'center'
135
+ },
136
+ card: {
137
+ width: '100%',
138
+ maxWidth: 560,
139
+ backgroundColor: COLORS.NEUTRAL_1,
140
+ borderRadius: BORDER_RADIUS[450],
141
+ padding: SPACING[500],
142
+ gap: SPACING[400],
143
+ ...SHADOWS[5]
144
+ },
145
+ title: {
146
+ fontSize: 32,
147
+ fontWeight: '700',
148
+ fontFamily: FONT_FAMILY.buenosAires,
149
+ color: COLORS.NEUTRAL_9,
150
+ textAlign: 'center',
151
+ marginBottom: SPACING[200]
152
+ },
153
+ statsRow: {
154
+ flexDirection: 'row',
155
+ gap: SPACING[200]
156
+ },
157
+ progressionHeader: {
158
+ fontSize: 13,
159
+ color: COLORS.NEUTRAL_7,
160
+ textAlign: 'center'
161
+ },
162
+ progressionList: {
163
+ gap: SPACING[100]
164
+ },
165
+ homeButtonWrapper: {
166
+ maxWidth: 320,
167
+ width: '100%',
168
+ alignSelf: 'center',
169
+ marginTop: SPACING[200]
170
+ }
171
+ });
172
+ //# sourceMappingURL=FluencySessionResults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","StyleSheet","ScrollView","BORDER_RADIUS","Button","ButtonColor","ButtonSize","ButtonVariant","COLORS","FONT_FAMILY","SHADOWS","SPACING","Typography","DEFAULT_PICKER_PARAMS","SESSION_LENGTH","SessionStatCard","SkillProgressionRow","jsx","_jsx","jsxs","_jsxs","STATIC_OPERATION_ROWS","symbol","symbolColor","PRIMARY_BLUE","symbolBackground","BLUE_1","operationName","levelLabel","levelColor","progressRate","progressColor","PRIMARY_ORANGE","ORANGE_1","PRIMARY_PURPLE","PURPLE_1","computeMaxStreak","outcomes","max","current","outcome","Math","levelLabelFromRate","rate","FluencySessionResults","sessionDurationMs","facts","onEndModalPress","correctCount","filter","o","length","streak","sessionSecs","round","additionRate","reduce","sum","f","box","numBoxes","style","styles","overlay","children","contentContainerStyle","scroll","showsVerticalScrollIndicator","card","title","statsRow","variant","value","String","progressionHeader","progressionList","PRIMARY_GREEN","GREEN_1","isActive","map","row","homeButtonWrapper","onPress","PRIMARY","colorScheme","YELLOW","size","LARGE","raiseLevel","create","position","top","left","right","bottom","backgroundColor","justifyContent","padding","flexGrow","alignItems","width","maxWidth","NEUTRAL_1","borderRadius","gap","fontSize","fontWeight","fontFamily","buenosAires","color","NEUTRAL_9","textAlign","marginBottom","flexDirection","NEUTRAL_7","alignSelf","marginTop"],"sourceRoot":"../../../../../../src","sources":["features/fluency/components/session-results/FluencySessionResults.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,EAAEC,UAAU,QAAQ,cAAc;AAC3D,SACEC,aAAa,EACbC,MAAM,EACNC,WAAW,EACXC,UAAU,EACVC,aAAa,EACbC,MAAM,EACNC,WAAW,EACXC,OAAO,EACPC,OAAO,EACPC,UAAU,QACL,4BAA4B;AAEnC,SAASC,qBAAqB,QAAQ,gDAA6C;AACnF,SAASC,cAAc,QAAQ,4BAAyB;AACxD,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,mBAAmB,QAAQ,0BAAuB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAoB3D,MAAMC,qBAA2C,GAAG,CAClD;EACEC,MAAM,EAAE,GAAG;EACXC,WAAW,EAAEf,MAAM,CAACgB,YAAY;EAChCC,gBAAgB,EAAEjB,MAAM,CAACkB,MAAM;EAC/BC,aAAa,EAAE,aAAa;EAC5BC,UAAU,EAAE,UAAU;EACtBC,UAAU,EAAErB,MAAM,CAACgB,YAAY;EAC/BM,YAAY,EAAE,GAAG;EACjBC,aAAa,EAAEvB,MAAM,CAACgB;AACxB,CAAC,EACD;EACEF,MAAM,EAAE,GAAG;EACXC,WAAW,EAAEf,MAAM,CAACwB,cAAc;EAClCP,gBAAgB,EAAEjB,MAAM,CAACyB,QAAQ;EACjCN,aAAa,EAAE,gBAAgB;EAC/BC,UAAU,EAAE,WAAW;EACvBC,UAAU,EAAErB,MAAM,CAACwB,cAAc;EACjCF,YAAY,EAAE,GAAG;EACjBC,aAAa,EAAEvB,MAAM,CAACwB;AACxB,CAAC,EACD;EACEV,MAAM,EAAE,GAAG;EACXC,WAAW,EAAEf,MAAM,CAAC0B,cAAc;EAClCT,gBAAgB,EAAEjB,MAAM,CAAC2B,QAAQ;EACjCR,aAAa,EAAE,UAAU;EACzBC,UAAU,EAAE,YAAY;EACxBC,UAAU,EAAErB,MAAM,CAAC0B,cAAc;EACjCJ,YAAY,EAAE,GAAG;EACjBC,aAAa,EAAEvB,MAAM,CAAC0B;AACxB,CAAC,CACF;AAED,SAASE,gBAAgBA,CAACC,QAA2B,EAAU;EAC7D,IAAIC,GAAG,GAAG,CAAC;EACX,IAAIC,OAAO,GAAG,CAAC;EACf,KAAK,MAAMC,OAAO,IAAIH,QAAQ,EAAE;IAC9BE,OAAO,GAAGC,OAAO,KAAK,SAAS,GAAGD,OAAO,GAAG,CAAC,GAAG,CAAC;IACjDD,GAAG,GAAGG,IAAI,CAACH,GAAG,CAACA,GAAG,EAAEC,OAAO,CAAC;EAC9B;EACA,OAAOD,GAAG;AACZ;AAEA,SAASI,kBAAkBA,CAACC,IAAY,EAAU;EAChD,IAAIA,IAAI,IAAI,IAAI,EAAE,OAAO,YAAY;EACrC,IAAIA,IAAI,IAAI,IAAI,EAAE,OAAO,aAAa;EACtC,IAAIA,IAAI,IAAI,IAAI,EAAE,OAAO,UAAU;EACnC,IAAIA,IAAI,IAAI,IAAI,EAAE,OAAO,WAAW;EACpC,OAAO,YAAY;AACrB;AAEA,OAAO,MAAMC,qBAAqB,GAAGA,CAAC;EACpCP,QAAQ;EACRQ,iBAAiB;EACjBC,KAAK;EACLC;AAC0B,CAAC,KAAK;EAChC,MAAMC,YAAY,GAAGX,QAAQ,CAACY,MAAM,CAAEC,CAAC,IAAKA,CAAC,KAAK,SAAS,CAAC,CAACC,MAAM;EACnE,MAAMC,MAAM,GAAGhB,gBAAgB,CAACC,QAAQ,CAAC;EACzC,MAAMgB,WAAW,GAAGZ,IAAI,CAACa,KAAK,CAACT,iBAAiB,GAAG,IAAI,CAAC;EAExD,MAAMU,YAAY,GAChBT,KAAK,CAACK,MAAM,GAAG,CAAC,GACZL,KAAK,CAACU,MAAM,CAAC,CAACC,GAAG,EAAEC,CAAC,KAAKD,GAAG,GAAGC,CAAC,CAACC,GAAG,EAAE,CAAC,CAAC,IAAIb,KAAK,CAACK,MAAM,GAAGtC,qBAAqB,CAAC+C,QAAQ,CAAC,GAC1F,CAAC;EAEP,oBACE1C,IAAA,CAAClB,IAAI;IAAC6D,KAAK,EAAEC,MAAM,CAACC,OAAQ;IAAAC,QAAA,eAC1B9C,IAAA,CAAChB,UAAU;MAAC+D,qBAAqB,EAAEH,MAAM,CAACI,MAAO;MAACC,4BAA4B,EAAE,KAAM;MAAAH,QAAA,eACpF5C,KAAA,CAACpB,IAAI;QAAC6D,KAAK,EAAEC,MAAM,CAACM,IAAK;QAAAJ,QAAA,gBACvB9C,IAAA,CAACN,UAAU;UAACiD,KAAK,EAAEC,MAAM,CAACO,KAAM;UAAAL,QAAA,EAAC;QAAe,CAAY,CAAC,eAE7D5C,KAAA,CAACpB,IAAI;UAAC6D,KAAK,EAAEC,MAAM,CAACQ,QAAS;UAAAN,QAAA,gBAC3B9C,IAAA,CAACH,eAAe;YAACwD,OAAO,EAAC,SAAS;YAACC,KAAK,EAAEC,MAAM,CAACrB,MAAM;UAAE,CAAE,CAAC,eAC5DlC,IAAA,CAACH,eAAe;YAACwD,OAAO,EAAC,QAAQ;YAACC,KAAK,EAAE,GAAGnB,WAAW;UAAI,CAAE,CAAC,eAC9DnC,IAAA,CAACH,eAAe;YAACwD,OAAO,EAAC,SAAS;YAACC,KAAK,EAAE,GAAGxB,YAAY,IAAIlC,cAAc;UAAG,CAAE,CAAC;QAAA,CAC7E,CAAC,eAEPI,IAAA,CAACN,UAAU;UAACiD,KAAK,EAAEC,MAAM,CAACY,iBAAkB;UAAAV,QAAA,EAAC;QAAiB,CAAY,CAAC,eAE3E5C,KAAA,CAACpB,IAAI;UAAC6D,KAAK,EAAEC,MAAM,CAACa,eAAgB;UAAAX,QAAA,gBAClC9C,IAAA,CAACF,mBAAmB;YAClBM,MAAM,EAAC,GAAG;YACVC,WAAW,EAAEf,MAAM,CAACoE,aAAc;YAClCnD,gBAAgB,EAAEjB,MAAM,CAACqE,OAAQ;YACjClD,aAAa,EAAC,UAAU;YACxBC,UAAU,EAAEc,kBAAkB,CAACa,YAAY,CAAE;YAC7C1B,UAAU,EAAErB,MAAM,CAACoE,aAAc;YACjC9C,YAAY,EAAEyB,YAAa;YAC3BxB,aAAa,EAAEvB,MAAM,CAACoE,aAAc;YACpCE,QAAQ;UAAA,CACT,CAAC,EACDzD,qBAAqB,CAAC0D,GAAG,CAAEC,GAAG,iBAC7B9D,IAAA,CAACF,mBAAmB;YAAA,GAA6BgE;UAAG,GAA1BA,GAAG,CAACrD,aAAyB,CACxD,CAAC;QAAA,CACE,CAAC,eAEPT,IAAA,CAAClB,IAAI;UAAC6D,KAAK,EAAEC,MAAM,CAACmB,iBAAkB;UAAAjB,QAAA,eACpC9C,IAAA,CAACd,MAAM;YACL8E,OAAO,EAAEnC,eAAgB;YACzBwB,OAAO,EAAEhE,aAAa,CAAC4E,OAAQ;YAC/BC,WAAW,EAAE/E,WAAW,CAACgF,MAAO;YAChCC,IAAI,EAAEhF,UAAU,CAACiF,KAAM;YACvBC,UAAU,EAAE,CAAE;YAAAxB,QAAA,EACf;UAED,CAAQ;QAAC,CACL,CAAC;MAAA,CACH;IAAC,CACG;EAAC,CACT,CAAC;AAEX,CAAC;AAED,MAAMF,MAAM,GAAG7D,UAAU,CAACwF,MAAM,CAAC;EAC/B1B,OAAO,EAAE;IACP2B,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,eAAe,EAAE,2BAA2B;IAC5CC,cAAc,EAAE,QAAQ;IACxBC,OAAO,EAAEtF,OAAO,CAAC,GAAG;EACtB,CAAC;EACDuD,MAAM,EAAE;IACNgC,QAAQ,EAAE,CAAC;IACXF,cAAc,EAAE,QAAQ;IACxBG,UAAU,EAAE;EACd,CAAC;EACD/B,IAAI,EAAE;IACJgC,KAAK,EAAE,MAAM;IACbC,QAAQ,EAAE,GAAG;IACbN,eAAe,EAAEvF,MAAM,CAAC8F,SAAS;IACjCC,YAAY,EAAEpG,aAAa,CAAC,GAAG,CAAC;IAChC8F,OAAO,EAAEtF,OAAO,CAAC,GAAG,CAAC;IACrB6F,GAAG,EAAE7F,OAAO,CAAC,GAAG,CAAC;IACjB,GAAGD,OAAO,CAAC,CAAC;EACd,CAAC;EACD2D,KAAK,EAAE;IACLoC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAElG,WAAW,CAACmG,WAAW;IACnCC,KAAK,EAAErG,MAAM,CAACsG,SAAS;IACvBC,SAAS,EAAE,QAAQ;IACnBC,YAAY,EAAErG,OAAO,CAAC,GAAG;EAC3B,CAAC;EACD2D,QAAQ,EAAE;IACR2C,aAAa,EAAE,KAAK;IACpBT,GAAG,EAAE7F,OAAO,CAAC,GAAG;EAClB,CAAC;EACD+D,iBAAiB,EAAE;IACjB+B,QAAQ,EAAE,EAAE;IACZI,KAAK,EAAErG,MAAM,CAAC0G,SAAS;IACvBH,SAAS,EAAE;EACb,CAAC;EACDpC,eAAe,EAAE;IACf6B,GAAG,EAAE7F,OAAO,CAAC,GAAG;EAClB,CAAC;EACDsE,iBAAiB,EAAE;IACjBoB,QAAQ,EAAE,GAAG;IACbD,KAAK,EAAE,MAAM;IACbe,SAAS,EAAE,QAAQ;IACnBC,SAAS,EAAEzG,OAAO,CAAC,GAAG;EACxB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { View, StyleSheet } from 'react-native';
5
+ import { BORDER_RADIUS, COLORS, CorrectIcon, FONT_FAMILY, SPACING, TimeIcon, Typography } from '@magmamath/react-native-ui';
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ const STAT_CARD_CONFIGS = {
8
+ 'on-fire': {
9
+ kicker: 'ON FIRE',
10
+ icon: '🔥',
11
+ color: COLORS.PRIMARY_ORANGE,
12
+ background: COLORS.ORANGE_1
13
+ },
14
+ speedy: {
15
+ kicker: 'SPEEDY',
16
+ icon: /*#__PURE__*/_jsx(TimeIcon, {
17
+ color: COLORS.PRIMARY_BLUE,
18
+ size: 20
19
+ }),
20
+ color: COLORS.PRIMARY_BLUE,
21
+ background: COLORS.BLUE_1
22
+ },
23
+ amazing: {
24
+ kicker: 'AMAZING',
25
+ icon: /*#__PURE__*/_jsx(CorrectIcon, {
26
+ color: COLORS.PRIMARY_GREEN,
27
+ size: 20
28
+ }),
29
+ color: COLORS.PRIMARY_GREEN,
30
+ background: COLORS.GREEN_1
31
+ }
32
+ };
33
+ export const SessionStatCard = ({
34
+ variant,
35
+ value
36
+ }) => {
37
+ const config = STAT_CARD_CONFIGS[variant];
38
+ return /*#__PURE__*/_jsxs(View, {
39
+ style: [styles.card, {
40
+ borderColor: config.color,
41
+ backgroundColor: config.background
42
+ }],
43
+ children: [/*#__PURE__*/_jsx(Typography, {
44
+ style: [styles.kicker, {
45
+ color: config.color
46
+ }],
47
+ children: config.kicker
48
+ }), /*#__PURE__*/_jsxs(View, {
49
+ style: styles.body,
50
+ children: [typeof config.icon === 'string' ? /*#__PURE__*/_jsx(Typography, {
51
+ style: styles.iconEmoji,
52
+ children: config.icon
53
+ }) : config.icon, /*#__PURE__*/_jsx(Typography, {
54
+ style: styles.value,
55
+ children: value
56
+ })]
57
+ })]
58
+ });
59
+ };
60
+ const styles = StyleSheet.create({
61
+ card: {
62
+ flex: 1,
63
+ maxWidth: 180,
64
+ borderWidth: 2,
65
+ borderRadius: BORDER_RADIUS[400],
66
+ paddingVertical: 10,
67
+ paddingHorizontal: 14,
68
+ gap: SPACING[200]
69
+ },
70
+ kicker: {
71
+ fontSize: 11,
72
+ fontWeight: '800',
73
+ letterSpacing: 1.1,
74
+ textAlign: 'center',
75
+ fontFamily: FONT_FAMILY.buenosAires
76
+ },
77
+ body: {
78
+ flexDirection: 'row',
79
+ alignItems: 'center',
80
+ gap: SPACING[200]
81
+ },
82
+ iconEmoji: {
83
+ fontSize: 18
84
+ },
85
+ value: {
86
+ fontSize: 24,
87
+ fontWeight: '900',
88
+ letterSpacing: -0.48,
89
+ fontFamily: FONT_FAMILY.buenosAires,
90
+ color: COLORS.NEUTRAL_10
91
+ }
92
+ });
93
+ //# sourceMappingURL=SessionStatCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","StyleSheet","BORDER_RADIUS","COLORS","CorrectIcon","FONT_FAMILY","SPACING","TimeIcon","Typography","jsx","_jsx","jsxs","_jsxs","STAT_CARD_CONFIGS","kicker","icon","color","PRIMARY_ORANGE","background","ORANGE_1","speedy","PRIMARY_BLUE","size","BLUE_1","amazing","PRIMARY_GREEN","GREEN_1","SessionStatCard","variant","value","config","style","styles","card","borderColor","backgroundColor","children","body","iconEmoji","create","flex","maxWidth","borderWidth","borderRadius","paddingVertical","paddingHorizontal","gap","fontSize","fontWeight","letterSpacing","textAlign","fontFamily","buenosAires","flexDirection","alignItems","NEUTRAL_10"],"sourceRoot":"../../../../../../src","sources":["features/fluency/components/session-results/SessionStatCard.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { View, StyleSheet } from 'react-native';
5
+ import { BORDER_RADIUS, COLORS, FONT_FAMILY, SPACING, Typography } from '@magmamath/react-native-ui';
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ const BAR_WIDTH = 80;
8
+ export const SkillProgressionRow = ({
9
+ symbol,
10
+ symbolColor,
11
+ symbolBackground,
12
+ operationName,
13
+ levelLabel,
14
+ levelColor,
15
+ progressRate,
16
+ progressColor,
17
+ isActive
18
+ }) => {
19
+ return /*#__PURE__*/_jsxs(View, {
20
+ style: [styles.row, isActive && {
21
+ borderWidth: 1.5,
22
+ borderColor: progressColor,
23
+ backgroundColor: symbolBackground
24
+ }],
25
+ children: [/*#__PURE__*/_jsx(View, {
26
+ style: [styles.symbolCircle, {
27
+ backgroundColor: symbolBackground
28
+ }],
29
+ children: /*#__PURE__*/_jsx(Typography, {
30
+ style: [styles.symbol, {
31
+ color: symbolColor
32
+ }],
33
+ children: symbol
34
+ })
35
+ }), /*#__PURE__*/_jsxs(View, {
36
+ style: styles.col,
37
+ children: [/*#__PURE__*/_jsx(Typography, {
38
+ style: styles.name,
39
+ children: operationName
40
+ }), /*#__PURE__*/_jsx(Typography, {
41
+ style: [styles.level, {
42
+ color: levelColor
43
+ }],
44
+ children: levelLabel
45
+ })]
46
+ }), /*#__PURE__*/_jsx(View, {
47
+ style: styles.barTrack,
48
+ children: /*#__PURE__*/_jsx(View, {
49
+ style: [styles.barFill, {
50
+ width: BAR_WIDTH * progressRate,
51
+ backgroundColor: progressColor
52
+ }]
53
+ })
54
+ })]
55
+ });
56
+ };
57
+ const styles = StyleSheet.create({
58
+ row: {
59
+ flexDirection: 'row',
60
+ alignItems: 'center',
61
+ gap: SPACING[300],
62
+ paddingVertical: 10,
63
+ paddingHorizontal: 14,
64
+ backgroundColor: COLORS.NEUTRAL_2,
65
+ borderRadius: 14
66
+ },
67
+ symbolCircle: {
68
+ width: 36,
69
+ height: 36,
70
+ borderRadius: BORDER_RADIUS[250],
71
+ alignItems: 'center',
72
+ justifyContent: 'center',
73
+ flexShrink: 0
74
+ },
75
+ symbol: {
76
+ fontSize: 18,
77
+ fontWeight: '900',
78
+ fontFamily: FONT_FAMILY.buenosAires
79
+ },
80
+ col: {
81
+ flex: 1,
82
+ gap: 2
83
+ },
84
+ name: {
85
+ fontSize: 14,
86
+ fontWeight: '700',
87
+ color: COLORS.NEUTRAL_10,
88
+ textAlign: 'center'
89
+ },
90
+ level: {
91
+ fontSize: 12,
92
+ fontWeight: '600',
93
+ textAlign: 'center'
94
+ },
95
+ barTrack: {
96
+ width: BAR_WIDTH,
97
+ height: 6,
98
+ backgroundColor: COLORS.NEUTRAL_4,
99
+ borderRadius: BORDER_RADIUS[100],
100
+ overflow: 'hidden'
101
+ },
102
+ barFill: {
103
+ height: 6,
104
+ borderRadius: BORDER_RADIUS[100]
105
+ }
106
+ });
107
+ //# sourceMappingURL=SkillProgressionRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","StyleSheet","BORDER_RADIUS","COLORS","FONT_FAMILY","SPACING","Typography","jsx","_jsx","jsxs","_jsxs","BAR_WIDTH","SkillProgressionRow","symbol","symbolColor","symbolBackground","operationName","levelLabel","levelColor","progressRate","progressColor","isActive","style","styles","row","borderWidth","borderColor","backgroundColor","children","symbolCircle","color","col","name","level","barTrack","barFill","width","create","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","NEUTRAL_2","borderRadius","height","justifyContent","flexShrink","fontSize","fontWeight","fontFamily","buenosAires","flex","NEUTRAL_10","textAlign","NEUTRAL_4","overflow"],"sourceRoot":"../../../../../../src","sources":["features/fluency/components/session-results/SkillProgressionRow.tsx"],"mappings":"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","ignoreList":[]}
@@ -4,13 +4,15 @@ import { CrossIcon, MinusIcon, PlusIcon } from '@magmamath/react-native-ui';
4
4
  import { ButtonColor, COLORS, SelectOptionColor } from '@magmamath/react-native-ui';
5
5
  import { createFluencyMode } from "./fluency.helpers.js";
6
6
  import { DivideIcon } from "./assets/DivideIcon.js";
7
- export const MATRIX_SIZE = 21;
7
+ export const FALLBACK_MATRIX_SIZE = 21;
8
8
  export const MAX_INPUT_LENGTH = 3;
9
+ export const SESSION_LENGTH = 20;
10
+ export const TIME_THRESHOLD_MS = 4000;
9
11
  export let FluencyMode = /*#__PURE__*/function (FluencyMode) {
10
- FluencyMode["ADDITION"] = "ADDITION";
11
- FluencyMode["SUBTRACTION"] = "SUBTRACTION";
12
- FluencyMode["MULTIPLICATION"] = "MULTIPLICATION";
13
- FluencyMode["DIVISION"] = "DIVISION";
12
+ FluencyMode["ADDITION"] = "addition";
13
+ FluencyMode["SUBTRACTION"] = "subtraction";
14
+ FluencyMode["MULTIPLICATION"] = "multiplication";
15
+ FluencyMode["DIVISION"] = "division";
14
16
  return FluencyMode;
15
17
  }({});
16
18
  export let FluencyMasteryLevel = /*#__PURE__*/function (FluencyMasteryLevel) {
@@ -27,6 +29,12 @@ export let FluencyColorFamily = /*#__PURE__*/function (FluencyColorFamily) {
27
29
  FluencyColorFamily["PURPLE"] = "PURPLE";
28
30
  return FluencyColorFamily;
29
31
  }({});
32
+ export let StreakStatus = /*#__PURE__*/function (StreakStatus) {
33
+ StreakStatus["MISSED"] = "missed";
34
+ StreakStatus["GAINED"] = "gained";
35
+ StreakStatus["TODAY"] = "today";
36
+ return StreakStatus;
37
+ }({});
30
38
  export const COLOR_FAMILY_PALETTES = {
31
39
  [FluencyColorFamily.GREEN]: {
32
40
  shades: [COLORS.GREEN_2, COLORS.GREEN_3, COLORS.PRIMARY_GREEN, COLORS.GREEN_6],
@@ -1 +1 @@
1
- {"version":3,"names":["CrossIcon","MinusIcon","PlusIcon","ButtonColor","COLORS","SelectOptionColor","createFluencyMode","DivideIcon","MATRIX_SIZE","MAX_INPUT_LENGTH","FluencyMode","FluencyMasteryLevel","FluencyColorFamily","COLOR_FAMILY_PALETTES","GREEN","shades","GREEN_2","GREEN_3","PRIMARY_GREEN","GREEN_6","button","select","ORANGE","ORANGE_2","ORANGE_3","PRIMARY_ORANGE","ORANGE_6","BLUE","BLUE_2","BLUE_3","PRIMARY_BLUE","BLUE_6","PURPLE","PURPLE_2","PURPLE_3","PRIMARY_PURPLE","PURPLE_6","FLUENCY_MODES","mode","ADDITION","label","icon","colorFamily","SUBTRACTION","MULTIPLICATION","DIVISION","FLUENCY_MODE_PRESETS","Object","fromEntries","map","preset"],"sourceRoot":"../../../../src","sources":["features/fluency/fluency.constants.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CrossIcon","MinusIcon","PlusIcon","ButtonColor","COLORS","SelectOptionColor","createFluencyMode","DivideIcon","FALLBACK_MATRIX_SIZE","MAX_INPUT_LENGTH","SESSION_LENGTH","TIME_THRESHOLD_MS","FluencyMode","FluencyMasteryLevel","FluencyColorFamily","StreakStatus","COLOR_FAMILY_PALETTES","GREEN","shades","GREEN_2","GREEN_3","PRIMARY_GREEN","GREEN_6","button","select","ORANGE","ORANGE_2","ORANGE_3","PRIMARY_ORANGE","ORANGE_6","BLUE","BLUE_2","BLUE_3","PRIMARY_BLUE","BLUE_6","PURPLE","PURPLE_2","PURPLE_3","PRIMARY_PURPLE","PURPLE_6","FLUENCY_MODES","mode","ADDITION","label","icon","colorFamily","SUBTRACTION","MULTIPLICATION","DIVISION","FLUENCY_MODE_PRESETS","Object","fromEntries","map","preset"],"sourceRoot":"../../../../src","sources":["features/fluency/fluency.constants.ts"],"mappings":"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","ignoreList":[]}
@@ -1,26 +1,13 @@
1
1
  "use strict";
2
2
 
3
- import { COLORS } from '@magmamath/react-native-ui';
4
- import { FluencyMasteryLevel, COLOR_FAMILY_PALETTES } from "./fluency.constants.js";
5
- // TODO: Threshold values to be aligned with BE response schema.
6
- export const getMasteryLevel = score => {
7
- if (score >= 80) return FluencyMasteryLevel.MASTERED;
8
- if (score >= 60) return FluencyMasteryLevel.STRONG;
9
- if (score >= 40) return FluencyMasteryLevel.GROWING;
3
+ import { FluencyMasteryLevel, FluencyMode, COLOR_FAMILY_PALETTES } from "./fluency.constants.js";
4
+ // TODO: Align box-to-mastery mapping with BE response schema.
5
+ export const getMasteryLevelByBox = box => {
6
+ if (box >= 4) return FluencyMasteryLevel.MASTERED;
7
+ if (box >= 3) return FluencyMasteryLevel.STRONG;
8
+ if (box >= 2) return FluencyMasteryLevel.GROWING;
10
9
  return FluencyMasteryLevel.LEARNING;
11
10
  };
12
- export const getCellColorByScore = (score, mastery) => mastery[getMasteryLevel(score)];
13
- export const getCellBackground = (row, col) => {
14
- if (row === 0 && col === 0) return COLORS.NEUTRAL_2;
15
- if (row === 0 || col === 0) return COLORS.NEUTRAL_5;
16
- return COLORS.NEUTRAL_2;
17
- };
18
- export const getCellLabel = (row, col) => {
19
- if (row === 0 && col === 0) return null;
20
- if (row === 0) return col;
21
- if (col === 0) return row;
22
- return null;
23
- };
24
11
  export const createFluencyMode = ({
25
12
  mode,
26
13
  label,
@@ -46,8 +33,8 @@ export const createFluencyMode = ({
46
33
  }
47
34
  },
48
35
  matrix: {
49
- operatorName: label,
50
- mastery: {
36
+ operatorLabel: label,
37
+ levelColors: {
51
38
  learning,
52
39
  growing,
53
40
  strong,
@@ -57,4 +44,47 @@ export const createFluencyMode = ({
57
44
  }
58
45
  };
59
46
  };
47
+ export const buildMatrixGrid = (data, mode) => {
48
+ const facts = Object.values(data.operations[mode].facts);
49
+ const maxRow = Math.max(0, ...facts.map(f => f.position.row));
50
+ const maxColumn = Math.max(0, ...facts.map(f => f.position.column));
51
+ const isDivision = mode === FluencyMode.DIVISION;
52
+ const factAt = (row, col) => facts.find(f => f.position.row === row && f.position.column === col);
53
+
54
+ // Division columns are 1-indexed in the API (÷1, ÷2...); all others are 0-indexed
55
+ const rowNumbers = Array.from({
56
+ length: maxRow + 1
57
+ }, (_, i) => i);
58
+ const columnNumbers = isDivision ? Array.from({
59
+ length: maxColumn
60
+ }, (_, i) => i + 1) : Array.from({
61
+ length: maxColumn + 1
62
+ }, (_, i) => i);
63
+ const headerRow = [{
64
+ isHeader: false,
65
+ label: null,
66
+ box: null,
67
+ divisor: null
68
+ }, ...columnNumbers.map(col => ({
69
+ isHeader: true,
70
+ label: col,
71
+ box: null,
72
+ divisor: null
73
+ }))];
74
+ const dataRows = rowNumbers.map(row => [{
75
+ isHeader: true,
76
+ label: row,
77
+ box: null,
78
+ divisor: null
79
+ }, ...columnNumbers.map(col => {
80
+ const fact = factAt(row, col);
81
+ return {
82
+ isHeader: false,
83
+ label: isDivision ? fact?.numbers[0] ?? null : null,
84
+ box: fact?.box ?? null,
85
+ divisor: isDivision ? col : null
86
+ };
87
+ })]);
88
+ return [headerRow, ...dataRows];
89
+ };
60
90
  //# sourceMappingURL=fluency.helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["COLORS","FluencyMasteryLevel","COLOR_FAMILY_PALETTES","getMasteryLevel","score","MASTERED","STRONG","GROWING","LEARNING","getCellColorByScore","mastery","getCellBackground","row","col","NEUTRAL_2","NEUTRAL_5","getCellLabel","createFluencyMode","mode","label","icon","colorFamily","palette","learning","growing","strong","mastered","shades","select","preset","buttonColor","button","operatorIcon","accentColor","header","streakColor","gained","todayBorder","matrix","operatorName"],"sourceRoot":"../../../../src","sources":["features/fluency/fluency.helpers.ts"],"mappings":";;AACA,SAASA,MAAM,QAAQ,4BAA4B;AACnD,SAEEC,mBAAmB,EAEnBC,qBAAqB,QAChB,wBAAqB;AAI5B;AACA,OAAO,MAAMC,eAAe,GAAIC,KAAa,IAA0B;EACrE,IAAIA,KAAK,IAAI,EAAE,EAAE,OAAOH,mBAAmB,CAACI,QAAQ;EACpD,IAAID,KAAK,IAAI,EAAE,EAAE,OAAOH,mBAAmB,CAACK,MAAM;EAClD,IAAIF,KAAK,IAAI,EAAE,EAAE,OAAOH,mBAAmB,CAACM,OAAO;EACnD,OAAON,mBAAmB,CAACO,QAAQ;AACrC,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAGA,CACjCL,KAAa,EACbM,OAA+C,KACpCA,OAAO,CAACP,eAAe,CAACC,KAAK,CAAC,CAAC;AAE5C,OAAO,MAAMO,iBAAiB,GAAGA,CAACC,GAAW,EAAEC,GAAW,KAAa;EACrE,IAAID,GAAG,KAAK,CAAC,IAAIC,GAAG,KAAK,CAAC,EAAE,OAAOb,MAAM,CAACc,SAAS;EACnD,IAAIF,GAAG,KAAK,CAAC,IAAIC,GAAG,KAAK,CAAC,EAAE,OAAOb,MAAM,CAACe,SAAS;EACnD,OAAOf,MAAM,CAACc,SAAS;AACzB,CAAC;AAED,OAAO,MAAME,YAAY,GAAGA,CAACJ,GAAW,EAAEC,GAAW,KAAoB;EACvE,IAAID,GAAG,KAAK,CAAC,IAAIC,GAAG,KAAK,CAAC,EAAE,OAAO,IAAI;EACvC,IAAID,GAAG,KAAK,CAAC,EAAE,OAAOC,GAAG;EACzB,IAAIA,GAAG,KAAK,CAAC,EAAE,OAAOD,GAAG;EACzB,OAAO,IAAI;AACb,CAAC;AASD,OAAO,MAAMK,iBAAiB,GAAGA,CAAC;EAChCC,IAAI;EACJC,KAAK;EACLC,IAAI;EACJC;AACuB,CAAC,KAAwB;EAChD,MAAMC,OAAO,GAAGpB,qBAAqB,CAACmB,WAAW,CAAC;EAClD,MAAM,CAACE,QAAQ,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,CAAC,GAAGJ,OAAO,CAACK,MAAM;EAE5D,OAAO;IACLT,IAAI;IACJC,KAAK;IACLC,IAAI;IACJQ,MAAM,EAAEN,OAAO,CAACM,MAAM;IACtBC,MAAM,EAAE;MACNC,WAAW,EAAER,OAAO,CAACS,MAAM;MAC3BC,YAAY,EAAEZ,IAAI;MAClBa,WAAW,EAAER,MAAM;MAAE;MACrBS,MAAM,EAAE;QACNC,WAAW,EAAE;UAAEC,MAAM,EAAEZ,OAAO;UAAEa,WAAW,EAAEZ;QAAO;MACtD,CAAC;MACDa,MAAM,EAAE;QACNC,YAAY,EAAEpB,KAAK;QACnBT,OAAO,EAAE;UAAEa,QAAQ;UAAEC,OAAO;UAAEC,MAAM;UAAEC;QAAS;MACjD;IACF;EACF,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["FluencyMasteryLevel","FluencyMode","COLOR_FAMILY_PALETTES","getMasteryLevelByBox","box","MASTERED","STRONG","GROWING","LEARNING","createFluencyMode","mode","label","icon","colorFamily","palette","learning","growing","strong","mastered","shades","select","preset","buttonColor","button","operatorIcon","accentColor","header","streakColor","gained","todayBorder","matrix","operatorLabel","levelColors","buildMatrixGrid","data","facts","Object","values","operations","maxRow","Math","max","map","f","position","row","maxColumn","column","isDivision","DIVISION","factAt","col","find","rowNumbers","Array","from","length","_","i","columnNumbers","headerRow","isHeader","divisor","dataRows","fact","numbers"],"sourceRoot":"../../../../src","sources":["features/fluency/fluency.helpers.ts"],"mappings":"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","ignoreList":[]}