@cuemath/leap 3.3.26-j.3 → 3.3.26-j.5
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.
- package/dist/features/auth/account-selector/account-selector.js +5 -5
- package/dist/features/auth/account-selector/account-selector.js.map +1 -1
- package/dist/features/auth/comps/auth-page-layout/auth-page-layout-styled.js +1 -1
- package/dist/features/auth/comps/auth-page-layout/auth-page-layout-styled.js.map +1 -1
- package/dist/features/parent-dashboard/comps/compact-header/compact-header.js +16 -16
- package/dist/features/parent-dashboard/comps/compact-header/compact-header.js.map +1 -1
- package/dist/features/parent-dashboard/comps/pla-first-session-introduction/pla-first-session-introduction.js +23 -23
- package/dist/features/parent-dashboard/comps/pla-first-session-introduction/pla-first-session-introduction.js.map +1 -1
- package/dist/features/parent-dashboard/comps/session-status/hooks/use-session-status-config.js +19 -19
- package/dist/features/parent-dashboard/comps/session-status/hooks/use-session-status-config.js.map +1 -1
- package/dist/features/parent-dashboard/comps/session-status/session-status-helpers.js +12 -12
- package/dist/features/parent-dashboard/comps/session-status/session-status-helpers.js.map +1 -1
- package/dist/features/parent-dashboard/comps/session-summary/summary-card/summary-card.js +44 -37
- package/dist/features/parent-dashboard/comps/session-summary/summary-card/summary-card.js.map +1 -1
- package/dist/features/parent-dashboard/hooks/use-parent-home-data.js +25 -24
- package/dist/features/parent-dashboard/hooks/use-parent-home-data.js.map +1 -1
- package/dist/features/parent-dashboard/parent-dashboard-constants.js +17 -11
- package/dist/features/parent-dashboard/parent-dashboard-constants.js.map +1 -1
- package/dist/features/parent-dashboard/parent-dashboard-styled.js +2 -2
- package/dist/features/parent-dashboard/parent-dashboard-styled.js.map +1 -1
- package/dist/features/parent-dashboard/parent-dashboard-types.js.map +1 -1
- package/dist/features/parent-dashboard/parent-dashboard-view.js +26 -24
- package/dist/features/parent-dashboard/parent-dashboard-view.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs as m, jsx as e } from "react/jsx-runtime";
|
|
2
2
|
import { memo as h } from "react";
|
|
3
|
-
import { useTheme as
|
|
4
|
-
import { ILLUSTRATIONS as
|
|
3
|
+
import { useTheme as d } from "styled-components";
|
|
4
|
+
import { ILLUSTRATIONS as $ } from "../../../assets/illustrations/illustrations.js";
|
|
5
5
|
import u from "../../ui/image/image.js";
|
|
6
6
|
import c from "../../ui/layout/flex-view.js";
|
|
7
7
|
import s from "../../ui/separator/separator.js";
|
|
@@ -18,14 +18,14 @@ const C = ({
|
|
|
18
18
|
isLoading: p,
|
|
19
19
|
onGoBack: i
|
|
20
20
|
}) => {
|
|
21
|
-
const { device: n } =
|
|
21
|
+
const { device: n } = d(), t = n <= a.TABLET, r = n === a.MOBILE;
|
|
22
22
|
return /* @__PURE__ */ m(
|
|
23
23
|
c,
|
|
24
24
|
{
|
|
25
25
|
$alignItems: r ? "flex-start" : "center",
|
|
26
26
|
$justifyContent: r ? "flex-start" : "center",
|
|
27
27
|
$width: "100%",
|
|
28
|
-
$height: "
|
|
28
|
+
$height: "100dvh",
|
|
29
29
|
$gapX: t ? 0 : 2,
|
|
30
30
|
children: [
|
|
31
31
|
typeof i == "function" && /* @__PURE__ */ e(L, { onGoBack: i }),
|
|
@@ -34,7 +34,7 @@ const C = ({
|
|
|
34
34
|
/* @__PURE__ */ e(
|
|
35
35
|
u,
|
|
36
36
|
{
|
|
37
|
-
src:
|
|
37
|
+
src: $.CIRCLE_CUEMATH_LOGO_WHITE,
|
|
38
38
|
alt: "Parent Signup",
|
|
39
39
|
withLoader: !1,
|
|
40
40
|
width: 80
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-selector.js","sources":["../../../../src/features/auth/account-selector/account-selector.tsx"],"sourcesContent":["import type { IAccountSelectorViewProps } from './account-selector-types';\n\nimport { memo } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\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 OverlayLoader from '../comps/overlay-loader/overlay-loader';\nimport UserList from '../comps/user-list/user-list';\nimport * as Styled from './account-selector-styled';\nimport AccountSelectorHeader from './comps/compact-header/account-selector-header';\n\nconst AccountSelector = ({\n userAccounts,\n onSelect,\n onAddNew,\n isLoading,\n onGoBack,\n}: IAccountSelectorViewProps) => {\n const { device } = useTheme();\n const isCompact = device <= EDeviceType.TABLET;\n const isMobile = device === EDeviceType.MOBILE;\n\n return (\n <FlexView\n $alignItems={isMobile ? 'flex-start' : 'center'}\n $justifyContent={isMobile ? 'flex-start' : 'center'}\n $width=\"100%\"\n $height=\"
|
|
1
|
+
{"version":3,"file":"account-selector.js","sources":["../../../../src/features/auth/account-selector/account-selector.tsx"],"sourcesContent":["import type { IAccountSelectorViewProps } from './account-selector-types';\n\nimport { memo } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\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 OverlayLoader from '../comps/overlay-loader/overlay-loader';\nimport UserList from '../comps/user-list/user-list';\nimport * as Styled from './account-selector-styled';\nimport AccountSelectorHeader from './comps/compact-header/account-selector-header';\n\nconst AccountSelector = ({\n userAccounts,\n onSelect,\n onAddNew,\n isLoading,\n onGoBack,\n}: IAccountSelectorViewProps) => {\n const { device } = useTheme();\n const isCompact = device <= EDeviceType.TABLET;\n const isMobile = device === EDeviceType.MOBILE;\n\n return (\n <FlexView\n $alignItems={isMobile ? 'flex-start' : 'center'}\n $justifyContent={isMobile ? 'flex-start' : 'center'}\n $width=\"100%\"\n $height=\"100dvh\"\n $gapX={isCompact ? 0 : 2}\n >\n {typeof onGoBack === 'function' && <AccountSelectorHeader onGoBack={onGoBack} />}\n <OverlayLoader isLoading={isLoading} />\n {!isCompact && (\n <FlexView $justifyContent=\"center\" $alignItems=\"center\">\n <Image\n src={ILLUSTRATIONS.CIRCLE_CUEMATH_LOGO_WHITE}\n alt=\"Parent Signup\"\n withLoader={false}\n width={80}\n />\n <Separator heightX={1} />\n <Text $renderAs=\"ab1\" $color=\"WHITE_T_60\" $align=\"center\">\n Switch between accounts\n </Text>\n </FlexView>\n )}\n <Separator height={isCompact ? 0 : 40} />\n <Styled.UserListWrapper\n $flex={isCompact ? 1 : 0}\n $justifyContent={isMobile ? 'flex-start' : 'center'}\n $alignItems={isMobile ? 'flex-start' : 'center'}\n $width=\"100%\"\n >\n {userAccounts.length > 0 && (\n <UserList users={userAccounts} onSelect={onSelect} onAddNew={onAddNew} maxColumns={3} />\n )}\n </Styled.UserListWrapper>\n </FlexView>\n );\n};\n\nexport default memo(AccountSelector);\n"],"names":["AccountSelector","userAccounts","onSelect","onAddNew","isLoading","onGoBack","device","useTheme","isCompact","EDeviceType","isMobile","jsxs","FlexView","jsx","AccountSelectorHeader","OverlayLoader","Image","ILLUSTRATIONS","Separator","Text","Styled.UserListWrapper","UserList","accountSelector","memo"],"mappings":";;;;;;;;;;;;;AAgBA,MAAMA,IAAkB,CAAC;AAAA,EACvB,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AACF,MAAiC;AACzB,QAAA,EAAE,QAAAC,MAAWC,KACbC,IAAYF,KAAUG,EAAY,QAClCC,IAAWJ,MAAWG,EAAY;AAGtC,SAAA,gBAAAE;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,aAAaF,IAAW,eAAe;AAAA,MACvC,iBAAiBA,IAAW,eAAe;AAAA,MAC3C,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,OAAOF,IAAY,IAAI;AAAA,MAEtB,UAAA;AAAA,QAAA,OAAOH,KAAa,cAAe,gBAAAQ,EAAAC,GAAA,EAAsB,UAAAT,EAAoB,CAAA;AAAA,QAC9E,gBAAAQ,EAACE,KAAc,WAAAX,GAAsB;AAAA,QACpC,CAACI,KACA,gBAAAG,EAACC,KAAS,iBAAgB,UAAS,aAAY,UAC7C,UAAA;AAAA,UAAA,gBAAAC;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,KAAKC,EAAc;AAAA,cACnB,KAAI;AAAA,cACJ,YAAY;AAAA,cACZ,OAAO;AAAA,YAAA;AAAA,UACT;AAAA,UACA,gBAAAJ,EAACK,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,UACvB,gBAAAL,EAACM,KAAK,WAAU,OAAM,QAAO,cAAa,QAAO,UAAS,UAE1D,0BAAA,CAAA;AAAA,QAAA,GACF;AAAA,QAED,gBAAAN,EAAAK,GAAA,EAAU,QAAQV,IAAY,IAAI,IAAI;AAAA,QACvC,gBAAAK;AAAA,UAACO;AAAAA,UAAA;AAAA,YACC,OAAOZ,IAAY,IAAI;AAAA,YACvB,iBAAiBE,IAAW,eAAe;AAAA,YAC3C,aAAaA,IAAW,eAAe;AAAA,YACvC,QAAO;AAAA,YAEN,UAAAT,EAAa,SAAS,KACpB,gBAAAY,EAAAQ,GAAA,EAAS,OAAOpB,GAAc,UAAAC,GAAoB,UAAAC,GAAoB,YAAY,EAAG,CAAA;AAAA,UAAA;AAAA,QAE1F;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GAEemB,IAAAC,EAAKvB,CAAe;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-page-layout-styled.js","sources":["../../../../../src/features/auth/comps/auth-page-layout/auth-page-layout-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\n\nexport const Container = styled(FlexView)`\n
|
|
1
|
+
{"version":3,"file":"auth-page-layout-styled.js","sources":["../../../../../src/features/auth/comps/auth-page-layout/auth-page-layout-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\n\nexport const Container = styled(FlexView)`\n height: 100dvh;\n`;\n\nexport const ContentWrapper = styled(FlexView)`\n overflow: hidden;\n`;\n"],"names":["Container","styled","FlexView","ContentWrapper"],"mappings":";;AAIa,MAAAA,IAAYC,EAAOC,CAAQ;AAAA;AAAA,GAI3BC,IAAiBF,EAAOC,CAAQ;AAAA;AAAA;"}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { memo as
|
|
3
|
-
import { useTheme as
|
|
4
|
-
import { ILLUSTRATIONS as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import { EDeviceType as
|
|
9
|
-
const
|
|
10
|
-
const { device: i } =
|
|
11
|
-
return
|
|
12
|
-
|
|
1
|
+
import { jsxs as a, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { memo as f } from "react";
|
|
3
|
+
import { useTheme as p } from "styled-components";
|
|
4
|
+
import { ILLUSTRATIONS as s } from "../../../../assets/illustrations/illustrations.js";
|
|
5
|
+
import l from "../../../auth/comps/linear-progress-bar/linear-progress-bar.js";
|
|
6
|
+
import d from "../../../ui/image/image.js";
|
|
7
|
+
import t from "../../../ui/layout/flex-view.js";
|
|
8
|
+
import { EDeviceType as u } from "../../../ui/theme/constants.js";
|
|
9
|
+
const T = ({ progressPercentage: r, showProgress: o, HeaderAvatar: m }) => {
|
|
10
|
+
const { device: i } = p(), n = i <= u.TABLET, c = o && r;
|
|
11
|
+
return n ? /* @__PURE__ */ a(
|
|
12
|
+
t,
|
|
13
13
|
{
|
|
14
14
|
$gutterX: 1,
|
|
15
15
|
$gapX: 1,
|
|
16
16
|
$flexDirection: "row",
|
|
17
17
|
$alignItems: "center",
|
|
18
18
|
$background: "WHITE_T_05",
|
|
19
|
-
$flexColumnGapX: 1,
|
|
19
|
+
$flexColumnGapX: c ? 1 : 0,
|
|
20
20
|
children: [
|
|
21
21
|
m,
|
|
22
|
-
|
|
22
|
+
o && r ? /* @__PURE__ */ e(l, { percentage: r, borderRadius: 8 }) : /* @__PURE__ */ e(t, { $flex: 1, $justifyContent: "center", $alignItems: "center", children: /* @__PURE__ */ e(d, { width: 90, src: s.CIRCLE_CUEMATH_LOGO_WHITE }) })
|
|
23
23
|
]
|
|
24
24
|
}
|
|
25
25
|
) : null;
|
|
26
|
-
},
|
|
26
|
+
}, g = f(T);
|
|
27
27
|
export {
|
|
28
|
-
|
|
28
|
+
g as default
|
|
29
29
|
};
|
|
30
30
|
//# sourceMappingURL=compact-header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact-header.js","sources":["../../../../../src/features/parent-dashboard/comps/compact-header/compact-header.tsx"],"sourcesContent":["import type { ICompactHeaderProps } from './compact-header-types';\n\nimport { memo } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport LinearProgressBar from '../../../auth/comps/linear-progress-bar/linear-progress-bar';\nimport Image from '../../../ui/image/image';\nimport FlexView from '../../../ui/layout/flex-view';\nimport { EDeviceType } from '../../../ui/theme/constants';\n\nconst CompactHeader = ({ progressPercentage, showProgress, HeaderAvatar }: ICompactHeaderProps) => {\n const { device } = useTheme();\n const isCompact = device <= EDeviceType.TABLET;\n\n if (!isCompact) return null;\n\n return (\n <FlexView\n $gutterX={1}\n $gapX={1}\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $background=\"WHITE_T_05\"\n $flexColumnGapX={1}\n >\n {HeaderAvatar}\n {showProgress && progressPercentage ? (\n <LinearProgressBar percentage={progressPercentage} borderRadius={8} />\n ) : (\n <FlexView $flex={1} $justifyContent=\"center\" $alignItems=\"center\">\n <Image width={90} src={ILLUSTRATIONS.CIRCLE_CUEMATH_LOGO_WHITE} />\n </FlexView>\n )}\n </FlexView>\n );\n};\n\nexport default memo(CompactHeader);\n"],"names":["CompactHeader","progressPercentage","showProgress","HeaderAvatar","device","useTheme","EDeviceType","jsxs","FlexView","jsx","LinearProgressBar","Image","ILLUSTRATIONS","CompactHeader$1","memo"],"mappings":";;;;;;;;AAWA,MAAMA,IAAgB,CAAC,EAAE,oBAAAC,GAAoB,cAAAC,GAAc,cAAAC,QAAwC;AAC3F,QAAA,EAAE,QAAAC,MAAWC
|
|
1
|
+
{"version":3,"file":"compact-header.js","sources":["../../../../../src/features/parent-dashboard/comps/compact-header/compact-header.tsx"],"sourcesContent":["import type { ICompactHeaderProps } from './compact-header-types';\n\nimport { memo } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport LinearProgressBar from '../../../auth/comps/linear-progress-bar/linear-progress-bar';\nimport Image from '../../../ui/image/image';\nimport FlexView from '../../../ui/layout/flex-view';\nimport { EDeviceType } from '../../../ui/theme/constants';\n\nconst CompactHeader = ({ progressPercentage, showProgress, HeaderAvatar }: ICompactHeaderProps) => {\n const { device } = useTheme();\n const isCompact = device <= EDeviceType.TABLET;\n const showProgressBar = showProgress && progressPercentage;\n\n if (!isCompact) return null;\n\n return (\n <FlexView\n $gutterX={1}\n $gapX={1}\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $background=\"WHITE_T_05\"\n $flexColumnGapX={showProgressBar ? 1 : 0}\n >\n {HeaderAvatar}\n {showProgress && progressPercentage ? (\n <LinearProgressBar percentage={progressPercentage} borderRadius={8} />\n ) : (\n <FlexView $flex={1} $justifyContent=\"center\" $alignItems=\"center\">\n <Image width={90} src={ILLUSTRATIONS.CIRCLE_CUEMATH_LOGO_WHITE} />\n </FlexView>\n )}\n </FlexView>\n );\n};\n\nexport default memo(CompactHeader);\n"],"names":["CompactHeader","progressPercentage","showProgress","HeaderAvatar","device","useTheme","isCompact","EDeviceType","showProgressBar","jsxs","FlexView","jsx","LinearProgressBar","Image","ILLUSTRATIONS","CompactHeader$1","memo"],"mappings":";;;;;;;;AAWA,MAAMA,IAAgB,CAAC,EAAE,oBAAAC,GAAoB,cAAAC,GAAc,cAAAC,QAAwC;AAC3F,QAAA,EAAE,QAAAC,MAAWC,KACbC,IAAYF,KAAUG,EAAY,QAClCC,IAAkBN,KAAgBD;AAEpC,SAACK,IAGH,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,OAAO;AAAA,MACP,gBAAe;AAAA,MACf,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,iBAAiBF,IAAkB,IAAI;AAAA,MAEtC,UAAA;AAAA,QAAAL;AAAA,QACAD,KAAgBD,IACf,gBAAAU,EAACC,GAAkB,EAAA,YAAYX,GAAoB,cAAc,EAAA,CAAG,IAEpE,gBAAAU,EAACD,GAAS,EAAA,OAAO,GAAG,iBAAgB,UAAS,aAAY,UACvD,UAAC,gBAAAC,EAAAE,GAAA,EAAM,OAAO,IAAI,KAAKC,EAAc,0BAAA,CAA2B,EAClE,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,IAjBiB;AAqBzB,GAEeC,IAAAC,EAAKhB,CAAa;"}
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { memo as
|
|
3
|
-
import { ILLUSTRATIONS as
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
1
|
+
import { jsxs as s, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { memo as f, useMemo as d } from "react";
|
|
3
|
+
import { ILLUSTRATIONS as p } from "../../../../assets/illustrations/illustrations.js";
|
|
4
|
+
import u from "../../../ui/buttons/button/button.js";
|
|
5
|
+
import $ from "../../../ui/image/image.js";
|
|
6
|
+
import m from "../../../ui/layout/flex-view.js";
|
|
7
7
|
import r from "../../../ui/separator/separator.js";
|
|
8
8
|
import o from "../../../ui/text/text.js";
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import { ImageWrapper as
|
|
12
|
-
import { fromUnixTime as
|
|
13
|
-
import { formatDate as
|
|
14
|
-
const
|
|
9
|
+
import g from "../../hooks/use-fetch-parent-home.js";
|
|
10
|
+
import x from "../../hooks/use-parent-home-data.js";
|
|
11
|
+
import { ImageWrapper as A } from "./pla-first-session-introduction-styled.js";
|
|
12
|
+
import { fromUnixTime as S } from "../../../../node_modules/date-fns/fromUnixTime.js";
|
|
13
|
+
import { formatDate as I } from "../../../../node_modules/date-fns/format.js";
|
|
14
|
+
const L = ({
|
|
15
15
|
studentId: i,
|
|
16
16
|
onRunSystemCheck: a
|
|
17
17
|
}) => {
|
|
18
|
-
|
|
19
|
-
const { nextSessionStart: t } =
|
|
18
|
+
g(i);
|
|
19
|
+
const { nextSessionStart: t, showPLAIntroduction: c, isTrialDone: h } = x(i), n = d(() => {
|
|
20
20
|
if (!t) return "";
|
|
21
|
-
const
|
|
22
|
-
return
|
|
21
|
+
const l = new Date(S(t).getTime());
|
|
22
|
+
return I(l, "EEEE, MMM d 'at' h:mm a");
|
|
23
23
|
}, [t]);
|
|
24
|
-
return /* @__PURE__ */ m
|
|
25
|
-
n && /* @__PURE__ */ m
|
|
26
|
-
/* @__PURE__ */ e(o, { $renderAs: "ab1", $color: "BLACK_1", $align: "center", children:
|
|
24
|
+
return /* @__PURE__ */ s(m, { $justifyContent: "center", $alignItems: "center", $height: "100vh", $width: "100%", children: [
|
|
25
|
+
n && c && /* @__PURE__ */ s(m, { children: [
|
|
26
|
+
/* @__PURE__ */ e(o, { $renderAs: "ab1", $color: "BLACK_1", $align: "center", children: `We’re excited for your ${h ? "next" : "first"} session on` }),
|
|
27
27
|
/* @__PURE__ */ e(r, { height: 4 }),
|
|
28
28
|
/* @__PURE__ */ e(o, { $renderAs: "ab1-bold", $align: "center", children: n })
|
|
29
29
|
] }),
|
|
30
30
|
/* @__PURE__ */ e(r, { heightX: 2.5 }),
|
|
31
|
-
/* @__PURE__ */ e(
|
|
31
|
+
/* @__PURE__ */ e(A, { children: /* @__PURE__ */ e($, { src: p.LEARNING_PUZZLE_BOT, width: "100%" }) }),
|
|
32
32
|
/* @__PURE__ */ e(r, { heightX: 3.5 }),
|
|
33
33
|
/* @__PURE__ */ e(o, { $renderAs: "ab2", $color: "BLACK_1", $align: "center", children: "Let's make sure your device is ready for your child's session." }),
|
|
34
34
|
/* @__PURE__ */ e(r, { heightX: 1 }),
|
|
35
35
|
/* @__PURE__ */ e(
|
|
36
|
-
|
|
36
|
+
u,
|
|
37
37
|
{
|
|
38
38
|
renderAs: "primary",
|
|
39
39
|
label: "Run a system check",
|
|
@@ -43,8 +43,8 @@ const A = ({
|
|
|
43
43
|
}
|
|
44
44
|
)
|
|
45
45
|
] });
|
|
46
|
-
},
|
|
46
|
+
}, j = f(L);
|
|
47
47
|
export {
|
|
48
|
-
|
|
48
|
+
j as default
|
|
49
49
|
};
|
|
50
50
|
//# sourceMappingURL=pla-first-session-introduction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pla-first-session-introduction.js","sources":["../../../../../src/features/parent-dashboard/comps/pla-first-session-introduction/pla-first-session-introduction.tsx"],"sourcesContent":["import type { IFirstSessionIntroductionProps } from './pla-first-session-introduction-types';\n\nimport { format, fromUnixTime } from 'date-fns';\nimport { memo, useMemo, type FC } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport Button from '../../../ui/buttons/button/button';\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 useFetchParentHome from '../../hooks/use-fetch-parent-home';\nimport useParentHomeData from '../../hooks/use-parent-home-data';\nimport * as Styled from './pla-first-session-introduction-styled';\n\nconst PlaFirstSessionIntroduction: FC<IFirstSessionIntroductionProps> = ({\n studentId,\n onRunSystemCheck,\n}) => {\n useFetchParentHome(studentId);\n const { nextSessionStart } = useParentHomeData(studentId);\n\n const formattedNextSessionStart = useMemo(() => {\n if (!nextSessionStart) return '';\n\n const date = new Date(fromUnixTime(nextSessionStart).getTime());\n\n return format(date, \"EEEE, MMM d 'at' h:mm a\");\n }, [nextSessionStart]);\n\n return (\n <FlexView $justifyContent=\"center\" $alignItems=\"center\" $height=\"100vh\" $width={'100%'}>\n {formattedNextSessionStart && (\n <FlexView>\n <Text $renderAs=\"ab1\" $color=\"BLACK_1\" $align=\"center\">\n We’re excited for your first session on\n </Text>\n <Separator height={4} />\n <Text $renderAs=\"ab1-bold\" $align=\"center\">\n {formattedNextSessionStart}\n </Text>\n </FlexView>\n )}\n <Separator heightX={2.5} />\n <Styled.ImageWrapper>\n <Image src={ILLUSTRATIONS.LEARNING_PUZZLE_BOT} width=\"100%\" />\n </Styled.ImageWrapper>\n <Separator heightX={3.5} />\n <Text $renderAs=\"ab2\" $color=\"BLACK_1\" $align=\"center\">\n Let's make sure your device is ready for your child's session.\n </Text>\n <Separator heightX={1} />\n <Button\n renderAs=\"primary\"\n label=\"Run a system check\"\n shape=\"square\"\n size=\"small\"\n onClick={onRunSystemCheck}\n />\n </FlexView>\n );\n};\n\nexport default memo(PlaFirstSessionIntroduction);\n"],"names":["PlaFirstSessionIntroduction","studentId","onRunSystemCheck","useFetchParentHome","nextSessionStart","useParentHomeData","formattedNextSessionStart","useMemo","date","fromUnixTime","format","jsxs","FlexView","jsx","Text","Separator","Styled.ImageWrapper","Image","ILLUSTRATIONS","Button","plaFirstSessionIntroduction","memo"],"mappings":";;;;;;;;;;;;;AAeA,MAAMA,IAAkE,CAAC;AAAA,EACvE,WAAAC;AAAA,EACA,kBAAAC;AACF,MAAM;AACJ,EAAAC,EAAmBF,CAAS;AAC5B,QAAM,EAAE,kBAAAG,
|
|
1
|
+
{"version":3,"file":"pla-first-session-introduction.js","sources":["../../../../../src/features/parent-dashboard/comps/pla-first-session-introduction/pla-first-session-introduction.tsx"],"sourcesContent":["import type { IFirstSessionIntroductionProps } from './pla-first-session-introduction-types';\n\nimport { format, fromUnixTime } from 'date-fns';\nimport { memo, useMemo, type FC } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport Button from '../../../ui/buttons/button/button';\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 useFetchParentHome from '../../hooks/use-fetch-parent-home';\nimport useParentHomeData from '../../hooks/use-parent-home-data';\nimport * as Styled from './pla-first-session-introduction-styled';\n\nconst PlaFirstSessionIntroduction: FC<IFirstSessionIntroductionProps> = ({\n studentId,\n onRunSystemCheck,\n}) => {\n useFetchParentHome(studentId);\n const { nextSessionStart, showPLAIntroduction, isTrialDone } = useParentHomeData(studentId);\n\n const formattedNextSessionStart = useMemo(() => {\n if (!nextSessionStart) return '';\n\n const date = new Date(fromUnixTime(nextSessionStart).getTime());\n\n return format(date, \"EEEE, MMM d 'at' h:mm a\");\n }, [nextSessionStart]);\n\n return (\n <FlexView $justifyContent=\"center\" $alignItems=\"center\" $height=\"100vh\" $width={'100%'}>\n {formattedNextSessionStart && showPLAIntroduction && (\n <FlexView>\n <Text $renderAs=\"ab1\" $color=\"BLACK_1\" $align=\"center\">\n {`We’re excited for your ${isTrialDone ? 'next' : 'first'} session on`}\n </Text>\n <Separator height={4} />\n <Text $renderAs=\"ab1-bold\" $align=\"center\">\n {formattedNextSessionStart}\n </Text>\n </FlexView>\n )}\n <Separator heightX={2.5} />\n <Styled.ImageWrapper>\n <Image src={ILLUSTRATIONS.LEARNING_PUZZLE_BOT} width=\"100%\" />\n </Styled.ImageWrapper>\n <Separator heightX={3.5} />\n <Text $renderAs=\"ab2\" $color=\"BLACK_1\" $align=\"center\">\n Let's make sure your device is ready for your child's session.\n </Text>\n <Separator heightX={1} />\n <Button\n renderAs=\"primary\"\n label=\"Run a system check\"\n shape=\"square\"\n size=\"small\"\n onClick={onRunSystemCheck}\n />\n </FlexView>\n );\n};\n\nexport default memo(PlaFirstSessionIntroduction);\n"],"names":["PlaFirstSessionIntroduction","studentId","onRunSystemCheck","useFetchParentHome","nextSessionStart","showPLAIntroduction","isTrialDone","useParentHomeData","formattedNextSessionStart","useMemo","date","fromUnixTime","format","jsxs","FlexView","jsx","Text","Separator","Styled.ImageWrapper","Image","ILLUSTRATIONS","Button","plaFirstSessionIntroduction","memo"],"mappings":";;;;;;;;;;;;;AAeA,MAAMA,IAAkE,CAAC;AAAA,EACvE,WAAAC;AAAA,EACA,kBAAAC;AACF,MAAM;AACJ,EAAAC,EAAmBF,CAAS;AAC5B,QAAM,EAAE,kBAAAG,GAAkB,qBAAAC,GAAqB,aAAAC,EAAY,IAAIC,EAAkBN,CAAS,GAEpFO,IAA4BC,EAAQ,MAAM;AAC1C,QAAA,CAACL,EAAyB,QAAA;AAE9B,UAAMM,IAAO,IAAI,KAAKC,EAAaP,CAAgB,EAAE,SAAS;AAEvD,WAAAQ,EAAOF,GAAM,yBAAyB;AAAA,EAAA,GAC5C,CAACN,CAAgB,CAAC;AAGnB,SAAA,gBAAAS,EAACC,KAAS,iBAAgB,UAAS,aAAY,UAAS,SAAQ,SAAQ,QAAQ,QAC7E,UAAA;AAAA,IAA6BN,KAAAH,uBAC3BS,GACC,EAAA,UAAA;AAAA,MAAC,gBAAAC,EAAAC,GAAA,EAAK,WAAU,OAAM,QAAO,WAAU,QAAO,UAC3C,UAA0B,0BAAAV,IAAc,SAAS,OAAO,eAC3D;AAAA,MACA,gBAAAS,EAACE,GAAU,EAAA,QAAQ,EAAG,CAAA;AAAA,wBACrBD,GAAK,EAAA,WAAU,YAAW,QAAO,UAC/B,UACHR,GAAA;AAAA,IAAA,GACF;AAAA,IAEF,gBAAAO,EAACE,GAAU,EAAA,SAAS,IAAK,CAAA;AAAA,IACzB,gBAAAF,EAACG,GAAA,EACC,UAAA,gBAAAH,EAACI,GAAM,EAAA,KAAKC,EAAc,qBAAqB,OAAM,OAAA,CAAO,EAC9D,CAAA;AAAA,IACA,gBAAAL,EAACE,GAAU,EAAA,SAAS,IAAK,CAAA;AAAA,IACzB,gBAAAF,EAACC,KAAK,WAAU,OAAM,QAAO,WAAU,QAAO,UAAS,UAEvD,iEAAA,CAAA;AAAA,IACA,gBAAAD,EAACE,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,IACvB,gBAAAF;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,UAAS;AAAA,QACT,OAAM;AAAA,QACN,OAAM;AAAA,QACN,MAAK;AAAA,QACL,SAASnB;AAAA,MAAA;AAAA,IACX;AAAA,EACF,EAAA,CAAA;AAEJ,GAEeoB,IAAAC,EAAKvB,CAA2B;"}
|
package/dist/features/parent-dashboard/comps/session-status/hooks/use-session-status-config.js
CHANGED
|
@@ -10,28 +10,28 @@ const x = ({
|
|
|
10
10
|
completedSessions: u,
|
|
11
11
|
nextSessionStartTime: S,
|
|
12
12
|
isTrialDone: c = !1,
|
|
13
|
-
teacherName:
|
|
13
|
+
teacherName: o,
|
|
14
14
|
studentName: b,
|
|
15
15
|
isStudentNoShow: i = !1,
|
|
16
16
|
onRescheduleClick: n,
|
|
17
17
|
isOnlyTrialDone: I = !1,
|
|
18
|
-
isTutorNoShow:
|
|
18
|
+
isTutorNoShow: d = !1
|
|
19
19
|
}) => {
|
|
20
20
|
const B = s(
|
|
21
21
|
() => ({
|
|
22
|
-
isNoShowStatus: i ||
|
|
23
|
-
isTeacherAssigned: !!
|
|
22
|
+
isNoShowStatus: i || d,
|
|
23
|
+
isTeacherAssigned: !!o,
|
|
24
24
|
formattedSessionStart: A(S)
|
|
25
25
|
}),
|
|
26
|
-
[i,
|
|
27
|
-
), { isNoShowStatus: L, isTeacherAssigned: e, formattedSessionStart:
|
|
26
|
+
[i, d, o, S]
|
|
27
|
+
), { isNoShowStatus: L, isTeacherAssigned: e, formattedSessionStart: l } = B, r = P({
|
|
28
28
|
timeLeft: c || L ? null : S,
|
|
29
29
|
maxHoursToShow: 48
|
|
30
|
-
}),
|
|
30
|
+
}), y = C(() => {
|
|
31
31
|
window.open(R, "_blank");
|
|
32
32
|
}, []), T = C(() => {
|
|
33
33
|
n == null || n();
|
|
34
|
-
}, [n]),
|
|
34
|
+
}, [n]), f = s(
|
|
35
35
|
() => ({
|
|
36
36
|
topSection: {
|
|
37
37
|
icon: a.CALENDAR_CROSS_ORANGE,
|
|
@@ -39,7 +39,7 @@ const x = ({
|
|
|
39
39
|
titleColor: "ORANGE_4",
|
|
40
40
|
titleStyle: t.TITLE_DESKTOP,
|
|
41
41
|
titleTabletStyle: t.TITLE_MOBILE,
|
|
42
|
-
subtitle:
|
|
42
|
+
subtitle: l,
|
|
43
43
|
subtitleStyle: t.SUBTITLE_DESKTOP,
|
|
44
44
|
subtitleTabletStyle: t.SUBTITLE_MOBILE,
|
|
45
45
|
subtitleLineThrough: !0,
|
|
@@ -61,7 +61,7 @@ const x = ({
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
}),
|
|
64
|
-
[
|
|
64
|
+
[l, i, T]
|
|
65
65
|
), m = s(() => {
|
|
66
66
|
const _ = I ? "First" : u.toString(), E = h.pluralize(u, "session");
|
|
67
67
|
return {
|
|
@@ -79,17 +79,17 @@ const x = ({
|
|
|
79
79
|
titleColor: "ORANGE_4",
|
|
80
80
|
titleStyle: t.TITLE_DESKTOP,
|
|
81
81
|
titleTabletStyle: t.TITLE_MOBILE,
|
|
82
|
-
subtitle: `${
|
|
83
|
-
with ${
|
|
82
|
+
subtitle: `${l}
|
|
83
|
+
with ${o}`,
|
|
84
84
|
subtitleStyle: t.SUBTITLE_DESKTOP,
|
|
85
85
|
subtitleTabletStyle: t.SUBTITLE_MOBILE,
|
|
86
86
|
action: {
|
|
87
87
|
label: "Reschedule on the Cuemath app",
|
|
88
|
-
onClick:
|
|
88
|
+
onClick: y
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
};
|
|
92
|
-
}, [I, u,
|
|
92
|
+
}, [I, u, l, o, y]), p = s(() => {
|
|
93
93
|
const _ = r ? D(r) : "SESSION SCHEDULED", E = !!r;
|
|
94
94
|
return {
|
|
95
95
|
topSection: {
|
|
@@ -98,7 +98,7 @@ with ${l}`,
|
|
|
98
98
|
titleColor: "GREEN_4",
|
|
99
99
|
titleStyle: E ? t.COUNTDOWN_DESKTOP : t.TITLE_DESKTOP,
|
|
100
100
|
titleTabletStyle: E ? t.COUNTDOWN_MOBILE : t.TITLE_MOBILE,
|
|
101
|
-
subtitle:
|
|
101
|
+
subtitle: l,
|
|
102
102
|
subtitleStyle: t.SUBTITLE_DESKTOP,
|
|
103
103
|
subtitleTabletStyle: t.SUBTITLE_MOBILE,
|
|
104
104
|
action: {
|
|
@@ -113,7 +113,7 @@ with ${l}`,
|
|
|
113
113
|
titleColor: e ? "ORANGE_4" : "WHITE_1",
|
|
114
114
|
titleStyle: e ? t.TITLE_DESKTOP : t.SUBTITLE_MOBILE,
|
|
115
115
|
titleTabletStyle: e ? t.TITLE_MOBILE : t.SUBTITLE_MOBILE,
|
|
116
|
-
subtitle: e ? `From over 3000 expert tutors, we selected ${
|
|
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
117
|
subtitleStyle: t.BODY_DESKTOP,
|
|
118
118
|
subtitleTabletStyle: t.BODY_MOBILE,
|
|
119
119
|
description: e ? void 0 : "This typically takes 24-48 hours. We'll notify you via email.",
|
|
@@ -123,13 +123,13 @@ with ${l}`,
|
|
|
123
123
|
};
|
|
124
124
|
}, [
|
|
125
125
|
r,
|
|
126
|
-
|
|
126
|
+
l,
|
|
127
127
|
T,
|
|
128
128
|
e,
|
|
129
|
-
|
|
129
|
+
o,
|
|
130
130
|
b
|
|
131
131
|
]);
|
|
132
|
-
return s(() => L ?
|
|
132
|
+
return s(() => L ? f : c ? m : p, [L, c, f, m, p]);
|
|
133
133
|
};
|
|
134
134
|
export {
|
|
135
135
|
x as default
|
package/dist/features/parent-dashboard/comps/session-status/hooks/use-session-status-config.js.map
CHANGED
|
@@ -1 +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 countdownTimeLeft = isTrialDone || isNoShowStatus ? null : nextSessionStartTime;\n\n const remainingTime = useCountdown({\n timeLeft: countdownTimeLeft,\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 = remainingTime ? formatTimeRemaining(remainingTime) : 'SESSION SCHEDULED';\n const hasCountdown = Boolean(remainingTime);\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 remainingTime,\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","remainingTime","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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"}
|
|
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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"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { fromUnixTime as
|
|
2
|
-
import { formatDate as
|
|
3
|
-
function
|
|
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
4
|
if (!t) return "";
|
|
5
|
-
const o =
|
|
6
|
-
return `${r} . ${
|
|
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
7
|
}
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
return `Session starts in ${
|
|
11
|
-
|
|
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
12
|
)}s`;
|
|
13
13
|
};
|
|
14
14
|
export {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
d as formatSessionDateTime,
|
|
16
|
+
h as formatTimeRemaining,
|
|
17
|
+
e as padTime
|
|
18
18
|
};
|
|
19
19
|
//# sourceMappingURL=session-status-helpers.js.map
|
|
@@ -1 +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 hours = Math.floor(seconds / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const remainingSeconds =
|
|
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,39 +1,40 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { memo as
|
|
3
|
-
import { useTheme as
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
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
8
|
import x from "../../../../ui/separator/separator.js";
|
|
9
|
-
import
|
|
10
|
-
import { EDeviceType as
|
|
11
|
-
import { ImageWrapper as
|
|
12
|
-
const
|
|
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
13
|
({
|
|
14
|
-
title:
|
|
15
|
-
description:
|
|
16
|
-
image:
|
|
17
|
-
textBG:
|
|
18
|
-
ctaLabel:
|
|
19
|
-
type:
|
|
20
|
-
isTrialDone:
|
|
14
|
+
title: a,
|
|
15
|
+
description: d,
|
|
16
|
+
image: s,
|
|
17
|
+
textBG: o,
|
|
18
|
+
ctaLabel: t,
|
|
19
|
+
type: e,
|
|
20
|
+
isTrialDone: h,
|
|
21
21
|
onClick: i
|
|
22
22
|
}) => {
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
}, [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
/* @__PURE__ */
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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,
|
|
37
38
|
{
|
|
38
39
|
$background: "BLACK_T_38",
|
|
39
40
|
$gapX: 0.5,
|
|
@@ -42,15 +43,21 @@ const _ = g(
|
|
|
42
43
|
$alignItems: "center",
|
|
43
44
|
$justifyContent: "space-between",
|
|
44
45
|
children: [
|
|
45
|
-
/* @__PURE__ */
|
|
46
|
-
/* @__PURE__ */
|
|
46
|
+
/* @__PURE__ */ r(l, { $renderAs: "ac4", $color: "WHITE_1", children: t }),
|
|
47
|
+
/* @__PURE__ */ r(w, { width: 24, height: 24, color: "WHITE" })
|
|
47
48
|
]
|
|
48
49
|
}
|
|
49
|
-
) }) })
|
|
50
|
-
|
|
50
|
+
) }) }),
|
|
51
|
+
[e, t, o, u]
|
|
52
|
+
);
|
|
53
|
+
return b ? /* @__PURE__ */ n(c, { $flex: 1, children: [
|
|
54
|
+
g,
|
|
55
|
+
p
|
|
56
|
+
] }) : g;
|
|
51
57
|
}
|
|
52
58
|
);
|
|
59
|
+
W.displayName = "SessionSummaryCard";
|
|
53
60
|
export {
|
|
54
|
-
|
|
61
|
+
W as default
|
|
55
62
|
};
|
|
56
63
|
//# sourceMappingURL=summary-card.js.map
|
package/dist/features/parent-dashboard/comps/session-summary/summary-card/summary-card.js.map
CHANGED
|
@@ -1 +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 } 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 = theme.device <= EDeviceType.MOBILE;\n\n const handleClick = useCallback(() => {\n if (type && onClick) onClick(type);\n }, [type, onClick]);\n\n const CardContent = (\n <FlexView key={title} $flex={1}>\n
|
|
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;"}
|
|
@@ -1,55 +1,56 @@
|
|
|
1
1
|
import { useMemo as P } from "react";
|
|
2
2
|
import { useParentHomeGet as R } from "../api/parent-home.js";
|
|
3
|
-
import { DEFAULT_LOADING_STATE as
|
|
4
|
-
import { EPLAState as
|
|
5
|
-
const
|
|
3
|
+
import { DEFAULT_LOADING_STATE as f, SUBSCRIPTION_CANCELLED_STATES as g, TRIAL_COMPLETED_STATES as M, PLA_INTRO_ELIGIBLE_STATES as h } from "../parent-dashboard-constants.js";
|
|
4
|
+
import { EPLAState as e } from "../parent-dashboard-types.js";
|
|
5
|
+
const G = (_) => {
|
|
6
6
|
const { data: t, isProcessingFailed: n } = R(_);
|
|
7
7
|
return P(() => {
|
|
8
8
|
if (!(t != null && t.pla_state))
|
|
9
9
|
return {
|
|
10
|
-
...
|
|
10
|
+
...f,
|
|
11
11
|
isProcessingFailed: n
|
|
12
12
|
};
|
|
13
13
|
const {
|
|
14
14
|
teacher_details: o,
|
|
15
15
|
session_details: i,
|
|
16
|
-
pla_state:
|
|
16
|
+
pla_state: s,
|
|
17
17
|
billing_details: r
|
|
18
18
|
} = t, {
|
|
19
|
-
completed_sessions:
|
|
20
|
-
next_session_end:
|
|
19
|
+
completed_sessions: c = 0,
|
|
20
|
+
next_session_end: l = 0,
|
|
21
21
|
next_session_start: d = 0,
|
|
22
|
-
upcoming_sessions:
|
|
23
|
-
student_demo_id:
|
|
24
|
-
user_attempt_id:
|
|
25
|
-
} = i ?? {}, S = o ? `${o.first_name || ""} ${o.last_name || ""}`.trim() : "",
|
|
22
|
+
upcoming_sessions: T = [],
|
|
23
|
+
student_demo_id: E = "",
|
|
24
|
+
user_attempt_id: m = ""
|
|
25
|
+
} = i ?? {}, S = o ? `${o.first_name || ""} ${o.last_name || ""}`.trim() : "", L = s === e.TRIAL_COMPLETED_CARD_DECLINED, A = s === e.NO_CARD_ON_FILE, D = g.includes(s), u = s === e.TRIAL_TUTOR_NO_SHOW, C = s === e.TRIAL_STUDENT_NO_SHOW, a = M.includes(s), I = a && s !== e.REGULAR_CLASS_COMPLETED, N = s === e.REGULAR_CLASS_COMPLETED, O = s === e.TRIAL_COMPLETED_PAYMENT_PENDING, p = h.includes(s);
|
|
26
26
|
return {
|
|
27
|
-
plaState:
|
|
27
|
+
plaState: s,
|
|
28
28
|
sessionDetails: i,
|
|
29
29
|
teacherDetails: o,
|
|
30
30
|
billingDetails: r,
|
|
31
31
|
teacherName: S,
|
|
32
|
-
completedSessions:
|
|
33
|
-
nextSessionEnd:
|
|
32
|
+
completedSessions: c,
|
|
33
|
+
nextSessionEnd: l,
|
|
34
34
|
nextSessionStart: d,
|
|
35
|
-
upcomingSessions:
|
|
35
|
+
upcomingSessions: T,
|
|
36
36
|
isTrialDone: a,
|
|
37
|
-
isOnlyTrialDone:
|
|
37
|
+
isOnlyTrialDone: I,
|
|
38
38
|
isRegularClassDone: N,
|
|
39
|
-
isCardDeclined:
|
|
40
|
-
isSubscriptionCancelled:
|
|
41
|
-
cardOnFileNotAvailable:
|
|
39
|
+
isCardDeclined: L,
|
|
40
|
+
isSubscriptionCancelled: D,
|
|
41
|
+
cardOnFileNotAvailable: A,
|
|
42
42
|
isTutorNoShow: u,
|
|
43
43
|
isStudentNoShow: C,
|
|
44
44
|
showLoading: !1,
|
|
45
|
-
demoId:
|
|
46
|
-
userAttemptId:
|
|
45
|
+
demoId: E,
|
|
46
|
+
userAttemptId: m,
|
|
47
47
|
isProcessingFailed: !1,
|
|
48
|
-
canChangeTutor: O
|
|
48
|
+
canChangeTutor: O,
|
|
49
|
+
showPLAIntroduction: p
|
|
49
50
|
};
|
|
50
51
|
}, [t, n]);
|
|
51
|
-
},
|
|
52
|
+
}, w = G;
|
|
52
53
|
export {
|
|
53
|
-
|
|
54
|
+
w as default
|
|
54
55
|
};
|
|
55
56
|
//# sourceMappingURL=use-parent-home-data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-parent-home-data.js","sources":["../../../../src/features/parent-dashboard/hooks/use-parent-home-data.ts"],"sourcesContent":["import type { IUseParentHomeDataReturn } from '../parent-dashboard-types';\n\nimport { useMemo } from 'react';\n\nimport { useParentHomeGet } from '../api/parent-home';\nimport {\n DEFAULT_LOADING_STATE,\n SUBSCRIPTION_CANCELLED_STATES,\n TRIAL_COMPLETED_STATES,\n} from '../parent-dashboard-constants';\nimport { EPLAState } from '../parent-dashboard-types';\n\n/**\n * Hook to consume processed parent home data.\n * - Automatically fetches on mount and when stale using useFetchParentHome() at <ParentRoutesWrapper/>.\n * - Use this to **read** parent home data.\n */\n\nconst useParentHomeData = (studentId: string): IUseParentHomeDataReturn => {\n const { data: parentHomeData, isProcessingFailed } = useParentHomeGet(studentId);\n\n const parentHomeDataMemoised = useMemo(() => {\n if (!parentHomeData?.pla_state) {\n return {\n ...DEFAULT_LOADING_STATE,\n isProcessingFailed,\n };\n }\n\n const {\n teacher_details: teacherDetails,\n session_details: sessionDetails,\n pla_state: plaState,\n billing_details: billingDetails,\n } = parentHomeData;\n\n const {\n completed_sessions: completedSessions = 0,\n next_session_end: nextSessionEnd = 0,\n next_session_start: nextSessionStart = 0,\n upcoming_sessions: upcomingSessions = [],\n student_demo_id: demoId = '',\n user_attempt_id: userAttemptId = '',\n } = sessionDetails ?? {};\n\n const teacherName = teacherDetails\n ? `${teacherDetails.first_name || ''} ${teacherDetails.last_name || ''}`.trim()\n : '';\n\n const isCardDeclined = plaState === EPLAState.TRIAL_COMPLETED_CARD_DECLINED;\n const cardOnFileNotAvailable = plaState === EPLAState.NO_CARD_ON_FILE;\n const isSubscriptionCancelled = SUBSCRIPTION_CANCELLED_STATES.includes(plaState);\n\n const isTutorNoShow = plaState === EPLAState.TRIAL_TUTOR_NO_SHOW;\n const isStudentNoShow = plaState === EPLAState.TRIAL_STUDENT_NO_SHOW;\n const isTrialDone = TRIAL_COMPLETED_STATES.includes(plaState);\n const isOnlyTrialDone = isTrialDone && plaState !== EPLAState.REGULAR_CLASS_COMPLETED;\n const isRegularClassDone = plaState === EPLAState.REGULAR_CLASS_COMPLETED;\n
|
|
1
|
+
{"version":3,"file":"use-parent-home-data.js","sources":["../../../../src/features/parent-dashboard/hooks/use-parent-home-data.ts"],"sourcesContent":["import type { IUseParentHomeDataReturn } from '../parent-dashboard-types';\n\nimport { useMemo } from 'react';\n\nimport { useParentHomeGet } from '../api/parent-home';\nimport {\n DEFAULT_LOADING_STATE,\n PLA_INTRO_ELIGIBLE_STATES,\n SUBSCRIPTION_CANCELLED_STATES,\n TRIAL_COMPLETED_STATES,\n} from '../parent-dashboard-constants';\nimport { EPLAState } from '../parent-dashboard-types';\n\n/**\n * Hook to consume processed parent home data.\n * - Automatically fetches on mount and when stale using useFetchParentHome() at <ParentRoutesWrapper/>.\n * - Use this to **read** parent home data.\n */\n\nconst useParentHomeData = (studentId: string): IUseParentHomeDataReturn => {\n const { data: parentHomeData, isProcessingFailed } = useParentHomeGet(studentId);\n\n const parentHomeDataMemoised = useMemo(() => {\n if (!parentHomeData?.pla_state) {\n return {\n ...DEFAULT_LOADING_STATE,\n isProcessingFailed,\n };\n }\n\n const {\n teacher_details: teacherDetails,\n session_details: sessionDetails,\n pla_state: plaState,\n billing_details: billingDetails,\n } = parentHomeData;\n\n const {\n completed_sessions: completedSessions = 0,\n next_session_end: nextSessionEnd = 0,\n next_session_start: nextSessionStart = 0,\n upcoming_sessions: upcomingSessions = [],\n student_demo_id: demoId = '',\n user_attempt_id: userAttemptId = '',\n } = sessionDetails ?? {};\n\n const teacherName = teacherDetails\n ? `${teacherDetails.first_name || ''} ${teacherDetails.last_name || ''}`.trim()\n : '';\n\n const isCardDeclined = plaState === EPLAState.TRIAL_COMPLETED_CARD_DECLINED;\n const cardOnFileNotAvailable = plaState === EPLAState.NO_CARD_ON_FILE;\n const isSubscriptionCancelled = SUBSCRIPTION_CANCELLED_STATES.includes(plaState);\n\n const isTutorNoShow = plaState === EPLAState.TRIAL_TUTOR_NO_SHOW;\n const isStudentNoShow = plaState === EPLAState.TRIAL_STUDENT_NO_SHOW;\n const isTrialDone = TRIAL_COMPLETED_STATES.includes(plaState);\n const isOnlyTrialDone = isTrialDone && plaState !== EPLAState.REGULAR_CLASS_COMPLETED;\n const isRegularClassDone = plaState === EPLAState.REGULAR_CLASS_COMPLETED;\n const canChangeTutor = plaState === EPLAState.TRIAL_COMPLETED_PAYMENT_PENDING;\n\n const showPLAIntroduction = PLA_INTRO_ELIGIBLE_STATES.includes(plaState);\n\n return {\n plaState,\n sessionDetails,\n teacherDetails,\n billingDetails,\n teacherName,\n completedSessions,\n nextSessionEnd,\n nextSessionStart,\n upcomingSessions,\n isTrialDone,\n isOnlyTrialDone,\n isRegularClassDone,\n isCardDeclined,\n isSubscriptionCancelled,\n cardOnFileNotAvailable,\n isTutorNoShow,\n isStudentNoShow,\n showLoading: false,\n demoId,\n userAttemptId,\n isProcessingFailed: false,\n canChangeTutor,\n showPLAIntroduction,\n };\n }, [parentHomeData, isProcessingFailed]);\n\n return parentHomeDataMemoised;\n};\n\nexport default useParentHomeData;\n"],"names":["useParentHomeData","studentId","parentHomeData","isProcessingFailed","useParentHomeGet","useMemo","DEFAULT_LOADING_STATE","teacherDetails","sessionDetails","plaState","billingDetails","completedSessions","nextSessionEnd","nextSessionStart","upcomingSessions","demoId","userAttemptId","teacherName","isCardDeclined","EPLAState","cardOnFileNotAvailable","isSubscriptionCancelled","SUBSCRIPTION_CANCELLED_STATES","isTutorNoShow","isStudentNoShow","isTrialDone","TRIAL_COMPLETED_STATES","isOnlyTrialDone","isRegularClassDone","canChangeTutor","showPLAIntroduction","PLA_INTRO_ELIGIBLE_STATES","useParentHomeData$1"],"mappings":";;;;AAmBA,MAAMA,IAAoB,CAACC,MAAgD;AACzE,QAAM,EAAE,MAAMC,GAAgB,oBAAAC,EAAmB,IAAIC,EAAiBH,CAAS;AAsExE,SApEwBI,EAAQ,MAAM;AACvC,QAAA,EAACH,KAAA,QAAAA,EAAgB;AACZ,aAAA;AAAA,QACL,GAAGI;AAAA,QACH,oBAAAH;AAAA,MAAA;AAIE,UAAA;AAAA,MACJ,iBAAiBI;AAAA,MACjB,iBAAiBC;AAAA,MACjB,WAAWC;AAAA,MACX,iBAAiBC;AAAA,IACf,IAAAR,GAEE;AAAA,MACJ,oBAAoBS,IAAoB;AAAA,MACxC,kBAAkBC,IAAiB;AAAA,MACnC,oBAAoBC,IAAmB;AAAA,MACvC,mBAAmBC,IAAmB,CAAC;AAAA,MACvC,iBAAiBC,IAAS;AAAA,MAC1B,iBAAiBC,IAAgB;AAAA,IAAA,IAC/BR,KAAkB,CAAA,GAEhBS,IAAcV,IAChB,GAAGA,EAAe,cAAc,EAAE,IAAIA,EAAe,aAAa,EAAE,GAAG,KAAA,IACvE,IAEEW,IAAiBT,MAAaU,EAAU,+BACxCC,IAAyBX,MAAaU,EAAU,iBAChDE,IAA0BC,EAA8B,SAASb,CAAQ,GAEzEc,IAAgBd,MAAaU,EAAU,qBACvCK,IAAkBf,MAAaU,EAAU,uBACzCM,IAAcC,EAAuB,SAASjB,CAAQ,GACtDkB,IAAkBF,KAAehB,MAAaU,EAAU,yBACxDS,IAAqBnB,MAAaU,EAAU,yBAC5CU,IAAiBpB,MAAaU,EAAU,iCAExCW,IAAsBC,EAA0B,SAAStB,CAAQ;AAEhE,WAAA;AAAA,MACL,UAAAA;AAAA,MACA,gBAAAD;AAAA,MACA,gBAAAD;AAAA,MACA,gBAAAG;AAAA,MACA,aAAAO;AAAA,MACA,mBAAAN;AAAA,MACA,gBAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,aAAAW;AAAA,MACA,iBAAAE;AAAA,MACA,oBAAAC;AAAA,MACA,gBAAAV;AAAA,MACA,yBAAAG;AAAA,MACA,wBAAAD;AAAA,MACA,eAAAG;AAAA,MACA,iBAAAC;AAAA,MACA,aAAa;AAAA,MACb,QAAAT;AAAA,MACA,eAAAC;AAAA,MACA,oBAAoB;AAAA,MACpB,gBAAAa;AAAA,MACA,qBAAAC;AAAA,IAAA;AAAA,EACF,GACC,CAAC5B,GAAgBC,CAAkB,CAAC;AAGzC,GAEA6B,IAAehC;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EPLAState as e } from "./parent-dashboard-types.js";
|
|
2
|
-
const
|
|
2
|
+
const l = {
|
|
3
3
|
small: 40,
|
|
4
4
|
medium: 40,
|
|
5
5
|
large: 80,
|
|
@@ -9,7 +9,7 @@ const a = {
|
|
|
9
9
|
large: 24,
|
|
10
10
|
extraLarge: 80
|
|
11
11
|
}
|
|
12
|
-
},
|
|
12
|
+
}, E = {
|
|
13
13
|
small: 16,
|
|
14
14
|
medium: 24,
|
|
15
15
|
large: 40,
|
|
@@ -19,15 +19,19 @@ const a = {
|
|
|
19
19
|
large: 22,
|
|
20
20
|
extraLarge: 40
|
|
21
21
|
}
|
|
22
|
-
},
|
|
22
|
+
}, t = [
|
|
23
23
|
e.SUBSCRIPTION_CANCELLED_AFTER_PAYMENT,
|
|
24
24
|
e.SUBSCRIPTION_CANCELLED_AFTER_TRIAL_BEFORE_PAYMENT,
|
|
25
25
|
e.SUBSCRIPTION_CANCELLED_BEFORE_TRIAL
|
|
26
|
-
],
|
|
26
|
+
], s = [
|
|
27
27
|
e.TRIAL_COMPLETED_PAYMENT_PENDING,
|
|
28
28
|
e.TRIAL_COMPLETED_PAYMENT_SUCCESSFUL,
|
|
29
29
|
e.REGULAR_CLASS_COMPLETED
|
|
30
|
-
],
|
|
30
|
+
], T = [
|
|
31
|
+
e.CARD_ADDED_SEARCHING_TUTOR,
|
|
32
|
+
e.CARD_ADDED_TUTOR_ASSIGNED,
|
|
33
|
+
...s
|
|
34
|
+
], S = {
|
|
31
35
|
plaState: null,
|
|
32
36
|
sessionDetails: null,
|
|
33
37
|
teacherDetails: null,
|
|
@@ -49,13 +53,15 @@ const a = {
|
|
|
49
53
|
demoId: "",
|
|
50
54
|
userAttemptId: "",
|
|
51
55
|
isProcessingFailed: !1,
|
|
52
|
-
canChangeTutor: !1
|
|
56
|
+
canChangeTutor: !1,
|
|
57
|
+
showPLAIntroduction: !1
|
|
53
58
|
};
|
|
54
59
|
export {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
t as
|
|
60
|
+
S as DEFAULT_LOADING_STATE,
|
|
61
|
+
l as DESKTOP_SPACING,
|
|
62
|
+
E as MOBILE_SPACING,
|
|
63
|
+
T as PLA_INTRO_ELIGIBLE_STATES,
|
|
64
|
+
t as SUBSCRIPTION_CANCELLED_STATES,
|
|
65
|
+
s as TRIAL_COMPLETED_STATES
|
|
60
66
|
};
|
|
61
67
|
//# sourceMappingURL=parent-dashboard-constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parent-dashboard-constants.js","sources":["../../../src/features/parent-dashboard/parent-dashboard-constants.ts"],"sourcesContent":["import { EPLAState, type IUseParentHomeDataReturn } from './parent-dashboard-types';\n\nexport const MODAL_KEYS = {\n STUDENT_PROFILE: 'studentProfile',\n INSIGHTS: 'insights',\n LEARNING_PLAN: 'learningPlan',\n CHANGE_TUTOR: 'pla-change-tutor',\n STUDENT_PROFILE_SUMMARY: 'student-profile-summary',\n} as const;\n\nexport const DESKTOP_SPACING = {\n small: 40,\n medium: 40,\n large: 80,\n separator: {\n small: 12,\n medium: 20,\n large: 24,\n extraLarge: 80,\n },\n} as const;\n\nexport const MOBILE_SPACING = {\n small: 16,\n medium: 24,\n large: 40,\n separator: {\n small: 8,\n medium: 16,\n large: 22,\n extraLarge: 40,\n },\n} as const;\n\nexport const SUBSCRIPTION_CANCELLED_STATES = [\n EPLAState.SUBSCRIPTION_CANCELLED_AFTER_PAYMENT,\n EPLAState.SUBSCRIPTION_CANCELLED_AFTER_TRIAL_BEFORE_PAYMENT,\n EPLAState.SUBSCRIPTION_CANCELLED_BEFORE_TRIAL,\n];\n\nexport const TRIAL_COMPLETED_STATES = [\n EPLAState.TRIAL_COMPLETED_PAYMENT_PENDING,\n EPLAState.TRIAL_COMPLETED_PAYMENT_SUCCESSFUL,\n EPLAState.REGULAR_CLASS_COMPLETED,\n];\n\nexport const DEFAULT_LOADING_STATE: IUseParentHomeDataReturn = {\n plaState: null,\n sessionDetails: null,\n teacherDetails: null,\n billingDetails: null,\n isOnlyTrialDone: false,\n isRegularClassDone: false,\n isTrialDone: false,\n isSubscriptionCancelled: false,\n isCardDeclined: false,\n cardOnFileNotAvailable: false,\n isTutorNoShow: false,\n isStudentNoShow: false,\n completedSessions: 0,\n nextSessionEnd: 0,\n nextSessionStart: 0,\n upcomingSessions: [],\n teacherName: '',\n showLoading: true,\n demoId: '',\n userAttemptId: '',\n isProcessingFailed: false,\n canChangeTutor: false,\n};\n"],"names":["DESKTOP_SPACING","MOBILE_SPACING","SUBSCRIPTION_CANCELLED_STATES","EPLAState","TRIAL_COMPLETED_STATES","DEFAULT_LOADING_STATE"],"mappings":";AAUO,MAAMA,IAAkB;AAAA,EAC7B,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AACF,GAEaC,IAAiB;AAAA,EAC5B,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AACF,GAEaC,IAAgC;AAAA,EAC3CC,EAAU;AAAA,EACVA,EAAU;AAAA,EACVA,EAAU;AACZ,GAEaC,IAAyB;AAAA,EACpCD,EAAU;AAAA,EACVA,EAAU;AAAA,EACVA,EAAU;AACZ,GAEaE,IAAkD;AAAA,EAC7D,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,aAAa;AAAA,EACb,yBAAyB;AAAA,EACzB,gBAAgB;AAAA,EAChB,wBAAwB;AAAA,EACxB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,kBAAkB,CAAC;AAAA,EACnB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,gBAAgB;
|
|
1
|
+
{"version":3,"file":"parent-dashboard-constants.js","sources":["../../../src/features/parent-dashboard/parent-dashboard-constants.ts"],"sourcesContent":["import { EPLAState, type IUseParentHomeDataReturn } from './parent-dashboard-types';\n\nexport const MODAL_KEYS = {\n STUDENT_PROFILE: 'studentProfile',\n INSIGHTS: 'insights',\n LEARNING_PLAN: 'learningPlan',\n CHANGE_TUTOR: 'pla-change-tutor',\n STUDENT_PROFILE_SUMMARY: 'student-profile-summary',\n} as const;\n\nexport const DESKTOP_SPACING = {\n small: 40,\n medium: 40,\n large: 80,\n separator: {\n small: 12,\n medium: 20,\n large: 24,\n extraLarge: 80,\n },\n} as const;\n\nexport const MOBILE_SPACING = {\n small: 16,\n medium: 24,\n large: 40,\n separator: {\n small: 8,\n medium: 16,\n large: 22,\n extraLarge: 40,\n },\n} as const;\n\nexport const SUBSCRIPTION_CANCELLED_STATES = [\n EPLAState.SUBSCRIPTION_CANCELLED_AFTER_PAYMENT,\n EPLAState.SUBSCRIPTION_CANCELLED_AFTER_TRIAL_BEFORE_PAYMENT,\n EPLAState.SUBSCRIPTION_CANCELLED_BEFORE_TRIAL,\n];\n\nexport const TRIAL_COMPLETED_STATES = [\n EPLAState.TRIAL_COMPLETED_PAYMENT_PENDING,\n EPLAState.TRIAL_COMPLETED_PAYMENT_SUCCESSFUL,\n EPLAState.REGULAR_CLASS_COMPLETED,\n];\n\nexport const PLA_INTRO_ELIGIBLE_STATES = [\n EPLAState.CARD_ADDED_SEARCHING_TUTOR,\n EPLAState.CARD_ADDED_TUTOR_ASSIGNED,\n ...TRIAL_COMPLETED_STATES,\n];\n\nexport const DEFAULT_LOADING_STATE: IUseParentHomeDataReturn = {\n plaState: null,\n sessionDetails: null,\n teacherDetails: null,\n billingDetails: null,\n isOnlyTrialDone: false,\n isRegularClassDone: false,\n isTrialDone: false,\n isSubscriptionCancelled: false,\n isCardDeclined: false,\n cardOnFileNotAvailable: false,\n isTutorNoShow: false,\n isStudentNoShow: false,\n completedSessions: 0,\n nextSessionEnd: 0,\n nextSessionStart: 0,\n upcomingSessions: [],\n teacherName: '',\n showLoading: true,\n demoId: '',\n userAttemptId: '',\n isProcessingFailed: false,\n canChangeTutor: false,\n showPLAIntroduction: false,\n};\n"],"names":["DESKTOP_SPACING","MOBILE_SPACING","SUBSCRIPTION_CANCELLED_STATES","EPLAState","TRIAL_COMPLETED_STATES","PLA_INTRO_ELIGIBLE_STATES","DEFAULT_LOADING_STATE"],"mappings":";AAUO,MAAMA,IAAkB;AAAA,EAC7B,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AACF,GAEaC,IAAiB;AAAA,EAC5B,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,YAAY;AAAA,EACd;AACF,GAEaC,IAAgC;AAAA,EAC3CC,EAAU;AAAA,EACVA,EAAU;AAAA,EACVA,EAAU;AACZ,GAEaC,IAAyB;AAAA,EACpCD,EAAU;AAAA,EACVA,EAAU;AAAA,EACVA,EAAU;AACZ,GAEaE,IAA4B;AAAA,EACvCF,EAAU;AAAA,EACVA,EAAU;AAAA,EACV,GAAGC;AACL,GAEaE,IAAkD;AAAA,EAC7D,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,aAAa;AAAA,EACb,yBAAyB;AAAA,EACzB,gBAAgB;AAAA,EAChB,wBAAwB;AAAA,EACxB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,kBAAkB,CAAC;AAAA,EACnB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,qBAAqB;AACvB;"}
|
|
@@ -15,7 +15,7 @@ const a = o(t)`
|
|
|
15
15
|
background: ${r.colors.BLACK_5};
|
|
16
16
|
}
|
|
17
17
|
${r.mediaQueries.minWidthTablet} {
|
|
18
|
-
max-height:
|
|
18
|
+
max-height: 100dvh;
|
|
19
19
|
&::-webkit-scrollbar {
|
|
20
20
|
width: 6px;
|
|
21
21
|
}
|
|
@@ -23,7 +23,7 @@ const a = o(t)`
|
|
|
23
23
|
`
|
|
24
24
|
), c = o(t)`
|
|
25
25
|
overflow: hidden;
|
|
26
|
-
height:
|
|
26
|
+
height: 100dvh;
|
|
27
27
|
`;
|
|
28
28
|
export {
|
|
29
29
|
c as Container,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parent-dashboard-styled.js","sources":["../../../src/features/parent-dashboard/parent-dashboard-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../ui/layout/flex-view';\n\nexport const MathPracticeWrapper = styled(FlexView)`\n margin: 0 -16px;\n`;\n\nexport const ContentWrapper = styled(FlexView)(\n ({ theme }) => `\n overflow-y: auto;\n &::-webkit-scrollbar {\n width: 3px;\n }\n &::-webkit-scrollbar-track {\n background: ${theme.colors.BLACK_2};\n }\n &::-webkit-scrollbar-thumb {\n background: ${theme.colors.BLACK_5};\n }\n ${theme.mediaQueries.minWidthTablet} {\n max-height:
|
|
1
|
+
{"version":3,"file":"parent-dashboard-styled.js","sources":["../../../src/features/parent-dashboard/parent-dashboard-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../ui/layout/flex-view';\n\nexport const MathPracticeWrapper = styled(FlexView)`\n margin: 0 -16px;\n`;\n\nexport const ContentWrapper = styled(FlexView)(\n ({ theme }) => `\n overflow-y: auto;\n &::-webkit-scrollbar {\n width: 3px;\n }\n &::-webkit-scrollbar-track {\n background: ${theme.colors.BLACK_2};\n }\n &::-webkit-scrollbar-thumb {\n background: ${theme.colors.BLACK_5};\n }\n ${theme.mediaQueries.minWidthTablet} {\n max-height: 100dvh;\n &::-webkit-scrollbar {\n width: 6px;\n }\n }\n`,\n);\n\nexport const Container = styled(FlexView)`\n overflow: hidden;\n height: 100dvh;\n`;\n"],"names":["MathPracticeWrapper","styled","FlexView","ContentWrapper","theme","Container"],"mappings":";;AAIa,MAAAA,IAAsBC,EAAOC,CAAQ;AAAA;AAAA,GAIrCC,IAAiBF,EAAOC,CAAQ;AAAA,EAC3C,CAAC,EAAE,OAAAE,EAAA,MAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMCA,EAAM,OAAO,OAAO;AAAA;AAAA;AAAA,kBAGpBA,EAAM,OAAO,OAAO;AAAA;AAAA,IAElCA,EAAM,aAAa,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOrC,GAEaC,IAAYJ,EAAOC,CAAQ;AAAA;AAAA;AAAA;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parent-dashboard-types.js","sources":["../../../src/features/parent-dashboard/parent-dashboard-types.ts"],"sourcesContent":["import type { TSession } from './comps/upcoming-sessions/upcoming-sessions-types';\nimport type { ReactElement } from 'react';\n\nexport interface ISessionDetails {\n completed_sessions: number;\n next_session_start: number;\n next_session_end: number;\n student_demo_id: string;\n upcoming_sessions: TSession[];\n user_attempt_id?: string;\n}\n\ninterface IDegreeInfo {\n degree_name: string;\n degree_code: string;\n field_of_study: string;\n}\nexport interface ITeacherDetails {\n first_name: string;\n last_name: string;\n years_of_experience: number;\n number_of_students_taught: number;\n lower_grade: string;\n higher_grade: string;\n degree: IDegreeInfo;\n countries: string[];\n teacher_profile_url: string;\n header_image: string;\n}\n\nexport interface IPaymentMethodDetails {\n brand: string;\n last_4_digits: string;\n type: string;\n exp_month: number;\n exp_year: number;\n}\n\nexport interface IBillingDetails {\n amount: number;\n cycle_frequency: string;\n next_due_date: string;\n payment_method_details: IPaymentMethodDetails;\n}\n\nexport interface IParentHome {\n pla_state: EPLAState;\n session_details: ISessionDetails;\n teacher_details: ITeacherDetails | null;\n billing_details: IBillingDetails;\n}\n\nexport interface IStudentProfileSummary {\n studentLevel: string;\n studentObjectives: string[] | string;\n learningPlan: string[] | string;\n levelPreference?: string;\n}\n\nexport interface IOnViewSummaryParams extends IStudentProfileSummary {\n userAttemptId?: string;\n}\nexport enum ESummaryType {\n STUDENT_PROFILE = 'studentProfile',\n INSIGHTS = 'insights',\n LEARNING_PLAN = 'learningPlan',\n}\n\nexport interface IParentDashboardProps {\n studentName: string;\n studentId: string;\n onRescheduleDemo: (demoId?: string) => void;\n onChangeTutor: (demoId: string) => void;\n onGetStartedAgain?: () => void;\n onViewSummary?: (key: ESummaryType, summaryData: IOnViewSummaryParams) => void;\n onSwitchUser?: () => void;\n HeaderAvatar: ReactElement;\n}\n\nexport interface ISpacingConfig {\n small: number;\n medium: number;\n large: number;\n separator: {\n small: number;\n medium: number;\n large: number;\n extraLarge: number;\n };\n}\n\nexport enum EPLAState {\n // Initial Setup Phase\n NO_CARD_ON_FILE = 'no_card_on_file',\n CARD_ADDED_SEARCHING_TUTOR = 'card_added_searching_tutor',\n CARD_ADDED_TUTOR_ASSIGNED = 'card_added_tutor_assigned',\n TRIAL_TUTOR_NO_SHOW = 'trial_tutor_no_show',\n TRIAL_STUDENT_NO_SHOW = 'trial_student_no_show',\n\n // Post-Trial Payment Phase\n TRIAL_COMPLETED_PAYMENT_PENDING = 'trial_completed_payment_pending',\n TRIAL_COMPLETED_CARD_DECLINED = 'trial_completed_card_declined',\n TRIAL_COMPLETED_PAYMENT_SUCCESSFUL = 'trial_completed_payment_successful',\n\n // Active Subscription Phase\n REGULAR_CLASS_COMPLETED = 'regular_class_completed',\n\n // Cancellation States\n SUBSCRIPTION_CANCELLED_BEFORE_TRIAL = 'cancelled_before_trial',\n SUBSCRIPTION_CANCELLED_AFTER_TRIAL_BEFORE_PAYMENT = 'cancelled_after_trial_before_payment',\n SUBSCRIPTION_CANCELLED_AFTER_PAYMENT = 'cancelled_after_payment',\n}\n\nexport interface IUseParentHomeDataReturn {\n plaState: EPLAState | null;\n sessionDetails: ISessionDetails | null;\n teacherDetails: ITeacherDetails | null;\n billingDetails: IBillingDetails | null;\n completedSessions: number;\n nextSessionEnd: number;\n nextSessionStart: number;\n teacherName: string;\n upcomingSessions: TSession[];\n isTrialDone: boolean;\n isOnlyTrialDone: boolean;\n isRegularClassDone: boolean;\n isCardDeclined: boolean;\n isSubscriptionCancelled: boolean;\n cardOnFileNotAvailable: boolean;\n isTutorNoShow: boolean;\n isStudentNoShow: boolean;\n showLoading: boolean;\n demoId: string;\n userAttemptId: string;\n isProcessingFailed: boolean;\n canChangeTutor: boolean;\n}\n"],"names":["ESummaryType","EPLAState"],"mappings":"AA8DY,IAAAA,sBAAAA,OACVA,EAAA,kBAAkB,kBAClBA,EAAA,WAAW,YACXA,EAAA,gBAAgB,gBAHNA,IAAAA,KAAA,CAAA,CAAA,GA6BAC,sBAAAA,OAEVA,EAAA,kBAAkB,mBAClBA,EAAA,6BAA6B,8BAC7BA,EAAA,4BAA4B,6BAC5BA,EAAA,sBAAsB,uBACtBA,EAAA,wBAAwB,yBAGxBA,EAAA,kCAAkC,mCAClCA,EAAA,gCAAgC,iCAChCA,EAAA,qCAAqC,sCAGrCA,EAAA,0BAA0B,2BAG1BA,EAAA,sCAAsC,0BACtCA,EAAA,oDAAoD,wCACpDA,EAAA,uCAAuC,2BAnB7BA,IAAAA,KAAA,CAAA,CAAA;"}
|
|
1
|
+
{"version":3,"file":"parent-dashboard-types.js","sources":["../../../src/features/parent-dashboard/parent-dashboard-types.ts"],"sourcesContent":["import type { TSession } from './comps/upcoming-sessions/upcoming-sessions-types';\nimport type { ReactElement } from 'react';\n\nexport interface ISessionDetails {\n completed_sessions: number;\n next_session_start: number;\n next_session_end: number;\n student_demo_id: string;\n upcoming_sessions: TSession[];\n user_attempt_id?: string;\n}\n\ninterface IDegreeInfo {\n degree_name: string;\n degree_code: string;\n field_of_study: string;\n}\nexport interface ITeacherDetails {\n first_name: string;\n last_name: string;\n years_of_experience: number;\n number_of_students_taught: number;\n lower_grade: string;\n higher_grade: string;\n degree: IDegreeInfo;\n countries: string[];\n teacher_profile_url: string;\n header_image: string;\n}\n\nexport interface IPaymentMethodDetails {\n brand: string;\n last_4_digits: string;\n type: string;\n exp_month: number;\n exp_year: number;\n}\n\nexport interface IBillingDetails {\n amount: number;\n cycle_frequency: string;\n next_due_date: string;\n payment_method_details: IPaymentMethodDetails;\n}\n\nexport interface IParentHome {\n pla_state: EPLAState;\n session_details: ISessionDetails;\n teacher_details: ITeacherDetails | null;\n billing_details: IBillingDetails;\n}\n\nexport interface IStudentProfileSummary {\n studentLevel: string;\n studentObjectives: string[] | string;\n learningPlan: string[] | string;\n levelPreference?: string;\n}\n\nexport interface IOnViewSummaryParams extends IStudentProfileSummary {\n userAttemptId?: string;\n}\nexport enum ESummaryType {\n STUDENT_PROFILE = 'studentProfile',\n INSIGHTS = 'insights',\n LEARNING_PLAN = 'learningPlan',\n}\n\nexport interface IParentDashboardProps {\n studentName: string;\n studentId: string;\n onRescheduleDemo: (demoId?: string) => void;\n onChangeTutor: (demoId: string) => void;\n onGetStartedAgain?: () => void;\n onViewSummary?: (key: ESummaryType, summaryData: IOnViewSummaryParams) => void;\n onSwitchUser?: () => void;\n HeaderAvatar: ReactElement;\n}\n\nexport interface ISpacingConfig {\n small: number;\n medium: number;\n large: number;\n separator: {\n small: number;\n medium: number;\n large: number;\n extraLarge: number;\n };\n}\n\nexport enum EPLAState {\n // Initial Setup Phase\n NO_CARD_ON_FILE = 'no_card_on_file',\n CARD_ADDED_SEARCHING_TUTOR = 'card_added_searching_tutor',\n CARD_ADDED_TUTOR_ASSIGNED = 'card_added_tutor_assigned',\n TRIAL_TUTOR_NO_SHOW = 'trial_tutor_no_show',\n TRIAL_STUDENT_NO_SHOW = 'trial_student_no_show',\n\n // Post-Trial Payment Phase\n TRIAL_COMPLETED_PAYMENT_PENDING = 'trial_completed_payment_pending',\n TRIAL_COMPLETED_CARD_DECLINED = 'trial_completed_card_declined',\n TRIAL_COMPLETED_PAYMENT_SUCCESSFUL = 'trial_completed_payment_successful',\n\n // Active Subscription Phase\n REGULAR_CLASS_COMPLETED = 'regular_class_completed',\n\n // Cancellation States\n SUBSCRIPTION_CANCELLED_BEFORE_TRIAL = 'cancelled_before_trial',\n SUBSCRIPTION_CANCELLED_AFTER_TRIAL_BEFORE_PAYMENT = 'cancelled_after_trial_before_payment',\n SUBSCRIPTION_CANCELLED_AFTER_PAYMENT = 'cancelled_after_payment',\n}\n\nexport interface IUseParentHomeDataReturn {\n plaState: EPLAState | null;\n sessionDetails: ISessionDetails | null;\n teacherDetails: ITeacherDetails | null;\n billingDetails: IBillingDetails | null;\n completedSessions: number;\n nextSessionEnd: number;\n nextSessionStart: number;\n teacherName: string;\n upcomingSessions: TSession[];\n isTrialDone: boolean;\n isOnlyTrialDone: boolean;\n isRegularClassDone: boolean;\n isCardDeclined: boolean;\n isSubscriptionCancelled: boolean;\n cardOnFileNotAvailable: boolean;\n isTutorNoShow: boolean;\n isStudentNoShow: boolean;\n showLoading: boolean;\n demoId: string;\n userAttemptId: string;\n isProcessingFailed: boolean;\n canChangeTutor: boolean;\n showPLAIntroduction?: boolean;\n}\n"],"names":["ESummaryType","EPLAState"],"mappings":"AA8DY,IAAAA,sBAAAA,OACVA,EAAA,kBAAkB,kBAClBA,EAAA,WAAW,YACXA,EAAA,gBAAgB,gBAHNA,IAAAA,KAAA,CAAA,CAAA,GA6BAC,sBAAAA,OAEVA,EAAA,kBAAkB,mBAClBA,EAAA,6BAA6B,8BAC7BA,EAAA,4BAA4B,6BAC5BA,EAAA,sBAAsB,uBACtBA,EAAA,wBAAwB,yBAGxBA,EAAA,kCAAkC,mCAClCA,EAAA,gCAAgC,iCAChCA,EAAA,qCAAqC,sCAGrCA,EAAA,0BAA0B,2BAG1BA,EAAA,sCAAsC,0BACtCA,EAAA,oDAAoD,wCACpDA,EAAA,uCAAuC,2BAnB7BA,IAAAA,KAAA,CAAA,CAAA;"}
|
|
@@ -2,9 +2,9 @@ import { jsxs as o, jsx as r } from "react/jsx-runtime";
|
|
|
2
2
|
import { memo as hr, useMemo as t, useCallback as g } from "react";
|
|
3
3
|
import { useTheme as pr } from "styled-components";
|
|
4
4
|
import ur from "../auth/pla-signup/onboarding-guide/onboarding-guide.js";
|
|
5
|
-
import
|
|
5
|
+
import dr from "../auth/pla-signup/signup-header/signup-header.js";
|
|
6
6
|
import Z from "../trial-session/comps/teacher-intro/teacher-profile/teacher-profile.js";
|
|
7
|
-
import
|
|
7
|
+
import fr from "../ui/buttons/button/button.js";
|
|
8
8
|
import gr from "../ui/buttons/text-button/text-button.js";
|
|
9
9
|
import Sr from "../ui/error/error.js";
|
|
10
10
|
import i from "../ui/layout/flex-view.js";
|
|
@@ -27,7 +27,7 @@ import wr from "./hooks/use-student-profile-summary-data.js";
|
|
|
27
27
|
import { usePLAModalHandlers as Hr } from "./modals/hooks/use-pla-model-handlers.js";
|
|
28
28
|
import { MOBILE_SPACING as Ir, DESKTOP_SPACING as kr } from "./parent-dashboard-constants.js";
|
|
29
29
|
import { MathPracticeWrapper as Br, Container as Fr, ContentWrapper as Wr } from "./parent-dashboard-styled.js";
|
|
30
|
-
const
|
|
30
|
+
const de = hr(
|
|
31
31
|
({
|
|
32
32
|
studentName: c,
|
|
33
33
|
studentId: m,
|
|
@@ -49,8 +49,8 @@ const fe = hr(
|
|
|
49
49
|
nextSessionEnd: y,
|
|
50
50
|
upcomingSessions: A,
|
|
51
51
|
isTrialDone: n,
|
|
52
|
-
isOnlyTrialDone:
|
|
53
|
-
isRegularClassDone:
|
|
52
|
+
isOnlyTrialDone: d,
|
|
53
|
+
isRegularClassDone: f,
|
|
54
54
|
showLoading: M = !1,
|
|
55
55
|
demoId: l,
|
|
56
56
|
isProcessingFailed: ir,
|
|
@@ -94,7 +94,7 @@ const fe = hr(
|
|
|
94
94
|
studentName: c,
|
|
95
95
|
onRescheduleClick: N,
|
|
96
96
|
isTrialDone: n,
|
|
97
|
-
isOnlyTrialDone:
|
|
97
|
+
isOnlyTrialDone: d
|
|
98
98
|
}),
|
|
99
99
|
[
|
|
100
100
|
T,
|
|
@@ -106,9 +106,9 @@ const fe = hr(
|
|
|
106
106
|
c,
|
|
107
107
|
N,
|
|
108
108
|
n,
|
|
109
|
-
|
|
109
|
+
d
|
|
110
110
|
]
|
|
111
|
-
),
|
|
111
|
+
), z = t(
|
|
112
112
|
() => ({
|
|
113
113
|
isTrialDone: n,
|
|
114
114
|
studentName: c,
|
|
@@ -117,17 +117,18 @@ const fe = hr(
|
|
|
117
117
|
[n, c, j]
|
|
118
118
|
), sr = t(
|
|
119
119
|
() => /* @__PURE__ */ o(i, { children: [
|
|
120
|
-
/* @__PURE__ */ r(
|
|
120
|
+
/* @__PURE__ */ r(dr, {}),
|
|
121
121
|
/* @__PURE__ */ r(a, { height: e.separator.extraLarge }),
|
|
122
122
|
/* @__PURE__ */ r(ur, { orientation: "horizontal" }),
|
|
123
123
|
x && /* @__PURE__ */ o(i, { children: [
|
|
124
124
|
/* @__PURE__ */ r(a, { height: e.medium }),
|
|
125
125
|
/* @__PURE__ */ r(
|
|
126
|
-
|
|
126
|
+
fr,
|
|
127
127
|
{
|
|
128
128
|
label: "Get Started",
|
|
129
129
|
renderAs: "yellow-dark",
|
|
130
130
|
shape: "square",
|
|
131
|
+
size: "small",
|
|
131
132
|
width: F,
|
|
132
133
|
onClick: x
|
|
133
134
|
}
|
|
@@ -135,16 +136,16 @@ const fe = hr(
|
|
|
135
136
|
] })
|
|
136
137
|
] }),
|
|
137
138
|
[e, F, x]
|
|
138
|
-
),
|
|
139
|
+
), G = t(
|
|
139
140
|
() => /* @__PURE__ */ r(Ar, { ...q }),
|
|
140
141
|
[q]
|
|
141
|
-
),
|
|
142
|
+
), K = t(() => !s || n ? null : /* @__PURE__ */ o(i, { children: [
|
|
142
143
|
/* @__PURE__ */ r(a, { height: e.separator.large }),
|
|
143
144
|
/* @__PURE__ */ r(Z, { teacherProfile: s })
|
|
144
|
-
] }), [s, n, e.separator.large]), R = t(() =>
|
|
145
|
+
] }), [s, n, e.separator.large]), R = t(() => f ? null : /* @__PURE__ */ o(i, { children: [
|
|
145
146
|
/* @__PURE__ */ r(a, { height: e.separator.extraLarge }),
|
|
146
|
-
/* @__PURE__ */ r(Mr, { ...
|
|
147
|
-
] }), [
|
|
147
|
+
/* @__PURE__ */ r(Mr, { ...z })
|
|
148
|
+
] }), [f, e.separator.extraLarge, z]), V = t(() => O ? /* @__PURE__ */ o(i, { children: [
|
|
148
149
|
/* @__PURE__ */ r(a, { height: e.separator.small }),
|
|
149
150
|
/* @__PURE__ */ o(i, { $flexDirection: "row", $flexColumnGapX: 0.25, children: [
|
|
150
151
|
/* @__PURE__ */ r(rr, { $renderAs: "ub1", $renderOnMobileAs: "ub2", $color: "WHITE", children: "Not the right fit for your child?" }),
|
|
@@ -164,19 +165,19 @@ const fe = hr(
|
|
|
164
165
|
/* @__PURE__ */ r(a, { height: e.separator.medium }),
|
|
165
166
|
/* @__PURE__ */ r(Z, { teacherProfile: s }),
|
|
166
167
|
V
|
|
167
|
-
] }) : null, [s, e.separator, V]), J = t(() =>
|
|
168
|
+
] }) : null, [s, e.separator, V]), J = t(() => d ? /* @__PURE__ */ o(i, { children: [
|
|
168
169
|
/* @__PURE__ */ r(a, { height: e.separator.extraLarge }),
|
|
169
170
|
/* @__PURE__ */ r($r, {}),
|
|
170
171
|
/* @__PURE__ */ r(a, { height: e.separator.extraLarge }),
|
|
171
172
|
/* @__PURE__ */ r(Er, { sessions: A }),
|
|
172
173
|
X
|
|
173
|
-
] }) : null, [
|
|
174
|
+
] }) : null, [d, e.separator.extraLarge, A, X]), Q = t(() => n ? /* @__PURE__ */ o(i, { children: [
|
|
174
175
|
/* @__PURE__ */ r(a, { height: e.separator.extraLarge }),
|
|
175
176
|
/* @__PURE__ */ r(Pr, {})
|
|
176
|
-
] }) : null, [n, e.separator.extraLarge]), U = t(() =>
|
|
177
|
+
] }) : null, [n, e.separator.extraLarge]), U = t(() => f ? null : /* @__PURE__ */ o(i, { children: [
|
|
177
178
|
/* @__PURE__ */ r(a, { height: e.separator.extraLarge }),
|
|
178
179
|
/* @__PURE__ */ r(Br, { children: /* @__PURE__ */ r(Dr, { onSwitchUser: C }) })
|
|
179
|
-
] }), [
|
|
180
|
+
] }), [f, e.separator.extraLarge, C]), Y = t(() => u ? /* @__PURE__ */ o(i, { children: [
|
|
180
181
|
/* @__PURE__ */ r(a, { height: e.separator.extraLarge }),
|
|
181
182
|
/* @__PURE__ */ r(
|
|
182
183
|
Tr,
|
|
@@ -188,8 +189,8 @@ const fe = hr(
|
|
|
188
189
|
)
|
|
189
190
|
] }) : null, [u, e.separator.extraLarge, v, W]), lr = t(
|
|
190
191
|
() => /* @__PURE__ */ o(i, { children: [
|
|
192
|
+
G,
|
|
191
193
|
K,
|
|
192
|
-
z,
|
|
193
194
|
R,
|
|
194
195
|
J,
|
|
195
196
|
Q,
|
|
@@ -197,8 +198,8 @@ const fe = hr(
|
|
|
197
198
|
Y
|
|
198
199
|
] }),
|
|
199
200
|
[
|
|
201
|
+
G,
|
|
200
202
|
K,
|
|
201
|
-
z,
|
|
202
203
|
R,
|
|
203
204
|
J,
|
|
204
205
|
Q,
|
|
@@ -208,11 +209,12 @@ const fe = hr(
|
|
|
208
209
|
), cr = t(
|
|
209
210
|
() => /* @__PURE__ */ o(i, { children: [
|
|
210
211
|
/* @__PURE__ */ r(a, { height: e.separator.extraLarge }),
|
|
211
|
-
/* @__PURE__ */ r(yr, {})
|
|
212
|
+
/* @__PURE__ */ r(yr, {}),
|
|
213
|
+
/* @__PURE__ */ r(a, { height: e.separator.extraLarge })
|
|
212
214
|
] }),
|
|
213
215
|
[e.separator.extraLarge]
|
|
214
216
|
);
|
|
215
|
-
return t(() => I || H || !w || M, [H, I, w, M]) ? /* @__PURE__ */ r(xr, { height: "
|
|
217
|
+
return t(() => I || H || !w || M, [H, I, w, M]) ? /* @__PURE__ */ r(xr, { height: "100dvh" }) : ir ? /* @__PURE__ */ r(i, { $flex: 1, $alignItems: "center", $justifyContent: "center", children: /* @__PURE__ */ r(Sr, { theme: "dark", onTryAgain: nr }) }) : /* @__PURE__ */ o(Fr, { children: [
|
|
216
218
|
/* @__PURE__ */ r(Cr, { HeaderAvatar: er }),
|
|
217
219
|
/* @__PURE__ */ o(
|
|
218
220
|
Wr,
|
|
@@ -233,6 +235,6 @@ const fe = hr(
|
|
|
233
235
|
}
|
|
234
236
|
);
|
|
235
237
|
export {
|
|
236
|
-
|
|
238
|
+
de as default
|
|
237
239
|
};
|
|
238
240
|
//# sourceMappingURL=parent-dashboard-view.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parent-dashboard-view.js","sources":["../../../src/features/parent-dashboard/parent-dashboard-view.tsx"],"sourcesContent":["import type { ESummaryType, IParentDashboardProps, ISpacingConfig } from './parent-dashboard-types';\n\nimport React, { memo, useMemo, useCallback } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport OnboardingGuide from '../auth/pla-signup/onboarding-guide/onboarding-guide';\nimport SignupHeader from '../auth/pla-signup/signup-header/signup-header';\nimport TeacherProfile from '../trial-session/comps/teacher-intro/teacher-profile/teacher-profile';\nimport Button from '../ui/buttons/button/button';\nimport TextButton from '../ui/buttons/text-button/text-button';\nimport Error from '../ui/error/error';\nimport FlexView from '../ui/layout/flex-view';\nimport AppLoader from '../ui/loader/app-loader/app-loader';\nimport Separator from '../ui/separator/separator';\nimport Text from '../ui/text/text';\nimport { EDeviceType } from '../ui/theme/constants';\nimport { invalidateParentHome } from './api/parent-home';\nimport BillingInformation from './comps/billing-information/billing-information';\nimport CompactHeader from './comps/compact-header/compact-header';\nimport CuemathAppFeatures from './comps/cuemath-app-features/cuemath-app-features';\nimport MathPractice from './comps/math-practice/math-practice';\nimport NextSteps from './comps/next-steps/next-steps';\nimport ParentDashboardFaqs from './comps/parent-dashboard-faqs/parent-dashboard-faqs';\nimport SessionStatus from './comps/session-status/session-status';\nimport SessionSummary from './comps/session-summary/session-summary';\nimport UpcomingSessions from './comps/upcoming-sessions/upcoming-sessions';\nimport useParentHomeData from './hooks/use-parent-home-data';\nimport useStudentProfileSummaryData from './hooks/use-student-profile-summary-data';\nimport { usePLAModalHandlers } from './modals/hooks/use-pla-model-handlers';\nimport { DESKTOP_SPACING, MOBILE_SPACING } from './parent-dashboard-constants';\nimport * as Styled from './parent-dashboard-styled';\n\nconst ParentDashboardView: React.FC<IParentDashboardProps> = memo(\n ({\n studentName,\n studentId,\n onRescheduleDemo,\n onViewSummary,\n onGetStartedAgain,\n onChangeTutor,\n onSwitchUser,\n HeaderAvatar,\n }) => {\n const { device } = useTheme();\n const isMobile = device <= EDeviceType.MOBILE;\n\n const parentHomeData = useParentHomeData(studentId);\n const {\n isStudentNoShow,\n isTutorNoShow,\n teacherDetails,\n billingDetails,\n teacherName,\n completedSessions,\n nextSessionStart,\n nextSessionEnd,\n upcomingSessions,\n isTrialDone,\n isOnlyTrialDone,\n isRegularClassDone,\n showLoading = false,\n demoId,\n isProcessingFailed,\n userAttemptId,\n isSubscriptionCancelled,\n canChangeTutor,\n sessionDetails,\n cardOnFileNotAvailable,\n isCardDeclined,\n } = parentHomeData;\n const { summaryInfo, fetchSummaryData } = useStudentProfileSummaryData(studentId);\n\n const spacing = useMemo<ISpacingConfig>(\n () => (isMobile ? MOBILE_SPACING : DESKTOP_SPACING),\n [isMobile],\n );\n\n const buttonWidth = useMemo(() => (isMobile ? '100%' : 200), [isMobile]);\n\n const handleTryAgain = useCallback(() => {\n invalidateParentHome(studentId);\n fetchSummaryData();\n }, [fetchSummaryData, studentId]);\n\n const { onCancelSubscription, onViewPaymentMethod } = usePLAModalHandlers({\n demoId,\n studentId,\n studentName,\n billingDetails,\n completedSessions,\n withTutor: !!teacherName,\n onRescheduleDemo,\n onChangeTutor,\n });\n\n const handleRescheduleDemo = useCallback(() => {\n onRescheduleDemo(demoId);\n }, [demoId, onRescheduleDemo]);\n\n const handleChangeTutor = useCallback(() => {\n if (demoId) {\n onChangeTutor(demoId);\n }\n }, [demoId, onChangeTutor]);\n\n const handleViewSummary = useCallback(\n (key: ESummaryType) => {\n onViewSummary?.(key, { ...summaryInfo, userAttemptId });\n },\n [onViewSummary, summaryInfo, userAttemptId],\n );\n\n const sessionStatusProps = useMemo(\n () => ({\n completedSessions,\n nextSessionStartTime: nextSessionStart,\n teacherName,\n isTutorNoShow,\n isStudentNoShow,\n nextSessionEndTime: nextSessionEnd,\n studentName,\n onRescheduleClick: handleRescheduleDemo,\n isTrialDone,\n isOnlyTrialDone,\n }),\n [\n completedSessions,\n nextSessionStart,\n teacherName,\n isTutorNoShow,\n isStudentNoShow,\n nextSessionEnd,\n studentName,\n handleRescheduleDemo,\n isTrialDone,\n isOnlyTrialDone,\n ],\n );\n\n const sessionSummaryProps = useMemo(\n () => ({\n isTrialDone,\n studentName,\n onViewSummary: handleViewSummary,\n }),\n [isTrialDone, studentName, handleViewSummary],\n );\n\n const CancelledSubscriptionView = useMemo(\n () => (\n <FlexView>\n <SignupHeader />\n <Separator height={spacing.separator.extraLarge} />\n <OnboardingGuide orientation=\"horizontal\" />\n {onGetStartedAgain && (\n <FlexView>\n <Separator height={spacing.medium} />\n <Button\n label=\"Get Started\"\n renderAs=\"yellow-dark\"\n shape=\"square\"\n width={buttonWidth}\n onClick={onGetStartedAgain}\n />\n </FlexView>\n )}\n </FlexView>\n ),\n [spacing, buttonWidth, onGetStartedAgain],\n );\n\n const SessionStatusSection = useMemo(\n () => <SessionStatus {...sessionStatusProps} />,\n [sessionStatusProps],\n );\n\n const TeacherProfileSection = useMemo(() => {\n if (!teacherDetails || isTrialDone) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.large} />\n <TeacherProfile teacherProfile={teacherDetails} />\n </FlexView>\n );\n }, [teacherDetails, isTrialDone, spacing.separator.large]);\n\n const SessionSummarySection = useMemo(() => {\n if (isRegularClassDone) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <SessionSummary {...sessionSummaryProps} />\n </FlexView>\n );\n }, [isRegularClassDone, spacing.separator.extraLarge, sessionSummaryProps]);\n\n const TutorChangeSection = useMemo(() => {\n if (!canChangeTutor) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.small} />\n <FlexView $flexDirection=\"row\" $flexColumnGapX={0.25}>\n <Text $renderAs=\"ub1\" $renderOnMobileAs=\"ub2\" $color=\"WHITE\">\n Not the right fit for your child?\n </Text>\n <TextButton\n color=\"WHITE_1\"\n sizeOnMobile=\"small\"\n label=\"Try another tutor\"\n onClick={handleChangeTutor}\n />\n </FlexView>\n </FlexView>\n );\n }, [canChangeTutor, spacing.separator.small, handleChangeTutor]);\n\n const TeacherDetailsSection = useMemo(() => {\n if (!teacherDetails) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <Text $renderAs=\"ah4-bold\" $renderOnMobileAs=\"ab1-bold\" $color=\"WHITE\">\n Know your tutor\n </Text>\n <Separator height={spacing.separator.medium} />\n <TeacherProfile teacherProfile={teacherDetails} />\n {TutorChangeSection}\n </FlexView>\n );\n }, [teacherDetails, spacing.separator, TutorChangeSection]);\n\n const OnlyTrialDoneSection = useMemo(() => {\n if (!isOnlyTrialDone) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <NextSteps />\n <Separator height={spacing.separator.extraLarge} />\n <UpcomingSessions sessions={upcomingSessions} />\n {TeacherDetailsSection}\n </FlexView>\n );\n }, [isOnlyTrialDone, spacing.separator.extraLarge, upcomingSessions, TeacherDetailsSection]);\n\n const AppFeaturesSection = useMemo(() => {\n if (!isTrialDone) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <CuemathAppFeatures />\n </FlexView>\n );\n }, [isTrialDone, spacing.separator.extraLarge]);\n\n const MathPracticeSection = useMemo(() => {\n if (isRegularClassDone) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <Styled.MathPracticeWrapper>\n <MathPractice onSwitchUser={onSwitchUser} />\n </Styled.MathPracticeWrapper>\n </FlexView>\n );\n }, [isRegularClassDone, spacing.separator.extraLarge, onSwitchUser]);\n\n const BillingInformationSection = useMemo(() => {\n if (!billingDetails) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <BillingInformation\n billingDetails={billingDetails}\n onViewPaymentMethod={onViewPaymentMethod}\n onCancelSubscription={onCancelSubscription}\n />\n </FlexView>\n );\n }, [billingDetails, spacing.separator.extraLarge, onViewPaymentMethod, onCancelSubscription]);\n\n const MainContent = useMemo(\n () => (\n <FlexView>\n {SessionStatusSection}\n {TeacherProfileSection}\n {SessionSummarySection}\n {OnlyTrialDoneSection}\n {AppFeaturesSection}\n {MathPracticeSection}\n {BillingInformationSection}\n </FlexView>\n ),\n [\n SessionStatusSection,\n TeacherProfileSection,\n SessionSummarySection,\n OnlyTrialDoneSection,\n AppFeaturesSection,\n MathPracticeSection,\n BillingInformationSection,\n ],\n );\n\n const FaqsSection = useMemo(\n () => (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <ParentDashboardFaqs />\n </FlexView>\n ),\n [spacing.separator.extraLarge],\n );\n\n const isLoading = useMemo(() => {\n return isCardDeclined || cardOnFileNotAvailable || !sessionDetails || showLoading;\n }, [cardOnFileNotAvailable, isCardDeclined, sessionDetails, showLoading]);\n\n if (isLoading) {\n return <AppLoader height=\"100vh\" />;\n }\n\n if (isProcessingFailed) {\n return (\n <FlexView $flex={1} $alignItems=\"center\" $justifyContent=\"center\">\n <Error theme=\"dark\" onTryAgain={handleTryAgain} />\n </FlexView>\n );\n }\n\n return (\n <Styled.Container>\n <CompactHeader HeaderAvatar={HeaderAvatar} />\n <Styled.ContentWrapper\n $flex={1}\n $width=\"100%\"\n $height=\"100%\"\n $background=\"BLACK_1\"\n $gap={spacing.medium}\n $gutter={spacing.small}\n >\n {isSubscriptionCancelled ? CancelledSubscriptionView : MainContent}\n {FaqsSection}\n </Styled.ContentWrapper>\n </Styled.Container>\n );\n },\n);\n\nexport default ParentDashboardView;\n"],"names":["ParentDashboardView","memo","studentName","studentId","onRescheduleDemo","onViewSummary","onGetStartedAgain","onChangeTutor","onSwitchUser","HeaderAvatar","device","useTheme","isMobile","EDeviceType","parentHomeData","useParentHomeData","isStudentNoShow","isTutorNoShow","teacherDetails","billingDetails","teacherName","completedSessions","nextSessionStart","nextSessionEnd","upcomingSessions","isTrialDone","isOnlyTrialDone","isRegularClassDone","showLoading","demoId","isProcessingFailed","userAttemptId","isSubscriptionCancelled","canChangeTutor","sessionDetails","cardOnFileNotAvailable","isCardDeclined","summaryInfo","fetchSummaryData","useStudentProfileSummaryData","spacing","useMemo","MOBILE_SPACING","DESKTOP_SPACING","buttonWidth","handleTryAgain","useCallback","invalidateParentHome","onCancelSubscription","onViewPaymentMethod","usePLAModalHandlers","handleRescheduleDemo","handleChangeTutor","handleViewSummary","key","sessionStatusProps","sessionSummaryProps","CancelledSubscriptionView","FlexView","jsx","SignupHeader","Separator","OnboardingGuide","Button","SessionStatusSection","SessionStatus","TeacherProfileSection","TeacherProfile","SessionSummarySection","SessionSummary","TutorChangeSection","jsxs","Text","TextButton","TeacherDetailsSection","OnlyTrialDoneSection","NextSteps","UpcomingSessions","AppFeaturesSection","CuemathAppFeatures","MathPracticeSection","Styled.MathPracticeWrapper","MathPractice","BillingInformationSection","BillingInformation","MainContent","FaqsSection","ParentDashboardFaqs","AppLoader","Error","Styled.Container","CompactHeader","Styled.ContentWrapper"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parent-dashboard-view.js","sources":["../../../src/features/parent-dashboard/parent-dashboard-view.tsx"],"sourcesContent":["import type { ESummaryType, IParentDashboardProps, ISpacingConfig } from './parent-dashboard-types';\n\nimport React, { memo, useMemo, useCallback } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport OnboardingGuide from '../auth/pla-signup/onboarding-guide/onboarding-guide';\nimport SignupHeader from '../auth/pla-signup/signup-header/signup-header';\nimport TeacherProfile from '../trial-session/comps/teacher-intro/teacher-profile/teacher-profile';\nimport Button from '../ui/buttons/button/button';\nimport TextButton from '../ui/buttons/text-button/text-button';\nimport Error from '../ui/error/error';\nimport FlexView from '../ui/layout/flex-view';\nimport AppLoader from '../ui/loader/app-loader/app-loader';\nimport Separator from '../ui/separator/separator';\nimport Text from '../ui/text/text';\nimport { EDeviceType } from '../ui/theme/constants';\nimport { invalidateParentHome } from './api/parent-home';\nimport BillingInformation from './comps/billing-information/billing-information';\nimport CompactHeader from './comps/compact-header/compact-header';\nimport CuemathAppFeatures from './comps/cuemath-app-features/cuemath-app-features';\nimport MathPractice from './comps/math-practice/math-practice';\nimport NextSteps from './comps/next-steps/next-steps';\nimport ParentDashboardFaqs from './comps/parent-dashboard-faqs/parent-dashboard-faqs';\nimport SessionStatus from './comps/session-status/session-status';\nimport SessionSummary from './comps/session-summary/session-summary';\nimport UpcomingSessions from './comps/upcoming-sessions/upcoming-sessions';\nimport useParentHomeData from './hooks/use-parent-home-data';\nimport useStudentProfileSummaryData from './hooks/use-student-profile-summary-data';\nimport { usePLAModalHandlers } from './modals/hooks/use-pla-model-handlers';\nimport { DESKTOP_SPACING, MOBILE_SPACING } from './parent-dashboard-constants';\nimport * as Styled from './parent-dashboard-styled';\n\nconst ParentDashboardView: React.FC<IParentDashboardProps> = memo(\n ({\n studentName,\n studentId,\n onRescheduleDemo,\n onViewSummary,\n onGetStartedAgain,\n onChangeTutor,\n onSwitchUser,\n HeaderAvatar,\n }) => {\n const { device } = useTheme();\n const isMobile = device <= EDeviceType.MOBILE;\n\n const parentHomeData = useParentHomeData(studentId);\n const {\n isStudentNoShow,\n isTutorNoShow,\n teacherDetails,\n billingDetails,\n teacherName,\n completedSessions,\n nextSessionStart,\n nextSessionEnd,\n upcomingSessions,\n isTrialDone,\n isOnlyTrialDone,\n isRegularClassDone,\n showLoading = false,\n demoId,\n isProcessingFailed,\n userAttemptId,\n isSubscriptionCancelled,\n canChangeTutor,\n sessionDetails,\n cardOnFileNotAvailable,\n isCardDeclined,\n } = parentHomeData;\n const { summaryInfo, fetchSummaryData } = useStudentProfileSummaryData(studentId);\n\n const spacing = useMemo<ISpacingConfig>(\n () => (isMobile ? MOBILE_SPACING : DESKTOP_SPACING),\n [isMobile],\n );\n\n const buttonWidth = useMemo(() => (isMobile ? '100%' : 200), [isMobile]);\n\n const handleTryAgain = useCallback(() => {\n invalidateParentHome(studentId);\n fetchSummaryData();\n }, [fetchSummaryData, studentId]);\n\n const { onCancelSubscription, onViewPaymentMethod } = usePLAModalHandlers({\n demoId,\n studentId,\n studentName,\n billingDetails,\n completedSessions,\n withTutor: !!teacherName,\n onRescheduleDemo,\n onChangeTutor,\n });\n\n const handleRescheduleDemo = useCallback(() => {\n onRescheduleDemo(demoId);\n }, [demoId, onRescheduleDemo]);\n\n const handleChangeTutor = useCallback(() => {\n if (demoId) {\n onChangeTutor(demoId);\n }\n }, [demoId, onChangeTutor]);\n\n const handleViewSummary = useCallback(\n (key: ESummaryType) => {\n onViewSummary?.(key, { ...summaryInfo, userAttemptId });\n },\n [onViewSummary, summaryInfo, userAttemptId],\n );\n\n const sessionStatusProps = useMemo(\n () => ({\n completedSessions,\n nextSessionStartTime: nextSessionStart,\n teacherName,\n isTutorNoShow,\n isStudentNoShow,\n nextSessionEndTime: nextSessionEnd,\n studentName,\n onRescheduleClick: handleRescheduleDemo,\n isTrialDone,\n isOnlyTrialDone,\n }),\n [\n completedSessions,\n nextSessionStart,\n teacherName,\n isTutorNoShow,\n isStudentNoShow,\n nextSessionEnd,\n studentName,\n handleRescheduleDemo,\n isTrialDone,\n isOnlyTrialDone,\n ],\n );\n\n const sessionSummaryProps = useMemo(\n () => ({\n isTrialDone,\n studentName,\n onViewSummary: handleViewSummary,\n }),\n [isTrialDone, studentName, handleViewSummary],\n );\n\n const CancelledSubscriptionView = useMemo(\n () => (\n <FlexView>\n <SignupHeader />\n <Separator height={spacing.separator.extraLarge} />\n <OnboardingGuide orientation=\"horizontal\" />\n {onGetStartedAgain && (\n <FlexView>\n <Separator height={spacing.medium} />\n <Button\n label=\"Get Started\"\n renderAs=\"yellow-dark\"\n shape=\"square\"\n size=\"small\"\n width={buttonWidth}\n onClick={onGetStartedAgain}\n />\n </FlexView>\n )}\n </FlexView>\n ),\n [spacing, buttonWidth, onGetStartedAgain],\n );\n\n const SessionStatusSection = useMemo(\n () => <SessionStatus {...sessionStatusProps} />,\n [sessionStatusProps],\n );\n\n const TeacherProfileSection = useMemo(() => {\n if (!teacherDetails || isTrialDone) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.large} />\n <TeacherProfile teacherProfile={teacherDetails} />\n </FlexView>\n );\n }, [teacherDetails, isTrialDone, spacing.separator.large]);\n\n const SessionSummarySection = useMemo(() => {\n if (isRegularClassDone) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <SessionSummary {...sessionSummaryProps} />\n </FlexView>\n );\n }, [isRegularClassDone, spacing.separator.extraLarge, sessionSummaryProps]);\n\n const TutorChangeSection = useMemo(() => {\n if (!canChangeTutor) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.small} />\n <FlexView $flexDirection=\"row\" $flexColumnGapX={0.25}>\n <Text $renderAs=\"ub1\" $renderOnMobileAs=\"ub2\" $color=\"WHITE\">\n Not the right fit for your child?\n </Text>\n <TextButton\n color=\"WHITE_1\"\n sizeOnMobile=\"small\"\n label=\"Try another tutor\"\n onClick={handleChangeTutor}\n />\n </FlexView>\n </FlexView>\n );\n }, [canChangeTutor, spacing.separator.small, handleChangeTutor]);\n\n const TeacherDetailsSection = useMemo(() => {\n if (!teacherDetails) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <Text $renderAs=\"ah4-bold\" $renderOnMobileAs=\"ab1-bold\" $color=\"WHITE\">\n Know your tutor\n </Text>\n <Separator height={spacing.separator.medium} />\n <TeacherProfile teacherProfile={teacherDetails} />\n {TutorChangeSection}\n </FlexView>\n );\n }, [teacherDetails, spacing.separator, TutorChangeSection]);\n\n const OnlyTrialDoneSection = useMemo(() => {\n if (!isOnlyTrialDone) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <NextSteps />\n <Separator height={spacing.separator.extraLarge} />\n <UpcomingSessions sessions={upcomingSessions} />\n {TeacherDetailsSection}\n </FlexView>\n );\n }, [isOnlyTrialDone, spacing.separator.extraLarge, upcomingSessions, TeacherDetailsSection]);\n\n const AppFeaturesSection = useMemo(() => {\n if (!isTrialDone) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <CuemathAppFeatures />\n </FlexView>\n );\n }, [isTrialDone, spacing.separator.extraLarge]);\n\n const MathPracticeSection = useMemo(() => {\n if (isRegularClassDone) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <Styled.MathPracticeWrapper>\n <MathPractice onSwitchUser={onSwitchUser} />\n </Styled.MathPracticeWrapper>\n </FlexView>\n );\n }, [isRegularClassDone, spacing.separator.extraLarge, onSwitchUser]);\n\n const BillingInformationSection = useMemo(() => {\n if (!billingDetails) return null;\n\n return (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <BillingInformation\n billingDetails={billingDetails}\n onViewPaymentMethod={onViewPaymentMethod}\n onCancelSubscription={onCancelSubscription}\n />\n </FlexView>\n );\n }, [billingDetails, spacing.separator.extraLarge, onViewPaymentMethod, onCancelSubscription]);\n\n const MainContent = useMemo(\n () => (\n <FlexView>\n {SessionStatusSection}\n {TeacherProfileSection}\n {SessionSummarySection}\n {OnlyTrialDoneSection}\n {AppFeaturesSection}\n {MathPracticeSection}\n {BillingInformationSection}\n </FlexView>\n ),\n [\n SessionStatusSection,\n TeacherProfileSection,\n SessionSummarySection,\n OnlyTrialDoneSection,\n AppFeaturesSection,\n MathPracticeSection,\n BillingInformationSection,\n ],\n );\n\n const FaqsSection = useMemo(\n () => (\n <FlexView>\n <Separator height={spacing.separator.extraLarge} />\n <ParentDashboardFaqs />\n <Separator height={spacing.separator.extraLarge} />\n </FlexView>\n ),\n [spacing.separator.extraLarge],\n );\n\n const isLoading = useMemo(() => {\n return isCardDeclined || cardOnFileNotAvailable || !sessionDetails || showLoading;\n }, [cardOnFileNotAvailable, isCardDeclined, sessionDetails, showLoading]);\n\n if (isLoading) {\n return <AppLoader height=\"100dvh\" />;\n }\n\n if (isProcessingFailed) {\n return (\n <FlexView $flex={1} $alignItems=\"center\" $justifyContent=\"center\">\n <Error theme=\"dark\" onTryAgain={handleTryAgain} />\n </FlexView>\n );\n }\n\n return (\n <Styled.Container>\n <CompactHeader HeaderAvatar={HeaderAvatar} />\n <Styled.ContentWrapper\n $flex={1}\n $width=\"100%\"\n $height=\"100%\"\n $background=\"BLACK_1\"\n $gap={spacing.medium}\n $gutter={spacing.small}\n >\n {isSubscriptionCancelled ? CancelledSubscriptionView : MainContent}\n {FaqsSection}\n </Styled.ContentWrapper>\n </Styled.Container>\n );\n },\n);\n\nexport default ParentDashboardView;\n"],"names":["ParentDashboardView","memo","studentName","studentId","onRescheduleDemo","onViewSummary","onGetStartedAgain","onChangeTutor","onSwitchUser","HeaderAvatar","device","useTheme","isMobile","EDeviceType","parentHomeData","useParentHomeData","isStudentNoShow","isTutorNoShow","teacherDetails","billingDetails","teacherName","completedSessions","nextSessionStart","nextSessionEnd","upcomingSessions","isTrialDone","isOnlyTrialDone","isRegularClassDone","showLoading","demoId","isProcessingFailed","userAttemptId","isSubscriptionCancelled","canChangeTutor","sessionDetails","cardOnFileNotAvailable","isCardDeclined","summaryInfo","fetchSummaryData","useStudentProfileSummaryData","spacing","useMemo","MOBILE_SPACING","DESKTOP_SPACING","buttonWidth","handleTryAgain","useCallback","invalidateParentHome","onCancelSubscription","onViewPaymentMethod","usePLAModalHandlers","handleRescheduleDemo","handleChangeTutor","handleViewSummary","key","sessionStatusProps","sessionSummaryProps","CancelledSubscriptionView","FlexView","jsx","SignupHeader","Separator","OnboardingGuide","Button","SessionStatusSection","SessionStatus","TeacherProfileSection","TeacherProfile","SessionSummarySection","SessionSummary","TutorChangeSection","jsxs","Text","TextButton","TeacherDetailsSection","OnlyTrialDoneSection","NextSteps","UpcomingSessions","AppFeaturesSection","CuemathAppFeatures","MathPracticeSection","Styled.MathPracticeWrapper","MathPractice","BillingInformationSection","BillingInformation","MainContent","FaqsSection","ParentDashboardFaqs","AppLoader","Error","Styled.Container","CompactHeader","Styled.ContentWrapper"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED