@magmamath/students-features 1.3.26-rc.7 → 1.3.26-rc.8

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 (83) hide show
  1. package/dist/commonjs/features/fluency/components/fluency-solving/components/EquationContent.js +39 -18
  2. package/dist/commonjs/features/fluency/components/fluency-solving/components/EquationContent.js.map +1 -1
  3. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyCardDeck.js +113 -0
  4. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyCardDeck.js.map +1 -0
  5. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.js +22 -81
  6. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.js.map +1 -1
  7. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.js +32 -15
  8. package/dist/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.js.map +1 -1
  9. package/dist/commonjs/features/fluency/components/start-banner/StartBanner.js +15 -29
  10. package/dist/commonjs/features/fluency/components/start-banner/StartBanner.js.map +1 -1
  11. package/dist/commonjs/features/fluency/hooks/useCardSnapAnimation.js +33 -22
  12. package/dist/commonjs/features/fluency/hooks/useCardSnapAnimation.js.map +1 -1
  13. package/dist/commonjs/features/fluency/hooks/useFluencyCardDeckAnimation.js +44 -0
  14. package/dist/commonjs/features/fluency/hooks/useFluencyCardDeckAnimation.js.map +1 -0
  15. package/dist/commonjs/features/fluency/hooks/useFluencySolvingPreset.js +2 -2
  16. package/dist/commonjs/features/fluency/hooks/useFluencySolvingPreset.js.map +1 -1
  17. package/dist/commonjs/lib/components/GradientView.js +57 -0
  18. package/dist/commonjs/lib/components/GradientView.js.map +1 -0
  19. package/dist/module/features/fluency/components/fluency-solving/components/EquationContent.js +40 -19
  20. package/dist/module/features/fluency/components/fluency-solving/components/EquationContent.js.map +1 -1
  21. package/dist/module/features/fluency/components/fluency-solving/components/FluencyCardDeck.js +107 -0
  22. package/dist/module/features/fluency/components/fluency-solving/components/FluencyCardDeck.js.map +1 -0
  23. package/dist/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.js +23 -82
  24. package/dist/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.js.map +1 -1
  25. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js +32 -15
  26. package/dist/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.js.map +1 -1
  27. package/dist/module/features/fluency/components/start-banner/StartBanner.js +16 -30
  28. package/dist/module/features/fluency/components/start-banner/StartBanner.js.map +1 -1
  29. package/dist/module/features/fluency/hooks/useCardSnapAnimation.js +33 -22
  30. package/dist/module/features/fluency/hooks/useCardSnapAnimation.js.map +1 -1
  31. package/dist/module/features/fluency/hooks/useFluencyCardDeckAnimation.js +39 -0
  32. package/dist/module/features/fluency/hooks/useFluencyCardDeckAnimation.js.map +1 -0
  33. package/dist/module/features/fluency/hooks/useFluencySolvingPreset.js +2 -2
  34. package/dist/module/features/fluency/hooks/useFluencySolvingPreset.js.map +1 -1
  35. package/dist/module/lib/components/GradientView.js +51 -0
  36. package/dist/module/lib/components/GradientView.js.map +1 -0
  37. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/EquationContent.d.ts +5 -1
  38. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/EquationContent.d.ts.map +1 -1
  39. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyCardDeck.d.ts +14 -0
  40. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyCardDeck.d.ts.map +1 -0
  41. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts +7 -3
  42. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts.map +1 -1
  43. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/components/FluencySolvingCard.d.ts.map +1 -1
  44. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.d.ts +4 -0
  45. package/dist/typescript/commonjs/features/fluency/components/fluency-solving/fluencySolving.types.d.ts.map +1 -1
  46. package/dist/typescript/commonjs/features/fluency/components/start-banner/StartBanner.d.ts.map +1 -1
  47. package/dist/typescript/commonjs/features/fluency/hooks/useCardSnapAnimation.d.ts +7 -2
  48. package/dist/typescript/commonjs/features/fluency/hooks/useCardSnapAnimation.d.ts.map +1 -1
  49. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyCardDeckAnimation.d.ts +16 -0
  50. package/dist/typescript/commonjs/features/fluency/hooks/useFluencyCardDeckAnimation.d.ts.map +1 -0
  51. package/dist/typescript/commonjs/features/fluency/hooks/useFluencySolvingPreset.d.ts +5 -2
  52. package/dist/typescript/commonjs/features/fluency/hooks/useFluencySolvingPreset.d.ts.map +1 -1
  53. package/dist/typescript/commonjs/lib/components/GradientView.d.ts +18 -0
  54. package/dist/typescript/commonjs/lib/components/GradientView.d.ts.map +1 -0
  55. package/dist/typescript/module/features/fluency/components/fluency-solving/components/EquationContent.d.ts +5 -1
  56. package/dist/typescript/module/features/fluency/components/fluency-solving/components/EquationContent.d.ts.map +1 -1
  57. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyCardDeck.d.ts +14 -0
  58. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyCardDeck.d.ts.map +1 -0
  59. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts +7 -3
  60. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencyEquationCard.d.ts.map +1 -1
  61. package/dist/typescript/module/features/fluency/components/fluency-solving/components/FluencySolvingCard.d.ts.map +1 -1
  62. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.types.d.ts +4 -0
  63. package/dist/typescript/module/features/fluency/components/fluency-solving/fluencySolving.types.d.ts.map +1 -1
  64. package/dist/typescript/module/features/fluency/components/start-banner/StartBanner.d.ts.map +1 -1
  65. package/dist/typescript/module/features/fluency/hooks/useCardSnapAnimation.d.ts +7 -2
  66. package/dist/typescript/module/features/fluency/hooks/useCardSnapAnimation.d.ts.map +1 -1
  67. package/dist/typescript/module/features/fluency/hooks/useFluencyCardDeckAnimation.d.ts +16 -0
  68. package/dist/typescript/module/features/fluency/hooks/useFluencyCardDeckAnimation.d.ts.map +1 -0
  69. package/dist/typescript/module/features/fluency/hooks/useFluencySolvingPreset.d.ts +5 -2
  70. package/dist/typescript/module/features/fluency/hooks/useFluencySolvingPreset.d.ts.map +1 -1
  71. package/dist/typescript/module/lib/components/GradientView.d.ts +18 -0
  72. package/dist/typescript/module/lib/components/GradientView.d.ts.map +1 -0
  73. package/package.json +1 -1
  74. package/src/features/fluency/components/fluency-solving/components/EquationContent.tsx +41 -25
  75. package/src/features/fluency/components/fluency-solving/components/FluencyCardDeck.tsx +128 -0
  76. package/src/features/fluency/components/fluency-solving/components/FluencyEquationCard.tsx +37 -72
  77. package/src/features/fluency/components/fluency-solving/components/FluencySolvingCard.tsx +32 -13
  78. package/src/features/fluency/components/fluency-solving/fluencySolving.types.ts +5 -0
  79. package/src/features/fluency/components/start-banner/StartBanner.tsx +10 -28
  80. package/src/features/fluency/hooks/useCardSnapAnimation.ts +41 -21
  81. package/src/features/fluency/hooks/useFluencyCardDeckAnimation.ts +49 -0
  82. package/src/features/fluency/hooks/useFluencySolvingPreset.ts +25 -7
  83. package/src/lib/components/GradientView.tsx +63 -0
@@ -1,11 +1,15 @@
1
1
  import React from 'react';
2
+ import { AttemptStatus, type FluencyMode } from '../../../fluency.constants';
2
3
  type EquationContentProps = {
3
4
  leftOperand: number;
4
5
  rightOperand: number;
6
+ mode?: FluencyMode;
5
7
  value?: string;
6
8
  readOnly?: boolean;
9
+ status?: AttemptStatus;
10
+ correctAnswer?: number;
7
11
  onChange?: (text: string) => void;
8
12
  };
9
- export declare const EquationContent: ({ leftOperand, rightOperand, value, readOnly, onChange, }: EquationContentProps) => React.JSX.Element;
13
+ export declare const EquationContent: ({ leftOperand, rightOperand, mode, value, readOnly, status, correctAnswer, onChange, }: EquationContentProps) => React.JSX.Element;
10
14
  export {};
11
15
  //# sourceMappingURL=EquationContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EquationContent.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/EquationContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAA;AAgBrC,KAAK,oBAAoB,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,eAAe,8DAMzB,oBAAoB,sBA6CtB,CAAA"}
1
+ {"version":3,"file":"EquationContent.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/EquationContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAA;AAYrC,OAAO,EAAE,aAAa,EAAoB,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAmB9F,KAAK,oBAAoB,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,eAAe,2FASzB,oBAAoB,sBA2CtB,CAAA"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import type { SnapStyles } from '../../../hooks/useCardSnapAnimation';
3
+ import { AttemptStatus } from '../../../fluency.constants';
4
+ import type { FluencyCardDisplayContent } from '../fluencySolving.types';
5
+ type FluencyCardDeckProps = {
6
+ currentCardContent: FluencyCardDisplayContent;
7
+ exitingCardContent: FluencyCardDisplayContent | null;
8
+ exitingCardStatus: AttemptStatus | null;
9
+ snapStyles: SnapStyles;
10
+ onAnswerChange: (text: string) => void;
11
+ };
12
+ export declare const FluencyCardDeck: ({ currentCardContent, exitingCardContent, exitingCardStatus, snapStyles, onAnswerChange, }: FluencyCardDeckProps) => React.JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=FluencyCardDeck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluencyCardDeck.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencyCardDeck.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AAOxE,KAAK,oBAAoB,GAAG;IAC1B,kBAAkB,EAAE,yBAAyB,CAAA;IAC7C,kBAAkB,EAAE,yBAAyB,GAAG,IAAI,CAAA;IACpD,iBAAiB,EAAE,aAAa,GAAG,IAAI,CAAA;IACvC,UAAU,EAAE,UAAU,CAAA;IACtB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC,CAAA;AAOD,eAAO,MAAM,eAAe,+FAMzB,oBAAoB,sBA6CtB,CAAA"}
@@ -1,8 +1,12 @@
1
1
  import React from 'react';
2
- import type { SnapStyles } from '../../../hooks/useCardSnapAnimation';
2
+ import type { FluencyCardDisplayContent } from '../fluencySolving.types';
3
+ import type { AttemptStatus } from '../../../fluency.constants';
3
4
  type FluencyEquationCardProps = {
4
- animationStyles: SnapStyles;
5
+ cardContent: FluencyCardDisplayContent;
6
+ readOnly?: boolean;
7
+ status?: AttemptStatus;
8
+ onAnswerChange?: (text: string) => void;
5
9
  };
6
- export declare const FluencyEquationCard: ({ animationStyles }: FluencyEquationCardProps) => React.JSX.Element;
10
+ export declare const FluencyEquationCard: ({ cardContent, readOnly, status, onAnswerChange, }: FluencyEquationCardProps) => React.JSX.Element;
7
11
  export {};
8
12
  //# sourceMappingURL=FluencyEquationCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FluencyEquationCard.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencyEquationCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAErE,KAAK,wBAAwB,GAAG;IAC9B,eAAe,EAAE,UAAU,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,mBAAmB,wBAAyB,wBAAwB,sBAiChF,CAAA"}
1
+ {"version":3,"file":"FluencyEquationCard.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencyEquationCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,yBAAyB,EAAe,MAAM,yBAAyB,CAAA;AACrF,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,4BAA4B,CAAA;AAQ5E,KAAK,wBAAwB,GAAG;IAC9B,WAAW,EAAE,yBAAyB,CAAA;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC,CAAA;AAaD,eAAO,MAAM,mBAAmB,uDAK7B,wBAAwB,sBAe1B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"FluencySolvingCard.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencySolvingCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,eAAO,MAAM,kBAAkB,yBA+B9B,CAAA"}
1
+ {"version":3,"file":"FluencySolvingCard.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencySolvingCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,eAAO,MAAM,kBAAkB,yBA+C9B,CAAA"}
@@ -12,6 +12,10 @@ export type SolvingFact = {
12
12
  attemptsCount: number;
13
13
  correctCount: number;
14
14
  };
15
+ export type FluencyCardDisplayContent = {
16
+ fact: SolvingFact | null;
17
+ answer: string;
18
+ };
15
19
  export type QuestionOutcome = {
16
20
  factId: string;
17
21
  status: AttemptStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"fluencySolving.types.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/fluency/components/fluency-solving/fluencySolving.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEzE,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,WAAW,CAAA;IACjB,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe,EAAE,MAAM,CAAA;IACvB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,aAAa,CAAA;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,EAAE,WAAW,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC,CAAA"}
1
+ {"version":3,"file":"fluencySolving.types.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/fluency/components/fluency-solving/fluencySolving.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEzE,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,WAAW,CAAA;IACjB,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe,EAAE,MAAM,CAAA;IACvB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,aAAa,CAAA;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,EAAE,WAAW,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"StartBanner.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/fluency/components/start-banner/StartBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AA8CzB,eAAO,MAAM,WAAW,yBA4CvB,CAAA"}
1
+ {"version":3,"file":"StartBanner.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/fluency/components/start-banner/StartBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAqBzB,eAAO,MAAM,WAAW,yBAmDvB,CAAA"}
@@ -7,8 +7,13 @@ export type SnapStyles = {
7
7
  mid: AnimatedStyle<ViewStyle>;
8
8
  far: AnimatedStyle<ViewStyle>;
9
9
  };
10
- export declare const useCardSnapAnimation: () => {
10
+ type UseCardSnapAnimationParams = {
11
+ onComplete?: () => void;
12
+ };
13
+ export declare const useCardSnapAnimation: (params?: UseCardSnapAnimationParams) => {
11
14
  snapStyles: SnapStyles;
12
- trigger: (direction: SnapDirection) => void;
15
+ trigger: (direction: SnapDirection) => boolean;
16
+ resetBackingCards: () => void;
13
17
  };
18
+ export {};
14
19
  //# sourceMappingURL=useCardSnapAnimation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCardSnapAnimation.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useCardSnapAnimation.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAA;AAE5C,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC/B,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC9B,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC7B,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;CAC9B,CAAA;AAuBD,eAAO,MAAM,oBAAoB;gBAwGmB,UAAU;yBAtBhC,aAAa;CAuB1C,CAAA"}
1
+ {"version":3,"file":"useCardSnapAnimation.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useCardSnapAnimation.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAA;AAE5C,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC/B,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC9B,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC7B,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;CAC9B,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB,CAAA;AA0BD,eAAO,MAAM,oBAAoB,YAAY,0BAA0B;gBAqHnB,UAAU;yBAzBhC,aAAa;;CA0B1C,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { type SnapDirection } from './useCardSnapAnimation';
2
+ import { type AttemptStatus } from '../fluency.constants';
3
+ import type { FluencyCardDisplayContent } from '../components/fluency-solving/fluencySolving.types';
4
+ type StartCardExitParams = {
5
+ cardContent: FluencyCardDisplayContent;
6
+ direction: SnapDirection;
7
+ status: AttemptStatus;
8
+ };
9
+ export declare const useFluencyCardDeckAnimation: () => {
10
+ exitingCardContent: FluencyCardDisplayContent | null;
11
+ exitingCardStatus: AttemptStatus | null;
12
+ snapStyles: import("./useCardSnapAnimation").SnapStyles;
13
+ startCardExit: ({ cardContent, direction, status }: StartCardExitParams) => boolean;
14
+ };
15
+ export {};
16
+ //# sourceMappingURL=useFluencyCardDeckAnimation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFluencyCardDeckAnimation.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useFluencyCardDeckAnimation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAA;AAEnG,KAAK,mBAAmB,GAAG;IACzB,WAAW,EAAE,yBAAyB,CAAA;IACtC,SAAS,EAAE,aAAa,CAAA;IACxB,MAAM,EAAE,aAAa,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,2BAA2B;;;;wDAsBqB,mBAAmB;CAc/E,CAAA"}
@@ -1,6 +1,9 @@
1
1
  import type { ButtonColor } from '@magmamath/react-native-ui';
2
- import { FluencyMasteryLevel } from '../fluency.constants';
2
+ import { FluencyMasteryLevel, type FluencyMode } from '../fluency.constants';
3
3
  import type { LegendItem } from '../fluency.types';
4
+ type UseFluencySolvingPresetParams = {
5
+ mode?: FluencyMode;
6
+ };
4
7
  type UseFluencySolvingPresetResult = {
5
8
  symbol: string;
6
9
  label: string;
@@ -17,6 +20,6 @@ type UseFluencySolvingPresetResult = {
17
20
  items: LegendItem[];
18
21
  };
19
22
  };
20
- export declare const useFluencySolvingPreset: () => UseFluencySolvingPresetResult;
23
+ export declare const useFluencySolvingPreset: (params?: UseFluencySolvingPresetParams) => UseFluencySolvingPresetResult;
21
24
  export {};
22
25
  //# sourceMappingURL=useFluencySolvingPreset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFluencySolvingPreset.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useFluencySolvingPreset.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAwB,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAIlD,KAAK,6BAA6B,GAAG;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAA;QAC1C,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAA;QAC/C,MAAM,EAAE,WAAW,CAAA;KACpB,CAAA;IACD,MAAM,EAAE;QAAE,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,uBAAuB,QAAO,6BA4B1C,CAAA"}
1
+ {"version":3,"file":"useFluencySolvingPreset.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useFluencySolvingPreset.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAwB,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAIlD,KAAK,6BAA6B,GAAG;IACnC,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB,CAAA;AAED,KAAK,6BAA6B,GAAG;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAA;QAC1C,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAA;QAC/C,MAAM,EAAE,WAAW,CAAA;KACpB,CAAA;IACD,MAAM,EAAE;QAAE,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,uBAAuB,YACzB,6BAA6B,KACrC,6BAwCF,CAAA"}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ type Point = {
4
+ x: number;
5
+ y: number;
6
+ };
7
+ type GradientViewProps = {
8
+ colors: string[];
9
+ start?: Point;
10
+ end?: Point;
11
+ locations?: number[];
12
+ style?: StyleProp<ViewStyle>;
13
+ pointerEvents?: 'none' | 'box-none' | 'box-only' | 'auto';
14
+ children?: React.ReactNode;
15
+ };
16
+ export declare const GradientView: ({ colors, start, end, locations, style, pointerEvents, children, }: GradientViewProps) => React.JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=GradientView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GradientView.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/GradientView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExD,KAAK,KAAK,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAErC,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,GAAG,CAAC,EAAE,KAAK,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAA;IACzD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,CAAA;AAeD,eAAO,MAAM,YAAY,uEAQtB,iBAAiB,sBAyBnB,CAAA"}
@@ -1,11 +1,15 @@
1
1
  import React from 'react';
2
+ import { AttemptStatus, type FluencyMode } from '../../../fluency.constants';
2
3
  type EquationContentProps = {
3
4
  leftOperand: number;
4
5
  rightOperand: number;
6
+ mode?: FluencyMode;
5
7
  value?: string;
6
8
  readOnly?: boolean;
9
+ status?: AttemptStatus;
10
+ correctAnswer?: number;
7
11
  onChange?: (text: string) => void;
8
12
  };
9
- export declare const EquationContent: ({ leftOperand, rightOperand, value, readOnly, onChange, }: EquationContentProps) => React.JSX.Element;
13
+ export declare const EquationContent: ({ leftOperand, rightOperand, mode, value, readOnly, status, correctAnswer, onChange, }: EquationContentProps) => React.JSX.Element;
10
14
  export {};
11
15
  //# sourceMappingURL=EquationContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EquationContent.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/EquationContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAA;AAgBrC,KAAK,oBAAoB,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,eAAe,8DAMzB,oBAAoB,sBA6CtB,CAAA"}
1
+ {"version":3,"file":"EquationContent.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/EquationContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAA;AAYrC,OAAO,EAAE,aAAa,EAAoB,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAmB9F,KAAK,oBAAoB,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,eAAe,2FASzB,oBAAoB,sBA2CtB,CAAA"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import type { SnapStyles } from '../../../hooks/useCardSnapAnimation';
3
+ import { AttemptStatus } from '../../../fluency.constants';
4
+ import type { FluencyCardDisplayContent } from '../fluencySolving.types';
5
+ type FluencyCardDeckProps = {
6
+ currentCardContent: FluencyCardDisplayContent;
7
+ exitingCardContent: FluencyCardDisplayContent | null;
8
+ exitingCardStatus: AttemptStatus | null;
9
+ snapStyles: SnapStyles;
10
+ onAnswerChange: (text: string) => void;
11
+ };
12
+ export declare const FluencyCardDeck: ({ currentCardContent, exitingCardContent, exitingCardStatus, snapStyles, onAnswerChange, }: FluencyCardDeckProps) => React.JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=FluencyCardDeck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluencyCardDeck.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencyCardDeck.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AAOxE,KAAK,oBAAoB,GAAG;IAC1B,kBAAkB,EAAE,yBAAyB,CAAA;IAC7C,kBAAkB,EAAE,yBAAyB,GAAG,IAAI,CAAA;IACpD,iBAAiB,EAAE,aAAa,GAAG,IAAI,CAAA;IACvC,UAAU,EAAE,UAAU,CAAA;IACtB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC,CAAA;AAOD,eAAO,MAAM,eAAe,+FAMzB,oBAAoB,sBA6CtB,CAAA"}
@@ -1,8 +1,12 @@
1
1
  import React from 'react';
2
- import type { SnapStyles } from '../../../hooks/useCardSnapAnimation';
2
+ import type { FluencyCardDisplayContent } from '../fluencySolving.types';
3
+ import type { AttemptStatus } from '../../../fluency.constants';
3
4
  type FluencyEquationCardProps = {
4
- animationStyles: SnapStyles;
5
+ cardContent: FluencyCardDisplayContent;
6
+ readOnly?: boolean;
7
+ status?: AttemptStatus;
8
+ onAnswerChange?: (text: string) => void;
5
9
  };
6
- export declare const FluencyEquationCard: ({ animationStyles }: FluencyEquationCardProps) => React.JSX.Element;
10
+ export declare const FluencyEquationCard: ({ cardContent, readOnly, status, onAnswerChange, }: FluencyEquationCardProps) => React.JSX.Element;
7
11
  export {};
8
12
  //# sourceMappingURL=FluencyEquationCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FluencyEquationCard.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencyEquationCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAErE,KAAK,wBAAwB,GAAG;IAC9B,eAAe,EAAE,UAAU,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,mBAAmB,wBAAyB,wBAAwB,sBAiChF,CAAA"}
1
+ {"version":3,"file":"FluencyEquationCard.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencyEquationCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,yBAAyB,EAAe,MAAM,yBAAyB,CAAA;AACrF,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,4BAA4B,CAAA;AAQ5E,KAAK,wBAAwB,GAAG;IAC9B,WAAW,EAAE,yBAAyB,CAAA;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC,CAAA;AAaD,eAAO,MAAM,mBAAmB,uDAK7B,wBAAwB,sBAe1B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"FluencySolvingCard.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencySolvingCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,eAAO,MAAM,kBAAkB,yBA+B9B,CAAA"}
1
+ {"version":3,"file":"FluencySolvingCard.d.ts","sourceRoot":"","sources":["../../../../../../../../src/features/fluency/components/fluency-solving/components/FluencySolvingCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,eAAO,MAAM,kBAAkB,yBA+C9B,CAAA"}
@@ -12,6 +12,10 @@ export type SolvingFact = {
12
12
  attemptsCount: number;
13
13
  correctCount: number;
14
14
  };
15
+ export type FluencyCardDisplayContent = {
16
+ fact: SolvingFact | null;
17
+ answer: string;
18
+ };
15
19
  export type QuestionOutcome = {
16
20
  factId: string;
17
21
  status: AttemptStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"fluencySolving.types.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/fluency/components/fluency-solving/fluencySolving.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEzE,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,WAAW,CAAA;IACjB,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe,EAAE,MAAM,CAAA;IACvB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,aAAa,CAAA;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,EAAE,WAAW,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC,CAAA"}
1
+ {"version":3,"file":"fluencySolving.types.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/fluency/components/fluency-solving/fluencySolving.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEzE,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,WAAW,CAAA;IACjB,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe,EAAE,MAAM,CAAA;IACvB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,aAAa,CAAA;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,EAAE,WAAW,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"StartBanner.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/fluency/components/start-banner/StartBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AA8CzB,eAAO,MAAM,WAAW,yBA4CvB,CAAA"}
1
+ {"version":3,"file":"StartBanner.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/fluency/components/start-banner/StartBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAqBzB,eAAO,MAAM,WAAW,yBAmDvB,CAAA"}
@@ -7,8 +7,13 @@ export type SnapStyles = {
7
7
  mid: AnimatedStyle<ViewStyle>;
8
8
  far: AnimatedStyle<ViewStyle>;
9
9
  };
10
- export declare const useCardSnapAnimation: () => {
10
+ type UseCardSnapAnimationParams = {
11
+ onComplete?: () => void;
12
+ };
13
+ export declare const useCardSnapAnimation: (params?: UseCardSnapAnimationParams) => {
11
14
  snapStyles: SnapStyles;
12
- trigger: (direction: SnapDirection) => void;
15
+ trigger: (direction: SnapDirection) => boolean;
16
+ resetBackingCards: () => void;
13
17
  };
18
+ export {};
14
19
  //# sourceMappingURL=useCardSnapAnimation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCardSnapAnimation.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useCardSnapAnimation.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAA;AAE5C,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC/B,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC9B,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC7B,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;CAC9B,CAAA;AAuBD,eAAO,MAAM,oBAAoB;gBAwGmB,UAAU;yBAtBhC,aAAa;CAuB1C,CAAA"}
1
+ {"version":3,"file":"useCardSnapAnimation.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useCardSnapAnimation.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAA;AAE5C,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC/B,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC9B,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC7B,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;CAC9B,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB,CAAA;AA0BD,eAAO,MAAM,oBAAoB,YAAY,0BAA0B;gBAqHnB,UAAU;yBAzBhC,aAAa;;CA0B1C,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { type SnapDirection } from './useCardSnapAnimation';
2
+ import { type AttemptStatus } from '../fluency.constants';
3
+ import type { FluencyCardDisplayContent } from '../components/fluency-solving/fluencySolving.types';
4
+ type StartCardExitParams = {
5
+ cardContent: FluencyCardDisplayContent;
6
+ direction: SnapDirection;
7
+ status: AttemptStatus;
8
+ };
9
+ export declare const useFluencyCardDeckAnimation: () => {
10
+ exitingCardContent: FluencyCardDisplayContent | null;
11
+ exitingCardStatus: AttemptStatus | null;
12
+ snapStyles: import("./useCardSnapAnimation").SnapStyles;
13
+ startCardExit: ({ cardContent, direction, status }: StartCardExitParams) => boolean;
14
+ };
15
+ export {};
16
+ //# sourceMappingURL=useFluencyCardDeckAnimation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFluencyCardDeckAnimation.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useFluencyCardDeckAnimation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAA;AAEnG,KAAK,mBAAmB,GAAG;IACzB,WAAW,EAAE,yBAAyB,CAAA;IACtC,SAAS,EAAE,aAAa,CAAA;IACxB,MAAM,EAAE,aAAa,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,2BAA2B;;;;wDAsBqB,mBAAmB;CAc/E,CAAA"}
@@ -1,6 +1,9 @@
1
1
  import type { ButtonColor } from '@magmamath/react-native-ui';
2
- import { FluencyMasteryLevel } from '../fluency.constants';
2
+ import { FluencyMasteryLevel, type FluencyMode } from '../fluency.constants';
3
3
  import type { LegendItem } from '../fluency.types';
4
+ type UseFluencySolvingPresetParams = {
5
+ mode?: FluencyMode;
6
+ };
4
7
  type UseFluencySolvingPresetResult = {
5
8
  symbol: string;
6
9
  label: string;
@@ -17,6 +20,6 @@ type UseFluencySolvingPresetResult = {
17
20
  items: LegendItem[];
18
21
  };
19
22
  };
20
- export declare const useFluencySolvingPreset: () => UseFluencySolvingPresetResult;
23
+ export declare const useFluencySolvingPreset: (params?: UseFluencySolvingPresetParams) => UseFluencySolvingPresetResult;
21
24
  export {};
22
25
  //# sourceMappingURL=useFluencySolvingPreset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFluencySolvingPreset.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useFluencySolvingPreset.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAwB,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAIlD,KAAK,6BAA6B,GAAG;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAA;QAC1C,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAA;QAC/C,MAAM,EAAE,WAAW,CAAA;KACpB,CAAA;IACD,MAAM,EAAE;QAAE,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,uBAAuB,QAAO,6BA4B1C,CAAA"}
1
+ {"version":3,"file":"useFluencySolvingPreset.d.ts","sourceRoot":"","sources":["../../../../../../src/features/fluency/hooks/useFluencySolvingPreset.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAwB,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAIlD,KAAK,6BAA6B,GAAG;IACnC,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB,CAAA;AAED,KAAK,6BAA6B,GAAG;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAA;QAC1C,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAA;QAC/C,MAAM,EAAE,WAAW,CAAA;KACpB,CAAA;IACD,MAAM,EAAE;QAAE,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,uBAAuB,YACzB,6BAA6B,KACrC,6BAwCF,CAAA"}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ type Point = {
4
+ x: number;
5
+ y: number;
6
+ };
7
+ type GradientViewProps = {
8
+ colors: string[];
9
+ start?: Point;
10
+ end?: Point;
11
+ locations?: number[];
12
+ style?: StyleProp<ViewStyle>;
13
+ pointerEvents?: 'none' | 'box-none' | 'box-only' | 'auto';
14
+ children?: React.ReactNode;
15
+ };
16
+ export declare const GradientView: ({ colors, start, end, locations, style, pointerEvents, children, }: GradientViewProps) => React.JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=GradientView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GradientView.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/GradientView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExD,KAAK,KAAK,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAErC,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,GAAG,CAAC,EAAE,KAAK,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAA;IACzD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,CAAA;AAeD,eAAO,MAAM,YAAY,uEAQtB,iBAAiB,sBAyBnB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magmamath/students-features",
3
- "version": "1.3.26-rc.7",
3
+ "version": "1.3.26-rc.8",
4
4
  "description": "Magmamath features library",
5
5
  "source": "src/index.ts",
6
6
  "main": "src/index.ts",
@@ -10,35 +10,59 @@ import {
10
10
  import { useText } from '../../../../../i18n/i18n'
11
11
  import { useFluencySolvingPreset } from '../../../hooks/useFluencySolvingPreset'
12
12
  import { usePreventWebKeys } from '../../../hooks/usePreventWebKeys'
13
- import { MAX_INPUT_LENGTH } from '../../../fluency.constants'
13
+ import { AttemptStatus, MAX_INPUT_LENGTH, type FluencyMode } from '../../../fluency.constants'
14
14
 
15
15
  const CURSOR_MOVE_KEYS = ['ArrowLeft', 'ArrowRight', 'Home', 'End']
16
16
 
17
+ const STATUS_COLOR: Record<AttemptStatus, string> = {
18
+ [AttemptStatus.CORRECT]: COLORS.PRIMARY_GREEN,
19
+ [AttemptStatus.INCORRECT]: COLORS.PRIMARY_RED,
20
+ [AttemptStatus.SKIPPED]: COLORS.NEUTRAL_7,
21
+ }
22
+
23
+ const getLabelText = (status: AttemptStatus | undefined, defaultText: string, correctAnswer?: number): string => {
24
+ switch (status) {
25
+ case AttemptStatus.CORRECT: return 'Correct!'
26
+ case AttemptStatus.INCORRECT: return `INCORRECT — ANSWER: ${correctAnswer ?? ''}`
27
+ case AttemptStatus.SKIPPED: return 'Skipped'
28
+ default: return defaultText
29
+ }
30
+ }
31
+
17
32
  type EquationContentProps = {
18
33
  leftOperand: number
19
34
  rightOperand: number
35
+ mode?: FluencyMode
20
36
  value?: string
21
37
  readOnly?: boolean
38
+ status?: AttemptStatus
39
+ correctAnswer?: number
22
40
  onChange?: (text: string) => void
23
41
  }
24
42
 
25
43
  export const EquationContent = ({
26
44
  leftOperand,
27
45
  rightOperand,
46
+ mode,
28
47
  value = '',
29
48
  readOnly = false,
49
+ status,
50
+ correctAnswer,
30
51
  onChange,
31
52
  }: EquationContentProps) => {
32
53
  const t = useText()
33
- const modePreset = useFluencySolvingPreset()
54
+ const modePreset = useFluencySolvingPreset({ mode })
55
+ const labelColor = status ? STATUS_COLOR[status] : COLORS.NEUTRAL_7
56
+ const labelText = getLabelText(status, t('student.fluency.typeYourAnswer'), correctAnswer)
57
+ const answerAreaColor = status === AttemptStatus.INCORRECT ? COLORS.PRIMARY_RED : modePreset.colors.accent
34
58
 
35
59
  const inputRef = useRef<TextInput>(null)
36
60
  usePreventWebKeys({ ref: inputRef, keys: CURSOR_MOVE_KEYS, enabled: !readOnly })
37
61
 
38
62
  return (
39
63
  <>
40
- <Typography variant={HeadingVariants.H9} style={styles.cardLabel}>
41
- {t('student.fluency.typeYourAnswer')}
64
+ <Typography variant={HeadingVariants.H9} style={[styles.cardLabel, { color: labelColor }]}>
65
+ {labelText}
42
66
  </Typography>
43
67
  <View style={styles.equationRow}>
44
68
  <Typography style={styles.number}>{leftOperand}</Typography>
@@ -50,25 +74,20 @@ export const EquationContent = ({
50
74
  <View
51
75
  style={[
52
76
  styles.answerBox,
53
- value.length > 0 && { borderBottomColor: modePreset.colors.accent },
77
+ value.length > 0 && { borderBottomColor: answerAreaColor },
54
78
  ]}
55
79
  >
56
- {!readOnly ? (
57
- <TextInput
58
- ref={inputRef}
59
- value={value}
60
- onChangeText={onChange}
61
- keyboardType="number-pad"
62
- maxLength={MAX_INPUT_LENGTH}
63
- selection={{ start: value.length, end: value.length }}
64
- style={[styles.number, styles.answerInput, { color: modePreset.colors.accent }]}
65
- autoFocus
66
- />
67
- ) : (
68
- <Typography
69
- style={[styles.number, styles.answerText, { color: modePreset.colors.accent }]}
70
- />
71
- )}
80
+ <TextInput
81
+ ref={readOnly ? undefined : inputRef}
82
+ value={value}
83
+ onChangeText={readOnly ? undefined : onChange}
84
+ editable={!readOnly}
85
+ keyboardType="number-pad"
86
+ maxLength={MAX_INPUT_LENGTH}
87
+ selection={readOnly ? undefined : { start: value.length, end: value.length }}
88
+ style={[styles.number, styles.answerInput, { color: answerAreaColor }]}
89
+ autoFocus={!readOnly}
90
+ />
72
91
  </View>
73
92
  </View>
74
93
  </>
@@ -102,16 +121,13 @@ const styles = StyleSheet.create({
102
121
  fontFamily: FONT_FAMILY.buenosAires,
103
122
  },
104
123
  answerBox: {
105
- width: 130,
124
+ width: 135,
106
125
  height: 44,
107
126
  marginBottom: -SPACING[800],
108
127
  alignItems: 'center',
109
128
  borderBottomWidth: 8,
110
129
  borderBottomColor: COLORS.NEUTRAL_10,
111
130
  },
112
- answerText: {
113
- position: 'absolute',
114
- },
115
131
  answerInput: {
116
132
  position: 'absolute',
117
133
  bottom: -SPACING[400],