@cuemath/leap 3.2.23-as1 → 3.2.23-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 (111) hide show
  1. package/dist/assets/illustrations/illustrations.js +0 -6
  2. package/dist/assets/illustrations/illustrations.js.map +1 -1
  3. package/dist/assets/images/images.js +0 -10
  4. package/dist/assets/images/images.js.map +1 -1
  5. package/dist/assets/lottie/lottie.js +1 -6
  6. package/dist/assets/lottie/lottie.js.map +1 -1
  7. package/dist/features/stickers/sticker-data.js +234 -0
  8. package/dist/features/stickers/sticker-data.js.map +1 -0
  9. package/dist/features/{ui/sticker-grid/sticker-grid-styles.js → stickers/sticker-selector/sticker-selector-styles.js} +21 -31
  10. package/dist/features/stickers/sticker-selector/sticker-selector-styles.js.map +1 -0
  11. package/dist/features/stickers/sticker-selector/sticker-selector.js +27 -0
  12. package/dist/features/stickers/sticker-selector/sticker-selector.js.map +1 -0
  13. package/dist/features/stickers/sticker-selector/sticker.js +57 -0
  14. package/dist/features/stickers/sticker-selector/sticker.js.map +1 -0
  15. package/dist/features/{ui/stickers/stickers-effects.js → stickers/stickers-effects/effects.js} +6 -6
  16. package/dist/features/stickers/stickers-effects/effects.js.map +1 -0
  17. package/dist/features/stickers/stickers-effects/stickers-cache.js +19 -0
  18. package/dist/features/stickers/stickers-effects/stickers-cache.js.map +1 -0
  19. package/dist/features/stickers/stickers-effects/stickers-effects-helper.js +86 -0
  20. package/dist/features/stickers/stickers-effects/stickers-effects-helper.js.map +1 -0
  21. package/dist/features/{ui/stickers/stickers-styled.js → stickers/stickers-effects/stickers-effects-styled.js} +2 -2
  22. package/dist/features/stickers/stickers-effects/stickers-effects-styled.js.map +1 -0
  23. package/dist/features/stickers/stickers-effects/stickers-effects.js +54 -0
  24. package/dist/features/stickers/stickers-effects/stickers-effects.js.map +1 -0
  25. package/dist/features/ui/constants/z-index.js +3 -5
  26. package/dist/features/ui/constants/z-index.js.map +1 -1
  27. package/dist/features/ui/dot-lottie-animations/dot-lottie-animation.js +88 -75
  28. package/dist/features/ui/dot-lottie-animations/dot-lottie-animation.js.map +1 -1
  29. package/dist/features/ui/lottie-animation/lottie-animation.js +36 -31
  30. package/dist/features/ui/lottie-animation/lottie-animation.js.map +1 -1
  31. package/dist/features/ui/modals/modal-styled.js +39 -8
  32. package/dist/features/ui/modals/modal-styled.js.map +1 -1
  33. package/dist/features/ui/modals/modal.js +31 -31
  34. package/dist/features/ui/modals/modal.js.map +1 -1
  35. package/dist/index.d.ts +72 -193
  36. package/dist/index.js +609 -617
  37. package/dist/index.js.map +1 -1
  38. package/package.json +1 -1
  39. package/dist/assets/line-icons/icons/cue-coin.js +0 -182
  40. package/dist/assets/line-icons/icons/cue-coin.js.map +0 -1
  41. package/dist/assets/line-icons/icons/wins-common-icon.js +0 -26
  42. package/dist/assets/line-icons/icons/wins-common-icon.js.map +0 -1
  43. package/dist/assets/line-icons/icons/wins-epic-icon.js +0 -25
  44. package/dist/assets/line-icons/icons/wins-epic-icon.js.map +0 -1
  45. package/dist/assets/line-icons/icons/wins-legendary-icon.js +0 -25
  46. package/dist/assets/line-icons/icons/wins-legendary-icon.js.map +0 -1
  47. package/dist/assets/line-icons/icons/wins-mystery-icon.js +0 -105
  48. package/dist/assets/line-icons/icons/wins-mystery-icon.js.map +0 -1
  49. package/dist/assets/line-icons/icons/wins-mythic-icon.js +0 -28
  50. package/dist/assets/line-icons/icons/wins-mythic-icon.js.map +0 -1
  51. package/dist/assets/line-icons/icons/wins-rare-icon.js +0 -28
  52. package/dist/assets/line-icons/icons/wins-rare-icon.js.map +0 -1
  53. package/dist/features/ui/sticker-grid/sticker-grid-styles.js.map +0 -1
  54. package/dist/features/ui/sticker-grid/sticker-grid.js +0 -24
  55. package/dist/features/ui/sticker-grid/sticker-grid.js.map +0 -1
  56. package/dist/features/ui/sticker-grid/sticker.js +0 -57
  57. package/dist/features/ui/sticker-grid/sticker.js.map +0 -1
  58. package/dist/features/ui/stickers/constants.js +0 -6
  59. package/dist/features/ui/stickers/constants.js.map +0 -1
  60. package/dist/features/ui/stickers/stickers-effects.js.map +0 -1
  61. package/dist/features/ui/stickers/stickers-styled.js.map +0 -1
  62. package/dist/features/ui/stickers/stickers-utils.js +0 -91
  63. package/dist/features/ui/stickers/stickers-utils.js.map +0 -1
  64. package/dist/features/ui/stickers/stickers.js +0 -40
  65. package/dist/features/ui/stickers/stickers.js.map +0 -1
  66. package/dist/features/wins-dashboard/belts-elements-stickers/belts-elements-stickers.js +0 -108
  67. package/dist/features/wins-dashboard/belts-elements-stickers/belts-elements-stickers.js.map +0 -1
  68. package/dist/features/wins-dashboard/belts-elements-stickers/belts.js +0 -94
  69. package/dist/features/wins-dashboard/belts-elements-stickers/belts.js.map +0 -1
  70. package/dist/features/wins-dashboard/belts-elements-stickers/elements.js +0 -182
  71. package/dist/features/wins-dashboard/belts-elements-stickers/elements.js.map +0 -1
  72. package/dist/features/wins-dashboard/belts-elements-stickers/progress-bar-horizontal.js +0 -35
  73. package/dist/features/wins-dashboard/belts-elements-stickers/progress-bar-horizontal.js.map +0 -1
  74. package/dist/features/wins-dashboard/belts-elements-stickers/reward-elements.js +0 -82
  75. package/dist/features/wins-dashboard/belts-elements-stickers/reward-elements.js.map +0 -1
  76. package/dist/features/wins-dashboard/constants.js +0 -161
  77. package/dist/features/wins-dashboard/constants.js.map +0 -1
  78. package/dist/features/wins-dashboard/header/wins-header.js +0 -95
  79. package/dist/features/wins-dashboard/header/wins-header.js.map +0 -1
  80. package/dist/features/wins-dashboard/student-badges/animated-tabbar.js +0 -65
  81. package/dist/features/wins-dashboard/student-badges/animated-tabbar.js.map +0 -1
  82. package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-hook.js +0 -107
  83. package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-hook.js.map +0 -1
  84. package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-list-hook.js +0 -135
  85. package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-list-hook.js.map +0 -1
  86. package/dist/features/wins-dashboard/student-badges/student-badge.js +0 -161
  87. package/dist/features/wins-dashboard/student-badges/student-badge.js.map +0 -1
  88. package/dist/features/wins-dashboard/student-badges/student-badges-lists.js +0 -136
  89. package/dist/features/wins-dashboard/student-badges/student-badges-lists.js.map +0 -1
  90. package/dist/static/awesome.4239f583.json +0 -1
  91. package/dist/static/black-belt.81b3ebf9.png +0 -0
  92. package/dist/static/blue-belt.508a1b4b.png +0 -0
  93. package/dist/static/brown-belt.09bb7e93.png +0 -0
  94. package/dist/static/clapping-hands.17e7ecf0.json +0 -1
  95. package/dist/static/common.9e8ceef1.svg +0 -1
  96. package/dist/static/cool.cd6921bb.json +0 -1
  97. package/dist/static/epic.37a0265a.svg +0 -1
  98. package/dist/static/green-belt.5501296f.png +0 -0
  99. package/dist/static/legendary.f15d09ca.svg +0 -1
  100. package/dist/static/like-button.281a2618.json +0 -1
  101. package/dist/static/mastered-badge.91d25e92.png +0 -0
  102. package/dist/static/mystery.81ada5fb.svg +0 -1
  103. package/dist/static/mythic.58ba0ae0.svg +0 -1
  104. package/dist/static/orange-belt.1fefcc8c.png +0 -0
  105. package/dist/static/purple-belt.e15611b4.png +0 -0
  106. package/dist/static/rare.1ffaa311.svg +0 -1
  107. package/dist/static/red-belt.11f841d9.png +0 -0
  108. package/dist/static/star-strike-emoji.c0b31028.json +0 -1
  109. package/dist/static/trophy.5ef1853a.json +0 -1
  110. package/dist/static/white-belt.ea93103e.png +0 -0
  111. package/dist/static/yellow-belt.0c47b8cc.png +0 -0
@@ -1,135 +0,0 @@
1
- import { useRef as a, useMemo as R, useState as y, useEffect as j, useCallback as O } from "react";
2
- import { css as l } from "styled-components";
3
- import { STUDENT_BADGE_TYPE as e, BADGE_TYPE_TAB_ICON as W } from "../../constants.js";
4
- const b = 64, w = 48, A = b + w, m = {
5
- TABLET: 768,
6
- LAPTOP: 1024,
7
- LAPTOPL: 1440
8
- }, $ = (n) => {
9
- if (n > m.LAPTOPL)
10
- return {
11
- badgeWidth: 140,
12
- badgeCategoryGap: 40,
13
- badgeCategoryWidth: 1040,
14
- maxBadgeNameLines: 1,
15
- containerStyle: l`
16
- grid-template-columns: repeat(auto-fit, 140px);
17
- grid-column-gap: 40px;
18
- margin-top: 32px;
19
- `
20
- };
21
- if (n > m.LAPTOP) {
22
- const u = (n - 440) / 6;
23
- return {
24
- badgeWidth: u,
25
- badgeCategoryGap: 40,
26
- badgeCategoryWidth: n - 2 * 120,
27
- maxBadgeNameLines: 1,
28
- containerStyle: l`
29
- grid-template-columns: repeat(auto-fit, ${u}px);
30
- grid-column-gap: 40px;
31
- margin-top: 32px;
32
- `
33
- };
34
- }
35
- if (n > m.TABLET)
36
- return {
37
- badgeWidth: 104,
38
- badgeCategoryGap: 24,
39
- badgeCategoryWidth: 784,
40
- maxBadgeNameLines: 2,
41
- containerStyle: l`
42
- grid-column-gap: 32px;
43
- grid-template-columns: repeat(auto-fit, 104px);
44
- margin-top: 24px;
45
- `
46
- };
47
- const g = 40, p = (n - (2 * g + 5 * 26)) / 6;
48
- return {
49
- badgeWidth: p,
50
- badgeCategoryGap: 24,
51
- badgeCategoryWidth: n - 2 * g,
52
- maxBadgeNameLines: 2,
53
- containerStyle: l`
54
- grid-column-gap: 26px;
55
- grid-template-columns: repeat(auto-fit, ${p}px);
56
- margin-top: 24px;
57
- `
58
- };
59
- };
60
- function q({
61
- currentScreenWidth: n,
62
- handleScrollTo: g,
63
- scrollPosition: d,
64
- userBadges: p
65
- }) {
66
- const B = a(null), C = a(null), u = a(null), x = a(null), L = a(null), G = a(null), M = a(null), N = a(null), P = a(null), S = a(null), _ = a(null), H = a(null), I = R(
67
- () => ({
68
- [e.COMMON]: B,
69
- [e.RARE]: C,
70
- [e.EPIC]: u,
71
- [e.LEGENDARY]: x,
72
- [e.MYTHIC]: L,
73
- [e.MYSTERY]: G
74
- }),
75
- []
76
- ), c = R(
77
- () => ({
78
- [e.COMMON]: M,
79
- [e.RARE]: N,
80
- [e.EPIC]: P,
81
- [e.LEGENDARY]: S,
82
- [e.MYTHIC]: _,
83
- [e.MYSTERY]: H
84
- }),
85
- []
86
- ), [f, E] = y(!1), [T, Y] = y(
87
- e.COMMON
88
- );
89
- j(() => {
90
- const t = Object.keys(c).reverse().find((o) => {
91
- var i;
92
- const s = c[o], r = (i = s == null ? void 0 : s.current) == null ? void 0 : i.offsetTop;
93
- return typeof r != "number" ? !1 : d >= r - (o === e.COMMON ? b : A);
94
- });
95
- t && t !== T && Y(t), t && !f && E(!0), !t && f && E(!1);
96
- }, [c, T, d, f]);
97
- const h = O(
98
- (t) => {
99
- var r;
100
- const o = c[t], s = (r = o == null ? void 0 : o.current) == null ? void 0 : r.offsetTop;
101
- if (typeof s == "number") {
102
- const i = s - (t === e.COMMON ? b : A);
103
- g(i);
104
- }
105
- },
106
- [c, g]
107
- ), D = O(() => {
108
- g(0);
109
- }, [g]), k = () => {
110
- const t = [];
111
- return Object.keys(p).forEach((o) => {
112
- const s = W[o], r = I[o];
113
- s && r && t.push({
114
- id: o,
115
- title: o,
116
- Icon: s,
117
- ref: r
118
- });
119
- }), t;
120
- };
121
- return {
122
- badgeCategoryRefs: c,
123
- categoryConfig: $(n),
124
- currentSelectedBadgeType: T,
125
- onTabClick: h,
126
- scrollToTop: D,
127
- showTabBar: f,
128
- tabs: k(),
129
- totalBadgeCategories: Object.keys(p).length
130
- };
131
- }
132
- export {
133
- q as default
134
- };
135
- //# sourceMappingURL=use-student-badge-list-hook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-student-badge-list-hook.js","sources":["../../../../../src/features/wins-dashboard/student-badges/hooks/use-student-badge-list-hook.ts"],"sourcesContent":["import type { FC } from 'react';\nimport type React from 'react';\nimport type { RuleSet } from 'styled-components';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { css } from 'styled-components';\n\nimport { BADGE_TYPE_TAB_ICON, STUDENT_BADGE_TYPE } from '../../constants';\n\nconst HEADER_HEIGHT = 64;\nconst TAB_BAR_HEIGHT = 48;\nconst TOTAL_TAB_BAR_HEIGHT = HEADER_HEIGHT + TAB_BAR_HEIGHT;\n\n// Screen sizes constants\nconst SCREEN_SIZES = {\n TABLET: 768,\n LAPTOP: 1024,\n LAPTOPL: 1440,\n};\n\ninterface CategoryConfig {\n badgeWidth: number;\n badgeCategoryGap: number;\n badgeCategoryWidth: number;\n maxBadgeNameLines: number;\n containerStyle: RuleSet<object>;\n}\n\nconst getBadgeContainerConfig = (containerWidth: number): CategoryConfig => {\n if (containerWidth > SCREEN_SIZES.LAPTOPL) {\n return {\n badgeWidth: 140,\n badgeCategoryGap: 40,\n badgeCategoryWidth: 1040,\n maxBadgeNameLines: 1,\n containerStyle: css`\n grid-template-columns: repeat(auto-fit, 140px);\n grid-column-gap: 40px;\n margin-top: 32px;\n `,\n };\n }\n\n if (containerWidth > SCREEN_SIZES.LAPTOP) {\n const gutter = 120;\n const badgeGap = 40;\n const badgeWidth = (containerWidth - (2 * gutter + 5 * badgeGap)) / 6;\n\n return {\n badgeWidth,\n badgeCategoryGap: 40,\n badgeCategoryWidth: containerWidth - 2 * gutter,\n maxBadgeNameLines: 1,\n containerStyle: css`\n grid-template-columns: repeat(auto-fit, ${badgeWidth}px);\n grid-column-gap: 40px;\n margin-top: 32px;\n `,\n };\n }\n\n if (containerWidth > SCREEN_SIZES.TABLET) {\n return {\n badgeWidth: 104,\n badgeCategoryGap: 24,\n badgeCategoryWidth: 784,\n maxBadgeNameLines: 2,\n containerStyle: css`\n grid-column-gap: 32px;\n grid-template-columns: repeat(auto-fit, 104px);\n margin-top: 24px;\n `,\n };\n }\n\n const gutter = 40;\n const badgeGap = 26;\n const badgeWidth = (containerWidth - (2 * gutter + 5 * badgeGap)) / 6;\n\n return {\n badgeWidth,\n badgeCategoryGap: 24,\n badgeCategoryWidth: containerWidth - 2 * gutter,\n maxBadgeNameLines: 2,\n containerStyle: css`\n grid-column-gap: 26px;\n grid-template-columns: repeat(auto-fit, ${badgeWidth}px);\n margin-top: 24px;\n `,\n };\n};\n\nexport default function useStudentBadgeListHook({\n currentScreenWidth,\n handleScrollTo,\n scrollPosition,\n userBadges,\n}: {\n currentScreenWidth: number;\n handleScrollTo: (position: number) => void;\n scrollPosition: number;\n userBadges: Record<string, unknown[]>;\n}) {\n // Create refs for all possible badge categories\n const commonTabRef = useRef<HTMLDivElement | null>(null);\n const rareTabRef = useRef<HTMLDivElement | null>(null);\n const epicTabRef = useRef<HTMLDivElement | null>(null);\n const legendaryTabRef = useRef<HTMLDivElement | null>(null);\n const mythicTabRef = useRef<HTMLDivElement | null>(null);\n const mysteryTabRef = useRef<HTMLDivElement | null>(null);\n\n const commonBadgeRef = useRef<HTMLDivElement | null>(null);\n const rareBadgeRef = useRef<HTMLDivElement | null>(null);\n const epicBadgeRef = useRef<HTMLDivElement | null>(null);\n const legendaryBadgeRef = useRef<HTMLDivElement | null>(null);\n const mythicBadgeRef = useRef<HTMLDivElement | null>(null);\n const mysteryBadgeRef = useRef<HTMLDivElement | null>(null);\n\n const tabBarRefs: Record<string, React.RefObject<HTMLDivElement | null>> = useMemo(\n () => ({\n [STUDENT_BADGE_TYPE.COMMON]: commonTabRef,\n [STUDENT_BADGE_TYPE.RARE]: rareTabRef,\n [STUDENT_BADGE_TYPE.EPIC]: epicTabRef,\n [STUDENT_BADGE_TYPE.LEGENDARY]: legendaryTabRef,\n [STUDENT_BADGE_TYPE.MYTHIC]: mythicTabRef,\n [STUDENT_BADGE_TYPE.MYSTERY]: mysteryTabRef,\n }),\n [],\n );\n\n const badgeCategoryRefs: Record<string, React.RefObject<HTMLDivElement | null>> = useMemo(\n () => ({\n [STUDENT_BADGE_TYPE.COMMON]: commonBadgeRef,\n [STUDENT_BADGE_TYPE.RARE]: rareBadgeRef,\n [STUDENT_BADGE_TYPE.EPIC]: epicBadgeRef,\n [STUDENT_BADGE_TYPE.LEGENDARY]: legendaryBadgeRef,\n [STUDENT_BADGE_TYPE.MYTHIC]: mythicBadgeRef,\n [STUDENT_BADGE_TYPE.MYSTERY]: mysteryBadgeRef,\n }),\n [],\n );\n\n const [showTabBar, setShowTabBar] = useState(false);\n const [currentSelectedBadgeType, setCurrentSelectedBadgeType] = useState(\n STUDENT_BADGE_TYPE.COMMON,\n );\n\n useEffect(() => {\n const categoryReached = Object.keys(badgeCategoryRefs)\n .reverse()\n .find(category => {\n const categoryRef = badgeCategoryRefs[category];\n const categoryTopOffset = categoryRef?.current?.offsetTop;\n\n if (typeof categoryTopOffset !== 'number') return false;\n\n return (\n scrollPosition >=\n categoryTopOffset -\n (category === STUDENT_BADGE_TYPE.COMMON ? HEADER_HEIGHT : TOTAL_TAB_BAR_HEIGHT)\n );\n });\n\n if (categoryReached && categoryReached !== currentSelectedBadgeType) {\n setCurrentSelectedBadgeType(categoryReached);\n }\n\n if (categoryReached && !showTabBar) {\n setShowTabBar(true);\n }\n\n if (!categoryReached && showTabBar) {\n setShowTabBar(false);\n }\n }, [badgeCategoryRefs, currentSelectedBadgeType, scrollPosition, showTabBar]);\n\n const onTabClick = useCallback(\n (category: string) => {\n const categoryRef = badgeCategoryRefs[category];\n const categoryTopOffset = categoryRef?.current?.offsetTop;\n\n if (typeof categoryTopOffset === 'number') {\n const scrollTopPosition =\n categoryTopOffset -\n (category === STUDENT_BADGE_TYPE.COMMON ? HEADER_HEIGHT : TOTAL_TAB_BAR_HEIGHT);\n\n handleScrollTo(scrollTopPosition);\n }\n },\n [badgeCategoryRefs, handleScrollTo],\n );\n\n const scrollToTop = useCallback(() => {\n const scrollTopPosition = 0;\n\n handleScrollTo(scrollTopPosition);\n }, [handleScrollTo]);\n\n const getTabBarData = (): Array<{\n id: string;\n title: string;\n Icon: FC<{ color?: string; selected?: boolean }>;\n ref: React.RefObject<HTMLDivElement | null>;\n }> => {\n const tabBarData: Array<{\n id: string;\n title: string;\n Icon: FC<{ color?: string; selected?: boolean }>;\n ref: React.RefObject<HTMLDivElement | null>;\n }> = [];\n\n Object.keys(userBadges).forEach(category => {\n const Icon = BADGE_TYPE_TAB_ICON[category];\n const ref = tabBarRefs[category];\n\n if (Icon && ref) {\n tabBarData.push({\n id: category,\n title: category,\n Icon,\n ref,\n });\n }\n });\n\n return tabBarData;\n };\n\n return {\n badgeCategoryRefs,\n categoryConfig: getBadgeContainerConfig(currentScreenWidth),\n currentSelectedBadgeType,\n onTabClick,\n scrollToTop,\n showTabBar,\n tabs: getTabBarData(),\n totalBadgeCategories: Object.keys(userBadges).length,\n };\n}\n"],"names":["HEADER_HEIGHT","TAB_BAR_HEIGHT","TOTAL_TAB_BAR_HEIGHT","SCREEN_SIZES","getBadgeContainerConfig","containerWidth","css","badgeWidth","gutter","useStudentBadgeListHook","currentScreenWidth","handleScrollTo","scrollPosition","userBadges","commonTabRef","useRef","rareTabRef","epicTabRef","legendaryTabRef","mythicTabRef","mysteryTabRef","commonBadgeRef","rareBadgeRef","epicBadgeRef","legendaryBadgeRef","mythicBadgeRef","mysteryBadgeRef","tabBarRefs","useMemo","STUDENT_BADGE_TYPE","badgeCategoryRefs","showTabBar","setShowTabBar","useState","currentSelectedBadgeType","setCurrentSelectedBadgeType","useEffect","categoryReached","category","categoryRef","categoryTopOffset","_a","onTabClick","useCallback","scrollTopPosition","scrollToTop","getTabBarData","tabBarData","Icon","BADGE_TYPE_TAB_ICON","ref"],"mappings":"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"}
@@ -1,161 +0,0 @@
1
- import { jsxs as s, jsx as o, Fragment as C } from "react/jsx-runtime";
2
- import t, { css as _, keyframes as I } from "styled-components";
3
- import i from "../../ui/layout/flex-view.js";
4
- import L from "../../ui/separator/separator.js";
5
- import u from "../../ui/text/text.js";
6
- import { getTheme as T } from "../../ui/theme/get-theme.js";
7
- import M from "./hooks/use-student-badge-hook.js";
8
- const { colors: n } = T(), d = 20, S = (e) => I`
9
- 0% {
10
- background-position: -${e}px 0;
11
- }
12
- 80%, 100% {
13
- background-position: ${e}px 0;
14
- }
15
- `, W = t.div`
16
- display: flex;
17
- width: ${({ $badgeWidth: e }) => e}px;
18
- height: ${({ $badgeWidth: e }) => e}px;
19
- background: linear-gradient(
20
- 92.42deg,
21
- ${n.GREY_1}40 1.94%,
22
- ${n.GREY_1} 48.8%,
23
- ${n.GREY_1}40 97.88%
24
- );
25
- background-size: 200% 100%;
26
- animation-name: ${({ $badgeWidth: e }) => S(e)};
27
- animation-duration: 2s;
28
- animation-iteration-count: infinite;
29
- background-repeat: no-repeat;
30
- background-color: ${n.WHITE};
31
- opacity: 0.5;
32
- `, G = t(i)`
33
- position: absolute;
34
- top: 0;
35
- right: 0;
36
- background: ${n.ORANGE_3};
37
- border-radius: 0px 8px;
38
- padding: 2px 8px;
39
- z-index: 1;
40
- `, N = t(i)`
41
- cursor: ${(e) => e.$isEarned ? "pointer" : "default"};
42
- `, P = t(i)`
43
- position: relative;
44
- border-radius: 8px;
45
- overflow: hidden;
46
- `, z = t(i)`
47
- position: relative;
48
- border-radius: 8px;
49
- overflow: hidden;
50
- background: ${({ $backgroundColor: e }) => e};
51
- opacity: ${({ $badgeEarned: e }) => e ? 1 : 0.5};
52
-
53
- ${({ $notEarnedMysterBadge: e }) => e && _`
54
- mix-blend-mode: luminosity;
55
- `}
56
- `, H = t.img`
57
- opacity: ${(e) => e.$mouseEntered ? 0 : 1};
58
- `, O = t(i)`
59
- position: absolute;
60
- bottom: 0;
61
- `, Y = t(i)`
62
- position: relative;
63
- overflow: hidden;
64
- `, j = t(i)`
65
- position: absolute;
66
- left: 0;
67
- top: 0;
68
- height: 100%;
69
- transition: width 300ms ease-in-out;
70
- `, p = t(u)`
71
- display: -webkit-box;
72
- -webkit-line-clamp: ${({ $numberOfLines: e }) => e};
73
- -webkit-box-orient: vertical;
74
- overflow: hidden;
75
- `, D = t(i)`
76
- height: ${({ $badgeSize: e }) => e + d}px;
77
- left: ${-d / 2}px;
78
- opacity: ${({ $mouseEntered: e }) => e ? 1 : 0};
79
- position: absolute;
80
- top: ${-d / 2}px;
81
- width: ${({ $badgeSize: e }) => e + d}px;
82
- `, J = (e) => {
83
- const { is_recent: h, badgeWidth: r, maxBadgeNameLines: g = 1, image_url: m } = e, {
84
- badgeBackgroundColor: $,
85
- badgeDescription: b,
86
- badgeEarned: a,
87
- badgeImage: x,
88
- badgeName: f,
89
- badgeProgress: E,
90
- mouseEntered: c,
91
- notEarnedMysterBadge: k,
92
- onBadgeClick: w,
93
- onBadgeMouseEnter: B,
94
- onBadgeMouseLeave: y,
95
- showLoader: v,
96
- showProgress: R,
97
- studentBadgeId: l,
98
- studentBadgeRef: A
99
- } = M(e);
100
- return /* @__PURE__ */ s(
101
- N,
102
- {
103
- onClick: w,
104
- ref: A,
105
- $width: r,
106
- $isEarned: a,
107
- children: [
108
- /* @__PURE__ */ o(P, { children: v ? /* @__PURE__ */ o(W, { $badgeWidth: r }) : /* @__PURE__ */ s(C, { children: [
109
- /* @__PURE__ */ s(
110
- z,
111
- {
112
- $backgroundColor: $,
113
- $badgeEarned: a,
114
- $notEarnedMysterBadge: k,
115
- onMouseEnter: B,
116
- onMouseLeave: y,
117
- children: [
118
- h && /* @__PURE__ */ o(G, { children: /* @__PURE__ */ o(u, { $renderAs: "cta2", children: "NEW" }) }),
119
- a ? /* @__PURE__ */ o(
120
- H,
121
- {
122
- $mouseEntered: c,
123
- src: m,
124
- alt: "badge-placeholder",
125
- width: r,
126
- height: r
127
- }
128
- ) : /* @__PURE__ */ o(
129
- "img",
130
- {
131
- src: x,
132
- alt: "badge-placeholder",
133
- width: r,
134
- height: r
135
- }
136
- ),
137
- /* @__PURE__ */ o(
138
- D,
139
- {
140
- id: l,
141
- $mouseEntered: c,
142
- $badgeSize: r
143
- }
144
- )
145
- ]
146
- }
147
- ),
148
- R && /* @__PURE__ */ o(O, { $width: r, children: /* @__PURE__ */ o(Y, { $height: 4, $borderRadius: 2, $width: "100%", $background: "WHITE", children: /* @__PURE__ */ o(j, { $width: `${E}%`, $borderRadius: 2, $background: "BLACK" }) }) })
149
- ] }) }),
150
- /* @__PURE__ */ o(L, { height: 8 }),
151
- /* @__PURE__ */ o(p, { $renderAs: "cta2", $numberOfLines: g, children: f }),
152
- /* @__PURE__ */ o(p, { $renderAs: "body3", $numberOfLines: g + 1, children: b })
153
- ]
154
- },
155
- l
156
- );
157
- };
158
- export {
159
- J as default
160
- };
161
- //# sourceMappingURL=student-badge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"student-badge.js","sources":["../../../../src/features/wins-dashboard/student-badges/student-badge.tsx"],"sourcesContent":["import React from 'react';\nimport styled, { css, keyframes } from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\nimport Separator from '../../ui/separator/separator';\nimport Text from '../../ui/text/text';\nimport { getTheme } from '../../ui/theme/get-theme';\nimport useStudentBadgeHook from './hooks/use-student-badge-hook';\n\nconst { colors } = getTheme();\n\nconst EXTRA_BADGE_SIZE = 20;\n\nconst shimmer = (badgeWidth: number) => keyframes`\n 0% {\n background-position: -${badgeWidth}px 0;\n }\n 80%, 100% {\n background-position: ${badgeWidth}px 0;\n }\n`;\n\nconst BadgePlaceholder = styled.div<{ $badgeWidth: number }>`\n display: flex;\n width: ${({ $badgeWidth }) => $badgeWidth}px;\n height: ${({ $badgeWidth }) => $badgeWidth}px;\n background: linear-gradient(\n 92.42deg,\n ${colors.GREY_1}40 1.94%,\n ${colors.GREY_1} 48.8%,\n ${colors.GREY_1}40 97.88%\n );\n background-size: 200% 100%;\n animation-name: ${({ $badgeWidth }) => shimmer($badgeWidth)};\n animation-duration: 2s;\n animation-iteration-count: infinite;\n background-repeat: no-repeat;\n background-color: ${colors.WHITE};\n opacity: 0.5;\n`;\n\nconst NewTag = styled(FlexView)`\n position: absolute;\n top: 0;\n right: 0;\n background: ${colors.ORANGE_3};\n border-radius: 0px 8px;\n padding: 2px 8px;\n z-index: 1;\n`;\n\ninterface StudentBadgeModalData {\n badges: Array<{\n animation_url?: string;\n animationData?: object;\n category: string;\n current_count?: number;\n description?: string;\n id: string;\n image_url?: string;\n name?: string;\n state?: string;\n total_count?: number;\n }>;\n invalidateRewardsHome?: () => void;\n}\n\nexport interface StudentBadgeProps {\n animation_url?: string;\n category: string;\n current_count?: number;\n description?: string;\n id: string;\n image_url?: string;\n invalidateRewardsHome?: () => void;\n is_recent?: boolean;\n name?: string;\n openModal?: (modalType: string, data: StudentBadgeModalData) => void;\n state?: string;\n total_count?: number;\n badgeWidth: number;\n maxBadgeNameLines: number;\n}\n\nconst Wrapper = styled(FlexView)<{ $isEarned: boolean }>`\n cursor: ${props => (props.$isEarned ? 'pointer' : 'default')};\n`;\nconst StudentBadgeWrapper = styled(FlexView)`\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n`;\n\nconst BadgeImageContainer = styled(FlexView)<{\n $backgroundColor: string;\n $badgeEarned: boolean;\n $notEarnedMysterBadge: boolean;\n}>`\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background: ${({ $backgroundColor }) => $backgroundColor};\n opacity: ${({ $badgeEarned }) => ($badgeEarned ? 1 : 0.5)};\n\n ${({ $notEarnedMysterBadge }) =>\n $notEarnedMysterBadge &&\n css`\n mix-blend-mode: luminosity;\n `}\n`;\n\nconst BadgeImage = styled.img<{ $mouseEntered?: boolean }>`\n opacity: ${props => (props.$mouseEntered ? 0 : 1)};\n`;\n\nconst ProgressContainer = styled(FlexView)`\n position: absolute;\n bottom: 0;\n`;\n\nconst Background = styled(FlexView)`\n position: relative;\n overflow: hidden;\n`;\n\nconst Progress = styled(FlexView)`\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n transition: width 300ms ease-in-out;\n`;\n\nconst BadgeText = styled(Text)<{ $numberOfLines: number }>`\n display: -webkit-box;\n -webkit-line-clamp: ${({ $numberOfLines }) => $numberOfLines};\n -webkit-box-orient: vertical;\n overflow: hidden;\n`;\n\nconst AnimationContainer = styled(FlexView)<{ $badgeSize: number; $mouseEntered: boolean }>`\n height: ${({ $badgeSize }) => $badgeSize + EXTRA_BADGE_SIZE}px;\n left: ${-EXTRA_BADGE_SIZE / 2}px;\n opacity: ${({ $mouseEntered }) => ($mouseEntered ? 1 : 0)};\n position: absolute;\n top: ${-EXTRA_BADGE_SIZE / 2}px;\n width: ${({ $badgeSize }) => $badgeSize + EXTRA_BADGE_SIZE}px;\n`;\n\nconst StudentBadge: React.FC<StudentBadgeProps> = props => {\n const { is_recent: isRecent, badgeWidth, maxBadgeNameLines = 1, image_url: imageUrl } = props;\n\n const {\n badgeBackgroundColor,\n badgeDescription,\n badgeEarned,\n badgeImage,\n badgeName,\n badgeProgress,\n mouseEntered,\n notEarnedMysterBadge,\n onBadgeClick,\n onBadgeMouseEnter,\n onBadgeMouseLeave,\n showLoader,\n showProgress,\n studentBadgeId,\n studentBadgeRef,\n } = useStudentBadgeHook(props);\n\n return (\n <Wrapper\n onClick={onBadgeClick}\n ref={studentBadgeRef}\n $width={badgeWidth}\n $isEarned={badgeEarned}\n key={studentBadgeId}\n >\n <StudentBadgeWrapper>\n {showLoader ? (\n <BadgePlaceholder $badgeWidth={badgeWidth} />\n ) : (\n <>\n <BadgeImageContainer\n $backgroundColor={badgeBackgroundColor}\n $badgeEarned={badgeEarned}\n $notEarnedMysterBadge={notEarnedMysterBadge}\n onMouseEnter={onBadgeMouseEnter}\n onMouseLeave={onBadgeMouseLeave}\n >\n {isRecent && (\n <NewTag>\n <Text $renderAs=\"cta2\">NEW</Text>\n </NewTag>\n )}\n {badgeEarned ? (\n <BadgeImage\n $mouseEntered={mouseEntered}\n src={imageUrl}\n alt=\"badge-placeholder\"\n width={badgeWidth}\n height={badgeWidth}\n />\n ) : (\n <img\n src={badgeImage}\n alt=\"badge-placeholder\"\n width={badgeWidth}\n height={badgeWidth}\n />\n )}\n <AnimationContainer\n id={studentBadgeId}\n $mouseEntered={mouseEntered}\n $badgeSize={badgeWidth}\n />\n </BadgeImageContainer>\n {showProgress && (\n <ProgressContainer $width={badgeWidth}>\n <Background $height={4} $borderRadius={2} $width={'100%'} $background=\"WHITE\">\n <Progress $width={`${badgeProgress}%`} $borderRadius={2} $background=\"BLACK\" />\n </Background>\n </ProgressContainer>\n )}\n </>\n )}\n </StudentBadgeWrapper>\n <Separator height={8} />\n <BadgeText $renderAs=\"cta2\" $numberOfLines={maxBadgeNameLines}>\n {badgeName}\n </BadgeText>\n <BadgeText $renderAs=\"body3\" $numberOfLines={maxBadgeNameLines + 1}>\n {badgeDescription}\n </BadgeText>\n </Wrapper>\n );\n};\n\nexport default StudentBadge;\n"],"names":["colors","getTheme","EXTRA_BADGE_SIZE","shimmer","badgeWidth","keyframes","BadgePlaceholder","styled","$badgeWidth","NewTag","FlexView","Wrapper","props","StudentBadgeWrapper","BadgeImageContainer","$backgroundColor","$badgeEarned","$notEarnedMysterBadge","css","BadgeImage","ProgressContainer","Background","Progress","BadgeText","Text","$numberOfLines","AnimationContainer","$badgeSize","$mouseEntered","StudentBadge","isRecent","maxBadgeNameLines","imageUrl","badgeBackgroundColor","badgeDescription","badgeEarned","badgeImage","badgeName","badgeProgress","mouseEntered","notEarnedMysterBadge","onBadgeClick","onBadgeMouseEnter","onBadgeMouseLeave","showLoader","showProgress","studentBadgeId","studentBadgeRef","useStudentBadgeHook","jsxs","jsx","Fragment","Separator"],"mappings":"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"}
@@ -1,136 +0,0 @@
1
- import { jsxs as s, jsx as e } from "react/jsx-runtime";
2
- import i, { css as G } from "styled-components";
3
- import S from "../../../assets/line-icons/icons/up.js";
4
- import o from "../../ui/layout/flex-view.js";
5
- import $ from "../../ui/text/text.js";
6
- import { BADGE_TYPE_BACKGROUND as F, BADGE_TYPE_TAB_ICON as _ } from "../constants.js";
7
- import j from "./animated-tabbar.js";
8
- import L from "./hooks/use-student-badge-list-hook.js";
9
- import O from "./student-badge.js";
10
- const g = 64, { innerHeight: R } = window, N = i(o)`
11
- width: 100%;
12
- background-color: ${({ $backgroundColor: t }) => t};
13
- padding: ${({ $badgeCategoryGap: t }) => t}px 0;
14
- align-items: center;
15
- ${({ $isLastCategory: t }) => t && G`
16
- min-height: ${R - g}px;
17
- `}
18
- `, Y = i(o)`
19
- position: fixed;
20
- top: ${({ $topOffset: t }) => t}px;
21
- width: ${({ $width: t }) => t}px;
22
- z-index: 1;
23
- transition: transform 200ms linear;
24
- transform: translateY(${({ $visible: t }) => t ? g : 0}px);
25
- `, v = i(o)`
26
- position: fixed;
27
- top: ${window.innerHeight - 100}px;
28
- right: 40px;
29
- width: 48px;
30
- height: 48px;
31
- border: 1px solid black;
32
- background: ${({ theme: t }) => t.colors.WHITE};
33
- border-radius: 24px;
34
- cursor: pointer;
35
- opacity: ${({ $showTabBar: t }) => t ? 1 : 0};
36
- transition: all 100ms linear;
37
- `, U = i.div`
38
- display: grid;
39
- grid-row-gap: 16px;
40
- ${({ $containerStyle: t }) => t};
41
- `, W = ({
42
- invalidateRewardsHome: t,
43
- openModal: m,
44
- topOffset: h = 0,
45
- userBadges: n,
46
- currentScreenWidth: a,
47
- handleScrollTo: f,
48
- scrollPosition: x
49
- }) => {
50
- const {
51
- badgeCategoryRefs: w,
52
- categoryConfig: u,
53
- currentSelectedBadgeType: y,
54
- onTabClick: B,
55
- scrollToTop: C,
56
- showTabBar: c,
57
- tabs: T,
58
- totalBadgeCategories: b
59
- } = L({
60
- currentScreenWidth: a,
61
- handleScrollTo: f,
62
- scrollPosition: x,
63
- userBadges: n
64
- }), { badgeCategoryGap: I, badgeCategoryWidth: d, containerStyle: E, badgeWidth: k, maxBadgeNameLines: A } = u;
65
- return /* @__PURE__ */ s(o, { $alignItems: "center", children: [
66
- /* @__PURE__ */ e(
67
- Y,
68
- {
69
- $flexDirection: "row",
70
- $background: "WHITE",
71
- $visible: c,
72
- $justifyContent: "center",
73
- $width: a,
74
- $topOffset: h,
75
- children: /* @__PURE__ */ e(o, { $width: d, children: /* @__PURE__ */ e(
76
- j,
77
- {
78
- tabs: T,
79
- selectedTabId: y,
80
- onTabClick: B,
81
- currentScreenWidth: a
82
- }
83
- ) })
84
- }
85
- ),
86
- /* @__PURE__ */ e(o, { $flexDirection: "row", $gap: 16, $width: d, children: /* @__PURE__ */ e($, { $renderAs: "h5", children: "BADGES" }) }),
87
- Object.keys(n).map((r, H) => {
88
- const l = _[r];
89
- return /* @__PURE__ */ e(
90
- N,
91
- {
92
- $backgroundColor: F[r] || "#FFFFFF",
93
- $badgeCategoryGap: I,
94
- $isLastCategory: H === b - 1,
95
- ref: w[r],
96
- children: /* @__PURE__ */ s(o, { $width: d, children: [
97
- /* @__PURE__ */ s(o, { $flexDirection: "row", $flexGap: 8, $alignItems: "center", children: [
98
- typeof l == "function" ? /* @__PURE__ */ e(l, {}) : null,
99
- /* @__PURE__ */ e($, { $renderAs: "eyebrow1", children: r })
100
- ] }),
101
- /* @__PURE__ */ e(U, { $containerStyle: E, children: (n[r] || []).map((p) => {
102
- const { id: D } = p || {};
103
- return /* @__PURE__ */ e(
104
- O,
105
- {
106
- ...p,
107
- category: r,
108
- openModal: m,
109
- badgeWidth: k,
110
- maxBadgeNameLines: A,
111
- invalidateRewardsHome: t
112
- },
113
- D
114
- );
115
- }) })
116
- ] })
117
- },
118
- r
119
- );
120
- }),
121
- /* @__PURE__ */ e(
122
- v,
123
- {
124
- $justifyContent: "center",
125
- $alignItems: "center",
126
- $showTabBar: c,
127
- onClick: C,
128
- children: /* @__PURE__ */ e(S, {})
129
- }
130
- )
131
- ] });
132
- }, Z = W;
133
- export {
134
- Z as default
135
- };
136
- //# sourceMappingURL=student-badges-lists.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"student-badges-lists.js","sources":["../../../../src/features/wins-dashboard/student-badges/student-badges-lists.tsx"],"sourcesContent":["import type { Badge } from './mock/badges-list-mock';\nimport type { RuleSet } from 'styled-components';\n\nimport styled, { css } from 'styled-components';\n\nimport UpIcon from '../../../assets/line-icons/icons/up';\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\nimport { BADGE_TYPE_BACKGROUND, BADGE_TYPE_TAB_ICON } from '../constants';\nimport AnimatedTabBar from './animated-tabbar';\nimport useStudentBadgeListHook from './hooks/use-student-badge-list-hook';\nimport StudentBadge from './student-badge';\n\nconst HEADER_HEIGHT = 64;\nconst { innerHeight: windowHeight } = window;\n\nconst StudentBadgesContainer = styled(FlexView)<{\n $backgroundColor: string;\n $badgeCategoryGap: number;\n $isLastCategory: boolean;\n}>`\n width: 100%;\n background-color: ${({ $backgroundColor }) => $backgroundColor};\n padding: ${({ $badgeCategoryGap }) => $badgeCategoryGap}px 0;\n align-items: center;\n ${({ $isLastCategory }) =>\n $isLastCategory &&\n css`\n min-height: ${windowHeight - HEADER_HEIGHT}px;\n `}\n`;\n\nconst TabBarContainer = styled(FlexView)<{\n $topOffset: number;\n $width: number;\n $visible: boolean;\n}>`\n position: fixed;\n top: ${({ $topOffset }) => $topOffset}px;\n width: ${({ $width }) => $width}px;\n z-index: 1;\n transition: transform 200ms linear;\n transform: translateY(${({ $visible }) => ($visible ? HEADER_HEIGHT : 0)}px);\n`;\n\nconst ScrollTopButton = styled(FlexView)<{ $showTabBar: boolean }>`\n position: fixed;\n top: ${window.innerHeight - 100}px;\n right: 40px;\n width: 48px;\n height: 48px;\n border: 1px solid black;\n background: ${({ theme }) => theme.colors.WHITE};\n border-radius: 24px;\n cursor: pointer;\n opacity: ${({ $showTabBar }) => ($showTabBar ? 1 : 0)};\n transition: all 100ms linear;\n`;\n\nconst CustomRow = styled.div<{ $containerStyle: RuleSet<object> }>`\n display: grid;\n grid-row-gap: 16px;\n ${({ $containerStyle }) => $containerStyle};\n`;\n\ninterface StudentBadgeListProps {\n invalidateRewardsHome: () => void;\n openModal: (modal: string, props?: unknown) => void;\n topOffset?: number;\n userBadges: Record<string, Badge[]>;\n currentScreenWidth: number;\n handleScrollTo: (position: number) => void;\n scrollPosition: number;\n}\n\nconst StudentBadgeList = ({\n invalidateRewardsHome,\n openModal,\n topOffset = 0,\n userBadges,\n currentScreenWidth,\n handleScrollTo,\n scrollPosition,\n}: StudentBadgeListProps) => {\n const {\n badgeCategoryRefs,\n categoryConfig,\n currentSelectedBadgeType,\n onTabClick,\n scrollToTop,\n showTabBar,\n tabs,\n totalBadgeCategories,\n } = useStudentBadgeListHook({\n currentScreenWidth,\n handleScrollTo,\n scrollPosition,\n userBadges,\n });\n\n const { badgeCategoryGap, badgeCategoryWidth, containerStyle, badgeWidth, maxBadgeNameLines } =\n categoryConfig;\n\n return (\n <FlexView $alignItems=\"center\">\n <TabBarContainer\n $flexDirection=\"row\"\n $background=\"WHITE\"\n $visible={showTabBar}\n $justifyContent=\"center\"\n $width={currentScreenWidth}\n $topOffset={topOffset}\n >\n <FlexView $width={badgeCategoryWidth}>\n <AnimatedTabBar\n tabs={tabs}\n selectedTabId={currentSelectedBadgeType}\n onTabClick={onTabClick}\n currentScreenWidth={currentScreenWidth}\n />\n </FlexView>\n </TabBarContainer>\n <FlexView $flexDirection=\"row\" $gap={16} $width={badgeCategoryWidth}>\n <Text $renderAs=\"h5\">BADGES</Text>\n </FlexView>\n {Object.keys(userBadges).map((badge, index) => {\n const BadgeCategoryIcon = BADGE_TYPE_TAB_ICON[badge];\n\n return (\n <StudentBadgesContainer\n key={badge}\n $backgroundColor={BADGE_TYPE_BACKGROUND[badge] || '#FFFFFF'}\n $badgeCategoryGap={badgeCategoryGap}\n $isLastCategory={index === totalBadgeCategories - 1}\n ref={badgeCategoryRefs[badge]}\n >\n <FlexView $width={badgeCategoryWidth}>\n <FlexView $flexDirection=\"row\" $flexGap={8} $alignItems=\"center\">\n {typeof BadgeCategoryIcon === 'function' ? <BadgeCategoryIcon /> : null}\n <Text $renderAs=\"eyebrow1\">{badge}</Text>\n </FlexView>\n <CustomRow $containerStyle={containerStyle}>\n {(userBadges[badge] || []).map(badgeProps => {\n const { id: studentBadgeId } = badgeProps || {};\n\n return (\n <StudentBadge\n key={studentBadgeId}\n {...badgeProps}\n category={badge}\n openModal={openModal}\n badgeWidth={badgeWidth}\n maxBadgeNameLines={maxBadgeNameLines}\n invalidateRewardsHome={invalidateRewardsHome}\n />\n );\n })}\n </CustomRow>\n </FlexView>\n </StudentBadgesContainer>\n );\n })}\n <ScrollTopButton\n $justifyContent=\"center\"\n $alignItems=\"center\"\n $showTabBar={showTabBar}\n onClick={scrollToTop}\n >\n <UpIcon />\n </ScrollTopButton>\n </FlexView>\n );\n};\n\nexport default StudentBadgeList;\n"],"names":["HEADER_HEIGHT","windowHeight","StudentBadgesContainer","styled","FlexView","$backgroundColor","$badgeCategoryGap","$isLastCategory","css","TabBarContainer","$topOffset","$width","$visible","ScrollTopButton","theme","$showTabBar","CustomRow","$containerStyle","StudentBadgeList","invalidateRewardsHome","openModal","topOffset","userBadges","currentScreenWidth","handleScrollTo","scrollPosition","badgeCategoryRefs","categoryConfig","currentSelectedBadgeType","onTabClick","scrollToTop","showTabBar","tabs","totalBadgeCategories","useStudentBadgeListHook","badgeCategoryGap","badgeCategoryWidth","containerStyle","badgeWidth","maxBadgeNameLines","jsxs","jsx","AnimatedTabBar","Text","badge","index","BadgeCategoryIcon","BADGE_TYPE_TAB_ICON","BADGE_TYPE_BACKGROUND","badgeProps","studentBadgeId","StudentBadge","UpIcon","StudentBadgeList$1"],"mappings":"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"}