@cuemath/leap 3.3.3-j2 → 3.3.3-j4

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.
@@ -7,11 +7,11 @@ import { CUEMATH_APP_URL as F } from "../../../../../constants/config.js";
7
7
  import P from "../../../../ui/buttons/text-button/text-button.js";
8
8
  import k from "../../../../ui/image/image.js";
9
9
  import c from "../../../../ui/layout/flex-view.js";
10
- import X from "../../../../ui/lottie-animation/lottie-animation.js";
10
+ import M from "../../../../ui/lottie-animation/lottie-animation.js";
11
11
  import T from "../../../../ui/separator/separator.js";
12
12
  import H from "../../../../ui/text/text.js";
13
- import { COUNTDOWN_INTERVAL as K, renderSettings as j, COUNTDOWN_THRESHOLD as z } from "./session-status-constants.js";
14
- import { formatSessionDateTime as B, formatTimeRemaining as M } from "./session-status-helpers.js";
13
+ import { COUNTDOWN_INTERVAL as X, renderSettings as K, COUNTDOWN_THRESHOLD as j } from "./session-status-constants.js";
14
+ import { formatSessionDateTime as z, formatTimeRemaining as B } from "./session-status-helpers.js";
15
15
  import { LottieWrapper as V, ContentWrapper as q, SubTitle as J } from "./session-status-styled.js";
16
16
  import { differenceInSeconds as Q } from "../../../../../node_modules/date-fns/differenceInSeconds.js";
17
17
  import { fromUnixTime as Y } from "../../../../../node_modules/date-fns/fromUnixTime.js";
@@ -28,7 +28,7 @@ const Z = ({
28
28
  () => ({
29
29
  isTeacherAssigned: !!o,
30
30
  isFirstSessionCompleted: r > 0,
31
- formattedSessionStart: B(u)
31
+ formattedSessionStart: z(u)
32
32
  }),
33
33
  [r, o, u]
34
34
  ), { isTeacherAssigned: i, isFirstSessionCompleted: h, formattedSessionStart: n } = W, m = s(() => {
@@ -41,13 +41,13 @@ const Z = ({
41
41
  }
42
42
  const t = () => {
43
43
  const y = Y(u), g = Q(y, /* @__PURE__ */ new Date());
44
- if (g <= 0 || g > z) {
44
+ if (g <= 0 || g > j) {
45
45
  C(""), m();
46
46
  return;
47
47
  }
48
- C(M(g));
48
+ C(B(g));
49
49
  };
50
- return t(), S.current = setInterval(t, K), m;
50
+ return t(), S.current = setInterval(t, X), m;
51
51
  }, [
52
52
  u,
53
53
  h,
@@ -169,10 +169,10 @@ with ${o}`,
169
169
  $alignItems: t.align || "flex-start",
170
170
  children: [
171
171
  /* @__PURE__ */ e(c, { children: t.icon ? /* @__PURE__ */ e(k, { src: t.icon, width: 64, height: 64 }) : /* @__PURE__ */ e(V, { $isLargeLottie: !!(t != null && t.isLargeIcon), children: /* @__PURE__ */ e(
172
- X,
172
+ M,
173
173
  {
174
174
  src: t.lottie,
175
- settings: j,
175
+ settings: K,
176
176
  width: t.isLargeIcon ? 75 : 64,
177
177
  height: t.isLargeIcon ? 75 : 64
178
178
  }
@@ -183,7 +183,7 @@ with ${o}`,
183
183
  {
184
184
  $renderAs: t.titleStyle,
185
185
  $color: t.titleColor,
186
- $renderOnTabletAs: t.titleTabletStyle,
186
+ $renderOnMobileAs: t.titleTabletStyle,
187
187
  children: t.title
188
188
  }
189
189
  ),
@@ -193,7 +193,7 @@ with ${o}`,
193
193
  J,
194
194
  {
195
195
  $renderAs: t.subtitleStyle,
196
- $renderOnTabletAs: t.subtitleTabletStyle,
196
+ $renderOnMobileAs: t.subtitleTabletStyle,
197
197
  $color: "WHITE_1",
198
198
  $whiteSpace: "pre-line",
199
199
  $subtitleLineThrough: t.subtitleLineThrough,
@@ -207,7 +207,7 @@ with ${o}`,
207
207
  H,
208
208
  {
209
209
  $renderAs: "ub2",
210
- $renderOnTabletAs: "ub3",
210
+ $renderOnMobileAs: "ub3",
211
211
  $color: t.descriptionColor ?? "WHITE_T_60",
212
212
  children: t.description
213
213
  }
@@ -218,7 +218,7 @@ with ${o}`,
218
218
  /* @__PURE__ */ e(
219
219
  P,
220
220
  {
221
- sizeOnTablet: "small",
221
+ sizeOnMobile: "small",
222
222
  label: t.action.label,
223
223
  color: "WHITE_1",
224
224
  onClick: t.action.onClick
@@ -1 +1 @@
1
- {"version":3,"file":"session-status.js","sources":["../../../../../../src/features/trial-session/comps/pla/session-status/session-status.tsx"],"sourcesContent":["import type {\n ISectionConfig,\n ISessionStatusConfig,\n ISessionStatusProps,\n} from './session-status-types';\n\nimport { differenceInSeconds, fromUnixTime } from 'date-fns';\nimport { pluralize } from 'humanize-plus';\nimport { useCallback, useEffect, useMemo, useRef, useState, memo } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport { LOTTIE } from '../../../../../assets/lottie/lottie';\nimport { CUEMATH_APP_URL } from '../../../../../constants/config';\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 {\n COUNTDOWN_INTERVAL,\n COUNTDOWN_THRESHOLD,\n renderSettings,\n} from './session-status-constants';\nimport { formatSessionDateTime, formatTimeRemaining } from './session-status-helpers';\nimport * as Styled from './session-status-styled';\n\nconst SessionStatus = ({\n completedSessions,\n nextSessionStartTime,\n status,\n teacherName,\n studentName,\n onRescheduleClick = () => {},\n}: ISessionStatusProps) => {\n const [remainingTime, setRemainingTime] = useState('');\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\n\n const derivedValues = useMemo(\n () => ({\n isTeacherAssigned: !!teacherName,\n isFirstSessionCompleted: completedSessions > 0,\n formattedSessionStart: formatSessionDateTime(nextSessionStartTime),\n }),\n [completedSessions, teacherName, nextSessionStartTime],\n );\n\n const { isTeacherAssigned, isFirstSessionCompleted, formattedSessionStart } = derivedValues;\n\n const clearCountdownInterval = useCallback(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n const isNoShowStatus = useMemo(() => status === 'S_NO_SHOW' || status === 'T_NO_SHOW', [status]);\n\n useEffect(() => {\n if (!nextSessionStartTime || isFirstSessionCompleted || isNoShowStatus) {\n clearCountdownInterval();\n setRemainingTime('');\n\n return;\n }\n\n const updateCountdown = () => {\n const start = fromUnixTime(nextSessionStartTime);\n const now = new Date();\n const diffInSeconds = differenceInSeconds(start, now);\n\n if (diffInSeconds <= 0 || diffInSeconds > COUNTDOWN_THRESHOLD) {\n setRemainingTime('');\n clearCountdownInterval();\n\n return;\n }\n\n setRemainingTime(formatTimeRemaining(diffInSeconds));\n };\n\n // Initial update\n updateCountdown();\n\n // Set up interval\n intervalRef.current = setInterval(updateCountdown, COUNTDOWN_INTERVAL);\n\n return clearCountdownInterval;\n }, [\n nextSessionStartTime,\n isFirstSessionCompleted,\n status,\n clearCountdownInterval,\n isNoShowStatus,\n ]);\n\n const handleRedirectToApp = useCallback(() => {\n window.open(CUEMATH_APP_URL, '_blank');\n }, []);\n\n const createStudentNoShowConfig = useCallback(\n (): ISessionStatusConfig => ({\n topSection: {\n icon: ILLUSTRATIONS.CALENDAR_CROSS_ORANGE,\n title: 'Session Cancelled',\n titleColor: 'ORANGE_4',\n titleStyle: 'ac3',\n titleTabletStyle: 'ac4',\n subtitleStyle: 'ab1',\n subtitleTabletStyle: 'ab2',\n subtitle: formattedSessionStart,\n description:\n status === 'S_NO_SHOW'\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 subtitleLineThrough: true,\n },\n bottomSection: {\n icon: ILLUSTRATIONS.PLATFORM_PURPLE,\n title: 'Please Reschedule',\n titleColor: 'PURPLE_4',\n titleStyle: 'ac3',\n titleTabletStyle: 'ac4',\n subtitleStyle: 'ub1',\n subtitleTabletStyle: 'ub2',\n subtitle:\n status === 'S_NO_SHOW'\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 action: {\n label: 'Reschedule',\n onClick: onRescheduleClick,\n },\n },\n }),\n [formattedSessionStart, onRescheduleClick, status],\n );\n\n const createCompletedSessionConfig = useCallback((): ISessionStatusConfig => {\n const titleText = completedSessions === 1 ? 'First' : completedSessions;\n\n return {\n topSection: {\n icon: ILLUSTRATIONS.BOOK_CHECKED_GREEN,\n title: `${titleText} ${pluralize(completedSessions, 'session')} Completed!`,\n titleColor: 'GREEN_4',\n titleStyle: 'ac3',\n titleTabletStyle: 'ac4',\n align: 'center',\n },\n bottomSection: {\n lottie: LOTTIE.CALENDAR_HOUR_GLASS_ORANGE,\n title: 'Next Session',\n titleColor: 'ORANGE_4',\n titleStyle: 'ac3',\n titleTabletStyle: 'ac4',\n subtitleStyle: 'ab1',\n subtitleTabletStyle: 'ab2',\n subtitle: `${formattedSessionStart}\\nwith ${teacherName}`,\n action: {\n label: 'Reschedule on the Cuemath app',\n onClick: handleRedirectToApp,\n },\n },\n };\n }, [completedSessions, formattedSessionStart, teacherName, handleRedirectToApp]);\n\n const createDefaultSessionConfig = useCallback((): ISessionStatusConfig => {\n const defaultTitle = remainingTime || 'SESSION SCHEDULED';\n const teacherGif = isTeacherAssigned ? LOTTIE.TEACHER_FOUND : LOTTIE.TEACHER_SEARCH;\n\n return {\n topSection: {\n icon: ILLUSTRATIONS.CALENDAR_CHECK_GREEN,\n title: defaultTitle,\n titleColor: 'GREEN_4',\n titleStyle: remainingTime ? 'ub2' : 'ac3',\n titleTabletStyle: remainingTime ? 'ub3' : 'ac4',\n subtitle: formattedSessionStart,\n subtitleStyle: 'ab1',\n subtitleTabletStyle: 'ab2',\n action: {\n label: 'Reschedule',\n onClick: onRescheduleClick,\n },\n },\n bottomSection: {\n align: 'center',\n lottie: teacherGif,\n title: isTeacherAssigned ? 'Tutor Assigned!' : '',\n titleColor: isTeacherAssigned ? 'ORANGE_4' : 'WHITE_1',\n titleStyle: isTeacherAssigned ? 'ac3' : 'ab2',\n titleTabletStyle: isTeacherAssigned ? 'ac4' : 'ab3',\n subtitleStyle: 'ub1',\n subtitleTabletStyle: 'ub2',\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 description: isTeacherAssigned\n ? ''\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 remainingTime,\n formattedSessionStart,\n isTeacherAssigned,\n teacherName,\n studentName,\n onRescheduleClick,\n ]);\n\n const config = useMemo((): ISessionStatusConfig => {\n if (isNoShowStatus) {\n return createStudentNoShowConfig();\n }\n\n if (isFirstSessionCompleted) {\n return createCompletedSessionConfig();\n }\n\n return createDefaultSessionConfig();\n }, [\n isNoShowStatus,\n isFirstSessionCompleted,\n createStudentNoShowConfig,\n createCompletedSessionConfig,\n createDefaultSessionConfig,\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>\n {section.icon ? (\n <Image src={section.icon} width={64} height={64} />\n ) : (\n <Styled.LottieWrapper $isLargeLottie={!!section?.isLargeIcon}>\n <LottieAnimation\n src={section.lottie!}\n settings={renderSettings}\n width={section.isLargeIcon ? 75 : 64}\n height={section.isLargeIcon ? 75 : 64}\n />\n </Styled.LottieWrapper>\n )}\n </FlexView>\n <Styled.ContentWrapper $maxWidth={section.maxWidth ?? '100%'} $width=\"100%\">\n {section.title && (\n <Text\n $renderAs={section.titleStyle}\n $color={section.titleColor}\n $renderOnTabletAs={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 $renderOnTabletAs={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 <FlexView $width=\"100%\">\n <Text\n $renderAs=\"ub2\"\n $renderOnTabletAs=\"ub3\"\n $color={section.descriptionColor ?? 'WHITE_T_60'}\n >\n {section.description}\n </Text>\n </FlexView>\n </>\n )}\n\n {section.action && (\n <>\n <Separator heightX={0.75} />\n <TextButton\n sizeOnTablet=\"small\"\n label={section.action.label}\n color=\"WHITE_1\"\n onClick={section.action.onClick}\n />\n </>\n )}\n </Styled.ContentWrapper>\n </FlexView>\n ),\n [],\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":["SessionStatus","completedSessions","nextSessionStartTime","status","teacherName","studentName","onRescheduleClick","remainingTime","setRemainingTime","useState","intervalRef","useRef","derivedValues","useMemo","formatSessionDateTime","isTeacherAssigned","isFirstSessionCompleted","formattedSessionStart","clearCountdownInterval","useCallback","isNoShowStatus","useEffect","updateCountdown","start","fromUnixTime","diffInSeconds","differenceInSeconds","COUNTDOWN_THRESHOLD","formatTimeRemaining","COUNTDOWN_INTERVAL","handleRedirectToApp","CUEMATH_APP_URL","createStudentNoShowConfig","ILLUSTRATIONS","createCompletedSessionConfig","titleText","pluralize","LOTTIE","createDefaultSessionConfig","defaultTitle","teacherGif","config","renderSection","section","jsxs","FlexView","jsx","Image","Styled.LottieWrapper","LottieAnimation","renderSettings","Styled.ContentWrapper","Text","Fragment","Separator","Styled.SubTitle","TextButton","sessionStatus","memo"],"mappings":"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"}
1
+ {"version":3,"file":"session-status.js","sources":["../../../../../../src/features/trial-session/comps/pla/session-status/session-status.tsx"],"sourcesContent":["import type {\n ISectionConfig,\n ISessionStatusConfig,\n ISessionStatusProps,\n} from './session-status-types';\n\nimport { differenceInSeconds, fromUnixTime } from 'date-fns';\nimport { pluralize } from 'humanize-plus';\nimport { useCallback, useEffect, useMemo, useRef, useState, memo } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport { LOTTIE } from '../../../../../assets/lottie/lottie';\nimport { CUEMATH_APP_URL } from '../../../../../constants/config';\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 {\n COUNTDOWN_INTERVAL,\n COUNTDOWN_THRESHOLD,\n renderSettings,\n} from './session-status-constants';\nimport { formatSessionDateTime, formatTimeRemaining } from './session-status-helpers';\nimport * as Styled from './session-status-styled';\n\nconst SessionStatus = ({\n completedSessions,\n nextSessionStartTime,\n status,\n teacherName,\n studentName,\n onRescheduleClick = () => {},\n}: ISessionStatusProps) => {\n const [remainingTime, setRemainingTime] = useState('');\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\n\n const derivedValues = useMemo(\n () => ({\n isTeacherAssigned: !!teacherName,\n isFirstSessionCompleted: completedSessions > 0,\n formattedSessionStart: formatSessionDateTime(nextSessionStartTime),\n }),\n [completedSessions, teacherName, nextSessionStartTime],\n );\n\n const { isTeacherAssigned, isFirstSessionCompleted, formattedSessionStart } = derivedValues;\n\n const clearCountdownInterval = useCallback(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n }, []);\n const isNoShowStatus = useMemo(() => status === 'S_NO_SHOW' || status === 'T_NO_SHOW', [status]);\n\n useEffect(() => {\n if (!nextSessionStartTime || isFirstSessionCompleted || isNoShowStatus) {\n clearCountdownInterval();\n setRemainingTime('');\n\n return;\n }\n\n const updateCountdown = () => {\n const start = fromUnixTime(nextSessionStartTime);\n const now = new Date();\n const diffInSeconds = differenceInSeconds(start, now);\n\n if (diffInSeconds <= 0 || diffInSeconds > COUNTDOWN_THRESHOLD) {\n setRemainingTime('');\n clearCountdownInterval();\n\n return;\n }\n\n setRemainingTime(formatTimeRemaining(diffInSeconds));\n };\n\n // Initial update\n updateCountdown();\n\n // Set up interval\n intervalRef.current = setInterval(updateCountdown, COUNTDOWN_INTERVAL);\n\n return clearCountdownInterval;\n }, [\n nextSessionStartTime,\n isFirstSessionCompleted,\n status,\n clearCountdownInterval,\n isNoShowStatus,\n ]);\n\n const handleRedirectToApp = useCallback(() => {\n window.open(CUEMATH_APP_URL, '_blank');\n }, []);\n\n const createStudentNoShowConfig = useCallback(\n (): ISessionStatusConfig => ({\n topSection: {\n icon: ILLUSTRATIONS.CALENDAR_CROSS_ORANGE,\n title: 'Session Cancelled',\n titleColor: 'ORANGE_4',\n titleStyle: 'ac3',\n titleTabletStyle: 'ac4',\n subtitleStyle: 'ab1',\n subtitleTabletStyle: 'ab2',\n subtitle: formattedSessionStart,\n description:\n status === 'S_NO_SHOW'\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 subtitleLineThrough: true,\n },\n bottomSection: {\n icon: ILLUSTRATIONS.PLATFORM_PURPLE,\n title: 'Please Reschedule',\n titleColor: 'PURPLE_4',\n titleStyle: 'ac3',\n titleTabletStyle: 'ac4',\n subtitleStyle: 'ub1',\n subtitleTabletStyle: 'ub2',\n subtitle:\n status === 'S_NO_SHOW'\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 action: {\n label: 'Reschedule',\n onClick: onRescheduleClick,\n },\n },\n }),\n [formattedSessionStart, onRescheduleClick, status],\n );\n\n const createCompletedSessionConfig = useCallback((): ISessionStatusConfig => {\n const titleText = completedSessions === 1 ? 'First' : completedSessions;\n\n return {\n topSection: {\n icon: ILLUSTRATIONS.BOOK_CHECKED_GREEN,\n title: `${titleText} ${pluralize(completedSessions, 'session')} Completed!`,\n titleColor: 'GREEN_4',\n titleStyle: 'ac3',\n titleTabletStyle: 'ac4',\n align: 'center',\n },\n bottomSection: {\n lottie: LOTTIE.CALENDAR_HOUR_GLASS_ORANGE,\n title: 'Next Session',\n titleColor: 'ORANGE_4',\n titleStyle: 'ac3',\n titleTabletStyle: 'ac4',\n subtitleStyle: 'ab1',\n subtitleTabletStyle: 'ab2',\n subtitle: `${formattedSessionStart}\\nwith ${teacherName}`,\n action: {\n label: 'Reschedule on the Cuemath app',\n onClick: handleRedirectToApp,\n },\n },\n };\n }, [completedSessions, formattedSessionStart, teacherName, handleRedirectToApp]);\n\n const createDefaultSessionConfig = useCallback((): ISessionStatusConfig => {\n const defaultTitle = remainingTime || 'SESSION SCHEDULED';\n const teacherGif = isTeacherAssigned ? LOTTIE.TEACHER_FOUND : LOTTIE.TEACHER_SEARCH;\n\n return {\n topSection: {\n icon: ILLUSTRATIONS.CALENDAR_CHECK_GREEN,\n title: defaultTitle,\n titleColor: 'GREEN_4',\n titleStyle: remainingTime ? 'ub2' : 'ac3',\n titleTabletStyle: remainingTime ? 'ub3' : 'ac4',\n subtitle: formattedSessionStart,\n subtitleStyle: 'ab1',\n subtitleTabletStyle: 'ab2',\n action: {\n label: 'Reschedule',\n onClick: onRescheduleClick,\n },\n },\n bottomSection: {\n align: 'center',\n lottie: teacherGif,\n title: isTeacherAssigned ? 'Tutor Assigned!' : '',\n titleColor: isTeacherAssigned ? 'ORANGE_4' : 'WHITE_1',\n titleStyle: isTeacherAssigned ? 'ac3' : 'ab2',\n titleTabletStyle: isTeacherAssigned ? 'ac4' : 'ab3',\n subtitleStyle: 'ub1',\n subtitleTabletStyle: 'ub2',\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 description: isTeacherAssigned\n ? ''\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 remainingTime,\n formattedSessionStart,\n isTeacherAssigned,\n teacherName,\n studentName,\n onRescheduleClick,\n ]);\n\n const config = useMemo((): ISessionStatusConfig => {\n if (isNoShowStatus) {\n return createStudentNoShowConfig();\n }\n\n if (isFirstSessionCompleted) {\n return createCompletedSessionConfig();\n }\n\n return createDefaultSessionConfig();\n }, [\n isNoShowStatus,\n isFirstSessionCompleted,\n createStudentNoShowConfig,\n createCompletedSessionConfig,\n createDefaultSessionConfig,\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>\n {section.icon ? (\n <Image src={section.icon} width={64} height={64} />\n ) : (\n <Styled.LottieWrapper $isLargeLottie={!!section?.isLargeIcon}>\n <LottieAnimation\n src={section.lottie!}\n settings={renderSettings}\n width={section.isLargeIcon ? 75 : 64}\n height={section.isLargeIcon ? 75 : 64}\n />\n </Styled.LottieWrapper>\n )}\n </FlexView>\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 <FlexView $width=\"100%\">\n <Text\n $renderAs=\"ub2\"\n $renderOnMobileAs=\"ub3\"\n $color={section.descriptionColor ?? 'WHITE_T_60'}\n >\n {section.description}\n </Text>\n </FlexView>\n </>\n )}\n\n {section.action && (\n <>\n <Separator heightX={0.75} />\n <TextButton\n sizeOnMobile=\"small\"\n label={section.action.label}\n color=\"WHITE_1\"\n onClick={section.action.onClick}\n />\n </>\n )}\n </Styled.ContentWrapper>\n </FlexView>\n ),\n [],\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":["SessionStatus","completedSessions","nextSessionStartTime","status","teacherName","studentName","onRescheduleClick","remainingTime","setRemainingTime","useState","intervalRef","useRef","derivedValues","useMemo","formatSessionDateTime","isTeacherAssigned","isFirstSessionCompleted","formattedSessionStart","clearCountdownInterval","useCallback","isNoShowStatus","useEffect","updateCountdown","start","fromUnixTime","diffInSeconds","differenceInSeconds","COUNTDOWN_THRESHOLD","formatTimeRemaining","COUNTDOWN_INTERVAL","handleRedirectToApp","CUEMATH_APP_URL","createStudentNoShowConfig","ILLUSTRATIONS","createCompletedSessionConfig","titleText","pluralize","LOTTIE","createDefaultSessionConfig","defaultTitle","teacherGif","config","renderSection","section","jsxs","FlexView","jsx","Image","Styled.LottieWrapper","LottieAnimation","renderSettings","Styled.ContentWrapper","Text","Fragment","Separator","Styled.SubTitle","TextButton","sessionStatus","memo"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { jsxs as i, jsx as r } from "react/jsx-runtime";
1
+ import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
2
  import { memo as p, useCallback as g } from "react";
3
3
  import { useTheme as u } from "styled-components";
4
4
  import b from "../../../../../../assets/line-icons/icons/chevron-right.js";
5
5
  import w from "../../../../../ui/buttons/clickable/clickable.js";
6
- import C from "../../../../../ui/image/image.js";
7
- import e from "../../../../../ui/layout/flex-view.js";
8
- import T from "../../../../../ui/separator/separator.js";
6
+ import x from "../../../../../ui/image/image.js";
7
+ import r from "../../../../../ui/layout/flex-view.js";
8
+ import C from "../../../../../ui/separator/separator.js";
9
9
  import n from "../../../../../ui/text/text.js";
10
- import { EDeviceType as x } from "../../../../../ui/theme/constants.js";
10
+ import { EDeviceType as T } from "../../../../../ui/theme/constants.js";
11
11
  import { ImageWrapper as E } from "./summary-card-styled.js";
12
12
  const _ = p(
13
13
  ({
@@ -20,20 +20,20 @@ const _ = p(
20
20
  isDemoDone: d,
21
21
  onClick: c
22
22
  }) => {
23
- const s = u().device <= x.MOBILE, f = g(() => {
23
+ const s = u().device <= T.MOBILE, f = g(() => {
24
24
  o && c && c(o);
25
- }, [o, c]), m = /* @__PURE__ */ i(e, { $flex: 1, children: [
26
- /* @__PURE__ */ r(E, { $height: 84, $width: "100%", $background: t, children: /* @__PURE__ */ r(C, { src: h, height: 84, width: "100%", withLoader: !1 }) }),
27
- /* @__PURE__ */ i(e, { $gap: 12, $gutter: 16, $background: t, $flex: 1, children: [
28
- /* @__PURE__ */ r(n, { $renderAs: "ac3-black", $renderOnMobileAs: "ac4-black", $color: "WHITE", children: l }),
29
- /* @__PURE__ */ r(T, { height: s ? 8 : 12 }),
30
- /* @__PURE__ */ r(n, { $renderAs: "ub3", $color: "WHITE", children: a })
25
+ }, [o, c]), m = /* @__PURE__ */ i(r, { $flex: 1, children: [
26
+ /* @__PURE__ */ e(E, { $height: 84, $width: "100%", $background: t, children: /* @__PURE__ */ e(x, { src: h, height: 84, width: "100%", withLoader: !1 }) }),
27
+ /* @__PURE__ */ i(r, { $gap: 12, $gutter: 16, $background: t, $flex: 1, children: [
28
+ /* @__PURE__ */ e(n, { $renderAs: "ac3-black", $renderOnMobileAs: "ac4-black", $color: "WHITE", children: l }),
29
+ /* @__PURE__ */ e(C, { height: s ? 8 : 12 }),
30
+ /* @__PURE__ */ e(n, { $renderAs: "ub3", $color: "WHITE", children: a })
31
31
  ] })
32
32
  ] }, l);
33
- return d && o ? /* @__PURE__ */ i(e, { children: [
33
+ return d && o ? /* @__PURE__ */ i(r, { $flex: 1, children: [
34
34
  m,
35
- /* @__PURE__ */ r(w, { label: o, onClick: f, children: /* @__PURE__ */ r(e, { $background: t, children: /* @__PURE__ */ i(
36
- e,
35
+ /* @__PURE__ */ e(w, { label: o, onClick: f, children: /* @__PURE__ */ e(r, { $background: t, children: /* @__PURE__ */ i(
36
+ r,
37
37
  {
38
38
  $background: "BLACK_T_38",
39
39
  $gapX: 0.5,
@@ -42,8 +42,8 @@ const _ = p(
42
42
  $alignItems: "center",
43
43
  $justifyContent: "space-between",
44
44
  children: [
45
- /* @__PURE__ */ r(e, { $gutterX: 0.5, $flexDirection: "row", $alignItems: "center", children: /* @__PURE__ */ r(n, { $renderAs: "ac4", $color: "WHITE_1", children: $ }) }),
46
- /* @__PURE__ */ r(b, { width: 24, height: 24, color: "WHITE" })
45
+ /* @__PURE__ */ e(r, { $gutterX: 0.5, $flexDirection: "row", $alignItems: "center", children: /* @__PURE__ */ e(n, { $renderAs: "ac4", $color: "WHITE_1", children: $ }) }),
46
+ /* @__PURE__ */ e(b, { width: 24, height: 24, color: "WHITE" })
47
47
  ]
48
48
  }
49
49
  ) }) })
@@ -1 +1 @@
1
- {"version":3,"file":"summary-card.js","sources":["../../../../../../../src/features/trial-session/comps/pla/session-summary/summary-card/summary-card.tsx"],"sourcesContent":["import type { ISessionSummaryCardProps } from './summary-card-types';\n\nimport { memo, useCallback } 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 keyId,\n isDemoDone,\n onClick,\n }: ISessionSummaryCardProps) => {\n const theme = useTheme();\n const isMobile = theme.device <= EDeviceType.MOBILE;\n\n const handleClick = useCallback(() => {\n if (keyId && onClick) onClick(keyId);\n }, [keyId, onClick]);\n\n const CardContent = (\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\n return isDemoDone && keyId ? (\n <FlexView>\n {CardContent}\n <Clickable label={keyId} 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 <FlexView $gutterX={0.5} $flexDirection=\"row\" $alignItems=\"center\">\n <Text $renderAs=\"ac4\" $color=\"WHITE_1\">\n {ctaLabel}\n </Text>\n </FlexView>\n <ChevronRightIcon width={24} height={24} color=\"WHITE\" />\n </FlexView>\n </FlexView>\n </Clickable>\n </FlexView>\n ) : (\n CardContent\n );\n },\n);\n\nexport default SessionSummaryCard;\n"],"names":["SessionSummaryCard","memo","title","description","image","textBG","ctaLabel","keyId","isDemoDone","onClick","isMobile","useTheme","EDeviceType","handleClick","useCallback","CardContent","jsxs","FlexView","jsx","Styled.ImageWrapper","Image","Text","Separator","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,OAAAC;AAAA,IACA,YAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,MAC8B;AAExB,UAAAC,IADQC,IACS,UAAUC,EAAY,QAEvCC,IAAcC,EAAY,MAAM;AAChC,MAAAP,KAASE,KAASA,EAAQF,CAAK;AAAA,IAAA,GAClC,CAACA,GAAOE,CAAO,CAAC,GAEbM,IACJ,gBAAAC,EAACC,GAAqB,EAAA,OAAO,GAC3B,UAAA;AAAA,MAAA,gBAAAC,EAACC,GAAA,EAAoB,SAAS,IAAI,QAAO,QAAO,aAAad,GAC3D,4BAACe,GAAM,EAAA,KAAKhB,GAAO,QAAQ,IAAI,OAAM,QAAO,YAAY,GAAO,CAAA,GACjE;AAAA,MACA,gBAAAY,EAACC,KAAS,MAAM,IAAI,SAAS,IAAI,aAAaZ,GAAQ,OAAO,GAC3D,UAAA;AAAA,QAAA,gBAAAa,EAACG,KAAK,WAAU,aAAY,mBAAkB,aAAY,QAAO,SAC9D,UACHnB,EAAA,CAAA;AAAA,QACC,gBAAAgB,EAAAI,GAAA,EAAU,QAAQZ,IAAW,IAAI,IAAI;AAAA,0BACrCW,GAAK,EAAA,WAAU,OAAM,QAAO,SAC1B,UACHlB,GAAA;AAAA,MAAA,GACF;AAAA,IAAA,EAAA,GAZaD,CAaf;AAGK,WAAAM,KAAcD,IACnB,gBAAAS,EAACC,GACE,EAAA,UAAA;AAAA,MAAAF;AAAA,MACD,gBAAAG,EAACK,KAAU,OAAOhB,GAAO,SAASM,GAChC,UAAA,gBAAAK,EAACD,GAAS,EAAA,aAAaZ,GACrB,UAAA,gBAAAW;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,EAACD,GAAS,EAAA,UAAU,KAAK,gBAAe,OAAM,aAAY,UACxD,UAAC,gBAAAC,EAAAG,GAAA,EAAK,WAAU,OAAM,QAAO,WAC1B,YACH,CAAA,GACF;AAAA,8BACCG,GAAiB,EAAA,OAAO,IAAI,QAAQ,IAAI,OAAM,SAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,SAE3D,EACF,CAAA;AAAA,IAAA,EACF,CAAA,IAEAT;AAAA,EAEJ;AACF;"}
1
+ {"version":3,"file":"summary-card.js","sources":["../../../../../../../src/features/trial-session/comps/pla/session-summary/summary-card/summary-card.tsx"],"sourcesContent":["import type { ISessionSummaryCardProps } from './summary-card-types';\n\nimport { memo, useCallback } 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 keyId,\n isDemoDone,\n onClick,\n }: ISessionSummaryCardProps) => {\n const theme = useTheme();\n const isMobile = theme.device <= EDeviceType.MOBILE;\n\n const handleClick = useCallback(() => {\n if (keyId && onClick) onClick(keyId);\n }, [keyId, onClick]);\n\n const CardContent = (\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\n return isDemoDone && keyId ? (\n <FlexView $flex={1}>\n {CardContent}\n <Clickable label={keyId} 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 <FlexView $gutterX={0.5} $flexDirection=\"row\" $alignItems=\"center\">\n <Text $renderAs=\"ac4\" $color=\"WHITE_1\">\n {ctaLabel}\n </Text>\n </FlexView>\n <ChevronRightIcon width={24} height={24} color=\"WHITE\" />\n </FlexView>\n </FlexView>\n </Clickable>\n </FlexView>\n ) : (\n CardContent\n );\n },\n);\n\nexport default SessionSummaryCard;\n"],"names":["SessionSummaryCard","memo","title","description","image","textBG","ctaLabel","keyId","isDemoDone","onClick","isMobile","useTheme","EDeviceType","handleClick","useCallback","CardContent","jsxs","FlexView","jsx","Styled.ImageWrapper","Image","Text","Separator","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,OAAAC;AAAA,IACA,YAAAC;AAAA,IACA,SAAAC;AAAA,EAAA,MAC8B;AAExB,UAAAC,IADQC,IACS,UAAUC,EAAY,QAEvCC,IAAcC,EAAY,MAAM;AAChC,MAAAP,KAASE,KAASA,EAAQF,CAAK;AAAA,IAAA,GAClC,CAACA,GAAOE,CAAO,CAAC,GAEbM,IACJ,gBAAAC,EAACC,GAAqB,EAAA,OAAO,GAC3B,UAAA;AAAA,MAAA,gBAAAC,EAACC,GAAA,EAAoB,SAAS,IAAI,QAAO,QAAO,aAAad,GAC3D,4BAACe,GAAM,EAAA,KAAKhB,GAAO,QAAQ,IAAI,OAAM,QAAO,YAAY,GAAO,CAAA,GACjE;AAAA,MACA,gBAAAY,EAACC,KAAS,MAAM,IAAI,SAAS,IAAI,aAAaZ,GAAQ,OAAO,GAC3D,UAAA;AAAA,QAAA,gBAAAa,EAACG,KAAK,WAAU,aAAY,mBAAkB,aAAY,QAAO,SAC9D,UACHnB,EAAA,CAAA;AAAA,QACC,gBAAAgB,EAAAI,GAAA,EAAU,QAAQZ,IAAW,IAAI,IAAI;AAAA,0BACrCW,GAAK,EAAA,WAAU,OAAM,QAAO,SAC1B,UACHlB,GAAA;AAAA,MAAA,GACF;AAAA,IAAA,EAAA,GAZaD,CAaf;AAGF,WAAOM,KAAcD,IAClB,gBAAAS,EAAAC,GAAA,EAAS,OAAO,GACd,UAAA;AAAA,MAAAF;AAAA,MACD,gBAAAG,EAACK,KAAU,OAAOhB,GAAO,SAASM,GAChC,UAAA,gBAAAK,EAACD,GAAS,EAAA,aAAaZ,GACrB,UAAA,gBAAAW;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,EAACD,GAAS,EAAA,UAAU,KAAK,gBAAe,OAAM,aAAY,UACxD,UAAC,gBAAAC,EAAAG,GAAA,EAAK,WAAU,OAAM,QAAO,WAC1B,YACH,CAAA,GACF;AAAA,8BACCG,GAAiB,EAAA,OAAO,IAAI,QAAQ,IAAI,OAAM,SAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,SAE3D,EACF,CAAA;AAAA,IAAA,EACF,CAAA,IAEAT;AAAA,EAEJ;AACF;"}
@@ -1,38 +1,53 @@
1
- import { jsx as e, jsxs as l } from "react/jsx-runtime";
1
+ import { jsx as r, jsxs as l } from "react/jsx-runtime";
2
2
  import { memo as d } from "react";
3
- import c from "styled-components";
4
- import a from "../../../../ui/image/image.js";
5
- import o from "../../../../ui/layout/flex-view.js";
6
- import n from "../../../../ui/text/text.js";
7
- const m = c(o)`
3
+ import m, { useTheme as a } from "styled-components";
4
+ import p from "../../../../ui/image/image.js";
5
+ import t from "../../../../ui/layout/flex-view.js";
6
+ import i from "../../../../ui/text/text.js";
7
+ import { EDeviceType as f } from "../../../../ui/theme/constants.js";
8
+ const $ = m(t)`
8
9
  &:not(:last-child) {
9
- border-bottom: 1px solid ${({ theme: t }) => t.colors.BLACK_1};
10
+ border-bottom: 1px solid ${({ theme: n }) => n.colors.BLACK_1};
11
+ }
12
+ `, c = d(
13
+ ({ profileHighlights: n }) => {
14
+ const o = a().device <= f.MOBILE;
15
+ return /* @__PURE__ */ r(t, { $borderColor: "BLACK_1", children: n.map((e) => /* @__PURE__ */ l(
16
+ $,
17
+ {
18
+ $flexDirection: "row",
19
+ $alignItems: "center",
20
+ $justifyContent: "flex-start",
21
+ $gapX: 1,
22
+ $gutterX: o ? 0.75 : 1,
23
+ $flexGapX: o ? 0.5 : 1.5,
24
+ $background: e.background,
25
+ children: [
26
+ /* @__PURE__ */ r(
27
+ p,
28
+ {
29
+ src: e.illustration,
30
+ alt: e.title,
31
+ height: o ? 64 : 96,
32
+ width: o ? 64 : 96
33
+ }
34
+ ),
35
+ /* @__PURE__ */ l(t, { $flexDirection: "column", $flex: 1, $flexGap: 2, children: [
36
+ /* @__PURE__ */ r(i, { $renderAs: "ac3-black", children: e.title }),
37
+ /* @__PURE__ */ r(i, { $renderAs: "ab2", children: typeof e.description == "string" ? e.description : /* @__PURE__ */ r(t, { children: e.description.map((s) => /* @__PURE__ */ l(t, { $flexDirection: "row", $flexColumnGapX: 0.5, children: [
38
+ /* @__PURE__ */ r(i, { $renderAs: "ab2", $inline: !0, children: "•" }),
39
+ /* @__PURE__ */ r(i, { $renderAs: "ab2", as: "span", $inline: !0, children: s })
40
+ ] }, s)) }) })
41
+ ] })
42
+ ]
43
+ },
44
+ e.title
45
+ )) });
10
46
  }
11
- `, s = d(
12
- ({ profileHighlights: t }) => /* @__PURE__ */ e(o, { $borderColor: "BLACK_1", children: t.map((r) => /* @__PURE__ */ l(
13
- m,
14
- {
15
- $flexDirection: "row",
16
- $alignItems: "center",
17
- $justifyContent: "flex-start",
18
- $gapX: 1,
19
- $gutterX: 1,
20
- $flexGapX: 1.5,
21
- $background: r.background,
22
- children: [
23
- /* @__PURE__ */ e(a, { src: r.illustration, alt: r.title, height: 96, width: 96 }),
24
- /* @__PURE__ */ l(o, { $flexDirection: "column", $flex: 1, $flexGap: 2, children: [
25
- /* @__PURE__ */ e(n, { $renderAs: "ac3-black", children: r.title }),
26
- /* @__PURE__ */ e(n, { $renderAs: "ab2", children: typeof r.description == "string" ? r.description : r.description.map((i) => /* @__PURE__ */ e("li", { children: i }, i)) })
27
- ] })
28
- ]
29
- },
30
- r.title
31
- )) })
32
47
  );
33
- s.displayName = "StudentProfileHighlights";
34
- const y = s;
48
+ c.displayName = "StudentProfileHighlights";
49
+ const H = c;
35
50
  export {
36
- y as default
51
+ H as default
37
52
  };
38
53
  //# sourceMappingURL=student-profile-highlights.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"student-profile-highlights.js","sources":["../../../../../../src/features/trial-session/comps/student-profile/student-profile-highlights/student-profile-highlights.tsx"],"sourcesContent":["import type { TColorNames } from '../../../../ui/types';\nimport type { FC } from 'react';\n\nimport { memo } from 'react';\nimport styled from 'styled-components';\n\nimport Image from '../../../../ui/image/image';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\n\ntype TProfileHighlight = {\n illustration: string;\n background: TColorNames;\n title: string;\n description: string | string[];\n};\n\nconst HighlightWrapper = styled(FlexView)`\n &:not(:last-child) {\n border-bottom: 1px solid ${({ theme }) => theme.colors.BLACK_1};\n }\n`;\n\ninterface IStudentProfileHighlightsProps {\n profileHighlights: TProfileHighlight[];\n}\n\nconst StudentProfileHighlights: FC<IStudentProfileHighlightsProps> = memo(\n ({ profileHighlights }) => {\n return (\n <FlexView $borderColor=\"BLACK_1\">\n {profileHighlights.map(highlight => (\n <HighlightWrapper\n key={highlight.title}\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"flex-start\"\n $gapX={1}\n $gutterX={1}\n $flexGapX={1.5}\n $background={highlight.background}\n >\n <Image src={highlight.illustration} alt={highlight.title} height={96} width={96} />\n <FlexView $flexDirection=\"column\" $flex={1} $flexGap={2}>\n <Text $renderAs=\"ac3-black\">{highlight.title}</Text>\n <Text $renderAs=\"ab2\">\n {typeof highlight.description === 'string'\n ? highlight.description\n : highlight.description.map(desc => <li key={desc}>{desc}</li>)}\n </Text>\n </FlexView>\n </HighlightWrapper>\n ))}\n </FlexView>\n );\n },\n);\n\nStudentProfileHighlights.displayName = 'StudentProfileHighlights';\n\nexport default StudentProfileHighlights;\n"],"names":["HighlightWrapper","styled","FlexView","theme","StudentProfileHighlights","memo","profileHighlights","highlight","jsxs","jsx","Image","Text","desc","StudentProfileHighlights$1"],"mappings":";;;;;;AAiBA,MAAMA,IAAmBC,EAAOC,CAAQ;AAAA;AAAA,+BAET,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,OAAO;AAAA;AAAA,GAQ5DC,IAA+DC;AAAA,EACnE,CAAC,EAAE,mBAAAC,EAAA,wBAEEJ,GAAS,EAAA,cAAa,WACpB,UAAAI,EAAkB,IAAI,CACrBC,MAAA,gBAAAC;AAAA,IAACR;AAAA,IAAA;AAAA,MAEC,gBAAe;AAAA,MACf,aAAY;AAAA,MACZ,iBAAgB;AAAA,MAChB,OAAO;AAAA,MACP,UAAU;AAAA,MACV,WAAW;AAAA,MACX,aAAaO,EAAU;AAAA,MAEvB,UAAA;AAAA,QAAC,gBAAAE,EAAAC,GAAA,EAAM,KAAKH,EAAU,cAAc,KAAKA,EAAU,OAAO,QAAQ,IAAI,OAAO,GAAI,CAAA;AAAA,0BAChFL,GAAS,EAAA,gBAAe,UAAS,OAAO,GAAG,UAAU,GACpD,UAAA;AAAA,UAAA,gBAAAO,EAACE,GAAK,EAAA,WAAU,aAAa,UAAAJ,EAAU,OAAM;AAAA,4BAC5CI,GAAK,EAAA,WAAU,OACb,UAAO,OAAAJ,EAAU,eAAgB,WAC9BA,EAAU,cACVA,EAAU,YAAY,IAAI,CAAQK,MAAA,gBAAAH,EAAC,QAAe,UAAPG,EAAA,GAAAA,CAAY,CAAK,EAClE,CAAA;AAAA,QAAA,GACF;AAAA,MAAA;AAAA,IAAA;AAAA,IAjBKL,EAAU;AAAA,EAmBlB,CAAA,EACH,CAAA;AAGN;AAEAH,EAAyB,cAAc;AAEvC,MAAAS,IAAeT;"}
1
+ {"version":3,"file":"student-profile-highlights.js","sources":["../../../../../../src/features/trial-session/comps/student-profile/student-profile-highlights/student-profile-highlights.tsx"],"sourcesContent":["import type { TColorNames } from '../../../../ui/types';\nimport type { FC } from 'react';\n\nimport { memo } from 'react';\nimport styled from 'styled-components';\nimport { useTheme } from 'styled-components';\n\nimport Image from '../../../../ui/image/image';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\nimport { EDeviceType } from '../../../../ui/theme/constants';\n\ntype TProfileHighlight = {\n illustration: string;\n background: TColorNames;\n title: string;\n description: string | string[];\n};\n\nconst HighlightWrapper = styled(FlexView)`\n &:not(:last-child) {\n border-bottom: 1px solid ${({ theme }) => theme.colors.BLACK_1};\n }\n`;\n\ninterface IStudentProfileHighlightsProps {\n profileHighlights: TProfileHighlight[];\n}\n\nconst StudentProfileHighlights: FC<IStudentProfileHighlightsProps> = memo(\n ({ profileHighlights }) => {\n const theme = useTheme();\n const isMobile = theme.device <= EDeviceType.MOBILE;\n\n return (\n <FlexView $borderColor=\"BLACK_1\">\n {profileHighlights.map(highlight => (\n <HighlightWrapper\n key={highlight.title}\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"flex-start\"\n $gapX={1}\n $gutterX={isMobile ? 0.75 : 1}\n $flexGapX={isMobile ? 0.5 : 1.5}\n $background={highlight.background}\n >\n <Image\n src={highlight.illustration}\n alt={highlight.title}\n height={isMobile ? 64 : 96}\n width={isMobile ? 64 : 96}\n />\n <FlexView $flexDirection=\"column\" $flex={1} $flexGap={2}>\n <Text $renderAs=\"ac3-black\">{highlight.title}</Text>\n <Text $renderAs=\"ab2\">\n {typeof highlight.description === 'string' ? (\n highlight.description\n ) : (\n <FlexView>\n {highlight.description.map(desc => (\n <FlexView key={desc} $flexDirection=\"row\" $flexColumnGapX={0.5}>\n <Text $renderAs=\"ab2\" $inline>\n •\n </Text>\n <Text $renderAs=\"ab2\" as=\"span\" $inline>\n {desc}\n </Text>\n </FlexView>\n ))}\n </FlexView>\n )}\n </Text>\n </FlexView>\n </HighlightWrapper>\n ))}\n </FlexView>\n );\n },\n);\n\nStudentProfileHighlights.displayName = 'StudentProfileHighlights';\n\nexport default StudentProfileHighlights;\n"],"names":["HighlightWrapper","styled","FlexView","theme","StudentProfileHighlights","memo","profileHighlights","isMobile","useTheme","EDeviceType","highlight","jsxs","jsx","Image","Text","desc","StudentProfileHighlights$1"],"mappings":";;;;;;;AAmBA,MAAMA,IAAmBC,EAAOC,CAAQ;AAAA;AAAA,+BAET,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,OAAO;AAAA;AAAA,GAQ5DC,IAA+DC;AAAA,EACnE,CAAC,EAAE,mBAAAC,EAAA,MAAwB;AAEnB,UAAAC,IADQC,IACS,UAAUC,EAAY;AAE7C,6BACGP,GAAS,EAAA,cAAa,WACpB,UAAAI,EAAkB,IAAI,CACrBI,MAAA,gBAAAC;AAAA,MAACX;AAAA,MAAA;AAAA,QAEC,gBAAe;AAAA,QACf,aAAY;AAAA,QACZ,iBAAgB;AAAA,QAChB,OAAO;AAAA,QACP,UAAUO,IAAW,OAAO;AAAA,QAC5B,WAAWA,IAAW,MAAM;AAAA,QAC5B,aAAaG,EAAU;AAAA,QAEvB,UAAA;AAAA,UAAA,gBAAAE;AAAA,YAACC;AAAA,YAAA;AAAA,cACC,KAAKH,EAAU;AAAA,cACf,KAAKA,EAAU;AAAA,cACf,QAAQH,IAAW,KAAK;AAAA,cACxB,OAAOA,IAAW,KAAK;AAAA,YAAA;AAAA,UACzB;AAAA,4BACCL,GAAS,EAAA,gBAAe,UAAS,OAAO,GAAG,UAAU,GACpD,UAAA;AAAA,YAAA,gBAAAU,EAACE,GAAK,EAAA,WAAU,aAAa,UAAAJ,EAAU,OAAM;AAAA,YAC7C,gBAAAE,EAACE,KAAK,WAAU,OACb,iBAAOJ,EAAU,eAAgB,WAChCA,EAAU,gCAETR,GACE,EAAA,UAAAQ,EAAU,YAAY,IAAI,CAAAK,wBACxBb,GAAoB,EAAA,gBAAe,OAAM,iBAAiB,KACzD,UAAA;AAAA,cAAA,gBAAAU,EAACE,GAAK,EAAA,WAAU,OAAM,SAAO,IAAC,UAE9B,KAAA;AAAA,cACA,gBAAAF,EAACE,KAAK,WAAU,OAAM,IAAG,QAAO,SAAO,IACpC,UACHC,EAAA,CAAA;AAAA,YANa,EAAA,GAAAA,CAOf,CACD,EACH,CAAA,GAEJ;AAAA,UAAA,GACF;AAAA,QAAA;AAAA,MAAA;AAAA,MAnCKL,EAAU;AAAA,IAqClB,CAAA,EACH,CAAA;AAAA,EAEJ;AACF;AAEAN,EAAyB,cAAc;AAEvC,MAAAY,IAAeZ;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.3.3-j2",
3
+ "version": "3.3.3-j4",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"