@magmamath/students-features 0.5.6 → 0.5.7-rc-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/commonjs/features/celebrations/components/Spark.js +11 -8
  2. package/dist/commonjs/features/celebrations/components/Spark.js.map +1 -1
  3. package/dist/commonjs/features/endOfAssignment/components/Modal/assets/SunrisingIcon.js +6 -4
  4. package/dist/commonjs/features/endOfAssignment/components/Modal/assets/SunrisingIcon.js.map +1 -1
  5. package/dist/commonjs/features/endOfAssignment/components/Modal/assets/TrophyIcon.js +6 -4
  6. package/dist/commonjs/features/endOfAssignment/components/Modal/assets/TrophyIcon.js.map +1 -1
  7. package/dist/commonjs/features/endOfAssignment/components/NoAnswer/NoAnswer.js +21 -42
  8. package/dist/commonjs/features/endOfAssignment/components/NoAnswer/NoAnswer.js.map +1 -1
  9. package/dist/commonjs/features/problemSelector/components/ProblemSelector.js +43 -0
  10. package/dist/commonjs/features/problemSelector/components/ProblemSelector.js.map +1 -0
  11. package/dist/commonjs/features/problemSelector/components/ProblemSelectorButton.js +68 -0
  12. package/dist/commonjs/features/problemSelector/components/ProblemSelectorButton.js.map +1 -0
  13. package/dist/commonjs/features/problemSelector/constants.js +220 -0
  14. package/dist/commonjs/features/problemSelector/constants.js.map +1 -0
  15. package/dist/commonjs/features/problemSelector/index.js +20 -0
  16. package/dist/commonjs/features/problemSelector/index.js.map +1 -0
  17. package/dist/commonjs/features/problemSelector/types.js +6 -0
  18. package/dist/commonjs/features/problemSelector/types.js.map +1 -0
  19. package/dist/commonjs/index.js +12 -0
  20. package/dist/commonjs/index.js.map +1 -1
  21. package/dist/commonjs/shared/icons/LockIcon.js +31 -0
  22. package/dist/commonjs/shared/icons/LockIcon.js.map +1 -0
  23. package/dist/commonjs/shared/icons/Pi.js +3 -1
  24. package/dist/commonjs/shared/icons/Pi.js.map +1 -1
  25. package/dist/commonjs/shared/icons/Valentine.js +3 -1
  26. package/dist/commonjs/shared/icons/Valentine.js.map +1 -1
  27. package/dist/commonjs/shared/icons/Winter.js +3 -1
  28. package/dist/commonjs/shared/icons/Winter.js.map +1 -1
  29. package/dist/module/features/celebrations/components/Spark.js +11 -8
  30. package/dist/module/features/celebrations/components/Spark.js.map +1 -1
  31. package/dist/module/features/endOfAssignment/components/Modal/assets/SunrisingIcon.js +6 -4
  32. package/dist/module/features/endOfAssignment/components/Modal/assets/SunrisingIcon.js.map +1 -1
  33. package/dist/module/features/endOfAssignment/components/Modal/assets/TrophyIcon.js +6 -4
  34. package/dist/module/features/endOfAssignment/components/Modal/assets/TrophyIcon.js.map +1 -1
  35. package/dist/module/features/endOfAssignment/components/NoAnswer/NoAnswer.js +22 -43
  36. package/dist/module/features/endOfAssignment/components/NoAnswer/NoAnswer.js.map +1 -1
  37. package/dist/module/features/problemSelector/components/ProblemSelector.js +36 -0
  38. package/dist/module/features/problemSelector/components/ProblemSelector.js.map +1 -0
  39. package/dist/module/features/problemSelector/components/ProblemSelectorButton.js +62 -0
  40. package/dist/module/features/problemSelector/components/ProblemSelectorButton.js.map +1 -0
  41. package/dist/module/features/problemSelector/constants.js +216 -0
  42. package/dist/module/features/problemSelector/constants.js.map +1 -0
  43. package/dist/module/features/problemSelector/index.js +5 -0
  44. package/dist/module/features/problemSelector/index.js.map +1 -0
  45. package/dist/module/features/problemSelector/types.js +4 -0
  46. package/dist/module/features/problemSelector/types.js.map +1 -0
  47. package/dist/module/index.js +1 -0
  48. package/dist/module/index.js.map +1 -1
  49. package/dist/module/shared/icons/LockIcon.js +23 -0
  50. package/dist/module/shared/icons/LockIcon.js.map +1 -0
  51. package/dist/module/shared/icons/Pi.js +3 -1
  52. package/dist/module/shared/icons/Pi.js.map +1 -1
  53. package/dist/module/shared/icons/Valentine.js +3 -1
  54. package/dist/module/shared/icons/Valentine.js.map +1 -1
  55. package/dist/module/shared/icons/Winter.js +3 -1
  56. package/dist/module/shared/icons/Winter.js.map +1 -1
  57. package/dist/typescript/commonjs/features/celebrations/components/Spark.d.ts.map +1 -1
  58. package/dist/typescript/commonjs/features/endOfAssignment/components/Modal/assets/SunrisingIcon.d.ts +1 -1
  59. package/dist/typescript/commonjs/features/endOfAssignment/components/Modal/assets/SunrisingIcon.d.ts.map +1 -1
  60. package/dist/typescript/commonjs/features/endOfAssignment/components/Modal/assets/TrophyIcon.d.ts +1 -1
  61. package/dist/typescript/commonjs/features/endOfAssignment/components/Modal/assets/TrophyIcon.d.ts.map +1 -1
  62. package/dist/typescript/commonjs/features/endOfAssignment/components/NoAnswer/NoAnswer.d.ts.map +1 -1
  63. package/dist/typescript/commonjs/features/problemSelector/components/ProblemSelector.d.ts +8 -0
  64. package/dist/typescript/commonjs/features/problemSelector/components/ProblemSelector.d.ts.map +1 -0
  65. package/dist/typescript/commonjs/features/problemSelector/components/ProblemSelectorButton.d.ts +4 -0
  66. package/dist/typescript/commonjs/features/problemSelector/components/ProblemSelectorButton.d.ts.map +1 -0
  67. package/dist/typescript/commonjs/features/problemSelector/constants.d.ts +22 -0
  68. package/dist/typescript/commonjs/features/problemSelector/constants.d.ts.map +1 -0
  69. package/dist/typescript/commonjs/features/problemSelector/index.d.ts +4 -0
  70. package/dist/typescript/commonjs/features/problemSelector/index.d.ts.map +1 -0
  71. package/dist/typescript/commonjs/features/problemSelector/types.d.ts +11 -0
  72. package/dist/typescript/commonjs/features/problemSelector/types.d.ts.map +1 -0
  73. package/dist/typescript/commonjs/index.d.ts +1 -0
  74. package/dist/typescript/commonjs/index.d.ts.map +1 -1
  75. package/dist/typescript/commonjs/shared/icons/LockIcon.d.ts +4 -0
  76. package/dist/typescript/commonjs/shared/icons/LockIcon.d.ts.map +1 -0
  77. package/dist/typescript/commonjs/shared/icons/Pi.d.ts.map +1 -1
  78. package/dist/typescript/commonjs/shared/icons/Valentine.d.ts.map +1 -1
  79. package/dist/typescript/commonjs/shared/icons/Winter.d.ts.map +1 -1
  80. package/dist/typescript/module/features/celebrations/components/Spark.d.ts.map +1 -1
  81. package/dist/typescript/module/features/endOfAssignment/components/Modal/assets/SunrisingIcon.d.ts +1 -1
  82. package/dist/typescript/module/features/endOfAssignment/components/Modal/assets/SunrisingIcon.d.ts.map +1 -1
  83. package/dist/typescript/module/features/endOfAssignment/components/Modal/assets/TrophyIcon.d.ts +1 -1
  84. package/dist/typescript/module/features/endOfAssignment/components/Modal/assets/TrophyIcon.d.ts.map +1 -1
  85. package/dist/typescript/module/features/endOfAssignment/components/NoAnswer/NoAnswer.d.ts.map +1 -1
  86. package/dist/typescript/module/features/problemSelector/components/ProblemSelector.d.ts +8 -0
  87. package/dist/typescript/module/features/problemSelector/components/ProblemSelector.d.ts.map +1 -0
  88. package/dist/typescript/module/features/problemSelector/components/ProblemSelectorButton.d.ts +4 -0
  89. package/dist/typescript/module/features/problemSelector/components/ProblemSelectorButton.d.ts.map +1 -0
  90. package/dist/typescript/module/features/problemSelector/constants.d.ts +22 -0
  91. package/dist/typescript/module/features/problemSelector/constants.d.ts.map +1 -0
  92. package/dist/typescript/module/features/problemSelector/index.d.ts +4 -0
  93. package/dist/typescript/module/features/problemSelector/index.d.ts.map +1 -0
  94. package/dist/typescript/module/features/problemSelector/types.d.ts +11 -0
  95. package/dist/typescript/module/features/problemSelector/types.d.ts.map +1 -0
  96. package/dist/typescript/module/index.d.ts +1 -0
  97. package/dist/typescript/module/index.d.ts.map +1 -1
  98. package/dist/typescript/module/shared/icons/LockIcon.d.ts +4 -0
  99. package/dist/typescript/module/shared/icons/LockIcon.d.ts.map +1 -0
  100. package/dist/typescript/module/shared/icons/Pi.d.ts.map +1 -1
  101. package/dist/typescript/module/shared/icons/Valentine.d.ts.map +1 -1
  102. package/dist/typescript/module/shared/icons/Winter.d.ts.map +1 -1
  103. package/package.json +2 -2
  104. package/src/features/celebrations/components/Spark.tsx +17 -13
  105. package/src/features/endOfAssignment/components/Modal/assets/SunrisingIcon.tsx +76 -75
  106. package/src/features/endOfAssignment/components/Modal/assets/TrophyIcon.tsx +26 -25
  107. package/src/features/endOfAssignment/components/NoAnswer/NoAnswer.tsx +25 -52
  108. package/src/features/problemSelector/components/ProblemSelector.tsx +37 -0
  109. package/src/features/problemSelector/components/ProblemSelectorButton.tsx +77 -0
  110. package/src/features/problemSelector/constants.ts +216 -0
  111. package/src/features/problemSelector/index.ts +3 -0
  112. package/src/features/problemSelector/types.ts +13 -0
  113. package/src/index.ts +1 -0
  114. package/src/shared/icons/LockIcon.tsx +16 -0
  115. package/src/shared/icons/Pi.tsx +4 -1
  116. package/src/shared/icons/Valentine.tsx +4 -1
  117. package/src/shared/icons/Winter.tsx +5 -1
@@ -0,0 +1,11 @@
1
+ import { PROBLEM_SELECTOR_BUTTON_STATE } from './constants';
2
+ export type ProblemSelectorButtonState = (typeof PROBLEM_SELECTOR_BUTTON_STATE)[keyof typeof PROBLEM_SELECTOR_BUTTON_STATE];
3
+ export type ProblemSelectorButtonProps = {
4
+ key: string;
5
+ text: string;
6
+ state: ProblemSelectorButtonState;
7
+ locked: boolean;
8
+ onClick: () => void;
9
+ badgeValue?: number;
10
+ };
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/features/problemSelector/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAE3D,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,OAAO,6BAA6B,CAAC,CAAA;AAEpF,MAAM,MAAM,0BAA0B,GAAG;IACvC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,0BAA0B,CAAA;IACjC,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA"}
@@ -4,4 +4,5 @@ export * from './features/chatbot';
4
4
  export * from './features/feedback';
5
5
  export * from './features/celebrations';
6
6
  export * from './features/endOfAssignment';
7
+ export * from './features/problemSelector';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { IconProps } from './icon.types';
3
+ export declare const LockIcon: ({ width, height, color }: IconProps) => React.JSX.Element;
4
+ //# sourceMappingURL=LockIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LockIcon.d.ts","sourceRoot":"","sources":["../../../../../src/shared/icons/LockIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,eAAO,MAAM,QAAQ,6BAA2D,SAAS,sBASxF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Pi.d.ts","sourceRoot":"","sources":["../../../../../src/shared/icons/Pi.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAU,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAE9D,iBAAS,EAAE,CAAC,EAAE,IAAS,EAAE,KAAwB,EAAE,EAAE,SAAS,qBAS7D;AAED,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"Pi.d.ts","sourceRoot":"","sources":["../../../../../src/shared/icons/Pi.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAU,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAE9D,iBAAS,EAAE,CAAC,EAAE,IAAS,EAAE,KAAwB,EAAE,EAAE,SAAS,qBAY7D;AAED,eAAe,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Valentine.d.ts","sourceRoot":"","sources":["../../../../../src/shared/icons/Valentine.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAU,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAE9D,iBAAS,SAAS,CAAC,EAAE,IAAS,EAAE,KAAwB,EAAE,EAAE,SAAS,qBASpE;AAED,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"Valentine.d.ts","sourceRoot":"","sources":["../../../../../src/shared/icons/Valentine.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAU,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAE9D,iBAAS,SAAS,CAAC,EAAE,IAAS,EAAE,KAAwB,EAAE,EAAE,SAAS,qBAYpE;AAED,eAAe,SAAS,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Winter.d.ts","sourceRoot":"","sources":["../../../../../src/shared/icons/Winter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAU,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAE9D,iBAAS,MAAM,CAAC,EAAE,IAAS,EAAE,KAAwB,EAAE,EAAE,SAAS,qBAWjE;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"Winter.d.ts","sourceRoot":"","sources":["../../../../../src/shared/icons/Winter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAU,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAE9D,iBAAS,MAAM,CAAC,EAAE,IAAS,EAAE,KAAwB,EAAE,EAAE,SAAS,qBAejE;AAED,eAAe,MAAM,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magmamath/students-features",
3
- "version": "0.5.6",
3
+ "version": "0.5.7-rc-0",
4
4
  "description": "Magmamath features library",
5
5
  "source": "src/index.ts",
6
6
  "main": "src/index.ts",
@@ -29,7 +29,7 @@
29
29
  "react-native-svg": "^15.10.0"
30
30
  },
31
31
  "devDependencies": {
32
- "@magmamath/react-native-ui": "0.4.0",
32
+ "@magmamath/react-native-ui": "0.4.17",
33
33
  "@react-native/eslint-config": "^0.73.1",
34
34
  "@release-it/conventional-changelog": "^9.0.2",
35
35
  "@types/jest": "^29.5.5",
@@ -1,14 +1,18 @@
1
- import { IconProps } from '@magmamath/react-native-ui';
2
- import React from 'react';
3
- import { View } from 'react-native';
1
+ import { IconProps } from '@magmamath/react-native-ui'
2
+ import React from 'react'
3
+ import { View } from 'react-native'
4
4
 
5
- export const Spark = ({ size = 10, color }: IconProps) => (
6
- <View
7
- style={{
8
- width: size,
9
- height: size,
10
- backgroundColor: color,
11
- borderRadius: size / 2,
12
- }}
13
- />
14
- );
5
+ export const Spark = ({ size = 10, color }: IconProps) => {
6
+ const actualSize = typeof size === 'number' ? size : 0
7
+
8
+ return (
9
+ <View
10
+ style={{
11
+ width: actualSize,
12
+ height: actualSize,
13
+ backgroundColor: color,
14
+ borderRadius: actualSize / 2,
15
+ }}
16
+ />
17
+ )
18
+ }
@@ -2,193 +2,194 @@ import * as React from 'react'
2
2
  import { IconProps } from '@magmamath/react-native-ui'
3
3
  import Svg, { G, Path, Defs, LinearGradient, Stop } from 'react-native-svg'
4
4
 
5
- export const SunrisingIcon = (props: IconProps) => {
6
- const height = (props.size ?? 0) * 0.606
5
+ export const SunrisingIcon = ({ size }: IconProps) => {
6
+ const actualSize = typeof size === 'number' ? size : 0
7
+ const height = actualSize * 0.606
7
8
 
8
9
  return (
9
- <Svg width={props.size} height={height} viewBox='0 0 909 551' fill='none' {...props}>
10
+ <Svg width={size} height={height} viewBox="0 0 909 551" fill="none">
10
11
  <G opacity={0.1}>
11
12
  <Path
12
- d='M164.04-598.854a893.984 893.984 0 01222.319 28.085L164.04 295.106v-893.96z'
13
- fill='url(#paint0_linear_3505_1308)'
13
+ d="M164.04-598.854a893.984 893.984 0 01222.319 28.085L164.04 295.106v-893.96z"
14
+ fill="url(#paint0_linear_3505_1308)"
14
15
  />
15
16
  <Path
16
- d='M-282.94-479.086a893.954 893.954 0 01206.577-86.837L164.04 295.106l-446.98-774.192z'
17
- fill='url(#paint1_linear_3505_1308)'
17
+ d="M-282.94-479.086a893.954 893.954 0 01206.577-86.837L164.04 295.106l-446.98-774.192z"
18
+ fill="url(#paint1_linear_3505_1308)"
18
19
  />
19
20
  <Path
20
- d='M-610.152-151.874A893.997 893.997 0 01-474.67-330.365l638.71 625.471-774.192-446.98z'
21
- fill='url(#paint2_linear_3505_1308)'
21
+ d="M-610.152-151.874A893.997 893.997 0 01-474.67-330.365l638.71 625.471-774.192-446.98z"
22
+ fill="url(#paint2_linear_3505_1308)"
22
23
  />
23
24
  <Path
24
- d='M-729.92 295.106a893.938 893.938 0 0128.086-222.319L164.04 295.106h-893.96z'
25
- fill='url(#paint3_linear_3505_1308)'
25
+ d="M-729.92 295.106a893.938 893.938 0 0128.086-222.319L164.04 295.106h-893.96z"
26
+ fill="url(#paint3_linear_3505_1308)"
26
27
  />
27
28
  <Path
28
- d='M-610.152 742.086a893.994 893.994 0 01-86.837-206.577L164.04 295.106l-774.192 446.98z'
29
- fill='url(#paint4_linear_3505_1308)'
29
+ d="M-610.152 742.086a893.994 893.994 0 01-86.837-206.577L164.04 295.106l-774.192 446.98z"
30
+ fill="url(#paint4_linear_3505_1308)"
30
31
  />
31
32
  <Path
32
- d='M-282.94 1069.3a894.157 894.157 0 01-178.491-135.484l625.471-638.71-446.98 774.194z'
33
- fill='url(#paint5_linear_3505_1308)'
33
+ d="M-282.94 1069.3a894.157 894.157 0 01-178.491-135.484l625.471-638.71-446.98 774.194z"
34
+ fill="url(#paint5_linear_3505_1308)"
34
35
  />
35
36
  <Path
36
- d='M611.02-479.086a893.96 893.96 0 01178.491 135.482L164.04 295.106l446.98-774.192z'
37
- fill='url(#paint6_linear_3505_1308)'
37
+ d="M611.02-479.086a893.96 893.96 0 01178.491 135.482L164.04 295.106l446.98-774.192z"
38
+ fill="url(#paint6_linear_3505_1308)"
38
39
  />
39
40
  <Path
40
- d='M938.232-151.874a894.096 894.096 0 0186.838 206.577L164.04 295.106l774.192-446.98z'
41
- fill='url(#paint7_linear_3505_1308)'
41
+ d="M938.232-151.874a894.096 894.096 0 0186.838 206.577L164.04 295.106l774.192-446.98z"
42
+ fill="url(#paint7_linear_3505_1308)"
42
43
  />
43
44
  <Path
44
- d='M1058 295.106c0 74.991-9.44 149.684-28.09 222.319L164.04 295.106H1058z'
45
- fill='url(#paint8_linear_3505_1308)'
45
+ d="M1058 295.106c0 74.991-9.44 149.684-28.09 222.319L164.04 295.106H1058z"
46
+ fill="url(#paint8_linear_3505_1308)"
46
47
  />
47
48
  <Path
48
- d='M938.232 742.086A893.96 893.96 0 01802.75 920.577L164.04 295.106l774.192 446.98z'
49
- fill='url(#paint9_linear_3505_1308)'
49
+ d="M938.232 742.086A893.96 893.96 0 01802.75 920.577L164.04 295.106l774.192 446.98z"
50
+ fill="url(#paint9_linear_3505_1308)"
50
51
  />
51
52
  <Path
52
- d='M611.02 1069.3a893.885 893.885 0 01-206.577 86.83L164.04 295.106 611.02 1069.3z'
53
- fill='url(#paint10_linear_3505_1308)'
53
+ d="M611.02 1069.3a893.885 893.885 0 01-206.577 86.83L164.04 295.106 611.02 1069.3z"
54
+ fill="url(#paint10_linear_3505_1308)"
54
55
  />
55
56
  <Path
56
- d='M164.04 1189.07a893.941 893.941 0 01-222.319-28.09L164.04 295.106v893.964z'
57
- fill='url(#paint11_linear_3505_1308)'
57
+ d="M164.04 1189.07a893.941 893.941 0 01-222.319-28.09L164.04 295.106v893.964z"
58
+ fill="url(#paint11_linear_3505_1308)"
58
59
  />
59
60
  </G>
60
61
  <Defs>
61
62
  <LinearGradient
62
- id='paint0_linear_3505_1308'
63
+ id="paint0_linear_3505_1308"
63
64
  x1={164.04}
64
65
  y1={383.036}
65
66
  x2={930.076}
66
67
  y2={383.036}
67
- gradientUnits='userSpaceOnUse'
68
+ gradientUnits="userSpaceOnUse"
68
69
  >
69
- <Stop stopColor='#FF245F' />
70
- <Stop offset={1} stopColor='#FF7917' stopOpacity={0} />
70
+ <Stop stopColor="#FF245F" />
71
+ <Stop offset={1} stopColor="#FF7917" stopOpacity={0} />
71
72
  </LinearGradient>
72
73
  <LinearGradient
73
- id='paint1_linear_3505_1308'
74
+ id="paint1_linear_3505_1308"
74
75
  x1={164.04}
75
76
  y1={383.036}
76
77
  x2={930.076}
77
78
  y2={383.036}
78
- gradientUnits='userSpaceOnUse'
79
+ gradientUnits="userSpaceOnUse"
79
80
  >
80
- <Stop stopColor='#FF245F' />
81
- <Stop offset={1} stopColor='#FF7917' stopOpacity={0} />
81
+ <Stop stopColor="#FF245F" />
82
+ <Stop offset={1} stopColor="#FF7917" stopOpacity={0} />
82
83
  </LinearGradient>
83
84
  <LinearGradient
84
- id='paint2_linear_3505_1308'
85
+ id="paint2_linear_3505_1308"
85
86
  x1={164.04}
86
87
  y1={383.036}
87
88
  x2={930.076}
88
89
  y2={383.036}
89
- gradientUnits='userSpaceOnUse'
90
+ gradientUnits="userSpaceOnUse"
90
91
  >
91
- <Stop stopColor='#FF245F' />
92
- <Stop offset={1} stopColor='#FF7917' stopOpacity={0} />
92
+ <Stop stopColor="#FF245F" />
93
+ <Stop offset={1} stopColor="#FF7917" stopOpacity={0} />
93
94
  </LinearGradient>
94
95
  <LinearGradient
95
- id='paint3_linear_3505_1308'
96
+ id="paint3_linear_3505_1308"
96
97
  x1={164.04}
97
98
  y1={383.036}
98
99
  x2={930.076}
99
100
  y2={383.036}
100
- gradientUnits='userSpaceOnUse'
101
+ gradientUnits="userSpaceOnUse"
101
102
  >
102
- <Stop stopColor='#FF245F' />
103
- <Stop offset={1} stopColor='#FF7917' stopOpacity={0} />
103
+ <Stop stopColor="#FF245F" />
104
+ <Stop offset={1} stopColor="#FF7917" stopOpacity={0} />
104
105
  </LinearGradient>
105
106
  <LinearGradient
106
- id='paint4_linear_3505_1308'
107
+ id="paint4_linear_3505_1308"
107
108
  x1={164.04}
108
109
  y1={383.036}
109
110
  x2={930.076}
110
111
  y2={383.036}
111
- gradientUnits='userSpaceOnUse'
112
+ gradientUnits="userSpaceOnUse"
112
113
  >
113
- <Stop stopColor='#FF245F' />
114
- <Stop offset={1} stopColor='#FF7917' stopOpacity={0} />
114
+ <Stop stopColor="#FF245F" />
115
+ <Stop offset={1} stopColor="#FF7917" stopOpacity={0} />
115
116
  </LinearGradient>
116
117
  <LinearGradient
117
- id='paint5_linear_3505_1308'
118
+ id="paint5_linear_3505_1308"
118
119
  x1={164.04}
119
120
  y1={383.036}
120
121
  x2={930.076}
121
122
  y2={383.036}
122
- gradientUnits='userSpaceOnUse'
123
+ gradientUnits="userSpaceOnUse"
123
124
  >
124
- <Stop stopColor='#FF245F' />
125
- <Stop offset={1} stopColor='#FF7917' stopOpacity={0} />
125
+ <Stop stopColor="#FF245F" />
126
+ <Stop offset={1} stopColor="#FF7917" stopOpacity={0} />
126
127
  </LinearGradient>
127
128
  <LinearGradient
128
- id='paint6_linear_3505_1308'
129
+ id="paint6_linear_3505_1308"
129
130
  x1={164.04}
130
131
  y1={383.036}
131
132
  x2={930.076}
132
133
  y2={383.036}
133
- gradientUnits='userSpaceOnUse'
134
+ gradientUnits="userSpaceOnUse"
134
135
  >
135
- <Stop stopColor='#FF245F' />
136
- <Stop offset={1} stopColor='#FF7917' stopOpacity={0} />
136
+ <Stop stopColor="#FF245F" />
137
+ <Stop offset={1} stopColor="#FF7917" stopOpacity={0} />
137
138
  </LinearGradient>
138
139
  <LinearGradient
139
- id='paint7_linear_3505_1308'
140
+ id="paint7_linear_3505_1308"
140
141
  x1={164.04}
141
142
  y1={383.036}
142
143
  x2={930.076}
143
144
  y2={383.036}
144
- gradientUnits='userSpaceOnUse'
145
+ gradientUnits="userSpaceOnUse"
145
146
  >
146
- <Stop stopColor='#FF245F' />
147
- <Stop offset={1} stopColor='#FF7917' stopOpacity={0} />
147
+ <Stop stopColor="#FF245F" />
148
+ <Stop offset={1} stopColor="#FF7917" stopOpacity={0} />
148
149
  </LinearGradient>
149
150
  <LinearGradient
150
- id='paint8_linear_3505_1308'
151
+ id="paint8_linear_3505_1308"
151
152
  x1={164.04}
152
153
  y1={383.036}
153
154
  x2={930.076}
154
155
  y2={383.036}
155
- gradientUnits='userSpaceOnUse'
156
+ gradientUnits="userSpaceOnUse"
156
157
  >
157
- <Stop stopColor='#FF245F' />
158
- <Stop offset={1} stopColor='#FF7917' stopOpacity={0} />
158
+ <Stop stopColor="#FF245F" />
159
+ <Stop offset={1} stopColor="#FF7917" stopOpacity={0} />
159
160
  </LinearGradient>
160
161
  <LinearGradient
161
- id='paint9_linear_3505_1308'
162
+ id="paint9_linear_3505_1308"
162
163
  x1={164.04}
163
164
  y1={383.036}
164
165
  x2={930.076}
165
166
  y2={383.036}
166
- gradientUnits='userSpaceOnUse'
167
+ gradientUnits="userSpaceOnUse"
167
168
  >
168
- <Stop stopColor='#FF245F' />
169
- <Stop offset={1} stopColor='#FF7917' stopOpacity={0} />
169
+ <Stop stopColor="#FF245F" />
170
+ <Stop offset={1} stopColor="#FF7917" stopOpacity={0} />
170
171
  </LinearGradient>
171
172
  <LinearGradient
172
- id='paint10_linear_3505_1308'
173
+ id="paint10_linear_3505_1308"
173
174
  x1={164.04}
174
175
  y1={383.036}
175
176
  x2={930.076}
176
177
  y2={383.036}
177
- gradientUnits='userSpaceOnUse'
178
+ gradientUnits="userSpaceOnUse"
178
179
  >
179
- <Stop stopColor='#FF245F' />
180
- <Stop offset={1} stopColor='#FF7917' stopOpacity={0} />
180
+ <Stop stopColor="#FF245F" />
181
+ <Stop offset={1} stopColor="#FF7917" stopOpacity={0} />
181
182
  </LinearGradient>
182
183
  <LinearGradient
183
- id='paint11_linear_3505_1308'
184
+ id="paint11_linear_3505_1308"
184
185
  x1={164.04}
185
186
  y1={383.036}
186
187
  x2={930.076}
187
188
  y2={383.036}
188
- gradientUnits='userSpaceOnUse'
189
+ gradientUnits="userSpaceOnUse"
189
190
  >
190
- <Stop stopColor='#FF245F' />
191
- <Stop offset={1} stopColor='#FF7917' stopOpacity={0} />
191
+ <Stop stopColor="#FF245F" />
192
+ <Stop offset={1} stopColor="#FF7917" stopOpacity={0} />
192
193
  </LinearGradient>
193
194
  </Defs>
194
195
  </Svg>
@@ -2,60 +2,61 @@ import { IconProps } from '@magmamath/react-native-ui'
2
2
  import * as React from 'react'
3
3
  import Svg, { Path } from 'react-native-svg'
4
4
 
5
- export const TrophyIcon = (props: IconProps) => {
6
- const height = (props.size ?? 0) * 0.982
5
+ export const TrophyIcon = ({ size }: IconProps) => {
6
+ const actualSize = typeof size === 'number' ? size : 0
7
+ const height = actualSize * 0.982
7
8
 
8
9
  return (
9
- <Svg width={props.size} height={height} viewBox='0 0 466 458' fill='none' {...props}>
10
+ <Svg width={size} height={height} viewBox="0 0 466 458" fill="none">
10
11
  <Path
11
- d='M258.454 244.45l-5.731 32.767 16.384 2.86c8.047 1.407 15.796 2.106 23.222 2.106 15.697.011 29.985-3.137 42.766-9.389 6.728-3.292 13.025-7.438 18.9-12.449 44.672-38.12 50.247-115.859 49.604-158.813-.288-18.467-9.466-35.848-24.575-46.49-9.355-6.606-20.23-10.209-31.348-10.575a57.996 57.996 0 00-17.935 2.206c-14.355 4.09-26.36 13.38-33.875 25.994l-32.379-14.332L250.03 88.75l39.162 17.326c6.274 2.771 13.247 2.916 19.632.388 6.374-2.516 11.373-7.382 14.055-13.7a24.56 24.56 0 0115.974-14.112c2.993-.853 6.052-1.13 9.056-.853a24.578 24.578 0 0111.961 4.422c6.44 4.534 10.353 11.95 10.475 19.82 1.164 76.841-18.822 112.224-32.024 127.144-2.195 2.494-4.213 4.412-5.909 5.864-14.632 12.47-33.465 16.483-57.586 12.271l-16.372-2.871zM37.623 282.187c7.429 0 15.173-.703 23.223-2.111l16.379-2.864-5.73-32.757-16.378 2.865c-24.126 4.221-42.953.202-57.575-12.274-11.858-10.119-39.295-43.336-37.936-133.006.119-7.871 4.036-15.28 10.476-19.82a24.601 24.601 0 0121.015-3.57A24.606 24.606 0 017.075 92.764c2.683 6.318 7.675 11.186 14.058 13.709 6.384 2.522 13.355 2.38 19.63-.396l39.152-17.329-13.46-30.41-32.37 14.328C26.57 60.055 14.57 50.762.213 46.67c-16.936-4.828-34.901-1.777-49.293 8.369-15.102 10.647-24.286 28.03-24.565 46.498-.652 42.947 4.926 120.686 49.6 158.806 17.036 14.535 37.71 21.844 61.668 21.844z'
12
- fill='#FFD690'
12
+ d="M258.454 244.45l-5.731 32.767 16.384 2.86c8.047 1.407 15.796 2.106 23.222 2.106 15.697.011 29.985-3.137 42.766-9.389 6.728-3.292 13.025-7.438 18.9-12.449 44.672-38.12 50.247-115.859 49.604-158.813-.288-18.467-9.466-35.848-24.575-46.49-9.355-6.606-20.23-10.209-31.348-10.575a57.996 57.996 0 00-17.935 2.206c-14.355 4.09-26.36 13.38-33.875 25.994l-32.379-14.332L250.03 88.75l39.162 17.326c6.274 2.771 13.247 2.916 19.632.388 6.374-2.516 11.373-7.382 14.055-13.7a24.56 24.56 0 0115.974-14.112c2.993-.853 6.052-1.13 9.056-.853a24.578 24.578 0 0111.961 4.422c6.44 4.534 10.353 11.95 10.475 19.82 1.164 76.841-18.822 112.224-32.024 127.144-2.195 2.494-4.213 4.412-5.909 5.864-14.632 12.47-33.465 16.483-57.586 12.271l-16.372-2.871zM37.623 282.187c7.429 0 15.173-.703 23.223-2.111l16.379-2.864-5.73-32.757-16.378 2.865c-24.126 4.221-42.953.202-57.575-12.274-11.858-10.119-39.295-43.336-37.936-133.006.119-7.871 4.036-15.28 10.476-19.82a24.601 24.601 0 0121.015-3.57A24.606 24.606 0 017.075 92.764c2.683 6.318 7.675 11.186 14.058 13.709 6.384 2.522 13.355 2.38 19.63-.396l39.152-17.329-13.46-30.41-32.37 14.328C26.57 60.055 14.57 50.762.213 46.67c-16.936-4.828-34.901-1.777-49.293 8.369-15.102 10.647-24.286 28.03-24.565 46.498-.652 42.947 4.926 120.686 49.6 158.806 17.036 14.535 37.71 21.844 61.668 21.844z"
13
+ fill="#FFD690"
13
14
  />
14
15
  <Path
15
16
  opacity={0.1}
16
- d='M335.095 272.795c6.728-3.293 13.025-7.438 18.9-12.449 44.672-38.121 50.247-115.859 49.604-158.813-.288-18.467-9.466-35.848-24.575-46.49-9.355-6.606-20.23-10.209-31.348-10.575 3.326 3.691 14.3 18.057.233 33.332a24.578 24.578 0 0111.961 4.423c6.44 4.534 10.353 11.95 10.475 19.82 1.164 76.84-18.822 112.223-32.024 127.144 0 0 21.659 24.497-3.226 43.608z'
17
- fill='#D25B00'
17
+ d="M335.095 272.795c6.728-3.293 13.025-7.438 18.9-12.449 44.672-38.121 50.247-115.859 49.604-158.813-.288-18.467-9.466-35.848-24.575-46.49-9.355-6.606-20.23-10.209-31.348-10.575 3.326 3.691 14.3 18.057.233 33.332a24.578 24.578 0 0111.961 4.423c6.44 4.534 10.353 11.95 10.475 19.82 1.164 76.84-18.822 112.223-32.024 127.144 0 0 21.659 24.497-3.226 43.608z"
18
+ fill="#D25B00"
18
19
  />
19
20
  <Path
20
- d='M26.153 202.82L46.65 26.089a11.505 11.505 0 0111.429-10.18h213.797a11.504 11.504 0 0111.428 10.18l20.495 176.731c4.463 38.483-10.944 76.387-39.056 96.086l-8.179 5.73c-15.466 10.838-32.135 18.807-49.434 23.744-11.86 3.386-19.699 16.816-18.043 31.209l5.7 49.527h-59.619l5.7-49.527c1.656-14.393-6.182-27.825-18.043-31.209-17.299-4.937-33.967-12.905-49.434-23.744l-8.178-5.73c-28.115-19.699-43.522-57.604-39.059-96.086z'
21
- fill='#FFD690'
21
+ d="M26.153 202.82L46.65 26.089a11.505 11.505 0 0111.429-10.18h213.797a11.504 11.504 0 0111.428 10.18l20.495 176.731c4.463 38.483-10.944 76.387-39.056 96.086l-8.179 5.73c-15.466 10.838-32.135 18.807-49.434 23.744-11.86 3.386-19.699 16.816-18.043 31.209l5.7 49.527h-59.619l5.7-49.527c1.656-14.393-6.182-27.825-18.043-31.209-17.299-4.937-33.967-12.905-49.434-23.744l-8.178-5.73c-28.115-19.699-43.522-57.604-39.059-96.086z"
22
+ fill="#FFD690"
22
23
  />
23
24
  <Path
24
25
  opacity={0.1}
25
- d='M169.03 359.583l1.752 36.868h22.546l-4.245-36.868c-1.652-14.388 6.185-27.823 18.046-31.203 17.293-4.933 33.964-12.903 49.428-23.744l8.18-5.731c28.112-19.698 43.52-57.597 39.063-96.084L283.299 26.086a11.505 11.505 0 00-11.429-10.18h-50.531l12.193 186.914c2.505 38.487-6.152 76.386-21.959 96.084l-4.6 5.731c-8.702 10.841-18.068 18.811-27.801 23.743-6.661 3.382-11.073 16.817-10.142 31.205z'
26
- fill='#D25B00'
26
+ d="M169.03 359.583l1.752 36.868h22.546l-4.245-36.868c-1.652-14.388 6.185-27.823 18.046-31.203 17.293-4.933 33.964-12.903 49.428-23.744l8.18-5.731c28.112-19.698 43.52-57.597 39.063-96.084L283.299 26.086a11.505 11.505 0 00-11.429-10.18h-50.531l12.193 186.914c2.505 38.487-6.152 76.386-21.959 96.084l-4.6 5.731c-8.702 10.841-18.068 18.811-27.801 23.743-6.661 3.382-11.073 16.817-10.142 31.205z"
27
+ fill="#D25B00"
27
28
  />
28
29
  <Path
29
- d='M63.166 437.528l203.607-4.774v-6.731c0-16.335-13.295-29.576-29.63-29.576H92.742c-16.335 0-29.576 13.241-29.576 29.576v11.505z'
30
- fill='#FFD690'
30
+ d="M63.166 437.528l203.607-4.774v-6.731c0-16.335-13.295-29.576-29.63-29.576H92.742c-16.335 0-29.576 13.241-29.576 29.576v11.505z"
31
+ fill="#FFD690"
31
32
  />
32
33
  <Path
33
34
  opacity={0.1}
34
- d='M171.477 396.447c16.328 0 29.574 13.247 29.574 29.575v7.907l65.722-.857v-7.05c0-16.328-13.246-29.575-29.574-29.575h-65.722z'
35
- fill='#D25B00'
35
+ d="M171.477 396.447c16.328 0 29.574 13.247 29.574 29.575v7.907l65.722-.857v-7.05c0-16.328-13.246-29.575-29.574-29.575h-65.722z"
36
+ fill="#D25B00"
36
37
  />
37
38
  <Path
38
- d='M209.405 432.82c15.086 0 27.324 12.238 27.324 27.336v100.01h42.122c8.43 0 15.264-6.834 15.264-15.264v-84.746c0-15.097-12.239-27.336-27.335-27.336h-57.375z'
39
- fill='#2488BB'
39
+ d="M209.405 432.82c15.086 0 27.324 12.238 27.324 27.336v100.01h42.122c8.43 0 15.264-6.834 15.264-15.264v-84.746c0-15.097-12.239-27.336-27.335-27.336h-57.375z"
40
+ fill="#2488BB"
40
41
  />
41
42
  <Path
42
43
  opacity={0.5}
43
- d='M35.846 543.408a8.835 8.835 0 1017.668 0v-88.343c0-6.569 1.263-10.538 2.59-13.251 1.325-2.713 5.889-7.362 13.25-8.834H66.41c-5.89 0-13.567 0-20.614 5.889-6.683 5.586-9.95 13.376-9.95 22.086v82.453z'
44
- fill='#fff'
44
+ d="M35.846 543.408a8.835 8.835 0 1017.668 0v-88.343c0-6.569 1.263-10.538 2.59-13.251 1.325-2.713 5.889-7.362 13.25-8.834H66.41c-5.89 0-13.567 0-20.614 5.889-6.683 5.586-9.95 13.376-9.95 22.086v82.453z"
45
+ fill="#fff"
45
46
  />
46
47
  <Path
47
- d='M35.837 460.156v84.489c0 8.57 6.912 15.518 15.483 15.518H278.85c8.43 0 15.264-6.833 15.264-15.263v-84.744c0-15.097-12.239-27.336-27.335-27.336H63.173c-15.097 0-27.336 12.239-27.336 27.336z'
48
- fill='#AAD5EF'
48
+ d="M35.837 460.156v84.489c0 8.57 6.912 15.518 15.483 15.518H278.85c8.43 0 15.264-6.833 15.264-15.263v-84.744c0-15.097-12.239-27.336-27.335-27.336H63.173c-15.097 0-27.336 12.239-27.336 27.336z"
49
+ fill="#AAD5EF"
49
50
  />
50
51
  <Path
51
52
  opacity={0.1}
52
- d='M208.151 432.762c15.309 0 27.727 12.418 27.727 27.739l.004 33.137h42.744c8.555 0 15.489-6.934 15.489-15.489l-.003-17.648c0-15.32-12.419-27.739-27.739-27.739h-58.222z'
53
- fill='#D25B00'
53
+ d="M208.151 432.762c15.309 0 27.727 12.418 27.727 27.739l.004 33.137h42.744c8.555 0 15.489-6.934 15.489-15.489l-.003-17.648c0-15.32-12.419-27.739-27.739-27.739h-58.222z"
54
+ fill="#D25B00"
54
55
  />
55
56
  <Path
56
57
  opacity={0.3}
57
- d='M73.782 17.1c-1.8.654-4.135 2.151-6.083 4.197-2.014 2.118-2.78 3.928-2.901 4.848-3.966 30.145-7.066 56.336-10.696 87.003-3.112 26.288-9.844 72.335-12.788 92.948-2.944 20.613-2.944 23.442-2.944 35.337 0 22.086 10.364 42.197 10.364 42.197-4.634-5.04-14.077-23.056-15.589-26.678-5.247-12.574-9.599-33.753-7.343-51.809 4.73-37.865 7.788-67.529 10.907-93.864 5.03-41.445 4.877-42.092 8.977-77.441 1.785-15.392 1.08-18.069 13.976-18.069h18.25c-1.451.417-2.836.86-4.13 1.33zM35.846 543.249a8.834 8.834 0 008.834 8.834 8.834 8.834 0 008.834-8.834v-88.343c0-6.57 1.263-10.538 2.59-13.251 1.325-2.713 5.889-7.362 13.25-8.835 0 0-1.158-.003-2.94-.003-13.712 0-13.571.004-20.618 5.893-6.683 5.586-9.95 13.376-9.95 22.086v82.453z'
58
- fill='#fff'
58
+ d="M73.782 17.1c-1.8.654-4.135 2.151-6.083 4.197-2.014 2.118-2.78 3.928-2.901 4.848-3.966 30.145-7.066 56.336-10.696 87.003-3.112 26.288-9.844 72.335-12.788 92.948-2.944 20.613-2.944 23.442-2.944 35.337 0 22.086 10.364 42.197 10.364 42.197-4.634-5.04-14.077-23.056-15.589-26.678-5.247-12.574-9.599-33.753-7.343-51.809 4.73-37.865 7.788-67.529 10.907-93.864 5.03-41.445 4.877-42.092 8.977-77.441 1.785-15.392 1.08-18.069 13.976-18.069h18.25c-1.451.417-2.836.86-4.13 1.33zM35.846 543.249a8.834 8.834 0 008.834 8.834 8.834 8.834 0 008.834-8.834v-88.343c0-6.57 1.263-10.538 2.59-13.251 1.325-2.713 5.889-7.362 13.25-8.835 0 0-1.158-.003-2.94-.003-13.712 0-13.571.004-20.618 5.893-6.683 5.586-9.95 13.376-9.95 22.086v82.453z"
59
+ fill="#fff"
59
60
  />
60
61
  </Svg>
61
62
  )
@@ -5,7 +5,6 @@ import { useUnit } from 'effector-react'
5
5
  import {
6
6
  Button,
7
7
  ButtonColor,
8
- ButtonSize,
9
8
  ButtonVariant,
10
9
  COLORS,
11
10
  SPACING,
@@ -14,6 +13,7 @@ import {
14
13
 
15
14
  import { EOAModalContentProps } from '../../types'
16
15
  import { NoAnswerContent } from './NoAnswerContent'
16
+ import { PracticeButton } from '../../ui/PracticeButton'
17
17
  import { useKeyBoard } from '../../../../shared/hooks/useKeyboard'
18
18
  import { KeyboardKeys } from '../../../../lib/constants'
19
19
 
@@ -22,49 +22,17 @@ export const NoAnswer = ({ model, textContent, onPracticePress }: EOAModalConten
22
22
 
23
23
  const { stats, isExam, user } = popUpData ?? {}
24
24
 
25
- function getButtons() {
26
- const buttons = [
27
- {
28
- text: textContent.leftButtonText ?? '',
29
- colorScheme: isExam ? ButtonColor.PURPLE : ButtonColor.BLUE,
30
- onPress: () => model.hidePopUpAndLeave(),
31
- },
32
- ]
25
+ const buttonColorScheme = isExam ? ButtonColor.YELLOW : ButtonColor.BLUE
26
+ const practiceButtonVisible = user?.practiceButtonVisible && (!isExam || !!user?.practiceMode)
33
27
 
34
- if (!isExam) {
35
- buttons.push({
36
- text: textContent.rightButtonText ?? '',
37
- colorScheme: ButtonColor.BLUE,
38
- onPress: () => {
39
- model.goToFirstProblemPressed()
40
- model.hidePopUp()
41
- },
42
- })
43
- return buttons
44
- }
45
-
46
- const isPracticeAvailable = !!user?.practiceMode && user?.practiceButtonVisible
47
-
48
- if (isPracticeAvailable) {
49
- buttons.push({
50
- text: textContent.rightButtonText ?? '',
51
- colorScheme: ButtonColor.YELLOW,
52
- onPress: () => {
53
- onPracticePress?.()
54
- model.hidePopUp()
55
- },
56
- })
57
- }
58
-
59
- return buttons
28
+ const handlePrimaryButtonPress = () => {
29
+ isExam ? onPracticePress?.() : model.goToFirstProblemPressed()
30
+ model.hidePopUp()
60
31
  }
61
32
 
62
- const buttons = getButtons()
63
-
64
33
  useKeyBoard((event) => {
65
34
  if (event.key === KeyboardKeys.ENTER) {
66
- const primaryButton = buttons.at(-1)
67
- primaryButton?.onPress()
35
+ practiceButtonVisible ? handlePrimaryButtonPress() : model.hidePopUpAndLeave()
68
36
  }
69
37
  })
70
38
 
@@ -76,7 +44,7 @@ export const NoAnswer = ({ model, textContent, onPracticePress }: EOAModalConten
76
44
  {textContent.title}
77
45
  </Typography>
78
46
  )}
79
- {!!textContent.subtitle && buttons.length === 2 && (
47
+ {!!textContent.subtitle && practiceButtonVisible && (
80
48
  <Typography variant="h4" style={styles.subtitle}>
81
49
  {textContent.subtitle}
82
50
  </Typography>
@@ -87,18 +55,23 @@ export const NoAnswer = ({ model, textContent, onPracticePress }: EOAModalConten
87
55
  problemsAmount={stats?.problemsAmount ?? 0}
88
56
  />
89
57
  <View style={styles.buttonsContainer}>
90
- {buttons.map((button, index) => (
91
- <Button
92
- key={index}
93
- variant={index === buttons.length - 1 ? ButtonVariant.PRIMARY : ButtonVariant.TERTIARY}
94
- size={ButtonSize.LARGE}
95
- colorScheme={button.colorScheme}
96
- style={{ text: { textTransform: 'uppercase' } }}
97
- onPress={button.onPress}
98
- >
99
- {button.text}
100
- </Button>
101
- ))}
58
+ <Button
59
+ variant={practiceButtonVisible ? ButtonVariant.TERTIARY : ButtonVariant.PRIMARY}
60
+ size="large"
61
+ colorScheme={popUpData?.isExam ? ButtonColor.PURPLE : ButtonColor.BLUE}
62
+ style={{ text: { textTransform: 'uppercase' } }}
63
+ onPress={model.hidePopUpAndLeave}
64
+ >
65
+ {textContent.leftButtonText ?? ''}
66
+ </Button>
67
+
68
+ {practiceButtonVisible && (
69
+ <PracticeButton
70
+ onPress={handlePrimaryButtonPress}
71
+ text={textContent.rightButtonText}
72
+ colorScheme={buttonColorScheme}
73
+ />
74
+ )}
102
75
  </View>
103
76
  </View>
104
77
  )
@@ -0,0 +1,37 @@
1
+ import React from 'react'
2
+ import { View, StyleSheet } from 'react-native'
3
+ import { SPACING } from '@magmamath/react-native-ui'
4
+
5
+ import { ProblemSelectorButton } from './ProblemSelectorButton'
6
+
7
+ import { PROBLEM_SELECTOR_CONTENT_WIDTH } from '../constants'
8
+ import { ProblemSelectorButtonProps } from '../types'
9
+
10
+ type ProblemSelectorProps = {
11
+ buttons: ProblemSelectorButtonProps[]
12
+ }
13
+
14
+ export const ProblemSelector = ({ buttons }: ProblemSelectorProps) => {
15
+ if (!buttons.length) return null
16
+
17
+ return (
18
+ <View style={styles.container}>
19
+ <View style={styles.contentContainer}>
20
+ {buttons.map((btn) => (
21
+ <ProblemSelectorButton {...btn} key={btn.key} />
22
+ ))}
23
+ </View>
24
+ </View>
25
+ )
26
+ }
27
+
28
+ const styles = StyleSheet.create({
29
+ container: { alignItems: 'center' },
30
+ contentContainer: {
31
+ width: PROBLEM_SELECTOR_CONTENT_WIDTH,
32
+ flexWrap: 'wrap',
33
+ flexDirection: 'row',
34
+ paddingVertical: SPACING[400],
35
+ gap: 15,
36
+ },
37
+ })