@cuemath/leap 3.3.13 → 3.3.14-m

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 (92) hide show
  1. package/dist/assets/illustrations/illustrations.js +6 -0
  2. package/dist/assets/illustrations/illustrations.js.map +1 -1
  3. package/dist/assets/images/images.js +10 -0
  4. package/dist/assets/images/images.js.map +1 -1
  5. package/dist/assets/line-icons/icons/cue-coin.js +182 -0
  6. package/dist/assets/line-icons/icons/cue-coin.js.map +1 -0
  7. package/dist/assets/line-icons/icons/wins-common-icon.js +26 -0
  8. package/dist/assets/line-icons/icons/wins-common-icon.js.map +1 -0
  9. package/dist/assets/line-icons/icons/wins-epic-icon.js +25 -0
  10. package/dist/assets/line-icons/icons/wins-epic-icon.js.map +1 -0
  11. package/dist/assets/line-icons/icons/wins-legendary-icon.js +25 -0
  12. package/dist/assets/line-icons/icons/wins-legendary-icon.js.map +1 -0
  13. package/dist/assets/line-icons/icons/wins-mystery-icon.js +105 -0
  14. package/dist/assets/line-icons/icons/wins-mystery-icon.js.map +1 -0
  15. package/dist/assets/line-icons/icons/wins-mythic-icon.js +28 -0
  16. package/dist/assets/line-icons/icons/wins-mythic-icon.js.map +1 -0
  17. package/dist/assets/line-icons/icons/wins-rare-icon.js +28 -0
  18. package/dist/assets/line-icons/icons/wins-rare-icon.js.map +1 -0
  19. package/dist/assets/lottie/lottie.js +6 -1
  20. package/dist/assets/lottie/lottie.js.map +1 -1
  21. package/dist/features/circle-games/hooks/use-circle-sounds/constants.js +5 -7
  22. package/dist/features/circle-games/hooks/use-circle-sounds/constants.js.map +1 -1
  23. package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js +81 -103
  24. package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js.map +1 -1
  25. package/dist/features/ui/constants/z-index.js +5 -3
  26. package/dist/features/ui/constants/z-index.js.map +1 -1
  27. package/dist/features/wins-dashboard/belts-elements-stickers/belts-elements-stickers.js +109 -0
  28. package/dist/features/wins-dashboard/belts-elements-stickers/belts-elements-stickers.js.map +1 -0
  29. package/dist/features/wins-dashboard/belts-elements-stickers/belts.js +95 -0
  30. package/dist/features/wins-dashboard/belts-elements-stickers/belts.js.map +1 -0
  31. package/dist/features/wins-dashboard/belts-elements-stickers/elements.js +184 -0
  32. package/dist/features/wins-dashboard/belts-elements-stickers/elements.js.map +1 -0
  33. package/dist/features/wins-dashboard/belts-elements-stickers/progress-bar-horizontal.js +36 -0
  34. package/dist/features/wins-dashboard/belts-elements-stickers/progress-bar-horizontal.js.map +1 -0
  35. package/dist/features/wins-dashboard/belts-elements-stickers/reward-elements.js +83 -0
  36. package/dist/features/wins-dashboard/belts-elements-stickers/reward-elements.js.map +1 -0
  37. package/dist/features/wins-dashboard/constants.js +161 -0
  38. package/dist/features/wins-dashboard/constants.js.map +1 -0
  39. package/dist/features/wins-dashboard/header/wins-header.js +95 -0
  40. package/dist/features/wins-dashboard/header/wins-header.js.map +1 -0
  41. package/dist/features/wins-dashboard/student-badges/animated-tabbar.js +66 -0
  42. package/dist/features/wins-dashboard/student-badges/animated-tabbar.js.map +1 -0
  43. package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-list-hook.js +135 -0
  44. package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-list-hook.js.map +1 -0
  45. package/dist/features/wins-dashboard/student-badges/student-badge.js +168 -0
  46. package/dist/features/wins-dashboard/student-badges/student-badge.js.map +1 -0
  47. package/dist/features/wins-dashboard/student-badges/student-badges-lists.js +137 -0
  48. package/dist/features/wins-dashboard/student-badges/student-badges-lists.js.map +1 -0
  49. package/dist/index.d.ts +171 -3
  50. package/dist/index.js +665 -652
  51. package/dist/index.js.map +1 -1
  52. package/dist/node_modules/query-string/base.js +1 -1
  53. package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +1 -0
  54. package/dist/node_modules/uuid/dist/esm-browser/regex.js +5 -0
  55. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
  56. package/dist/node_modules/uuid/dist/esm-browser/rng.js +2 -3
  57. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  58. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +10 -6
  59. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  60. package/dist/node_modules/uuid/dist/esm-browser/v4.js +9 -12
  61. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  62. package/dist/node_modules/uuid/dist/esm-browser/validate.js +8 -0
  63. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
  64. package/dist/static/awesome.4239f583.json +1 -0
  65. package/dist/static/black-belt.81b3ebf9.png +0 -0
  66. package/dist/static/blue-belt.508a1b4b.png +0 -0
  67. package/dist/static/brown-belt.09bb7e93.png +0 -0
  68. package/dist/static/clapping-hands.17e7ecf0.json +1 -0
  69. package/dist/static/common.9e8ceef1.svg +1 -0
  70. package/dist/static/cool.cd6921bb.json +1 -0
  71. package/dist/static/epic.37a0265a.svg +1 -0
  72. package/dist/static/green-belt.5501296f.png +0 -0
  73. package/dist/static/legendary.f15d09ca.svg +1 -0
  74. package/dist/static/like-button.281a2618.json +1 -0
  75. package/dist/static/mastered-badge.91d25e92.png +0 -0
  76. package/dist/static/mystery.81ada5fb.svg +1 -0
  77. package/dist/static/mythic.58ba0ae0.svg +1 -0
  78. package/dist/static/orange-belt.1fefcc8c.png +0 -0
  79. package/dist/static/purple-belt.e15611b4.png +0 -0
  80. package/dist/static/rare.1ffaa311.svg +1 -0
  81. package/dist/static/red-belt.11f841d9.png +0 -0
  82. package/dist/static/star-strike-emoji.c0b31028.json +1 -0
  83. package/dist/static/trophy.5ef1853a.json +1 -0
  84. package/dist/static/white-belt.ea93103e.png +0 -0
  85. package/dist/static/yellow-belt.0c47b8cc.png +0 -0
  86. package/package.json +1 -1
  87. package/dist/features/circle-games/hooks/use-circle-sounds/helper.js +0 -19
  88. package/dist/features/circle-games/hooks/use-circle-sounds/helper.js.map +0 -1
  89. package/dist/node_modules/decode-uri-component/index.js.map +0 -1
  90. package/dist/node_modules/uuid/dist/esm-browser/native.js +0 -7
  91. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  92. /package/dist/node_modules/{decode-uri-component → query-string/node_modules/decode-uri-component}/index.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"belts-elements-stickers.js","sources":["../../../../src/features/wins-dashboard/belts-elements-stickers/belts-elements-stickers.tsx"],"sourcesContent":["import React, { memo } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\nimport Separator from '../../ui/separator/separator';\nimport { INSTRUCTION_REWARDS, MATH_REWARDS, SCREEN_SIZES, StickerMap } from '../constants';\nimport Belts from './belts';\nimport RewardElements from './reward-elements';\n\ninterface WrapperProps {\n $containerStyle?: ReturnType<typeof css>;\n $renderOnTeacher?: boolean;\n}\n\nconst Wrapper = styled(FlexView)<WrapperProps>`\n justify-content: space-between;\n margin: 110px 120px;\n margin-bottom: 48px;\n ${({ $containerStyle }) => $containerStyle}\n\n ${({ $renderOnTeacher }) =>\n $renderOnTeacher &&\n css`\n margin: 50px auto;\n padding: 0 16px;\n `}\n`;\n\ninterface RewardElement {\n aggregate_for?: { name?: string };\n aggregates?: number;\n}\n\ninterface StickerElement {\n badge_id?: string;\n name?: string;\n}\n\nconst getRewardElements = (\n elements: RewardElement[],\n): { elements: Array<{ name: string; count: number }> } => {\n const isElementsExist = elements && Array.isArray(elements) && elements.length > 0;\n\n if (!isElementsExist) {\n return { elements: [] };\n }\n\n const elementsData = {\n elements: [] as Array<{ name: string; count: number }>,\n };\n\n elements.forEach(item => {\n const { aggregate_for: rewardData, aggregates: totalCount } = item || {};\n const { name } = rewardData || {};\n\n if (name && [...MATH_REWARDS, ...INSTRUCTION_REWARDS].includes(name)) {\n elementsData.elements.push({ name, count: totalCount || 0 });\n }\n });\n\n return elementsData;\n};\n\nconst getRewardStickers = (\n stickers: StickerElement[],\n): { stickers: Array<{ name: string; count: number }> } => {\n const isStickersExist = stickers && Array.isArray(stickers) && stickers.length > 0;\n\n if (!isStickersExist) {\n return { stickers: [] };\n }\n\n const stickersCount: Record<string, { name: string; count: number }> = {};\n\n stickers.forEach(item => {\n const { badge_id: badgeId, name } = item;\n\n if (badgeId && name) {\n if (stickersCount[badgeId] === undefined) {\n stickersCount[badgeId] = { name, count: 1 };\n } else {\n stickersCount[badgeId] = { name, count: stickersCount[badgeId].count + 1 };\n }\n }\n });\n\n return { stickers: Object.values(stickersCount) };\n};\n\nconst getBadgeContainerConfig = (currentScreenWidth: number) => {\n if (currentScreenWidth >= SCREEN_SIZES.LAPTOPL) {\n return {\n containerStyle: css`\n margin: 110px auto;\n margin-bottom: 48px;\n max-width: 1040px;\n width: 100%;\n `,\n };\n }\n\n if (currentScreenWidth < SCREEN_SIZES.TABLET) {\n return {\n containerStyle: css`\n margin: 110px 40px;\n margin-bottom: 48px;\n flex-direction: column;\n width: 100%;\n `,\n };\n }\n\n if (currentScreenWidth < SCREEN_SIZES.LAPTOP) {\n return {\n containerStyle: css`\n max-width: 784px;\n width: 100%;\n margin: 100px auto;\n flex-direction: column;\n `,\n };\n }\n\n return {\n containerStyle: css`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin: 110px 120px;\n margin-bottom: 48px;\n `,\n };\n};\n\n// Types for component props\ninterface CurriculumMap {\n belts?: {\n current_belt_type?: string;\n goals_required?: number;\n };\n goals?: {\n completed_goals: number;\n total_goals: number;\n };\n}\n\ninterface CurriculumHomeData {\n data?: {\n curriculum_map?: CurriculumMap;\n };\n}\n\ninterface RewardHomeData {\n data?: {\n user_rewards?: RewardElement[];\n user_stickers?: StickerElement[];\n };\n}\n\ninterface BeltsElementsStickersProps {\n curriculumHomeData?: CurriculumHomeData;\n rewardHomeData?: RewardHomeData;\n programStream?: string;\n currentScreenWidth: number;\n renderOnTeacher?: boolean;\n}\n\nconst BeltsElementsStickers: React.FC<BeltsElementsStickersProps> = ({\n curriculumHomeData,\n rewardHomeData,\n programStream = 'MATH',\n currentScreenWidth,\n renderOnTeacher = false,\n}) => {\n const { data: curriculumData } = curriculumHomeData || {};\n const { curriculum_map: curriculumMap } = curriculumData || {};\n const { belts: beltStats, goals: goalStats } = curriculumMap || {};\n const { data: rewardHome } = rewardHomeData || {};\n const { user_rewards: rewardElementsData, user_stickers: rewardStickersData } = rewardHome || {};\n const { elements } = getRewardElements(rewardElementsData || []);\n const { stickers } = getRewardStickers(rewardStickersData || []);\n const { containerStyle } = getBadgeContainerConfig(currentScreenWidth) || {};\n\n return (\n <Wrapper\n $flexDirection=\"row\"\n $justifyContent=\"space-between\"\n $containerStyle={containerStyle}\n $renderOnTeacher={renderOnTeacher}\n >\n <Belts beltStats={beltStats} goalStats={goalStats} currentScreenWidth={currentScreenWidth} />\n <Separator width={60} height={30} />\n <RewardElements\n elements={elements}\n programStream={programStream}\n currentScreenWidth={currentScreenWidth}\n />\n <Separator width={60} height={30} />\n <RewardElements\n elements={stickers}\n isSticker\n currentScreenWidth={currentScreenWidth}\n lotties={StickerMap}\n />\n </Wrapper>\n );\n};\n\nexport default memo(BeltsElementsStickers);\n"],"names":["Wrapper","styled","FlexView","$containerStyle","$renderOnTeacher","css","getRewardElements","elements","elementsData","item","rewardData","totalCount","name","MATH_REWARDS","INSTRUCTION_REWARDS","getRewardStickers","stickers","stickersCount","badgeId","getBadgeContainerConfig","currentScreenWidth","SCREEN_SIZES","BeltsElementsStickers","curriculumHomeData","rewardHomeData","programStream","renderOnTeacher","curriculumData","curriculumMap","beltStats","goalStats","rewardHome","rewardElementsData","rewardStickersData","containerStyle","jsxs","jsx","Belts","Separator","RewardElements","StickerMap","beltsElementsStickers","memo"],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { jsx as t, jsxs as d } from "react/jsx-runtime";
2
+ import { memo as w } from "react";
3
+ import s, { css as c } from "styled-components";
4
+ import E from "../../ui/arrow-tooltip/arrow-tooltip.js";
5
+ import g from "../../ui/layout/flex-view.js";
6
+ import h from "../../ui/separator/separator.js";
7
+ import m from "../../ui/text/text.js";
8
+ import { SCREEN_SIZES as p, getBeltIcon as x } from "../constants.js";
9
+ import u from "./progress-bar-horizontal.js";
10
+ const y = "Black", P = s.div`
11
+ display: flex;
12
+ width: 100%;
13
+ flex-direction: column;
14
+ align-items: center;
15
+ ${({ $currentScreenWidth: e }) => e < p.LAPTOP && c`
16
+ width: 80%;
17
+ flex-direction: row;
18
+ `}
19
+ `, _ = s(g)`
20
+ min-width: 250px;
21
+ ${({ $currentScreenWidth: e }) => e < p.LAPTOP && c`
22
+ min-width: 180px;
23
+ `}
24
+ `, A = s(g)`
25
+ width: 120px;
26
+ align-items: center;
27
+ padding-left: 22px;
28
+ `, b = s.img`
29
+ width: 142px;
30
+ height: 110px;
31
+ ${({ $isBeltsExist: e }) => !e && c`
32
+ filter: grayscale(100%);
33
+ opacity: 20%;
34
+ `};
35
+ ${({ $currentScreenWidth: e }) => e < p.LAPTOP && c`
36
+ width: 104px;
37
+ height: 80px;
38
+ `}
39
+ `, Y = s(g)`
40
+ width: 250px;
41
+ `, C = s(h)`
42
+ ${({ $currentScreenWidth: e }) => e < p.LAPTOP && c`
43
+ height: 52px;
44
+ `}
45
+ `, L = s(m)`
46
+ opacity: ${({ $isBeltsExist: e }) => !e && "50%"};
47
+ `, S = (e, l, o, r) => {
48
+ let i = `${e}/${l} goal mastered`;
49
+ const a = l - e;
50
+ return o ? e === l ? i = "Congrats! You're now a Black Belt" : r ? i = `Next Belt: ${r} ${r > 1 ? "goals" : "goal"} away` : i = e < l ? `Next Belt: ${a} ${a > 1 ? "goals" : "goal"} away` : "Congrats! You're now a Black Belt" : o || (i = "You have no belts earned"), i;
51
+ }, R = () => /* @__PURE__ */ t(m, { $renderAs: "body3", $color: "WHITE", children: "You can't earn belts for the selected program" }), I = ({ beltStats: e, goalStats: l, currentScreenWidth: o }) => {
52
+ const { current_belt_type: r, goals_required: i } = e || {}, { completed_goals: a = 0, total_goals: $ = 1 } = l || {}, n = !!r, f = n ? `${r && r.toUpperCase()} BELT` : "BELTS", B = Math.floor(a * 100 / $), T = S(a, $, n, i);
53
+ return /* @__PURE__ */ t(
54
+ E,
55
+ {
56
+ position: "bottom",
57
+ tooltipItem: R(),
58
+ renderAs: "primary",
59
+ hidden: n,
60
+ children: /* @__PURE__ */ d(P, { $currentScreenWidth: o, children: [
61
+ /* @__PURE__ */ d(_, { $currentScreenWidth: o, children: [
62
+ /* @__PURE__ */ t(m, { $renderAs: "h5", children: f }),
63
+ /* @__PURE__ */ t(h, { height: 24 }),
64
+ /* @__PURE__ */ t(A, { children: /* @__PURE__ */ t(
65
+ b,
66
+ {
67
+ $currentScreenWidth: o,
68
+ $isBeltsExist: n,
69
+ src: n ? x(r || "") : x(y),
70
+ alt: "Belt"
71
+ }
72
+ ) })
73
+ ] }),
74
+ /* @__PURE__ */ d(Y, { children: [
75
+ /* @__PURE__ */ t(C, { $currentScreenWidth: o, height: 38 }),
76
+ /* @__PURE__ */ t(
77
+ u,
78
+ {
79
+ progress: B,
80
+ height: 4,
81
+ backgroundColor: "GREY_1",
82
+ progressColor: n ? "GREY_4" : "GREY_2"
83
+ }
84
+ ),
85
+ /* @__PURE__ */ t(h, { height: 8 }),
86
+ /* @__PURE__ */ t(L, { $isBeltsExist: n, $renderAs: "body3", $color: "GREY_4", children: T })
87
+ ] })
88
+ ] })
89
+ }
90
+ );
91
+ }, F = w(I);
92
+ export {
93
+ F as default
94
+ };
95
+ //# sourceMappingURL=belts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"belts.js","sources":["../../../../src/features/wins-dashboard/belts-elements-stickers/belts.tsx"],"sourcesContent":["import React, { memo } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport ArrowTooltip from '../../ui/arrow-tooltip/arrow-tooltip';\nimport FlexView from '../../ui/layout/flex-view';\nimport Separator from '../../ui/separator/separator';\nimport Text from '../../ui/text/text';\nimport { getBeltIcon, SCREEN_SIZES } from '../constants';\nimport ProgressBarHorizontal from './progress-bar-horizontal';\n\nconst DEFAULT_BELT_TYPE = 'Black';\n\ninterface ContainerProps {\n $currentScreenWidth: number;\n}\n\nconst Container = styled.div<ContainerProps>`\n display: flex;\n width: 100%;\n flex-direction: column;\n align-items: center;\n ${({ $currentScreenWidth }) =>\n $currentScreenWidth < SCREEN_SIZES.LAPTOP &&\n css`\n width: 80%;\n flex-direction: row;\n `}\n`;\n\ninterface HeaderContainerProps {\n $currentScreenWidth: number;\n}\n\nconst HeaderContainer = styled(FlexView)<HeaderContainerProps>`\n min-width: 250px;\n ${({ $currentScreenWidth }) =>\n $currentScreenWidth < SCREEN_SIZES.LAPTOP &&\n css`\n min-width: 180px;\n `}\n`;\n\nconst ProfileWrapper = styled(FlexView)`\n width: 120px;\n align-items: center;\n padding-left: 22px;\n`;\n\ninterface BeltImgProps {\n $isBeltsExist: boolean;\n $currentScreenWidth: number;\n}\n\nconst BeltImg = styled.img<BeltImgProps>`\n width: 142px;\n height: 110px;\n ${({ $isBeltsExist }) =>\n !$isBeltsExist &&\n css`\n filter: grayscale(100%);\n opacity: 20%;\n `};\n ${({ $currentScreenWidth }) =>\n $currentScreenWidth < SCREEN_SIZES.LAPTOP &&\n css`\n width: 104px;\n height: 80px;\n `}\n`;\n\nconst ProgressBarWrapper = styled(FlexView)`\n width: 250px;\n`;\n\ninterface SeparatorDivProps {\n $currentScreenWidth: number;\n}\n\nconst SeparatorDiv = styled(Separator)<SeparatorDivProps>`\n ${({ $currentScreenWidth }) =>\n $currentScreenWidth < SCREEN_SIZES.LAPTOP &&\n css`\n height: 52px;\n `}\n`;\n\ninterface BeltTextProps {\n $isBeltsExist: boolean;\n}\n\nconst BeltText = styled(Text)<BeltTextProps>`\n opacity: ${({ $isBeltsExist }) => !$isBeltsExist && '50%'};\n`;\n\nconst getBarTitle = (\n completedGoals: number,\n totalGoals: number,\n isBeltsExist: boolean,\n nextBeltGoals?: number,\n): string => {\n let title = `${completedGoals}/${totalGoals} goal mastered`;\n const goalsReq = totalGoals - completedGoals;\n\n if (isBeltsExist) {\n if (completedGoals === totalGoals) {\n title = \"Congrats! You're now a Black Belt\";\n } else if (nextBeltGoals) {\n title = `Next Belt: ${nextBeltGoals} ${nextBeltGoals > 1 ? 'goals' : 'goal'} away`;\n } else {\n title =\n completedGoals < totalGoals\n ? `Next Belt: ${goalsReq} ${goalsReq > 1 ? 'goals' : 'goal'} away`\n : \"Congrats! You're now a Black Belt\";\n }\n } else if (!isBeltsExist) {\n title = 'You have no belts earned';\n }\n\n return title;\n};\n\nconst getToolTipText = () => {\n return (\n <Text $renderAs=\"body3\" $color=\"WHITE\">\n You can&apos;t earn belts for the selected program\n </Text>\n );\n};\n\ninterface BeltStats {\n current_belt_type?: string;\n goals_required?: number;\n}\n\ninterface GoalStats {\n completed_goals: number;\n total_goals: number;\n}\n\ninterface BeltsProps {\n beltStats?: BeltStats | null;\n goalStats?: GoalStats | null;\n currentScreenWidth: number;\n}\n\nconst Belts: React.FC<BeltsProps> = ({ beltStats, goalStats, currentScreenWidth }) => {\n const { current_belt_type: currentBeltType, goals_required: nextBeltGoals } = beltStats || {};\n const { completed_goals: completedGoals = 0, total_goals: totalGoals = 1 } = goalStats || {};\n\n const isBeltsExist = !!currentBeltType;\n const beltTitle = isBeltsExist\n ? `${currentBeltType && currentBeltType.toUpperCase()} BELT`\n : 'BELTS';\n const progress = Math.floor((completedGoals * 100) / totalGoals);\n const barTitle = getBarTitle(completedGoals, totalGoals, isBeltsExist, nextBeltGoals);\n\n return (\n <ArrowTooltip\n position=\"bottom\"\n tooltipItem={getToolTipText()}\n renderAs=\"primary\"\n hidden={isBeltsExist}\n >\n <Container $currentScreenWidth={currentScreenWidth}>\n <HeaderContainer $currentScreenWidth={currentScreenWidth}>\n <Text $renderAs=\"h5\">{beltTitle}</Text>\n <Separator height={24} />\n <ProfileWrapper>\n <BeltImg\n $currentScreenWidth={currentScreenWidth}\n $isBeltsExist={isBeltsExist}\n src={\n !isBeltsExist ? getBeltIcon(DEFAULT_BELT_TYPE) : getBeltIcon(currentBeltType || '')\n }\n alt=\"Belt\"\n />\n </ProfileWrapper>\n </HeaderContainer>\n <ProgressBarWrapper>\n <SeparatorDiv $currentScreenWidth={currentScreenWidth} height={38} />\n <ProgressBarHorizontal\n progress={progress}\n height={4}\n backgroundColor=\"GREY_1\"\n progressColor={isBeltsExist ? 'GREY_4' : 'GREY_2'}\n />\n <Separator height={8} />\n <BeltText $isBeltsExist={isBeltsExist} $renderAs=\"body3\" $color=\"GREY_4\">\n {barTitle}\n </BeltText>\n </ProgressBarWrapper>\n </Container>\n </ArrowTooltip>\n );\n};\n\nexport default memo(Belts);\n"],"names":["DEFAULT_BELT_TYPE","Container","styled","$currentScreenWidth","SCREEN_SIZES","css","HeaderContainer","FlexView","ProfileWrapper","BeltImg","$isBeltsExist","ProgressBarWrapper","SeparatorDiv","Separator","BeltText","Text","getBarTitle","completedGoals","totalGoals","isBeltsExist","nextBeltGoals","title","goalsReq","getToolTipText","Belts","beltStats","goalStats","currentScreenWidth","currentBeltType","beltTitle","progress","barTitle","jsx","ArrowTooltip","jsxs","getBeltIcon","ProgressBarHorizontal","Belts$1","memo"],"mappings":";;;;;;;;;AAUA,MAAMA,IAAoB,SAMpBC,IAAYC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKrB,CAAC,EAAE,qBAAAC,EACH,MAAAA,IAAsBC,EAAa,UACnCC;AAAA;AAAA;AAAA,KAGC;AAAA,GAOCC,IAAkBJ,EAAOK,CAAQ;AAAA;AAAA,IAEnC,CAAC,EAAE,qBAAAJ,EACH,MAAAA,IAAsBC,EAAa,UACnCC;AAAA;AAAA,KAEC;AAAA,GAGCG,IAAiBN,EAAOK,CAAQ;AAAA;AAAA;AAAA;AAAA,GAWhCE,IAAUP,EAAO;AAAA;AAAA;AAAA,IAGnB,CAAC,EAAE,eAAAQ,EAAc,MACjB,CAACA,KACDL;AAAA;AAAA;AAAA,KAGC;AAAA,IACD,CAAC,EAAE,qBAAAF,EACH,MAAAA,IAAsBC,EAAa,UACnCC;AAAA;AAAA;AAAA,KAGC;AAAA,GAGCM,IAAqBT,EAAOK,CAAQ;AAAA;AAAA,GAQpCK,IAAeV,EAAOW,CAAS;AAAA,IACjC,CAAC,EAAE,qBAAAV,EACH,MAAAA,IAAsBC,EAAa,UACnCC;AAAA;AAAA,KAEC;AAAA,GAOCS,IAAWZ,EAAOa,CAAI;AAAA,aACf,CAAC,EAAE,eAAAL,EAAA,MAAoB,CAACA,KAAiB,KAAK;AAAA,GAGrDM,IAAc,CAClBC,GACAC,GACAC,GACAC,MACW;AACX,MAAIC,IAAQ,GAAGJ,CAAc,IAAIC,CAAU;AAC3C,QAAMI,IAAWJ,IAAaD;AAE9B,SAAIE,IACEF,MAAmBC,IACbG,IAAA,sCACCD,IACTC,IAAQ,cAAcD,CAAa,IAAIA,IAAgB,IAAI,UAAU,MAAM,UAGzEC,IAAAJ,IAAiBC,IACb,cAAcI,CAAQ,IAAIA,IAAW,IAAI,UAAU,MAAM,UACzD,sCAEEH,MACFE,IAAA,6BAGHA;AACT,GAEME,IAAiB,wBAElBR,GAAK,EAAA,WAAU,SAAQ,QAAO,SAAQ,UAEvC,gDAAA,CAAA,GAoBES,IAA8B,CAAC,EAAE,WAAAC,GAAW,WAAAC,GAAW,oBAAAC,QAAyB;AACpF,QAAM,EAAE,mBAAmBC,GAAiB,gBAAgBR,EAAc,IAAIK,KAAa,IACrF,EAAE,iBAAiBR,IAAiB,GAAG,aAAaC,IAAa,EAAA,IAAMQ,KAAa,IAEpFP,IAAe,CAAC,CAACS,GACjBC,IAAYV,IACd,GAAGS,KAAmBA,EAAgB,YAAa,CAAA,UACnD,SACEE,IAAW,KAAK,MAAOb,IAAiB,MAAOC,CAAU,GACzDa,IAAWf,EAAYC,GAAgBC,GAAYC,GAAcC,CAAa;AAGlF,SAAA,gBAAAY;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,aAAaV,EAAe;AAAA,MAC5B,UAAS;AAAA,MACT,QAAQJ;AAAA,MAER,UAAA,gBAAAe,EAACjC,GAAU,EAAA,qBAAqB0B,GAC9B,UAAA;AAAA,QAAC,gBAAAO,EAAA5B,GAAA,EAAgB,qBAAqBqB,GACpC,UAAA;AAAA,UAAC,gBAAAK,EAAAjB,GAAA,EAAK,WAAU,MAAM,UAAUc,GAAA;AAAA,UAChC,gBAAAG,EAACnB,GAAU,EAAA,QAAQ,GAAI,CAAA;AAAA,4BACtBL,GACC,EAAA,UAAA,gBAAAwB;AAAA,YAACvB;AAAA,YAAA;AAAA,cACC,qBAAqBkB;AAAA,cACrB,eAAeR;AAAA,cACf,KACGA,IAAgDgB,EAAYP,KAAmB,EAAE,IAAlEO,EAAYnC,CAAiB;AAAA,cAE/C,KAAI;AAAA,YAAA;AAAA,UAAA,GAER;AAAA,QAAA,GACF;AAAA,0BACCW,GACC,EAAA,UAAA;AAAA,UAAA,gBAAAqB,EAACpB,GAAa,EAAA,qBAAqBe,GAAoB,QAAQ,IAAI;AAAA,UACnE,gBAAAK;AAAA,YAACI;AAAA,YAAA;AAAA,cACC,UAAAN;AAAA,cACA,QAAQ;AAAA,cACR,iBAAgB;AAAA,cAChB,eAAeX,IAAe,WAAW;AAAA,YAAA;AAAA,UAC3C;AAAA,UACA,gBAAAa,EAACnB,GAAU,EAAA,QAAQ,EAAG,CAAA;AAAA,UACtB,gBAAAmB,EAAClB,KAAS,eAAeK,GAAc,WAAU,SAAQ,QAAO,UAC7D,UACHY,EAAA,CAAA;AAAA,QAAA,GACF;AAAA,MAAA,GACF;AAAA,IAAA;AAAA,EAAA;AAGN,GAEeM,IAAAC,EAAKd,CAAK;"}
@@ -0,0 +1,184 @@
1
+ import { jsxs as u, jsx as o } from "react/jsx-runtime";
2
+ import w, { memo as S, useCallback as f } from "react";
3
+ import r, { css as c } from "styled-components";
4
+ import d from "../../ui/layout/flex-view.js";
5
+ import R from "../../ui/lottie-animation/lottie-animation.js";
6
+ import D from "../../ui/separator/separator.js";
7
+ import C from "../../ui/text/text.js";
8
+ import { SCREEN_SIZES as g, getRewardElement as W, elementColors as y } from "../constants.js";
9
+ const H = {
10
+ TETRA: 0.5,
11
+ COSA: 0.3,
12
+ DODA: 0.3,
13
+ HEXO: 0.5,
14
+ OCTO: 0.5,
15
+ EKA: 0.5,
16
+ DVI: 0.3,
17
+ CHATVA: 0.3,
18
+ ASHTA: 0.5,
19
+ ZODASA: 0.4,
20
+ CLAP: 0.6,
21
+ COOL: 0.6,
22
+ LIKE: 0.6,
23
+ WOW: 0.6,
24
+ CHEER: 0.6,
25
+ "ROCK-ON": 0.6
26
+ }, K = {
27
+ ASHTA: "Ashta",
28
+ CHATVA: "Chatva",
29
+ COSA: "Cosa",
30
+ DODA: "Doca",
31
+ DVI: "Dvi",
32
+ EKA: "Eka",
33
+ HEXO: "Hexo",
34
+ OCTO: "Octo",
35
+ TETRA: "T'tro",
36
+ ZODASA: "Zodasa",
37
+ CONGRATS: "Congrats",
38
+ COOL: "Cool",
39
+ KUDOS: "Kudos",
40
+ GREAT: "Great",
41
+ WOW: "Wow",
42
+ AWESOME: "Awesome"
43
+ }, V = (t, e) => {
44
+ let i = null, a = "-4px", n = null;
45
+ return t ? n = "-4px" : (i = `${e ? "-2px" : "2px"}`, a = `${e ? "-4px" : "2px"}`), `
46
+ bottom: ${i};
47
+ top: ${n};
48
+ right: ${a};
49
+ `;
50
+ }, P = r(d)`
51
+ align-items: center;
52
+ gap: 4px;
53
+ `, G = r(d)`
54
+ position: absolute;
55
+ top: -3px;
56
+ align-items: center;
57
+ justify-content: center;
58
+ width: 62px;
59
+ height: 62px;
60
+ `, j = r.div`
61
+ position: relative;
62
+ width: 62px;
63
+ height: 62px;
64
+ `, I = r.div`
65
+ position: relative;
66
+ `, M = r.img`
67
+ width: 56px;
68
+ height: 56px;
69
+ ${({ $disabled: t, $disabledVal: e }) => t && c`
70
+ filter: saturate(0);
71
+ opacity: ${e};
72
+ `}
73
+ `, _ = r.div`
74
+ border: 1px solid ${({ theme: t }) => t.colors.GREY_2};
75
+ border-radius: 8px;
76
+ `, Z = r(d)`
77
+ width: 62px;
78
+ height: 62px;
79
+ align-items: center;
80
+ justify-content: center;
81
+ ${({ $disabled: t, $disabledVal: e }) => t && c`
82
+ filter: saturate(0);
83
+ opacity: ${e};
84
+ `}
85
+ `, v = r(d)`
86
+ position: absolute;
87
+ ${({ $isSticker: t, $isCoddingType: e }) => V(t, e)};
88
+ background-color: ${({ theme: t }) => t.colors.GREY_2};
89
+ border-radius: ${({ $borderRadius: t }) => t};
90
+ border: ${({ $borderColor: t }) => `1px solid ${t}`};
91
+ width: ${({ $width: t }) => t}px;
92
+ height: 16px;
93
+ align-items: center;
94
+ justify-content: center;
95
+ ${({ $currentScreenWidth: t, $width: e }) => t < g.LAPTOP && c`
96
+ width: ${e + 6}px;
97
+ height: 22px;
98
+ `}
99
+ `, B = r(C)`
100
+ font-size: 9px;
101
+ line-height: 14px;
102
+ ${({ $currentScreenWidth: t }) => t < g.LAPTOP && c`
103
+ font-size: 12px;
104
+ line-height: 14px;
105
+ `}
106
+ `, N = r(C)`
107
+ color: ${({ theme: t }) => t.colors.BLACK};
108
+ opacity: ${({ $disabled: t }) => t ? 1 : 0.5};
109
+ `, k = ({
110
+ isAchieved: t = !1,
111
+ count: e = 0,
112
+ elementType: i,
113
+ isCoddingType: a = !1,
114
+ isSticker: n = !1,
115
+ lotties: A = {},
116
+ currentScreenWidth: $
117
+ }) => {
118
+ const h = e >= 100, O = K[i], x = H[i] || 1, { height: E, width: b, lottieSrc: s } = A[i] || {}, p = w.useRef(null), L = f(() => {
119
+ var l, m;
120
+ t && s && ((l = p.current) == null || l.play(), (m = p.current) == null || m.setLoop(!0));
121
+ }, [t, s]), T = f(() => {
122
+ var l;
123
+ s && ((l = p.current) == null || l.setLoop(!1));
124
+ }, [s]);
125
+ return /* @__PURE__ */ u(P, { children: [
126
+ /* @__PURE__ */ o(j, { children: /* @__PURE__ */ o(G, { $flexDirection: "row", children: /* @__PURE__ */ u(I, { children: [
127
+ !n && /* @__PURE__ */ o(
128
+ M,
129
+ {
130
+ $disabled: !t,
131
+ $disabledVal: x,
132
+ src: W(i),
133
+ alt: "reward"
134
+ }
135
+ ),
136
+ n && s && /* @__PURE__ */ o(_, { $disabled: !t, children: /* @__PURE__ */ o(
137
+ Z,
138
+ {
139
+ $disabled: !t,
140
+ $disabledVal: x,
141
+ onMouseEnter: L,
142
+ onMouseLeave: T,
143
+ children: /* @__PURE__ */ o(
144
+ R,
145
+ {
146
+ src: s,
147
+ width: b,
148
+ height: E,
149
+ ref: p,
150
+ settings: { autoplay: !1, loop: !1 }
151
+ }
152
+ )
153
+ }
154
+ ) }),
155
+ t && /* @__PURE__ */ o(
156
+ v,
157
+ {
158
+ $isSticker: n,
159
+ $borderColor: y[i] || "#000",
160
+ $width: h ? 28 : 16,
161
+ $borderRadius: h ? "26px" : "50%",
162
+ $isCoddingType: a,
163
+ $currentScreenWidth: $,
164
+ $flexDirection: "row",
165
+ children: /* @__PURE__ */ o(
166
+ B,
167
+ {
168
+ $currentScreenWidth: $,
169
+ $renderAs: "body3",
170
+ $color: "BLACK",
171
+ children: e
172
+ }
173
+ )
174
+ }
175
+ )
176
+ ] }) }) }),
177
+ /* @__PURE__ */ o(D, { height: 4 }),
178
+ /* @__PURE__ */ o(N, { $renderAs: "body3", $disabled: t, children: O })
179
+ ] });
180
+ }, tt = S(k);
181
+ export {
182
+ tt as default
183
+ };
184
+ //# sourceMappingURL=elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements.js","sources":["../../../../src/features/wins-dashboard/belts-elements-stickers/elements.tsx"],"sourcesContent":["import type { ILottieAnimationRef } from '../../ui/lottie-animation/types';\n\nimport React, { memo, useCallback } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\nimport LottieAnimation from '../../ui/lottie-animation/lottie-animation';\nimport Separator from '../../ui/separator/separator';\nimport Text from '../../ui/text/text';\nimport { elementColors, getRewardElement, SCREEN_SIZES } from '../constants';\n\nconst disablePercentages: Record<string, number> = {\n 'TETRA': 0.5,\n 'COSA': 0.3,\n 'DODA': 0.3,\n 'HEXO': 0.5,\n 'OCTO': 0.5,\n 'EKA': 0.5,\n 'DVI': 0.3,\n 'CHATVA': 0.3,\n 'ASHTA': 0.5,\n 'ZODASA': 0.4,\n 'CLAP': 0.6,\n 'COOL': 0.6,\n 'LIKE': 0.6,\n 'WOW': 0.6,\n 'CHEER': 0.6,\n 'ROCK-ON': 0.6,\n};\n\nconst elementTitles: Record<string, string> = {\n ASHTA: 'Ashta',\n CHATVA: 'Chatva',\n COSA: 'Cosa',\n DODA: 'Doca',\n DVI: 'Dvi',\n EKA: 'Eka',\n HEXO: 'Hexo',\n OCTO: 'Octo',\n TETRA: `T'tro`,\n ZODASA: 'Zodasa',\n CONGRATS: 'Congrats',\n COOL: 'Cool',\n KUDOS: 'Kudos',\n GREAT: 'Great',\n WOW: 'Wow',\n AWESOME: 'Awesome',\n};\n\nconst getPositionStyles = (isSticker: boolean, isCoddingType: boolean): string => {\n let bottom: string | null = null;\n let right = '-4px';\n let top: string | null = null;\n\n if (!isSticker) {\n bottom = `${isCoddingType ? '-2px' : '2px'}`;\n right = `${isCoddingType ? '-4px' : '2px'}`;\n } else {\n top = '-4px';\n }\n\n return `\n bottom: ${bottom};\n top: ${top};\n right: ${right};\n `;\n};\n\nconst ElementContainer = styled(FlexView)`\n align-items: center;\n gap: 4px;\n`;\n\nconst Wrapper = styled(FlexView)`\n position: absolute;\n top: -3px;\n align-items: center;\n justify-content: center;\n width: 62px;\n height: 62px;\n`;\n\nconst BgWrapper = styled.div`\n position: relative;\n width: 62px;\n height: 62px;\n`;\n\nconst GemContainer = styled.div`\n position: relative;\n`;\n\ninterface ImageWrapperProps {\n $disabled: boolean;\n $disabledVal: number;\n}\n\nconst ImageWrapper = styled.img<ImageWrapperProps>`\n width: 56px;\n height: 56px;\n ${({ $disabled, $disabledVal }) =>\n $disabled &&\n css`\n filter: saturate(0);\n opacity: ${$disabledVal};\n `}\n`;\n\ninterface LottieContainerProps {\n $disabled: boolean;\n}\n\nconst LottieContainer = styled.div<LottieContainerProps>`\n border: 1px solid ${({ theme }) => theme.colors.GREY_2};\n border-radius: 8px;\n`;\n\ninterface LottieWrapperProps {\n $disabled: boolean;\n $disabledVal: number;\n}\n\nconst LottieWrapper = styled(FlexView)<LottieWrapperProps>`\n width: 62px;\n height: 62px;\n align-items: center;\n justify-content: center;\n ${({ $disabled, $disabledVal }) =>\n $disabled &&\n css`\n filter: saturate(0);\n opacity: ${$disabledVal};\n `}\n`;\n\ninterface CountWrapperProps {\n $isSticker: boolean;\n $isCoddingType: boolean;\n $borderColor: string;\n $width: number;\n $borderRadius: string;\n $currentScreenWidth: number;\n}\n\nconst CountWrapper = styled(FlexView)<CountWrapperProps>`\n position: absolute;\n ${({ $isSticker, $isCoddingType }) => getPositionStyles($isSticker, $isCoddingType)};\n background-color: ${({ theme }) => theme.colors.GREY_2};\n border-radius: ${({ $borderRadius }) => $borderRadius};\n border: ${({ $borderColor }) => `1px solid ${$borderColor}`};\n width: ${({ $width }) => $width}px;\n height: 16px;\n align-items: center;\n justify-content: center;\n ${({ $currentScreenWidth, $width }) =>\n $currentScreenWidth < SCREEN_SIZES.LAPTOP &&\n css`\n width: ${$width + 6}px;\n height: 22px;\n `}\n`;\n\ninterface CountTextProps {\n $currentScreenWidth: number;\n}\n\nconst CountText = styled(Text)<CountTextProps>`\n font-size: 9px;\n line-height: 14px;\n ${({ $currentScreenWidth }) =>\n $currentScreenWidth < SCREEN_SIZES.LAPTOP &&\n css`\n font-size: 12px;\n line-height: 14px;\n `}\n`;\n\ninterface ElementTextProps {\n $disabled: boolean;\n}\n\nconst ElementText = styled(Text)<ElementTextProps>`\n color: ${({ theme }) => theme.colors.BLACK};\n opacity: ${({ $disabled }) => ($disabled ? 1 : 0.5)};\n`;\n\ninterface LottieData {\n height: number;\n width: number;\n lottieSrc: string;\n}\n\ninterface ElementProps {\n isAchieved?: boolean;\n count?: number;\n elementType: string;\n isCoddingType?: boolean;\n isSticker?: boolean;\n lotties?: Record<string, LottieData>;\n currentScreenWidth: number;\n}\n\nconst Element: React.FC<ElementProps> = ({\n isAchieved = false,\n count = 0,\n elementType,\n isCoddingType = false,\n isSticker = false,\n lotties = {},\n currentScreenWidth,\n}) => {\n const isLargeCount = count >= 100;\n const elementTitle = elementTitles[elementType];\n const disabledVal = disablePercentages[elementType] || 1;\n const { height, width, lottieSrc } = lotties[elementType] || {};\n const lottieRef = React.useRef<ILottieAnimationRef | null>(null);\n\n const handleMouseEnter = useCallback(() => {\n if (isAchieved && lottieSrc) {\n lottieRef.current?.play();\n lottieRef.current?.setLoop(true);\n }\n }, [isAchieved, lottieSrc]);\n\n const handleMouseLeave = useCallback(() => {\n if (lottieSrc) {\n lottieRef.current?.setLoop(false);\n }\n }, [lottieSrc]);\n\n return (\n <ElementContainer>\n <BgWrapper>\n <Wrapper $flexDirection=\"row\">\n <GemContainer>\n {!isSticker && (\n <ImageWrapper\n $disabled={!isAchieved}\n $disabledVal={disabledVal}\n src={getRewardElement(elementType)}\n alt=\"reward\"\n />\n )}\n {isSticker && lottieSrc && (\n <LottieContainer $disabled={!isAchieved}>\n <LottieWrapper\n $disabled={!isAchieved}\n $disabledVal={disabledVal}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <LottieAnimation\n src={lottieSrc}\n width={width}\n height={height}\n ref={lottieRef}\n settings={{ autoplay: false, loop: false }}\n />\n </LottieWrapper>\n </LottieContainer>\n )}\n\n {isAchieved && (\n <CountWrapper\n $isSticker={isSticker}\n $borderColor={elementColors[elementType as keyof typeof elementColors] || '#000'}\n $width={isLargeCount ? 28 : 16}\n $borderRadius={isLargeCount ? '26px' : '50%'}\n $isCoddingType={isCoddingType}\n $currentScreenWidth={currentScreenWidth}\n $flexDirection=\"row\"\n >\n <CountText\n $currentScreenWidth={currentScreenWidth}\n $renderAs=\"body3\"\n $color=\"BLACK\"\n >\n {count}\n </CountText>\n </CountWrapper>\n )}\n </GemContainer>\n </Wrapper>\n </BgWrapper>\n <Separator height={4} />\n <ElementText $renderAs=\"body3\" $disabled={isAchieved}>\n {elementTitle}\n </ElementText>\n </ElementContainer>\n );\n};\n\nexport default memo(Element);\n"],"names":["disablePercentages","elementTitles","getPositionStyles","isSticker","isCoddingType","bottom","right","top","ElementContainer","styled","FlexView","Wrapper","BgWrapper","GemContainer","ImageWrapper","$disabled","$disabledVal","css","LottieContainer","theme","LottieWrapper","CountWrapper","$isSticker","$isCoddingType","$borderRadius","$borderColor","$width","$currentScreenWidth","SCREEN_SIZES","CountText","Text","ElementText","Element","isAchieved","count","elementType","lotties","currentScreenWidth","isLargeCount","elementTitle","disabledVal","height","width","lottieSrc","lottieRef","React","handleMouseEnter","useCallback","_a","_b","handleMouseLeave","jsx","getRewardElement","LottieAnimation","elementColors","Separator","Element$1","memo"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { jsx as s } from "react/jsx-runtime";
2
+ import { memo as a } from "react";
3
+ import t from "styled-components";
4
+ const $ = t.div`
5
+ position: relative;
6
+ overflow: hidden;
7
+ background: ${({ $backgroundColor: r, theme: o }) => o.colors[r] || r};
8
+ width: 100%;
9
+ height: ${({ $height: r }) => `${r}px`};
10
+ border-radius: ${({ $height: r, $corners: o }) => o ? `${r / 2}px` : 0};
11
+ `, c = t.div`
12
+ position: absolute;
13
+ background: ${({ $backgroundColor: r, theme: o }) => o.colors[r] || r};
14
+ transition: width 300ms ease-in-out;
15
+ width: ${({ $progress: r }) => `${r}%`};
16
+ height: 100%;
17
+ border-radius: ${({ $borderRadius: r }) => r || 0}px;
18
+ `, h = ({
19
+ borderRadius: r = 0,
20
+ height: o = 8,
21
+ progress: i,
22
+ corners: e = !0,
23
+ backgroundColor: d = "GREY_1",
24
+ progressColor: n = "GREY_4"
25
+ }) => /* @__PURE__ */ s($, { $height: o, $corners: e, $backgroundColor: d, children: /* @__PURE__ */ s(
26
+ c,
27
+ {
28
+ $progress: i,
29
+ $backgroundColor: n,
30
+ $borderRadius: r
31
+ }
32
+ ) }), p = a(h);
33
+ export {
34
+ p as default
35
+ };
36
+ //# sourceMappingURL=progress-bar-horizontal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar-horizontal.js","sources":["../../../../src/features/wins-dashboard/belts-elements-stickers/progress-bar-horizontal.tsx"],"sourcesContent":["import type { TColorNames } from '../../ui/types';\n\nimport React, { memo } from 'react';\nimport styled from 'styled-components';\n\nconst Background = styled.div<{\n $backgroundColor: TColorNames | string;\n $height: number;\n $corners: boolean;\n}>`\n position: relative;\n overflow: hidden;\n background: ${({ $backgroundColor, theme }) =>\n theme.colors[$backgroundColor as TColorNames] || $backgroundColor};\n width: 100%;\n height: ${({ $height }) => `${$height}px`};\n border-radius: ${({ $height, $corners }) => ($corners ? `${$height / 2}px` : 0)};\n`;\n\nconst Progress = styled.div<{\n $backgroundColor: TColorNames | string;\n $progress: number;\n $borderRadius: number;\n}>`\n position: absolute;\n background: ${({ $backgroundColor, theme }) =>\n theme.colors[$backgroundColor as TColorNames] || $backgroundColor};\n transition: width 300ms ease-in-out;\n width: ${({ $progress }) => `${$progress}%`};\n height: 100%;\n border-radius: ${({ $borderRadius }) => $borderRadius || 0}px;\n`;\n\ninterface ProgressBarHorizontalProps {\n borderRadius?: number;\n progress: number;\n height?: number;\n backgroundColor?: TColorNames | string;\n progressColor?: TColorNames | string;\n corners?: boolean;\n}\n\nconst ProgressBarHorizontal: React.FC<ProgressBarHorizontalProps> = ({\n borderRadius = 0,\n height = 8,\n progress,\n corners = true,\n backgroundColor = 'GREY_1',\n progressColor = 'GREY_4',\n}) => {\n return (\n <Background $height={height} $corners={corners} $backgroundColor={backgroundColor}>\n <Progress\n $progress={progress}\n $backgroundColor={progressColor}\n $borderRadius={borderRadius}\n />\n </Background>\n );\n};\n\nexport default memo(ProgressBarHorizontal);\n"],"names":["Background","styled","$backgroundColor","theme","$height","$corners","Progress","$progress","$borderRadius","ProgressBarHorizontal","borderRadius","height","progress","corners","backgroundColor","progressColor","jsx","ProgressBarHorizontal$1","memo"],"mappings":";;;AAKA,MAAMA,IAAaC,EAAO;AAAA;AAAA;AAAA,gBAOV,CAAC,EAAE,kBAAAC,GAAkB,OAAAC,QACjCA,EAAM,OAAOD,CAA+B,KAAKA,CAAgB;AAAA;AAAA,YAEzD,CAAC,EAAE,SAAAE,EAAc,MAAA,GAAGA,CAAO,IAAI;AAAA,mBACxB,CAAC,EAAE,SAAAA,GAAS,UAAAC,EAAS,MAAOA,IAAW,GAAGD,IAAU,CAAC,OAAO,CAAE;AAAA,GAG3EE,IAAWL,EAAO;AAAA;AAAA,gBAMR,CAAC,EAAE,kBAAAC,GAAkB,OAAAC,QACjCA,EAAM,OAAOD,CAA+B,KAAKA,CAAgB;AAAA;AAAA,WAE1D,CAAC,EAAE,WAAAK,EAAgB,MAAA,GAAGA,CAAS,GAAG;AAAA;AAAA,mBAE1B,CAAC,EAAE,eAAAC,QAAoBA,KAAiB,CAAC;AAAA,GAYtDC,IAA8D,CAAC;AAAA,EACnE,cAAAC,IAAe;AAAA,EACf,QAAAC,IAAS;AAAA,EACT,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,iBAAAC,IAAkB;AAAA,EAClB,eAAAC,IAAgB;AAClB,wBAEKf,GAAW,EAAA,SAASW,GAAQ,UAAUE,GAAS,kBAAkBC,GAChE,UAAA,gBAAAE;AAAA,EAACV;AAAA,EAAA;AAAA,IACC,WAAWM;AAAA,IACX,kBAAkBG;AAAA,IAClB,eAAeL;AAAA,EAAA;AAEnB,EAAA,CAAA,GAIWO,IAAAC,EAAKT,CAAqB;"}
@@ -0,0 +1,83 @@
1
+ import { jsxs as I, jsx as r } from "react/jsx-runtime";
2
+ import { memo as $ } from "react";
3
+ import c, { css as p } from "styled-components";
4
+ import f from "../../ui/layout/flex-view.js";
5
+ import R from "../../ui/separator/separator.js";
6
+ import S from "../../ui/text/text.js";
7
+ import { SCREEN_SIZES as a, INSTRUCTION_REWARDS as w, MATH_REWARDS as N, STICKERS as A } from "../constants.js";
8
+ import g from "./elements.js";
9
+ const E = {
10
+ STICKER: "STICKERS",
11
+ CODING: "CODING",
12
+ CHIP: "CHIPS",
13
+ ELEMENT: "ELEMENTS"
14
+ }, L = c(f)`
15
+ background-color: ${({ theme: t }) => t.colors.WHITE};
16
+ `, P = c(f)`
17
+ max-width: 280px;
18
+ width: 100%;
19
+ ${({ $currentScreenWidth: t }) => t < a.LAPTOP && p`
20
+ max-width: 764px;
21
+ width: 100%;
22
+ `}
23
+ `, O = c.div`
24
+ width: 33%;
25
+ padding-bottom: 16px;
26
+ ${({ $currentScreenWidth: t }) => t < a.LAPTOP && p`
27
+ width: 15%;
28
+ height: 33%;
29
+ `}
30
+ `, u = c.div`
31
+ padding-left: ${({ $isSticker: t }) => t ? "13px" : "19px"};
32
+ color: ${({ theme: t }) => t.colors.BLACK};
33
+ font-size: 20px;
34
+ font-weight: 800;
35
+ ${({ $currentScreenWidth: t }) => t < a.LAPTOP && p`
36
+ padding-left: 0;
37
+ `}
38
+ `, D = (t, o) => {
39
+ let e = E.STICKER;
40
+ return t || (e = o ? E.CHIP : E.ELEMENT), e;
41
+ }, T = (t, o, e, n, s = {}, m) => /* @__PURE__ */ r(O, { $currentScreenWidth: m, children: /* @__PURE__ */ r(
42
+ g,
43
+ {
44
+ isAchieved: t in o,
45
+ count: o[t],
46
+ elementType: t,
47
+ isCoddingType: e,
48
+ isSticker: n,
49
+ lotties: s,
50
+ currentScreenWidth: m
51
+ }
52
+ ) }, t), K = ({
53
+ elements: t,
54
+ isSticker: o = !1,
55
+ lotties: e = {},
56
+ currentScreenWidth: n,
57
+ programStream: s
58
+ }) => {
59
+ const m = s === E.CODING ? [...w] : [...N], l = s === E.CODING, h = A, d = {};
60
+ return t && t.forEach((i) => {
61
+ const { name: x, count: C } = i;
62
+ d[x] = C;
63
+ }), /* @__PURE__ */ I(L, { children: [
64
+ /* @__PURE__ */ r(u, { $currentScreenWidth: n, $isSticker: o, children: /* @__PURE__ */ r(S, { $renderAs: "h5", $color: "BLACK", children: D(o, l) }) }),
65
+ /* @__PURE__ */ r(R, { height: 18 }),
66
+ /* @__PURE__ */ r(P, { $flexWrap: !0, $flexDirection: "row", $currentScreenWidth: n, children: o ? h.map(
67
+ (i) => T(
68
+ i,
69
+ d,
70
+ l,
71
+ o,
72
+ e,
73
+ n
74
+ )
75
+ ) : m.map(
76
+ (i) => T(i, d, l, !1, {}, n)
77
+ ) })
78
+ ] });
79
+ }, j = $(K);
80
+ export {
81
+ j as default
82
+ };
83
+ //# sourceMappingURL=reward-elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reward-elements.js","sources":["../../../../src/features/wins-dashboard/belts-elements-stickers/reward-elements.tsx"],"sourcesContent":["import React, { memo } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\nimport Separator from '../../ui/separator/separator';\nimport Text from '../../ui/text/text';\nimport { INSTRUCTION_REWARDS, MATH_REWARDS, SCREEN_SIZES, STICKERS } from '../constants';\nimport Element from './elements';\n\nconst ELEMENT_TEXT = {\n STICKER: 'STICKERS',\n CODING: 'CODING',\n CHIP: 'CHIPS',\n ELEMENT: 'ELEMENTS',\n};\n\nconst InfoWrapper = styled(FlexView)`\n background-color: ${({ theme }) => theme.colors.WHITE};\n`;\n\ninterface ElementContainerProps {\n $currentScreenWidth: number;\n}\n\nconst ElementContainer = styled(FlexView)<ElementContainerProps>`\n max-width: 280px;\n width: 100%;\n ${({ $currentScreenWidth }) =>\n $currentScreenWidth < SCREEN_SIZES.LAPTOP &&\n css`\n max-width: 764px;\n width: 100%;\n `}\n`;\n\ninterface ElementWrapperProps {\n $currentScreenWidth: number;\n}\n\nconst ElementWrapper = styled.div<ElementWrapperProps>`\n width: 33%;\n padding-bottom: 16px;\n ${({ $currentScreenWidth }) =>\n $currentScreenWidth < SCREEN_SIZES.LAPTOP &&\n css`\n width: 15%;\n height: 33%;\n `}\n`;\n\ninterface ElementTextProps {\n $isSticker: boolean;\n $currentScreenWidth: number;\n}\n\nconst ElementText = styled.div<ElementTextProps>`\n padding-left: ${({ $isSticker }) => ($isSticker ? '13px' : '19px')};\n color: ${({ theme }) => theme.colors.BLACK};\n font-size: 20px;\n font-weight: 800;\n ${({ $currentScreenWidth }) =>\n $currentScreenWidth < SCREEN_SIZES.LAPTOP &&\n css`\n padding-left: 0;\n `}\n`;\n\nconst getElementText = (isSticker: boolean, isCoddingType: boolean): string => {\n let name = ELEMENT_TEXT.STICKER;\n\n if (!isSticker) {\n name = isCoddingType ? ELEMENT_TEXT.CHIP : ELEMENT_TEXT.ELEMENT;\n }\n\n return name;\n};\n\ninterface ElementData {\n name: string;\n count: number;\n}\n\ninterface LottieProps {\n height: number;\n width: number;\n lottieSrc: string;\n}\n\nconst getElements = (\n element: string,\n elementsCount: Record<string, number>,\n isCoddingType: boolean,\n isSticker: boolean,\n lotties: Record<string, LottieProps> = {},\n currentScreenWidth: number,\n) => {\n return (\n <ElementWrapper $currentScreenWidth={currentScreenWidth} key={element}>\n <Element\n isAchieved={element in elementsCount}\n count={elementsCount[element]}\n elementType={element}\n isCoddingType={isCoddingType}\n isSticker={isSticker}\n lotties={lotties}\n currentScreenWidth={currentScreenWidth}\n />\n </ElementWrapper>\n );\n};\n\ninterface RewardElementsProps {\n elements?: ElementData[];\n isSticker?: boolean;\n lotties?: Record<string, LottieProps>;\n currentScreenWidth: number;\n programStream?: string;\n}\n\nconst RewardElements: React.FC<RewardElementsProps> = ({\n elements,\n isSticker = false,\n lotties = {},\n currentScreenWidth,\n programStream,\n}) => {\n const totalElements =\n programStream === ELEMENT_TEXT.CODING ? [...INSTRUCTION_REWARDS] : [...MATH_REWARDS];\n const isCoddingType = programStream === ELEMENT_TEXT.CODING;\n const totalStickers = STICKERS;\n const elementsCount: Record<string, number> = {};\n\n if (elements) {\n elements.forEach(element => {\n const { name, count } = element;\n\n elementsCount[name] = count;\n });\n }\n\n return (\n <InfoWrapper>\n <ElementText $currentScreenWidth={currentScreenWidth} $isSticker={isSticker}>\n <Text $renderAs=\"h5\" $color=\"BLACK\">\n {getElementText(isSticker, isCoddingType)}\n </Text>\n </ElementText>\n <Separator height={18} />\n <ElementContainer $flexWrap $flexDirection=\"row\" $currentScreenWidth={currentScreenWidth}>\n {!isSticker\n ? totalElements.map(element =>\n getElements(element, elementsCount, isCoddingType, false, {}, currentScreenWidth),\n )\n : totalStickers.map(sticker =>\n getElements(\n sticker,\n elementsCount,\n isCoddingType,\n isSticker,\n lotties,\n currentScreenWidth,\n ),\n )}\n </ElementContainer>\n </InfoWrapper>\n );\n};\n\nexport default memo(RewardElements);\n"],"names":["ELEMENT_TEXT","InfoWrapper","styled","FlexView","theme","ElementContainer","$currentScreenWidth","SCREEN_SIZES","css","ElementWrapper","ElementText","$isSticker","getElementText","isSticker","isCoddingType","name","getElements","element","elementsCount","lotties","currentScreenWidth","jsx","Element","RewardElements","elements","programStream","totalElements","INSTRUCTION_REWARDS","MATH_REWARDS","totalStickers","STICKERS","count","Text","Separator","sticker","RewardElements$1","memo"],"mappings":";;;;;;;;AASA,MAAMA,IAAe;AAAA,EACnB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AACX,GAEMC,IAAcC,EAAOC,CAAQ;AAAA,sBACb,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA,GAOjDC,IAAmBH,EAAOC,CAAQ;AAAA;AAAA;AAAA,IAGpC,CAAC,EAAE,qBAAAG,EACH,MAAAA,IAAsBC,EAAa,UACnCC;AAAA;AAAA;AAAA,KAGC;AAAA,GAOCC,IAAiBP,EAAO;AAAA;AAAA;AAAA,IAG1B,CAAC,EAAE,qBAAAI,EACH,MAAAA,IAAsBC,EAAa,UACnCC;AAAA;AAAA;AAAA,KAGC;AAAA,GAQCE,IAAcR,EAAO;AAAA,kBACT,CAAC,EAAE,YAAAS,EAAA,MAAkBA,IAAa,SAAS,MAAO;AAAA,WACzD,CAAC,EAAE,OAAAP,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA,IAGxC,CAAC,EAAE,qBAAAE,EACH,MAAAA,IAAsBC,EAAa,UACnCC;AAAA;AAAA,KAEC;AAAA,GAGCI,IAAiB,CAACC,GAAoBC,MAAmC;AAC7E,MAAIC,IAAOf,EAAa;AAExB,SAAKa,MACIE,IAAAD,IAAgBd,EAAa,OAAOA,EAAa,UAGnDe;AACT,GAaMC,IAAc,CAClBC,GACAC,GACAJ,GACAD,GACAM,IAAuC,CAAC,GACxCC,MAGE,gBAAAC,EAACZ,GAAe,EAAA,qBAAqBW,GACnC,UAAA,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,YAAYL,KAAWC;AAAA,IACvB,OAAOA,EAAcD,CAAO;AAAA,IAC5B,aAAaA;AAAA,IACb,eAAAH;AAAA,IACA,WAAAD;AAAA,IACA,SAAAM;AAAA,IACA,oBAAAC;AAAA,EAAA;AAAA,KAR0DH,CAU9D,GAYEM,IAAgD,CAAC;AAAA,EACrD,UAAAC;AAAA,EACA,WAAAX,IAAY;AAAA,EACZ,SAAAM,IAAU,CAAC;AAAA,EACX,oBAAAC;AAAA,EACA,eAAAK;AACF,MAAM;AACE,QAAAC,IACJD,MAAkBzB,EAAa,SAAS,CAAC,GAAG2B,CAAmB,IAAI,CAAC,GAAGC,CAAY,GAC/Ed,IAAgBW,MAAkBzB,EAAa,QAC/C6B,IAAgBC,GAChBZ,IAAwC,CAAA;AAE9C,SAAIM,KACFA,EAAS,QAAQ,CAAWP,MAAA;AACpB,UAAA,EAAE,MAAAF,GAAM,OAAAgB,EAAU,IAAAd;AAExB,IAAAC,EAAcH,CAAI,IAAIgB;AAAA,EAAA,CACvB,qBAIA9B,GACC,EAAA,UAAA;AAAA,IAAA,gBAAAoB,EAACX,GAAY,EAAA,qBAAqBU,GAAoB,YAAYP,GAChE,UAAC,gBAAAQ,EAAAW,GAAA,EAAK,WAAU,MAAK,QAAO,SACzB,UAAApB,EAAeC,GAAWC,CAAa,EAC1C,CAAA,GACF;AAAA,IACA,gBAAAO,EAACY,GAAU,EAAA,QAAQ,GAAI,CAAA;AAAA,IACvB,gBAAAZ,EAAChB,GAAiB,EAAA,WAAS,IAAC,gBAAe,OAAM,qBAAqBe,GACnE,UAACP,IAIEgB,EAAc;AAAA,MAAI,CAChBK,MAAAlB;AAAA,QACEkB;AAAA,QACAhB;AAAA,QACAJ;AAAA,QACAD;AAAA,QACAM;AAAA,QACAC;AAAA,MACF;AAAA,IAAA,IAXFM,EAAc;AAAA,MAAI,CAAAT,MAChBD,EAAYC,GAASC,GAAeJ,GAAe,IAAO,IAAIM,CAAkB;AAAA,OAYxF;AAAA,EACF,EAAA,CAAA;AAEJ,GAEee,IAAAC,EAAKb,CAAc;"}
@@ -0,0 +1,161 @@
1
+ import { ILLUSTRATIONS as T } from "../../assets/illustrations/illustrations.js";
2
+ import { IMAGES as E } from "../../assets/images/images.js";
3
+ import R from "../../assets/line-icons/icons/wins-common-icon.js";
4
+ import o from "../../assets/line-icons/icons/wins-epic-icon.js";
5
+ import C from "../../assets/line-icons/icons/wins-legendary-icon.js";
6
+ import D from "../../assets/line-icons/icons/wins-mystery-icon.js";
7
+ import n from "../../assets/line-icons/icons/wins-mythic-icon.js";
8
+ import c from "../../assets/line-icons/icons/wins-rare-icon.js";
9
+ import { LOTTIE as t } from "../../assets/lottie/lottie.js";
10
+ import { getTheme as s } from "../ui/theme/get-theme.js";
11
+ const m = {
12
+ TABLET: 864,
13
+ LAPTOP: 1024,
14
+ LAPTOPL: 1280
15
+ }, { colors: O } = s(), a = {
16
+ ASHTA: "#FF7E3B",
17
+ CHATVA: "#DA5107",
18
+ COSA: "#0A47C2",
19
+ DODA: "#850F85",
20
+ DVI: "#0A47C2",
21
+ EKA: "#3DD771",
22
+ HEXO: "#3DD771",
23
+ OCTO: "#FF7E3B",
24
+ TETRA: "#FFBA07",
25
+ ZODASA: "#1EB5F0",
26
+ CONGRATS: O.GREY_2,
27
+ COOL: O.GREY_2,
28
+ KUDOS: O.GREY_2,
29
+ GREAT: O.GREY_2,
30
+ WOW: O.GREY_2,
31
+ AWESOME: O.GREY_2
32
+ }, A = {
33
+ COMMON: "COMMON",
34
+ RARE: "RARE",
35
+ EPIC: "EPIC",
36
+ LEGENDARY: "LEGENDARY",
37
+ MYTHIC: "MYTHIC",
38
+ MYSTERY: "MYSTERY"
39
+ }, H = {
40
+ ACKNOWLEDGED: "ACKNOWLEDGED",
41
+ ASSIGNED: "ASSIGNED",
42
+ UNASSIGNED: "UNASSIGNED"
43
+ }, h = {
44
+ [A.COMMON]: "#1EB5F0",
45
+ [A.RARE]: "#3DD771",
46
+ [A.EPIC]: "#ED6CEF",
47
+ [A.LEGENDARY]: "#FF7E3B",
48
+ [A.MYTHIC]: "#FFBA07",
49
+ [A.MYSTERY]: O.WHITE
50
+ }, u = {
51
+ [A.COMMON]: R,
52
+ [A.RARE]: c,
53
+ [A.EPIC]: o,
54
+ [A.LEGENDARY]: C,
55
+ [A.MYTHIC]: n,
56
+ [A.MYSTERY]: D
57
+ }, P = {
58
+ [A.COMMON]: T.COMMON,
59
+ [A.RARE]: T.RARE,
60
+ [A.EPIC]: T.EPIC,
61
+ [A.LEGENDARY]: T.LEGENDARY,
62
+ [A.MYTHIC]: T.MYTHIC,
63
+ [A.MYSTERY]: T.MYSTERY
64
+ }, S = {
65
+ black: E.BLACK_BELT,
66
+ blue: E.BLUE_BELT,
67
+ brown: E.BROWN_BELT,
68
+ green: E.GREEN_BELT,
69
+ orange: E.ORANGE_BELT,
70
+ purple: E.PURPLE_BELT,
71
+ red: E.RED_BELT,
72
+ white: E.WHITE_BELT,
73
+ yellow: E.YELLOW_BELT
74
+ }, l = (r) => {
75
+ const e = r == null ? void 0 : r.toLowerCase();
76
+ return e && e in S ? S[e] : E.MASTERED_BADGE;
77
+ }, K = ["TETRA", "COSA", "DODA", "HEXO", "OCTO"], U = ["EKA", "DVI", "CHATVA", "ASHTA", "ZODASA"], F = ["CONGRATS", "COOL", "KUDOS", "GREAT", "WOW", "AWESOME"], f = (r) => {
78
+ switch (r) {
79
+ case "COSA":
80
+ return E.COSA;
81
+ case "OCTO":
82
+ return E.OCTO;
83
+ case "DODA":
84
+ return E.DODA;
85
+ case "HEXO":
86
+ return E.HEXO;
87
+ case "TETRA":
88
+ return E.TETRA;
89
+ case "EKA":
90
+ return E.EKA;
91
+ case "DVI":
92
+ return E.DVI;
93
+ case "CHATVA":
94
+ return E.CHATVA;
95
+ case "ASHTA":
96
+ return E.ASHTA;
97
+ case "ZODASA":
98
+ return E.ZODASA;
99
+ case "CONGRATS":
100
+ return E.CONGRATS;
101
+ case "COOL":
102
+ return E.COOL;
103
+ case "KUDOS":
104
+ return E.KUDOS;
105
+ case "GREAT":
106
+ return E.GREAT;
107
+ case "WOW":
108
+ return E.WOW;
109
+ case "AWESOME":
110
+ return E.AWESOME;
111
+ default:
112
+ return E.TETRA;
113
+ }
114
+ }, g = {
115
+ CONGRATS: {
116
+ height: 50,
117
+ width: 50,
118
+ lottieSrc: t.TROPHY
119
+ },
120
+ COOL: {
121
+ height: 50,
122
+ width: 50,
123
+ lottieSrc: t.COOL
124
+ },
125
+ KUDOS: {
126
+ height: 50,
127
+ width: 50,
128
+ lottieSrc: t.CLAPPING_HANDS
129
+ },
130
+ GREAT: {
131
+ height: 63,
132
+ width: 50,
133
+ lottieSrc: t.LIKE_BUTTON
134
+ },
135
+ WOW: {
136
+ height: 55,
137
+ width: 55,
138
+ lottieSrc: t.STAR_STRIKE_EMOJI
139
+ },
140
+ AWESOME: {
141
+ height: 50,
142
+ width: 50,
143
+ lottieSrc: t.AWESOME
144
+ }
145
+ };
146
+ export {
147
+ h as BADGE_TYPE_BACKGROUND,
148
+ P as BADGE_TYPE_BADGE_ICON,
149
+ u as BADGE_TYPE_TAB_ICON,
150
+ U as INSTRUCTION_REWARDS,
151
+ K as MATH_REWARDS,
152
+ m as SCREEN_SIZES,
153
+ F as STICKERS,
154
+ H as STUDENT_BADGE_STATUS,
155
+ A as STUDENT_BADGE_TYPE,
156
+ g as StickerMap,
157
+ a as elementColors,
158
+ l as getBeltIcon,
159
+ f as getRewardElement
160
+ };
161
+ //# sourceMappingURL=constants.js.map