@cuemath/leap 3.3.28 → 3.3.29-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/dist/assets/line-icons/icons/chevron-right.js.map +1 -1
  2. package/dist/features/auth/pla-signup/pla-analytics-events.js +9 -3
  3. package/dist/features/auth/pla-signup/pla-analytics-events.js.map +1 -1
  4. package/dist/features/auth/signup/circular-step-wrapper/circular-step-wrapper.js.map +1 -1
  5. package/dist/features/auth/signup/custom-input-field/custom-input-field.js +8 -8
  6. package/dist/features/auth/signup/custom-input-field/custom-input-field.js.map +1 -1
  7. package/dist/features/circle-games/sign-up/sign-up.js +6 -6
  8. package/dist/features/circle-games/sign-up/sign-up.js.map +1 -1
  9. package/dist/features/homework/hw-card-list/hw-card-list-view.js +17 -17
  10. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js +6 -6
  11. package/dist/features/milestone/create/comps/sheets-list/sheets-list-styled.js +2 -2
  12. package/dist/features/milestone/create/milestone-create-helpers.js +13 -7
  13. package/dist/features/milestone/create/milestone-create-helpers.js.map +1 -1
  14. package/dist/features/parent-dashboard/api/cancel-subscription.js +9 -0
  15. package/dist/features/parent-dashboard/api/cancel-subscription.js.map +1 -0
  16. package/dist/features/parent-dashboard/comps/billing-information/billing-information-styled.js +20 -0
  17. package/dist/features/parent-dashboard/comps/billing-information/billing-information-styled.js.map +1 -0
  18. package/dist/features/parent-dashboard/comps/billing-information/billing-information.js +96 -0
  19. package/dist/features/parent-dashboard/comps/billing-information/billing-information.js.map +1 -0
  20. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/next-steps/next-steps-constants.js +1 -1
  21. package/dist/features/parent-dashboard/comps/next-steps/next-steps-constants.js.map +1 -0
  22. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/next-steps/next-steps-styled.js +1 -1
  23. package/dist/features/parent-dashboard/comps/next-steps/next-steps-styled.js.map +1 -0
  24. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/next-steps/next-steps.js +5 -5
  25. package/dist/features/parent-dashboard/comps/next-steps/next-steps.js.map +1 -0
  26. package/dist/features/parent-dashboard/comps/pla-first-session-introduction/pla-first-session-introduction.js +28 -22
  27. package/dist/features/parent-dashboard/comps/pla-first-session-introduction/pla-first-session-introduction.js.map +1 -1
  28. package/dist/features/parent-dashboard/comps/session-status/hooks/use-countdown.js +34 -0
  29. package/dist/features/parent-dashboard/comps/session-status/hooks/use-countdown.js.map +1 -0
  30. package/dist/features/parent-dashboard/comps/session-status/hooks/use-session-status-config.js +137 -0
  31. package/dist/features/parent-dashboard/comps/session-status/hooks/use-session-status-config.js.map +1 -0
  32. package/dist/features/parent-dashboard/comps/session-status/session-status-constants.js +20 -0
  33. package/dist/features/parent-dashboard/comps/session-status/session-status-constants.js.map +1 -0
  34. package/dist/features/parent-dashboard/comps/session-status/session-status-helpers.js +19 -0
  35. package/dist/features/parent-dashboard/comps/session-status/session-status-helpers.js.map +1 -0
  36. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/session-status/session-status-styled.js +2 -2
  37. package/dist/features/parent-dashboard/comps/session-status/session-status-styled.js.map +1 -0
  38. package/dist/features/parent-dashboard/comps/session-status/session-status.js +124 -0
  39. package/dist/features/parent-dashboard/comps/session-status/session-status.js.map +1 -0
  40. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/session-summary/session-summary-constants.js +2 -2
  41. package/dist/features/parent-dashboard/comps/session-summary/session-summary-constants.js.map +1 -0
  42. package/dist/features/parent-dashboard/comps/session-summary/session-summary.js +53 -0
  43. package/dist/features/parent-dashboard/comps/session-summary/session-summary.js.map +1 -0
  44. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/session-summary/summary-card/summary-card-styled.js +1 -1
  45. package/dist/features/parent-dashboard/comps/session-summary/summary-card/summary-card-styled.js.map +1 -0
  46. package/dist/features/parent-dashboard/comps/session-summary/summary-card/summary-card.js +63 -0
  47. package/dist/features/parent-dashboard/comps/session-summary/summary-card/summary-card.js.map +1 -0
  48. package/dist/features/parent-dashboard/comps/upcoming-sessions/upcoming-sessions-constants.js.map +1 -0
  49. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/upcoming-sessions/upcoming-sessions-styled.js +1 -1
  50. package/dist/features/parent-dashboard/comps/upcoming-sessions/upcoming-sessions-styled.js.map +1 -0
  51. package/dist/features/parent-dashboard/comps/upcoming-sessions/upcoming-sessions-types.js.map +1 -0
  52. package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/upcoming-sessions/upcoming-sessions.js +14 -14
  53. package/dist/features/parent-dashboard/comps/upcoming-sessions/upcoming-sessions.js.map +1 -0
  54. package/dist/features/parent-dashboard/hooks/use-fetch-parent-home.js +1 -1
  55. package/dist/features/parent-dashboard/hooks/use-fetch-parent-home.js.map +1 -1
  56. package/dist/features/parent-dashboard/hooks/use-parent-home-data.js +48 -46
  57. package/dist/features/parent-dashboard/hooks/use-parent-home-data.js.map +1 -1
  58. package/dist/features/parent-dashboard/modals/cancel-subscription/cancel-subscription-constants.js +21 -0
  59. package/dist/features/parent-dashboard/modals/cancel-subscription/cancel-subscription-constants.js.map +1 -0
  60. package/dist/features/parent-dashboard/modals/cancel-subscription/cancel-subscription.js +85 -0
  61. package/dist/features/parent-dashboard/modals/cancel-subscription/cancel-subscription.js.map +1 -0
  62. package/dist/features/parent-dashboard/modals/cancellation-confirmation/cancellation-confirmation.js +23 -0
  63. package/dist/features/parent-dashboard/modals/cancellation-confirmation/cancellation-confirmation.js.map +1 -0
  64. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason-constant.js +55 -0
  65. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason-constant.js.map +1 -0
  66. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason-styled.js +59 -0
  67. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason-styled.js.map +1 -0
  68. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason.js +93 -0
  69. package/dist/features/parent-dashboard/modals/cancellation-reason/cancellation-reason.js.map +1 -0
  70. package/dist/features/parent-dashboard/modals/hooks/use-pla-model-handlers.js +66 -0
  71. package/dist/features/parent-dashboard/modals/hooks/use-pla-model-handlers.js.map +1 -0
  72. package/dist/features/parent-dashboard/modals/tutor-change/tutor-change-styled.js +3 -3
  73. package/dist/features/parent-dashboard/modals/tutor-change/tutor-change-styled.js.map +1 -1
  74. package/dist/features/parent-dashboard/modals/view-payment-method/view-payment-method.js +76 -0
  75. package/dist/features/parent-dashboard/modals/view-payment-method/view-payment-method.js.map +1 -0
  76. package/dist/features/parent-dashboard/parent-dashboard-constants.js +45 -4
  77. package/dist/features/parent-dashboard/parent-dashboard-constants.js.map +1 -1
  78. package/dist/features/parent-dashboard/parent-dashboard-types.js +3 -3
  79. package/dist/features/parent-dashboard/parent-dashboard-types.js.map +1 -1
  80. package/dist/features/parent-dashboard/parent-dashboard-view.js +197 -173
  81. package/dist/features/parent-dashboard/parent-dashboard-view.js.map +1 -1
  82. package/dist/features/student-details/class-details/class-details-utils.js +6 -6
  83. package/dist/features/student-username/add/add-student-username-constants.js +6 -0
  84. package/dist/features/student-username/add/add-student-username-constants.js.map +1 -0
  85. package/dist/features/student-username/add/add-student-username-helpers.js +6 -0
  86. package/dist/features/student-username/add/add-student-username-helpers.js.map +1 -0
  87. package/dist/features/student-username/add/add-student-username-styled.js +10 -0
  88. package/dist/features/student-username/add/add-student-username-styled.js.map +1 -0
  89. package/dist/features/student-username/add/add-student-username.js +78 -0
  90. package/dist/features/student-username/add/add-student-username.js.map +1 -0
  91. package/dist/features/student-username/add/api/update-username.js +9 -0
  92. package/dist/features/student-username/add/api/update-username.js.map +1 -0
  93. package/dist/features/student-username/add/api/username-availability.js +10 -0
  94. package/dist/features/student-username/add/api/username-availability.js.map +1 -0
  95. package/dist/features/student-username/add/hooks/use-check-username-availability.js +41 -0
  96. package/dist/features/student-username/add/hooks/use-check-username-availability.js.map +1 -0
  97. package/dist/features/trial-session/api/teacher-availability.js +9 -0
  98. package/dist/features/trial-session/api/teacher-availability.js.map +1 -0
  99. package/dist/features/trial-session/comps/class-preference/class-preference.js +61 -49
  100. package/dist/features/trial-session/comps/class-preference/class-preference.js.map +1 -1
  101. package/dist/features/trial-session/comps/class-preference/helpers.js +28 -0
  102. package/dist/features/trial-session/comps/class-preference/helpers.js.map +1 -0
  103. package/dist/features/trial-session/comps/navigation-bar/index.js +24 -24
  104. package/dist/features/trial-session/comps/navigation-bar/index.js.map +1 -1
  105. package/dist/features/trial-session/comps/school-goals/school-goals.js +51 -50
  106. package/dist/features/trial-session/comps/school-goals/school-goals.js.map +1 -1
  107. package/dist/features/trial-session/comps/session-report/session-report.js +15 -15
  108. package/dist/features/trial-session/comps/session-report/session-report.js.map +1 -1
  109. package/dist/features/trial-session/comps/student-enrichment/student-enrichment.js +39 -38
  110. package/dist/features/trial-session/comps/student-enrichment/student-enrichment.js.map +1 -1
  111. package/dist/features/trial-session/comps/student-feedback/student-feedback-constants.js +5 -0
  112. package/dist/features/trial-session/comps/student-feedback/student-feedback-constants.js.map +1 -1
  113. package/dist/features/trial-session/comps/student-feedback/student-feedback.js +96 -51
  114. package/dist/features/trial-session/comps/student-feedback/student-feedback.js.map +1 -1
  115. package/dist/features/trial-session/comps/student-profile/student-profile.js +70 -63
  116. package/dist/features/trial-session/comps/student-profile/student-profile.js.map +1 -1
  117. package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile.js +43 -44
  118. package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile.js.map +1 -1
  119. package/dist/features/trial-session/comps/test-prep/test-prep.js +40 -39
  120. package/dist/features/trial-session/comps/test-prep/test-prep.js.map +1 -1
  121. package/dist/features/trial-session/helper.js +69 -53
  122. package/dist/features/trial-session/helper.js.map +1 -1
  123. package/dist/features/trial-session/hooks/use-slide-config-update.js +49 -0
  124. package/dist/features/trial-session/hooks/use-slide-config-update.js.map +1 -0
  125. package/dist/features/trial-session/hooks/use-trial-session-navigation.js +150 -130
  126. package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
  127. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  128. package/dist/features/trial-session/trial-session-view.js +103 -112
  129. package/dist/features/trial-session/trial-session-view.js.map +1 -1
  130. package/dist/features/utils/utils.js +1 -1
  131. package/dist/features/utils/utils.js.map +1 -1
  132. package/dist/index.d.ts +77 -77
  133. package/dist/index.js +310 -309
  134. package/package.json +2 -3
  135. package/dist/features/trial-session/comps/pla/next-steps/next-steps-constants.js.map +0 -1
  136. package/dist/features/trial-session/comps/pla/next-steps/next-steps-styled.js.map +0 -1
  137. package/dist/features/trial-session/comps/pla/next-steps/next-steps.js.map +0 -1
  138. package/dist/features/trial-session/comps/pla/session-status/hooks/use-session-countdown.js +0 -29
  139. package/dist/features/trial-session/comps/pla/session-status/hooks/use-session-countdown.js.map +0 -1
  140. package/dist/features/trial-session/comps/pla/session-status/hooks/use-session-status-config.js +0 -132
  141. package/dist/features/trial-session/comps/pla/session-status/hooks/use-session-status-config.js.map +0 -1
  142. package/dist/features/trial-session/comps/pla/session-status/session-status-constants.js +0 -11
  143. package/dist/features/trial-session/comps/pla/session-status/session-status-constants.js.map +0 -1
  144. package/dist/features/trial-session/comps/pla/session-status/session-status-helpers.js +0 -19
  145. package/dist/features/trial-session/comps/pla/session-status/session-status-helpers.js.map +0 -1
  146. package/dist/features/trial-session/comps/pla/session-status/session-status-styled.js.map +0 -1
  147. package/dist/features/trial-session/comps/pla/session-status/session-status.js +0 -127
  148. package/dist/features/trial-session/comps/pla/session-status/session-status.js.map +0 -1
  149. package/dist/features/trial-session/comps/pla/session-summary/session-summary-constants.js.map +0 -1
  150. package/dist/features/trial-session/comps/pla/session-summary/session-summary.js +0 -53
  151. package/dist/features/trial-session/comps/pla/session-summary/session-summary.js.map +0 -1
  152. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card-styled.js.map +0 -1
  153. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js +0 -56
  154. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js.map +0 -1
  155. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-constants.js.map +0 -1
  156. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-styled.js.map +0 -1
  157. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-types.js.map +0 -1
  158. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions.js.map +0 -1
  159. package/dist/node_modules/date-fns/_lib/getRoundingMethod.js +0 -10
  160. package/dist/node_modules/date-fns/_lib/getRoundingMethod.js.map +0 -1
  161. package/dist/node_modules/date-fns/differenceInMilliseconds.js +0 -9
  162. package/dist/node_modules/date-fns/differenceInMilliseconds.js.map +0 -1
  163. package/dist/node_modules/date-fns/differenceInSeconds.js +0 -11
  164. package/dist/node_modules/date-fns/differenceInSeconds.js.map +0 -1
  165. /package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/upcoming-sessions/upcoming-sessions-constants.js +0 -0
  166. /package/dist/features/{trial-session/comps/pla → parent-dashboard/comps}/upcoming-sessions/upcoming-sessions-types.js +0 -0
@@ -0,0 +1,137 @@
1
+ import { h } from "../../../../../node_modules/humanize-plus/dist/humanize.js";
2
+ import { useMemo as s, useCallback as C } from "react";
3
+ import { ILLUSTRATIONS as a } from "../../../../../assets/illustrations/illustrations.js";
4
+ import { LOTTIE as O } from "../../../../../assets/lottie/lottie.js";
5
+ import { CUEMATH_APP_URL as R } from "../../../../../constants/config.js";
6
+ import { TEXT_STYLES as t } from "../session-status-constants.js";
7
+ import { formatSessionDateTime as A, formatTimeRemaining as D } from "../session-status-helpers.js";
8
+ import P from "./use-countdown.js";
9
+ const x = ({
10
+ completedSessions: u,
11
+ nextSessionStartTime: S,
12
+ isTrialDone: c = !1,
13
+ teacherName: o,
14
+ studentName: b,
15
+ isStudentNoShow: i = !1,
16
+ onRescheduleClick: n,
17
+ isOnlyTrialDone: I = !1,
18
+ isTutorNoShow: d = !1
19
+ }) => {
20
+ const B = s(
21
+ () => ({
22
+ isNoShowStatus: i || d,
23
+ isTeacherAssigned: !!o,
24
+ formattedSessionStart: A(S)
25
+ }),
26
+ [i, d, o, S]
27
+ ), { isNoShowStatus: L, isTeacherAssigned: e, formattedSessionStart: l } = B, r = P({
28
+ timeLeft: c || L ? null : S,
29
+ maxHoursToShow: 48
30
+ }), y = C(() => {
31
+ window.open(R, "_blank");
32
+ }, []), T = C(() => {
33
+ n == null || n();
34
+ }, [n]), f = s(
35
+ () => ({
36
+ topSection: {
37
+ icon: a.CALENDAR_CROSS_ORANGE,
38
+ title: "Session Cancelled",
39
+ titleColor: "ORANGE_4",
40
+ titleStyle: t.TITLE_DESKTOP,
41
+ titleTabletStyle: t.TITLE_MOBILE,
42
+ subtitle: l,
43
+ subtitleStyle: t.SUBTITLE_DESKTOP,
44
+ subtitleTabletStyle: t.SUBTITLE_MOBILE,
45
+ subtitleLineThrough: !0,
46
+ description: i ? "We understand life is unpredictable and schedules change unexpectedly." : "We're sorry - our tutor couldn't attend your first session. This rarely happens, but tutors sometimes face unexpected circumstances.",
47
+ descriptionColor: "WHITE_1"
48
+ },
49
+ bottomSection: {
50
+ icon: a.PLATFORM_PURPLE,
51
+ title: "Please Reschedule",
52
+ titleColor: "PURPLE_4",
53
+ titleStyle: t.TITLE_DESKTOP,
54
+ titleTabletStyle: t.TITLE_MOBILE,
55
+ subtitle: i ? "Please reschedule when it works better for you. Choose any available time slot, and we'll assign you a new tutor for your child." : "Since your first class didn't happen, we haven't activated your subscription. Choose any available time slot, and we'll assign a reliable tutor.",
56
+ subtitleStyle: t.BODY_DESKTOP,
57
+ subtitleTabletStyle: t.BODY_MOBILE,
58
+ action: {
59
+ label: "Reschedule",
60
+ onClick: T
61
+ }
62
+ }
63
+ }),
64
+ [l, i, T]
65
+ ), m = s(() => {
66
+ const _ = I ? "First" : u.toString(), E = h.pluralize(u, "session");
67
+ return {
68
+ topSection: {
69
+ icon: a.BOOK_CHECKED_GREEN,
70
+ title: `${_} ${E} Completed!`,
71
+ titleColor: "GREEN_4",
72
+ titleStyle: t.TITLE_DESKTOP,
73
+ titleTabletStyle: t.TITLE_MOBILE,
74
+ align: "center"
75
+ },
76
+ bottomSection: {
77
+ lottie: O.CALENDAR_HOUR_GLASS_ORANGE,
78
+ title: "Next Session",
79
+ titleColor: "ORANGE_4",
80
+ titleStyle: t.TITLE_DESKTOP,
81
+ titleTabletStyle: t.TITLE_MOBILE,
82
+ subtitle: `${l}
83
+ with ${o}`,
84
+ subtitleStyle: t.SUBTITLE_DESKTOP,
85
+ subtitleTabletStyle: t.SUBTITLE_MOBILE,
86
+ action: {
87
+ label: "Reschedule on the Cuemath app",
88
+ onClick: y
89
+ }
90
+ }
91
+ };
92
+ }, [I, u, l, o, y]), p = s(() => {
93
+ const _ = r ? D(r) : "SESSION SCHEDULED", E = !!r;
94
+ return {
95
+ topSection: {
96
+ icon: a.CALENDAR_CHECK_GREEN,
97
+ title: _,
98
+ titleColor: "GREEN_4",
99
+ titleStyle: E ? t.COUNTDOWN_DESKTOP : t.TITLE_DESKTOP,
100
+ titleTabletStyle: E ? t.COUNTDOWN_MOBILE : t.TITLE_MOBILE,
101
+ subtitle: l,
102
+ subtitleStyle: t.SUBTITLE_DESKTOP,
103
+ subtitleTabletStyle: t.SUBTITLE_MOBILE,
104
+ action: {
105
+ label: "Reschedule",
106
+ onClick: T
107
+ }
108
+ },
109
+ bottomSection: {
110
+ align: "center",
111
+ lottie: e ? O.TEACHER_FOUND : O.TEACHER_SEARCH,
112
+ title: e ? "Tutor Assigned!" : "",
113
+ titleColor: e ? "ORANGE_4" : "WHITE_1",
114
+ titleStyle: e ? t.TITLE_DESKTOP : t.SUBTITLE_MOBILE,
115
+ titleTabletStyle: e ? t.TITLE_MOBILE : t.SUBTITLE_MOBILE,
116
+ subtitle: e ? `From over 3000 expert tutors, we selected ${o} as the perfect match for ${b}!` : "Finding the perfect tutor for your child",
117
+ subtitleStyle: t.BODY_DESKTOP,
118
+ subtitleTabletStyle: t.BODY_MOBILE,
119
+ description: e ? void 0 : "This typically takes 24-48 hours. We'll notify you via email.",
120
+ maxWidth: e ? 368 : 383,
121
+ isLargeIcon: !0
122
+ }
123
+ };
124
+ }, [
125
+ r,
126
+ l,
127
+ T,
128
+ e,
129
+ o,
130
+ b
131
+ ]);
132
+ return s(() => L ? f : c ? m : p, [L, c, f, m, p]);
133
+ };
134
+ export {
135
+ x as default
136
+ };
137
+ //# sourceMappingURL=use-session-status-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-session-status-config.js","sources":["../../../../../../src/features/parent-dashboard/comps/session-status/hooks/use-session-status-config.ts"],"sourcesContent":["import type { ISessionStatusConfig, IUseSessionStatusConfigProps } from '../session-status-types';\n\nimport { pluralize } from 'humanize-plus';\nimport { useMemo, useCallback } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport { LOTTIE } from '../../../../../assets/lottie/lottie';\nimport { CUEMATH_APP_URL } from '../../../../../constants/config';\nimport { TEXT_STYLES } from '../session-status-constants';\nimport { formatSessionDateTime, formatTimeRemaining } from '../session-status-helpers';\nimport useCountdown from './use-countdown';\n\nconst useSessionStatusConfig = ({\n completedSessions,\n nextSessionStartTime,\n isTrialDone = false,\n teacherName,\n studentName,\n isStudentNoShow = false,\n onRescheduleClick,\n isOnlyTrialDone = false,\n isTutorNoShow = false,\n}: IUseSessionStatusConfigProps): ISessionStatusConfig => {\n const derivedValues = useMemo(\n () => ({\n isNoShowStatus: isStudentNoShow || isTutorNoShow,\n isTeacherAssigned: Boolean(teacherName),\n formattedSessionStart: formatSessionDateTime(nextSessionStartTime),\n }),\n [isStudentNoShow, isTutorNoShow, teacherName, nextSessionStartTime],\n );\n\n const { isNoShowStatus, isTeacherAssigned, formattedSessionStart } = derivedValues;\n\n const countdownStartTime = isTrialDone || isNoShowStatus ? null : nextSessionStartTime;\n\n const sessionCountdown = useCountdown({\n timeLeft: countdownStartTime,\n maxHoursToShow: 48,\n });\n\n const handleRedirectToApp = useCallback(() => {\n window.open(CUEMATH_APP_URL, '_blank');\n }, []);\n\n const handleReschedule = useCallback(() => {\n onRescheduleClick?.();\n }, [onRescheduleClick]);\n\n const noShowConfig = useMemo(\n (): ISessionStatusConfig => ({\n topSection: {\n icon: ILLUSTRATIONS.CALENDAR_CROSS_ORANGE,\n title: 'Session Cancelled',\n titleColor: 'ORANGE_4',\n titleStyle: TEXT_STYLES.TITLE_DESKTOP,\n titleTabletStyle: TEXT_STYLES.TITLE_MOBILE,\n subtitle: formattedSessionStart,\n subtitleStyle: TEXT_STYLES.SUBTITLE_DESKTOP,\n subtitleTabletStyle: TEXT_STYLES.SUBTITLE_MOBILE,\n subtitleLineThrough: true,\n description: isStudentNoShow\n ? 'We understand life is unpredictable and schedules change unexpectedly.'\n : `We're sorry - our tutor couldn't attend your first session. This rarely happens, but tutors sometimes face unexpected circumstances.`,\n descriptionColor: 'WHITE_1',\n },\n bottomSection: {\n icon: ILLUSTRATIONS.PLATFORM_PURPLE,\n title: 'Please Reschedule',\n titleColor: 'PURPLE_4',\n titleStyle: TEXT_STYLES.TITLE_DESKTOP,\n titleTabletStyle: TEXT_STYLES.TITLE_MOBILE,\n subtitle: isStudentNoShow\n ? \"Please reschedule when it works better for you. Choose any available time slot, and we'll assign you a new tutor for your child.\"\n : `Since your first class didn't happen, we haven't activated your subscription. Choose any available time slot, and we'll assign a reliable tutor.`,\n subtitleStyle: TEXT_STYLES.BODY_DESKTOP,\n subtitleTabletStyle: TEXT_STYLES.BODY_MOBILE,\n action: {\n label: 'Reschedule',\n onClick: handleReschedule,\n },\n },\n }),\n [formattedSessionStart, isStudentNoShow, handleReschedule],\n );\n\n const completedConfig = useMemo((): ISessionStatusConfig => {\n const titleText = isOnlyTrialDone ? 'First' : completedSessions.toString();\n const sessionText = pluralize(completedSessions, 'session');\n\n return {\n topSection: {\n icon: ILLUSTRATIONS.BOOK_CHECKED_GREEN,\n title: `${titleText} ${sessionText} Completed!`,\n titleColor: 'GREEN_4',\n titleStyle: TEXT_STYLES.TITLE_DESKTOP,\n titleTabletStyle: TEXT_STYLES.TITLE_MOBILE,\n align: 'center',\n },\n bottomSection: {\n lottie: LOTTIE.CALENDAR_HOUR_GLASS_ORANGE,\n title: 'Next Session',\n titleColor: 'ORANGE_4',\n titleStyle: TEXT_STYLES.TITLE_DESKTOP,\n titleTabletStyle: TEXT_STYLES.TITLE_MOBILE,\n subtitle: `${formattedSessionStart}\\nwith ${teacherName}`,\n subtitleStyle: TEXT_STYLES.SUBTITLE_DESKTOP,\n subtitleTabletStyle: TEXT_STYLES.SUBTITLE_MOBILE,\n action: {\n label: 'Reschedule on the Cuemath app',\n onClick: handleRedirectToApp,\n },\n },\n };\n }, [isOnlyTrialDone, completedSessions, formattedSessionStart, teacherName, handleRedirectToApp]);\n\n const defaultConfig = useMemo((): ISessionStatusConfig => {\n const title = sessionCountdown ? formatTimeRemaining(sessionCountdown) : 'SESSION SCHEDULED';\n const hasCountdown = Boolean(sessionCountdown);\n\n return {\n topSection: {\n icon: ILLUSTRATIONS.CALENDAR_CHECK_GREEN,\n title,\n titleColor: 'GREEN_4',\n titleStyle: hasCountdown ? TEXT_STYLES.COUNTDOWN_DESKTOP : TEXT_STYLES.TITLE_DESKTOP,\n titleTabletStyle: hasCountdown ? TEXT_STYLES.COUNTDOWN_MOBILE : TEXT_STYLES.TITLE_MOBILE,\n subtitle: formattedSessionStart,\n subtitleStyle: TEXT_STYLES.SUBTITLE_DESKTOP,\n subtitleTabletStyle: TEXT_STYLES.SUBTITLE_MOBILE,\n action: {\n label: 'Reschedule',\n onClick: handleReschedule,\n },\n },\n bottomSection: {\n align: 'center',\n lottie: isTeacherAssigned ? LOTTIE.TEACHER_FOUND : LOTTIE.TEACHER_SEARCH,\n title: isTeacherAssigned ? 'Tutor Assigned!' : '',\n titleColor: isTeacherAssigned ? 'ORANGE_4' : 'WHITE_1',\n titleStyle: isTeacherAssigned ? TEXT_STYLES.TITLE_DESKTOP : TEXT_STYLES.SUBTITLE_MOBILE,\n titleTabletStyle: isTeacherAssigned\n ? TEXT_STYLES.TITLE_MOBILE\n : TEXT_STYLES.SUBTITLE_MOBILE,\n subtitle: isTeacherAssigned\n ? `From over 3000 expert tutors, we selected ${teacherName} as the perfect match for ${studentName}!`\n : 'Finding the perfect tutor for your child',\n subtitleStyle: TEXT_STYLES.BODY_DESKTOP,\n subtitleTabletStyle: TEXT_STYLES.BODY_MOBILE,\n description: isTeacherAssigned\n ? undefined\n : \"This typically takes 24-48 hours. We'll notify you via email.\",\n maxWidth: isTeacherAssigned ? 368 : 383,\n isLargeIcon: true,\n },\n };\n }, [\n sessionCountdown,\n formattedSessionStart,\n handleReschedule,\n isTeacherAssigned,\n teacherName,\n studentName,\n ]);\n\n return useMemo((): ISessionStatusConfig => {\n if (isNoShowStatus) return noShowConfig;\n\n if (isTrialDone) return completedConfig;\n\n return defaultConfig;\n }, [isNoShowStatus, isTrialDone, noShowConfig, completedConfig, defaultConfig]);\n};\n\nexport default useSessionStatusConfig;\n"],"names":["useSessionStatusConfig","completedSessions","nextSessionStartTime","isTrialDone","teacherName","studentName","isStudentNoShow","onRescheduleClick","isOnlyTrialDone","isTutorNoShow","derivedValues","useMemo","formatSessionDateTime","isNoShowStatus","isTeacherAssigned","formattedSessionStart","sessionCountdown","useCountdown","handleRedirectToApp","useCallback","CUEMATH_APP_URL","handleReschedule","noShowConfig","ILLUSTRATIONS","TEXT_STYLES","completedConfig","titleText","sessionText","pluralize","LOTTIE","defaultConfig","title","formatTimeRemaining","hasCountdown"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ const T = 1e3, O = {
2
+ autoplay: !0,
3
+ loop: !0,
4
+ renderer: "svg"
5
+ }, E = {
6
+ TITLE_DESKTOP: "ac3",
7
+ TITLE_MOBILE: "ac4",
8
+ SUBTITLE_DESKTOP: "ab1",
9
+ SUBTITLE_MOBILE: "ab2",
10
+ BODY_DESKTOP: "ub1",
11
+ BODY_MOBILE: "ub2",
12
+ COUNTDOWN_DESKTOP: "ub2",
13
+ COUNTDOWN_MOBILE: "ub3"
14
+ };
15
+ export {
16
+ T as COUNTDOWN_INTERVAL,
17
+ E as TEXT_STYLES,
18
+ O as renderSettings
19
+ };
20
+ //# sourceMappingURL=session-status-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-status-constants.js","sources":["../../../../../src/features/parent-dashboard/comps/session-status/session-status-constants.ts"],"sourcesContent":["export const COUNTDOWN_THRESHOLD = 48 * 3600; // 48 hours in seconds\nexport const COUNTDOWN_INTERVAL = 1000; // 1 second\n\nexport const renderSettings = {\n autoplay: true,\n loop: true,\n renderer: 'svg',\n};\n\nexport const TEXT_STYLES = {\n TITLE_DESKTOP: 'ac3' as const,\n TITLE_MOBILE: 'ac4' as const,\n SUBTITLE_DESKTOP: 'ab1' as const,\n SUBTITLE_MOBILE: 'ab2' as const,\n BODY_DESKTOP: 'ub1' as const,\n BODY_MOBILE: 'ub2' as const,\n COUNTDOWN_DESKTOP: 'ub2' as const,\n COUNTDOWN_MOBILE: 'ub3' as const,\n} as const;\n"],"names":["COUNTDOWN_INTERVAL","renderSettings","TEXT_STYLES"],"mappings":"AACO,MAAMA,IAAqB,KAErBC,IAAiB;AAAA,EAC5B,UAAU;AAAA,EACV,MAAM;AAAA,EACN,UAAU;AACZ,GAEaC,IAAc;AAAA,EACzB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,kBAAkB;AACpB;"}
@@ -0,0 +1,19 @@
1
+ import { fromUnixTime as m } from "../../../../node_modules/date-fns/fromUnixTime.js";
2
+ import { formatDate as a } from "../../../../node_modules/date-fns/format.js";
3
+ function d(t, s) {
4
+ if (!t) return "";
5
+ const o = m(t), r = a(o, "EEE").toUpperCase(), n = a(o, "MMM d"), i = a(o, "h a");
6
+ return `${r} . ${n} . ${i}`;
7
+ }
8
+ const e = (t) => t.toString().padStart(2, "0"), h = (t) => {
9
+ const s = Math.floor(Math.abs(t)), o = Math.floor(t / 3600), r = Math.floor(t % 3600 / 60), n = s % 60;
10
+ return `Session starts in ${e(o)}h : ${e(r)}m : ${e(
11
+ n
12
+ )}s`;
13
+ };
14
+ export {
15
+ d as formatSessionDateTime,
16
+ h as formatTimeRemaining,
17
+ e as padTime
18
+ };
19
+ //# sourceMappingURL=session-status-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-status-helpers.js","sources":["../../../../../src/features/parent-dashboard/comps/session-status/session-status-helpers.ts"],"sourcesContent":["import { fromUnixTime, format } from 'date-fns';\n\n/**\n * Formats the session start and end times into a readable string.\n *\n * @param startTime - The start time of the session in Unix timestamp.\n * @param endTime - The end time of the session in Unix timestamp.\n * @returns A formatted string representing the session time or an empty string if inputs are invalid.\n */\nexport function formatSessionDateTime(startTime: number | null, endTime?: number | null): string {\n if (!startTime) return '';\n\n const start = fromUnixTime(startTime);\n\n const day = format(start, 'EEE').toUpperCase();\n const date = format(start, 'MMM d');\n const formattedStartTime = format(start, 'h a');\n const end = endTime ? fromUnixTime(endTime) : null;\n const formattedEndTime = end ? format(end, 'h a') : null;\n\n return `${day} . ${date} . ${formattedStartTime}${\n formattedEndTime ? ` - ${formattedEndTime}` : ''\n }`;\n}\n\nexport const padTime = (time: number): string => time.toString().padStart(2, '0');\n\nexport const formatTimeRemaining = (seconds: number): string => {\n const totalSeconds = Math.floor(Math.abs(seconds));\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const remainingSeconds = totalSeconds % 60;\n\n return `Session starts in ${padTime(hours)}h : ${padTime(minutes)}m : ${padTime(\n remainingSeconds,\n )}s`;\n};\n"],"names":["formatSessionDateTime","startTime","endTime","start","fromUnixTime","day","format","date","formattedStartTime","padTime","time","formatTimeRemaining","seconds","totalSeconds","hours","minutes","remainingSeconds"],"mappings":";;AASgB,SAAAA,EAAsBC,GAA0BC,GAAiC;AAC3F,MAAA,CAACD,EAAkB,QAAA;AAEjB,QAAAE,IAAQC,EAAaH,CAAS,GAE9BI,IAAMC,EAAOH,GAAO,KAAK,EAAE,YAAY,GACvCI,IAAOD,EAAOH,GAAO,OAAO,GAC5BK,IAAqBF,EAAOH,GAAO,KAAK;AAIvC,SAAA,GAAGE,CAAG,MAAME,CAAI,MAAMC,CAAkB;AAGjD;AAEa,MAAAC,IAAU,CAACC,MAAyBA,EAAK,WAAW,SAAS,GAAG,GAAG,GAEnEC,IAAsB,CAACC,MAA4B;AAC9D,QAAMC,IAAe,KAAK,MAAM,KAAK,IAAID,CAAO,CAAC,GAC3CE,IAAQ,KAAK,MAAMF,IAAU,IAAI,GACjCG,IAAU,KAAK,MAAOH,IAAU,OAAQ,EAAE,GAC1CI,IAAmBH,IAAe;AAEjC,SAAA,qBAAqBJ,EAAQK,CAAK,CAAC,OAAOL,EAAQM,CAAO,CAAC,OAAON;AAAA,IACtEO;AAAA,EACD,CAAA;AACH;"}
@@ -1,6 +1,6 @@
1
1
  import e from "styled-components";
2
- import o from "../../../../ui/layout/flex-view.js";
3
- import r from "../../../../ui/text/text.js";
2
+ import o from "../../../ui/layout/flex-view.js";
3
+ import r from "../../../ui/text/text.js";
4
4
  const l = e(o)`
5
5
  max-width: ${({ $maxWidth: t }) => `${typeof t == "number" ? `${t}px` : `${t}`}`};
6
6
  `, m = e(r)`
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-status-styled.js","sources":["../../../../../src/features/parent-dashboard/comps/session-status/session-status-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\n\nexport const ContentWrapper = styled(FlexView)<{ $maxWidth: number | string }>`\n max-width: ${({ $maxWidth }) =>\n `${typeof $maxWidth === 'number' ? `${$maxWidth}px` : `${$maxWidth}`}`};\n`;\n\nexport const SubTitle = styled(Text)<{ $subtitleLineThrough?: boolean }>`\n text-decoration: ${({ $subtitleLineThrough }) =>\n $subtitleLineThrough ? 'line-through' : 'none'};\n`;\n\nexport const LottieWrapper = styled(FlexView)<{ $isLargeLottie: boolean }>`\n position: relative;\n left: ${({ $isLargeLottie }) => ($isLargeLottie ? '-6px' : '0')};\n`;\n"],"names":["ContentWrapper","styled","FlexView","$maxWidth","SubTitle","Text","$subtitleLineThrough","LottieWrapper","$isLargeLottie"],"mappings":";;;AAKa,MAAAA,IAAiBC,EAAOC,CAAQ;AAAA,eAC9B,CAAC,EAAE,WAAAC,EAAU,MACxB,GAAG,OAAOA,KAAc,WAAW,GAAGA,CAAS,OAAO,GAAGA,CAAS,EAAE,EAAE;AAAA,GAG7DC,IAAWH,EAAOI,CAAI;AAAA,qBACd,CAAC,EAAE,sBAAAC,EAAA,MACpBA,IAAuB,iBAAiB,MAAM;AAAA,GAGrCC,IAAgBN,EAAOC,CAAQ;AAAA;AAAA,UAElC,CAAC,EAAE,gBAAAM,EAAA,MAAsBA,IAAiB,SAAS,GAAI;AAAA;"}
@@ -0,0 +1,124 @@
1
+ import { jsx as t, jsxs as r, Fragment as o } from "react/jsx-runtime";
2
+ import { memo as L, useCallback as n } from "react";
3
+ import T from "../../../ui/buttons/text-button/text-button.js";
4
+ import A from "../../../ui/image/image.js";
5
+ import i from "../../../ui/layout/flex-view.js";
6
+ import w from "../../../ui/lottie-animation/lottie-animation.js";
7
+ import l from "../../../ui/separator/separator.js";
8
+ import u from "../../../ui/text/text.js";
9
+ import _ from "./hooks/use-session-status-config.js";
10
+ import { renderSettings as W } from "./session-status-constants.js";
11
+ import { LottieWrapper as E, ContentWrapper as O, SubTitle as X } from "./session-status-styled.js";
12
+ const a = 64, y = 75, k = ({
13
+ completedSessions: f,
14
+ nextSessionStartTime: p,
15
+ studentName: g,
16
+ teacherName: $,
17
+ isStudentNoShow: b = !1,
18
+ isTutorNoShow: S = !1,
19
+ isTrialDone: C = !1,
20
+ isOnlyTrialDone: I = !1,
21
+ onRescheduleClick: x
22
+ }) => {
23
+ const h = _({
24
+ completedSessions: f,
25
+ nextSessionStartTime: p,
26
+ studentName: g,
27
+ teacherName: $,
28
+ isStudentNoShow: b,
29
+ isTutorNoShow: S,
30
+ isTrialDone: C,
31
+ isOnlyTrialDone: I,
32
+ onRescheduleClick: x
33
+ }), d = n((e) => {
34
+ if (e.icon)
35
+ return /* @__PURE__ */ t(A, { src: e.icon, width: a, height: a });
36
+ if (e.lottie) {
37
+ const c = e.isLargeIcon ? y : a;
38
+ return /* @__PURE__ */ t(E, { $isLargeLottie: !!e.isLargeIcon, children: /* @__PURE__ */ t(
39
+ w,
40
+ {
41
+ src: e.lottie,
42
+ settings: W,
43
+ width: c,
44
+ height: c
45
+ }
46
+ ) });
47
+ }
48
+ return null;
49
+ }, []), m = n(
50
+ (e) => /* @__PURE__ */ r(O, { $maxWidth: e.maxWidth ?? "100%", $width: "100%", children: [
51
+ e.title && /* @__PURE__ */ t(
52
+ u,
53
+ {
54
+ $renderAs: e.titleStyle,
55
+ $color: e.titleColor,
56
+ $renderOnMobileAs: e.titleTabletStyle,
57
+ children: e.title
58
+ }
59
+ ),
60
+ e.subtitle && /* @__PURE__ */ r(o, { children: [
61
+ /* @__PURE__ */ t(l, { height: 2 }),
62
+ /* @__PURE__ */ t(
63
+ X,
64
+ {
65
+ $renderAs: e.subtitleStyle,
66
+ $renderOnMobileAs: e.subtitleTabletStyle,
67
+ $color: "WHITE_1",
68
+ $whiteSpace: "pre-line",
69
+ $subtitleLineThrough: e.subtitleLineThrough,
70
+ children: e.subtitle
71
+ }
72
+ )
73
+ ] }),
74
+ e.description && /* @__PURE__ */ r(o, { children: [
75
+ /* @__PURE__ */ t(l, { heightX: 0.5 }),
76
+ /* @__PURE__ */ t(
77
+ u,
78
+ {
79
+ $renderAs: "ub2",
80
+ $renderOnMobileAs: "ub3",
81
+ $color: e.descriptionColor ?? "WHITE_T_60",
82
+ children: e.description
83
+ }
84
+ )
85
+ ] }),
86
+ e.action && /* @__PURE__ */ r(o, { children: [
87
+ /* @__PURE__ */ t(l, { heightX: 0.75 }),
88
+ /* @__PURE__ */ t(i, { $width: "fit-content", children: /* @__PURE__ */ t(
89
+ T,
90
+ {
91
+ sizeOnMobile: "small",
92
+ label: e.action.label,
93
+ color: "WHITE_1",
94
+ onClick: e.action.onClick
95
+ }
96
+ ) })
97
+ ] })
98
+ ] }),
99
+ []
100
+ ), s = n(
101
+ (e) => /* @__PURE__ */ r(
102
+ i,
103
+ {
104
+ $flexDirection: "row",
105
+ $flexColumnGapX: e.isLargeIcon ? 0.75 : 1.5,
106
+ $alignItems: e.align || "flex-start",
107
+ children: [
108
+ /* @__PURE__ */ t(i, { children: d(e) }),
109
+ m(e)
110
+ ]
111
+ }
112
+ ),
113
+ [d, m]
114
+ );
115
+ return /* @__PURE__ */ r(i, { $flexDirection: "column", $justifyContent: "center", children: [
116
+ s(h.topSection),
117
+ /* @__PURE__ */ t(i, { $gutterX: 2, $gapX: 0.25, children: /* @__PURE__ */ t(l, { heightX: 3, background: "BLACK_5", width: 1 }) }),
118
+ s(h.bottomSection)
119
+ ] });
120
+ }, R = L(k);
121
+ export {
122
+ R as default
123
+ };
124
+ //# sourceMappingURL=session-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-status.js","sources":["../../../../../src/features/parent-dashboard/comps/session-status/session-status.tsx"],"sourcesContent":["import type { ISectionConfig, ISessionStatusProps } from './session-status-types';\n\nimport { useCallback, memo } from 'react';\n\nimport TextButton from '../../../ui/buttons/text-button/text-button';\nimport Image from '../../../ui/image/image';\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 useSessionStatusConfig from './hooks/use-session-status-config';\nimport { renderSettings } from './session-status-constants';\nimport * as Styled from './session-status-styled';\n\nconst ICON_SIZE = 64;\nconst LARGE_ICON_SIZE = 75;\n\nconst SessionStatus = ({\n completedSessions,\n nextSessionStartTime,\n studentName,\n teacherName,\n isStudentNoShow = false,\n isTutorNoShow = false,\n isTrialDone = false,\n isOnlyTrialDone = false,\n onRescheduleClick,\n}: ISessionStatusProps) => {\n const config = useSessionStatusConfig({\n completedSessions,\n nextSessionStartTime,\n studentName,\n teacherName,\n isStudentNoShow,\n isTutorNoShow,\n isTrialDone,\n isOnlyTrialDone,\n onRescheduleClick,\n });\n\n const renderIcon = useCallback((section: ISectionConfig) => {\n if (section.icon) {\n return <Image src={section.icon} width={ICON_SIZE} height={ICON_SIZE} />;\n }\n\n if (section.lottie) {\n const size = section.isLargeIcon ? LARGE_ICON_SIZE : ICON_SIZE;\n\n return (\n <Styled.LottieWrapper $isLargeLottie={!!section.isLargeIcon}>\n <LottieAnimation\n src={section.lottie}\n settings={renderSettings}\n width={size}\n height={size}\n />\n </Styled.LottieWrapper>\n );\n }\n\n return null;\n }, []);\n\n const renderContent = useCallback(\n (section: ISectionConfig) => (\n <Styled.ContentWrapper $maxWidth={section.maxWidth ?? '100%'} $width=\"100%\">\n {section.title && (\n <Text\n $renderAs={section.titleStyle}\n $color={section.titleColor}\n $renderOnMobileAs={section.titleTabletStyle}\n >\n {section.title}\n </Text>\n )}\n\n {section.subtitle && (\n <>\n <Separator height={2} />\n <Styled.SubTitle\n $renderAs={section.subtitleStyle!}\n $renderOnMobileAs={section.subtitleTabletStyle}\n $color=\"WHITE_1\"\n $whiteSpace=\"pre-line\"\n $subtitleLineThrough={section.subtitleLineThrough}\n >\n {section.subtitle}\n </Styled.SubTitle>\n </>\n )}\n\n {section.description && (\n <>\n <Separator heightX={0.5} />\n <Text\n $renderAs=\"ub2\"\n $renderOnMobileAs=\"ub3\"\n $color={section.descriptionColor ?? 'WHITE_T_60'}\n >\n {section.description}\n </Text>\n </>\n )}\n\n {section.action && (\n <>\n <Separator heightX={0.75} />\n <FlexView $width=\"fit-content\">\n <TextButton\n sizeOnMobile=\"small\"\n label={section.action.label}\n color=\"WHITE_1\"\n onClick={section.action.onClick}\n />\n </FlexView>\n </>\n )}\n </Styled.ContentWrapper>\n ),\n [],\n );\n\n const renderSection = useCallback(\n (section: ISectionConfig) => (\n <FlexView\n $flexDirection=\"row\"\n $flexColumnGapX={section.isLargeIcon ? 0.75 : 1.5}\n $alignItems={section.align || 'flex-start'}\n >\n <FlexView>{renderIcon(section)}</FlexView>\n {renderContent(section)}\n </FlexView>\n ),\n [renderIcon, renderContent],\n );\n\n return (\n <FlexView $flexDirection=\"column\" $justifyContent=\"center\">\n {renderSection(config.topSection)}\n\n <FlexView $gutterX={2} $gapX={0.25}>\n <Separator heightX={3} background=\"BLACK_5\" width={1} />\n </FlexView>\n\n {renderSection(config.bottomSection)}\n </FlexView>\n );\n};\n\nexport default memo(SessionStatus);\n"],"names":["ICON_SIZE","LARGE_ICON_SIZE","SessionStatus","completedSessions","nextSessionStartTime","studentName","teacherName","isStudentNoShow","isTutorNoShow","isTrialDone","isOnlyTrialDone","onRescheduleClick","config","useSessionStatusConfig","renderIcon","useCallback","section","jsx","Image","size","Styled.LottieWrapper","LottieAnimation","renderSettings","renderContent","jsxs","Styled.ContentWrapper","Text","Fragment","Separator","Styled.SubTitle","FlexView","TextButton","renderSection","SessionStatus$1","memo"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { GIF as e } from "../../../../../assets/gif/gif.js";
2
- import { ESummaryType as t } from "../../../../parent-dashboard/parent-dashboard-types.js";
1
+ import { GIF as e } from "../../../../assets/gif/gif.js";
2
+ import { ESummaryType as t } from "../../parent-dashboard-types.js";
3
3
  const n = [
4
4
  {
5
5
  title: "introduction & goals",
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-summary-constants.js","sources":["../../../../../src/features/parent-dashboard/comps/session-summary/session-summary-constants.ts"],"sourcesContent":["import type { ISessionSummary } from './session-summary-types';\n\nimport { GIF } from '../../../../assets/gif/gif';\nimport { ESummaryType } from '../../parent-dashboard-types';\n\nexport const sessionSummaryData: ISessionSummary[] = [\n {\n title: 'introduction & goals',\n description: 'Get to know your tutor and discuss your goals and expectations',\n image: GIF.YOUR_GOALS_GRID_BG,\n textBG: 'ORANGE_6',\n ctaLabel: 'View Profile',\n },\n {\n title: 'interactive sessions',\n description: 'Watch your child learn concepts and tackle problems with their tutorʼs guidance.',\n image: GIF.LEARNING_SESSION_GRID_BG,\n textBG: 'YELLOW_6',\n ctaLabel: 'View Insights',\n },\n {\n title: 'way forward',\n description: 'Get insights on your child’s learning and plan the journey ahead',\n image: GIF.WAY_FORWARD_GRID_BG,\n textBG: 'GREEN_6',\n ctaLabel: 'View Learning Plan',\n },\n];\n\nexport const sessionSummaryAfterDemo: ISessionSummary[] = [\n {\n title: 'created student profile',\n type: ESummaryType.STUDENT_PROFILE,\n image: GIF.YOUR_GOALS_GRID_BG,\n textBG: 'ORANGE_6',\n ctaLabel: 'View Profile',\n },\n {\n title: 'Shared Learning insights',\n type: ESummaryType.INSIGHTS,\n image: GIF.LEARNING_SESSION_GRID_BG,\n textBG: 'YELLOW_6',\n ctaLabel: 'View Insights',\n },\n {\n title: 'Created learning plan',\n description: 'Get insights on your child’s learning and plan the journey ahead',\n image: GIF.WAY_FORWARD_GRID_BG,\n textBG: 'GREEN_6',\n ctaLabel: 'View Learning Plan',\n type: ESummaryType.LEARNING_PLAN,\n },\n];\n"],"names":["sessionSummaryData","GIF","sessionSummaryAfterDemo","ESummaryType"],"mappings":";;AAKO,MAAMA,IAAwC;AAAA,EACnD;AAAA,IACE,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAOC,EAAI;AAAA,IACX,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAOA,EAAI;AAAA,IACX,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAOA,EAAI;AAAA,IACX,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AACF,GAEaC,IAA6C;AAAA,EACxD;AAAA,IACE,OAAO;AAAA,IACP,MAAMC,EAAa;AAAA,IACnB,OAAOF,EAAI;AAAA,IACX,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAME,EAAa;AAAA,IACnB,OAAOF,EAAI;AAAA,IACX,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAOA,EAAI;AAAA,IACX,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,MAAME,EAAa;AAAA,EACrB;AACF;"}
@@ -0,0 +1,53 @@
1
+ import { jsxs as $, jsx as s } from "react/jsx-runtime";
2
+ import { memo as b, useCallback as l } from "react";
3
+ import { useTheme as g } from "styled-components";
4
+ import p from "../../../ui/layout/flex-view.js";
5
+ import x from "../../../ui/separator/separator.js";
6
+ import v from "../../../ui/text/text.js";
7
+ import { EDeviceType as E } from "../../../ui/theme/constants.js";
8
+ import { ESummaryType as n } from "../../parent-dashboard-types.js";
9
+ import { sessionSummaryAfterDemo as T, sessionSummaryData as I } from "./session-summary-constants.js";
10
+ import S from "./summary-card/summary-card.js";
11
+ const H = b(({ isTrialDone: i, studentName: o, onViewSummary: r }) => {
12
+ const m = g().device <= E.MOBILE, a = l(
13
+ (e) => {
14
+ if (!e) return "";
15
+ if (e === n.STUDENT_PROFILE)
16
+ return `We understood your goals and expectations to create ${o}'s profile.`;
17
+ if (e === n.INSIGHTS)
18
+ return `With tutor’s guidance ${o} solved problems, helping us assess their math proficiency.`;
19
+ if (e === n.LEARNING_PLAN)
20
+ return `The plan will keep evolving based on ${o}'s progress and evolving needs.`;
21
+ },
22
+ [o]
23
+ ), c = l(
24
+ (e) => {
25
+ r == null || r(e);
26
+ },
27
+ [r]
28
+ );
29
+ return /* @__PURE__ */ $(p, { children: [
30
+ /* @__PURE__ */ s(v, { $renderAs: "ah4-bold", $renderOnMobileAs: "ab1-bold", $color: "WHITE", children: i ? "What happened in today’s session" : "What happens in the first session?" }),
31
+ /* @__PURE__ */ s(x, { height: m ? 16 : 20 }),
32
+ /* @__PURE__ */ s(p, { $flexGapX: 1, $justifyContent: "center", $flexDirection: m ? "column" : "row", children: (i ? T : I).map(
33
+ ({ title: e, description: f, image: h, textBG: d, ctaLabel: u, type: t }) => /* @__PURE__ */ s(
34
+ S,
35
+ {
36
+ title: e,
37
+ description: t && a(t) || f,
38
+ image: h,
39
+ textBG: d,
40
+ ctaLabel: u,
41
+ type: t,
42
+ isTrialDone: i,
43
+ onClick: c
44
+ },
45
+ e
46
+ )
47
+ ) })
48
+ ] });
49
+ });
50
+ export {
51
+ H as default
52
+ };
53
+ //# sourceMappingURL=session-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-summary.js","sources":["../../../../../src/features/parent-dashboard/comps/session-summary/session-summary.tsx"],"sourcesContent":["import type { ISessionSummaryProps } from './session-summary-types';\n\nimport { memo, useCallback } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { EDeviceType } from '../../../ui/theme/constants';\nimport { ESummaryType } from '../../parent-dashboard-types';\nimport { sessionSummaryAfterDemo, sessionSummaryData } from './session-summary-constants';\nimport SessionSummaryCard from './summary-card/summary-card';\n\nconst SessionSummary = memo(({ isTrialDone, studentName, onViewSummary }: ISessionSummaryProps) => {\n const theme = useTheme();\n const isMobile = theme.device <= EDeviceType.MOBILE;\n\n const getDescription = useCallback(\n (type?: ESummaryType) => {\n if (!type) return '';\n\n if (type === ESummaryType.STUDENT_PROFILE) {\n return `We understood your goals and expectations to create ${studentName}'s profile.`;\n }\n\n if (type === ESummaryType.INSIGHTS) {\n return `With tutor’s guidance ${studentName} solved problems, helping us assess their math proficiency.`;\n }\n\n if (type === ESummaryType.LEARNING_PLAN) {\n return `The plan will keep evolving based on ${studentName}'s progress and evolving needs.`;\n }\n },\n [studentName],\n );\n\n const handleClick = useCallback(\n (key: ESummaryType) => {\n onViewSummary?.(key);\n },\n [onViewSummary],\n );\n\n return (\n <FlexView>\n <Text $renderAs=\"ah4-bold\" $renderOnMobileAs=\"ab1-bold\" $color=\"WHITE\">\n {isTrialDone ? `What happened in today’s session` : `What happens in the first session?`}\n </Text>\n <Separator height={isMobile ? 16 : 20} />\n <FlexView $flexGapX={1} $justifyContent=\"center\" $flexDirection={isMobile ? 'column' : 'row'}>\n {(isTrialDone ? sessionSummaryAfterDemo : sessionSummaryData).map(\n ({ title, description, image, textBG, ctaLabel, type }) => (\n <SessionSummaryCard\n key={title}\n title={title}\n description={(type && getDescription(type)) || (description as string)}\n image={image}\n textBG={textBG}\n ctaLabel={ctaLabel}\n type={type}\n isTrialDone={isTrialDone}\n onClick={handleClick}\n />\n ),\n )}\n </FlexView>\n </FlexView>\n );\n});\n\nexport default SessionSummary;\n"],"names":["SessionSummary","memo","isTrialDone","studentName","onViewSummary","isMobile","useTheme","EDeviceType","getDescription","useCallback","type","ESummaryType","handleClick","key","FlexView","jsx","Text","Separator","sessionSummaryAfterDemo","sessionSummaryData","title","description","image","textBG","ctaLabel","SessionSummaryCard"],"mappings":";;;;;;;;;;AAaA,MAAMA,IAAiBC,EAAK,CAAC,EAAE,aAAAC,GAAa,aAAAC,GAAa,eAAAC,QAA0C;AAE3F,QAAAC,IADQC,IACS,UAAUC,EAAY,QAEvCC,IAAiBC;AAAA,IACrB,CAACC,MAAwB;AACnB,UAAA,CAACA,EAAa,QAAA;AAEd,UAAAA,MAASC,EAAa;AACxB,eAAO,uDAAuDR,CAAW;AAGvE,UAAAO,MAASC,EAAa;AACxB,eAAO,yBAAyBR,CAAW;AAGzC,UAAAO,MAASC,EAAa;AACxB,eAAO,wCAAwCR,CAAW;AAAA,IAE9D;AAAA,IACA,CAACA,CAAW;AAAA,EAAA,GAGRS,IAAcH;AAAA,IAClB,CAACI,MAAsB;AACrB,MAAAT,KAAA,QAAAA,EAAgBS;AAAA,IAClB;AAAA,IACA,CAACT,CAAa;AAAA,EAAA;AAGhB,2BACGU,GACC,EAAA,UAAA;AAAA,IAAC,gBAAAC,EAAAC,GAAA,EAAK,WAAU,YAAW,mBAAkB,YAAW,QAAO,SAC5D,UAAcd,IAAA,qCAAqC,sCACtD;AAAA,IACC,gBAAAa,EAAAE,GAAA,EAAU,QAAQZ,IAAW,KAAK,IAAI;AAAA,IACtC,gBAAAU,EAAAD,GAAA,EAAS,WAAW,GAAG,iBAAgB,UAAS,gBAAgBT,IAAW,WAAW,OACnF,WAAcH,IAAAgB,IAA0BC,GAAoB;AAAA,MAC5D,CAAC,EAAE,OAAAC,GAAO,aAAAC,GAAa,OAAAC,GAAO,QAAAC,GAAQ,UAAAC,GAAU,MAAAd,QAC9C,gBAAAK;AAAA,QAACU;AAAA,QAAA;AAAA,UAEC,OAAAL;AAAA,UACA,aAAcV,KAAQF,EAAeE,CAAI,KAAOW;AAAA,UAChD,OAAAC;AAAA,UACA,QAAAC;AAAA,UACA,UAAAC;AAAA,UACA,MAAAd;AAAA,UACA,aAAAR;AAAA,UACA,SAASU;AAAA,QAAA;AAAA,QARJQ;AAAA,MASP;AAAA,IAAA,GAGN;AAAA,EACF,EAAA,CAAA;AAEJ,CAAC;"}
@@ -1,5 +1,5 @@
1
1
  import e from "styled-components";
2
- import n from "../../../../../ui/layout/flex-view.js";
2
+ import n from "../../../../ui/layout/flex-view.js";
3
3
  const i = e(n)(({ theme: r }) => {
4
4
  const { gutter: t } = r.layout, { WHITE_4: a } = r.colors;
5
5
  return `
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary-card-styled.js","sources":["../../../../../../src/features/parent-dashboard/comps/session-summary/summary-card/summary-card-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../../ui/layout/flex-view';\n\nconst ImageWrapper = styled(FlexView)(({ theme }) => {\n const { gutter } = theme.layout;\n const { WHITE_4 } = theme.colors;\n\n return `\n margin: 0;\n padding: 0;\n background-image: linear-gradient(${WHITE_4} 1px, transparent 1px),\n linear-gradient(90deg, ${WHITE_4} 1px, transparent 1px);\n background-size: ${gutter * 3.125}px ${gutter * 3.125}px;\n position: relative;\n `;\n});\n\nexport { ImageWrapper };\n"],"names":["ImageWrapper","styled","FlexView","theme","gutter","WHITE_4"],"mappings":";;AAIA,MAAMA,IAAeC,EAAOC,CAAQ,EAAE,CAAC,EAAE,OAAAC,QAAY;AAC7C,QAAA,EAAE,QAAAC,EAAO,IAAID,EAAM,QACnB,EAAE,SAAAE,EAAQ,IAAIF,EAAM;AAEnB,SAAA;AAAA;AAAA;AAAA,wCAG+BE,CAAO;AAAA,+BAChBA,CAAO;AAAA,uBACfD,IAAS,KAAK,MAAMA,IAAS,KAAK;AAAA;AAAA;AAGzD,CAAC;"}
@@ -0,0 +1,63 @@
1
+ import { jsxs as n, jsx as r } from "react/jsx-runtime";
2
+ import { memo as C, useMemo as m, useCallback as I } from "react";
3
+ import { useTheme as k } from "styled-components";
4
+ import w from "../../../../../assets/line-icons/icons/chevron-right.js";
5
+ import T from "../../../../ui/buttons/clickable/clickable.js";
6
+ import E from "../../../../ui/image/image.js";
7
+ import c from "../../../../ui/layout/flex-view.js";
8
+ import x from "../../../../ui/separator/separator.js";
9
+ import l from "../../../../ui/text/text.js";
10
+ import { EDeviceType as A } from "../../../../ui/theme/constants.js";
11
+ import { ImageWrapper as S } from "./summary-card-styled.js";
12
+ const W = C(
13
+ ({
14
+ title: a,
15
+ description: d,
16
+ image: s,
17
+ textBG: o,
18
+ ctaLabel: t,
19
+ type: e,
20
+ isTrialDone: h,
21
+ onClick: i
22
+ }) => {
23
+ const $ = k(), f = m(() => $.device <= A.MOBILE, [$.device]), b = m(() => h && e && i, [h, e, i]), u = I(() => {
24
+ e && i && i(e);
25
+ }, [e, i]), g = m(
26
+ () => /* @__PURE__ */ n(c, { $flex: 1, children: [
27
+ /* @__PURE__ */ r(S, { $height: 84, $width: "100%", $background: o, children: /* @__PURE__ */ r(E, { src: s, height: 84, width: "100%", withLoader: !1 }) }),
28
+ /* @__PURE__ */ n(c, { $gap: 12, $gutter: 16, $background: o, $flex: 1, children: [
29
+ /* @__PURE__ */ r(l, { $renderAs: "ac3-black", $renderOnMobileAs: "ac4-black", $color: "WHITE", children: a }),
30
+ /* @__PURE__ */ r(x, { height: f ? 8 : 12 }),
31
+ /* @__PURE__ */ r(l, { $renderAs: "ub3", $color: "WHITE", children: d })
32
+ ] })
33
+ ] }, a),
34
+ [a, d, s, o, f]
35
+ ), p = m(
36
+ () => /* @__PURE__ */ r(T, { label: e || "", onClick: u, children: /* @__PURE__ */ r(c, { $background: o, children: /* @__PURE__ */ n(
37
+ c,
38
+ {
39
+ $background: "BLACK_T_38",
40
+ $gapX: 0.5,
41
+ $gutterX: 0.5,
42
+ $flexDirection: "row",
43
+ $alignItems: "center",
44
+ $justifyContent: "space-between",
45
+ children: [
46
+ /* @__PURE__ */ r(l, { $renderAs: "ac4", $color: "WHITE_1", children: t }),
47
+ /* @__PURE__ */ r(w, { width: 24, height: 24, color: "WHITE" })
48
+ ]
49
+ }
50
+ ) }) }),
51
+ [e, t, o, u]
52
+ );
53
+ return b ? /* @__PURE__ */ n(c, { $flex: 1, children: [
54
+ g,
55
+ p
56
+ ] }) : g;
57
+ }
58
+ );
59
+ W.displayName = "SessionSummaryCard";
60
+ export {
61
+ W as default
62
+ };
63
+ //# sourceMappingURL=summary-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary-card.js","sources":["../../../../../../src/features/parent-dashboard/comps/session-summary/summary-card/summary-card.tsx"],"sourcesContent":["import type { ISessionSummaryCardProps } from './summary-card-types';\n\nimport { memo, useCallback, useMemo } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport ChevronRightIcon from '../../../../../assets/line-icons/icons/chevron-right';\nimport Clickable from '../../../../ui/buttons/clickable/clickable';\nimport Image from '../../../../ui/image/image';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Separator from '../../../../ui/separator/separator';\nimport Text from '../../../../ui/text/text';\nimport { EDeviceType } from '../../../../ui/theme/constants';\nimport * as Styled from './summary-card-styled';\n\nconst SessionSummaryCard = memo(\n ({\n title,\n description,\n image,\n textBG,\n ctaLabel,\n type,\n isTrialDone,\n onClick,\n }: ISessionSummaryCardProps) => {\n const theme = useTheme();\n const isMobile = useMemo(() => theme.device <= EDeviceType.MOBILE, [theme.device]);\n const isClickable = useMemo(() => isTrialDone && type && onClick, [isTrialDone, type, onClick]);\n\n const handleClick = useCallback(() => {\n if (type && onClick) onClick(type);\n }, [type, onClick]);\n\n const CardContent = useMemo(\n () => (\n <FlexView key={title} $flex={1}>\n <Styled.ImageWrapper $height={84} $width=\"100%\" $background={textBG}>\n <Image src={image} height={84} width=\"100%\" withLoader={false} />\n </Styled.ImageWrapper>\n <FlexView $gap={12} $gutter={16} $background={textBG} $flex={1}>\n <Text $renderAs=\"ac3-black\" $renderOnMobileAs=\"ac4-black\" $color=\"WHITE\">\n {title}\n </Text>\n <Separator height={isMobile ? 8 : 12} />\n <Text $renderAs=\"ub3\" $color=\"WHITE\">\n {description}\n </Text>\n </FlexView>\n </FlexView>\n ),\n [title, description, image, textBG, isMobile],\n );\n\n const ClickableButton = useMemo(\n () => (\n <Clickable label={type || ''} onClick={handleClick}>\n <FlexView $background={textBG}>\n <FlexView\n $background=\"BLACK_T_38\"\n $gapX={0.5}\n $gutterX={0.5}\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n >\n <Text $renderAs=\"ac4\" $color=\"WHITE_1\">\n {ctaLabel}\n </Text>\n <ChevronRightIcon width={24} height={24} color=\"WHITE\" />\n </FlexView>\n </FlexView>\n </Clickable>\n ),\n [type, ctaLabel, textBG, handleClick],\n );\n\n return isClickable ? (\n <FlexView $flex={1}>\n {CardContent}\n {ClickableButton}\n </FlexView>\n ) : (\n CardContent\n );\n },\n);\n\nSessionSummaryCard.displayName = 'SessionSummaryCard';\n\nexport default SessionSummaryCard;\n"],"names":["SessionSummaryCard","memo","title","description","image","textBG","ctaLabel","type","isTrialDone","onClick","theme","useTheme","isMobile","useMemo","EDeviceType","isClickable","handleClick","useCallback","CardContent","jsxs","FlexView","jsx","Styled.ImageWrapper","Image","Text","Separator","ClickableButton","Clickable","ChevronRightIcon"],"mappings":";;;;;;;;;;;AAcA,MAAMA,IAAqBC;AAAA,EACzB,CAAC;AAAA,IACC,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,aAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,MAC8B;AAC9B,UAAMC,IAAQC,KACRC,IAAWC,EAAQ,MAAMH,EAAM,UAAUI,EAAY,QAAQ,CAACJ,EAAM,MAAM,CAAC,GAC3EK,IAAcF,EAAQ,MAAML,KAAeD,KAAQE,GAAS,CAACD,GAAaD,GAAME,CAAO,CAAC,GAExFO,IAAcC,EAAY,MAAM;AAChC,MAAAV,KAAQE,KAASA,EAAQF,CAAI;AAAA,IAAA,GAChC,CAACA,GAAME,CAAO,CAAC,GAEZS,IAAcL;AAAA,MAClB,MACE,gBAAAM,EAACC,GAAqB,EAAA,OAAO,GAC3B,UAAA;AAAA,QAAA,gBAAAC,EAACC,GAAA,EAAoB,SAAS,IAAI,QAAO,QAAO,aAAajB,GAC3D,4BAACkB,GAAM,EAAA,KAAKnB,GAAO,QAAQ,IAAI,OAAM,QAAO,YAAY,GAAO,CAAA,GACjE;AAAA,QACA,gBAAAe,EAACC,KAAS,MAAM,IAAI,SAAS,IAAI,aAAaf,GAAQ,OAAO,GAC3D,UAAA;AAAA,UAAA,gBAAAgB,EAACG,KAAK,WAAU,aAAY,mBAAkB,aAAY,QAAO,SAC9D,UACHtB,EAAA,CAAA;AAAA,UACC,gBAAAmB,EAAAI,GAAA,EAAU,QAAQb,IAAW,IAAI,IAAI;AAAA,4BACrCY,GAAK,EAAA,WAAU,OAAM,QAAO,SAC1B,UACHrB,GAAA;AAAA,QAAA,GACF;AAAA,MAAA,EAAA,GAZaD,CAaf;AAAA,MAEF,CAACA,GAAOC,GAAaC,GAAOC,GAAQO,CAAQ;AAAA,IAAA,GAGxCc,IAAkBb;AAAA,MACtB,MACG,gBAAAQ,EAAAM,GAAA,EAAU,OAAOpB,KAAQ,IAAI,SAASS,GACrC,UAAA,gBAAAK,EAACD,GAAS,EAAA,aAAaf,GACrB,UAAA,gBAAAc;AAAA,QAACC;AAAA,QAAA;AAAA,UACC,aAAY;AAAA,UACZ,OAAO;AAAA,UACP,UAAU;AAAA,UACV,gBAAe;AAAA,UACf,aAAY;AAAA,UACZ,iBAAgB;AAAA,UAEhB,UAAA;AAAA,YAAA,gBAAAC,EAACG,GAAK,EAAA,WAAU,OAAM,QAAO,WAC1B,UACHlB,GAAA;AAAA,8BACCsB,GAAiB,EAAA,OAAO,IAAI,QAAQ,IAAI,OAAM,SAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,SAE3D,EACF,CAAA;AAAA,MAEF,CAACrB,GAAMD,GAAUD,GAAQW,CAAW;AAAA,IAAA;AAGtC,WAAOD,IACL,gBAAAI,EAACC,GAAS,EAAA,OAAO,GACd,UAAA;AAAA,MAAAF;AAAA,MACAQ;AAAA,IAAA,EACH,CAAA,IAEAR;AAAA,EAEJ;AACF;AAEAlB,EAAmB,cAAc;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upcoming-sessions-constants.js","sources":["../../../../../src/features/parent-dashboard/comps/upcoming-sessions/upcoming-sessions-constants.ts"],"sourcesContent":["export const DAYS_TO_SHOW = 7;\n"],"names":["DAYS_TO_SHOW"],"mappings":"AAAO,MAAMA,IAAe;"}
@@ -1,5 +1,5 @@
1
1
  import t from "styled-components";
2
- import r from "../../../../ui/layout/flex-view.js";
2
+ import r from "../../../ui/layout/flex-view.js";
3
3
  const p = t(r)`
4
4
  border-bottom: ${({ theme: o }) => `1px solid ${o.colors.BLACK_5}`};
5
5
  min-height: 52px;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upcoming-sessions-styled.js","sources":["../../../../../src/features/parent-dashboard/comps/upcoming-sessions/upcoming-sessions-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\n\nconst SessionRow = styled(FlexView)`\n border-bottom: ${({ theme }) => `1px solid ${theme.colors.BLACK_5}`};\n min-height: 52px;\n`;\n\nconst DayLabel = styled(FlexView)`\n border-right: ${({ theme }) => `1px solid ${theme.colors.BLACK_5}`};\n`;\nconst DateWrapper = styled(FlexView)`\n padding-bottom: 0;\n min-width: 22px;\n`;\n\nexport { SessionRow, DayLabel, DateWrapper };\n"],"names":["SessionRow","styled","FlexView","theme","DayLabel","DateWrapper"],"mappings":";;AAIM,MAAAA,IAAaC,EAAOC,CAAQ;AAAA,mBACf,CAAC,EAAE,OAAAC,EAAM,MAAM,aAAaA,EAAM,OAAO,OAAO,EAAE;AAAA;AAAA,GAI/DC,IAAWH,EAAOC,CAAQ;AAAA,kBACd,CAAC,EAAE,OAAAC,EAAM,MAAM,aAAaA,EAAM,OAAO,OAAO,EAAE;AAAA,GAE9DE,IAAcJ,EAAOC,CAAQ;AAAA;AAAA;AAAA;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upcoming-sessions-types.js","sources":["../../../../../src/features/parent-dashboard/comps/upcoming-sessions/upcoming-sessions-types.ts"],"sourcesContent":["export enum ESessionStatus {\n COMPLETED = 'COMPLETED',\n IN_FUTURE = 'IN FUTURE',\n}\n\nexport type TSession = {\n session_start: number;\n session_end: number;\n session_status: ESessionStatus;\n};\n\nexport interface IUpcomingSessionsProps {\n sessions?: TSession[];\n}\n"],"names":["ESessionStatus"],"mappings":"AAAY,IAAAA,sBAAAA,OACVA,EAAA,YAAY,aACZA,EAAA,YAAY,aAFFA,IAAAA,KAAA,CAAA,CAAA;"}