@cuemath/leap 3.3.2 → 3.3.3-j1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/assets/illustrations/illustrations.js +2 -1
  2. package/dist/assets/illustrations/illustrations.js.map +1 -1
  3. package/dist/assets/lottie/lottie.js +1 -0
  4. package/dist/assets/lottie/lottie.js.map +1 -1
  5. package/dist/constants/config.js +5 -0
  6. package/dist/constants/config.js.map +1 -0
  7. package/dist/features/auth/comps/pill-button/pill-button-styled.js +17 -17
  8. package/dist/features/auth/comps/pill-button/pill-button-styled.js.map +1 -1
  9. package/dist/features/auth/comps/pill-button/pill-button.js +35 -33
  10. package/dist/features/auth/comps/pill-button/pill-button.js.map +1 -1
  11. package/dist/features/auth/comps/user-list/user-item/user-item.js +32 -30
  12. package/dist/features/auth/comps/user-list/user-item/user-item.js.map +1 -1
  13. package/dist/features/auth/comps/user-list/user-list.js +20 -19
  14. package/dist/features/auth/comps/user-list/user-list.js.map +1 -1
  15. package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide-constants.js +9 -9
  16. package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide-constants.js.map +1 -1
  17. package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide-styled.js +58 -29
  18. package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide-styled.js.map +1 -1
  19. package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide.js +78 -41
  20. package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide.js.map +1 -1
  21. package/dist/features/auth/signup/circular-step-wrapper/circular-step-wrapper-styled.js +37 -35
  22. package/dist/features/auth/signup/circular-step-wrapper/circular-step-wrapper-styled.js.map +1 -1
  23. package/dist/features/auth/signup/circular-step-wrapper/circular-step-wrapper.js +76 -71
  24. package/dist/features/auth/signup/circular-step-wrapper/circular-step-wrapper.js.map +1 -1
  25. package/dist/features/auth/signup/custom-input-field/custom-input-field.js +55 -50
  26. package/dist/features/auth/signup/custom-input-field/custom-input-field.js.map +1 -1
  27. package/dist/features/auth/signup/custom-input-field/input-wrapper/input-wrapper.js +47 -25
  28. package/dist/features/auth/signup/custom-input-field/input-wrapper/input-wrapper.js.map +1 -1
  29. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js +6 -6
  30. package/dist/features/student-details/class-details/class-details-utils.js +6 -6
  31. package/dist/features/trial-session/comps/pla/cuemath-app-features/cuemath-app-features-constants.js +25 -0
  32. package/dist/features/trial-session/comps/pla/cuemath-app-features/cuemath-app-features-constants.js.map +1 -0
  33. package/dist/features/trial-session/comps/pla/cuemath-app-features/cuemath-app-features-styled.js +15 -0
  34. package/dist/features/trial-session/comps/pla/cuemath-app-features/cuemath-app-features-styled.js.map +1 -0
  35. package/dist/features/trial-session/comps/pla/cuemath-app-features/cuemath-app-features.js +90 -0
  36. package/dist/features/trial-session/comps/pla/cuemath-app-features/cuemath-app-features.js.map +1 -0
  37. package/dist/features/trial-session/comps/pla/math-practice/math-practice-constants.js +19 -0
  38. package/dist/features/trial-session/comps/pla/math-practice/math-practice-constants.js.map +1 -0
  39. package/dist/features/trial-session/comps/pla/math-practice/math-practice-styled.js +32 -0
  40. package/dist/features/trial-session/comps/pla/math-practice/math-practice-styled.js.map +1 -0
  41. package/dist/features/trial-session/comps/pla/math-practice/math-practice.js +67 -0
  42. package/dist/features/trial-session/comps/pla/math-practice/math-practice.js.map +1 -0
  43. package/dist/features/trial-session/comps/pla/next-steps/next-steps-constants.js +25 -0
  44. package/dist/features/trial-session/comps/pla/next-steps/next-steps-constants.js.map +1 -0
  45. package/dist/features/trial-session/comps/pla/next-steps/next-steps-styled.js +43 -0
  46. package/dist/features/trial-session/comps/pla/next-steps/next-steps-styled.js.map +1 -0
  47. package/dist/features/trial-session/comps/pla/next-steps/next-steps.js +49 -0
  48. package/dist/features/trial-session/comps/pla/next-steps/next-steps.js.map +1 -0
  49. package/dist/features/trial-session/comps/pla/session-status/session-status-constants.js +11 -0
  50. package/dist/features/trial-session/comps/pla/session-status/session-status-constants.js.map +1 -0
  51. package/dist/features/trial-session/comps/pla/session-status/session-status-helpers.js +19 -0
  52. package/dist/features/trial-session/comps/pla/session-status/session-status-helpers.js.map +1 -0
  53. package/dist/features/trial-session/comps/pla/session-status/session-status-styled.js +17 -0
  54. package/dist/features/trial-session/comps/pla/session-status/session-status-styled.js.map +1 -0
  55. package/dist/features/trial-session/comps/pla/session-status/session-status.js +243 -0
  56. package/dist/features/trial-session/comps/pla/session-status/session-status.js.map +1 -0
  57. package/dist/features/trial-session/comps/pla/session-summary/session-summary-constants.js +52 -0
  58. package/dist/features/trial-session/comps/pla/session-summary/session-summary-constants.js.map +1 -0
  59. package/dist/features/trial-session/comps/pla/session-summary/session-summary.js +52 -0
  60. package/dist/features/trial-session/comps/pla/session-summary/session-summary.js.map +1 -0
  61. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card-styled.js +17 -0
  62. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card-styled.js.map +1 -0
  63. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js +56 -0
  64. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js.map +1 -0
  65. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-constants.js +5 -0
  66. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-constants.js.map +1 -0
  67. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-styled.js +17 -0
  68. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-styled.js.map +1 -0
  69. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-types.js +5 -0
  70. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-types.js.map +1 -0
  71. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions.js +96 -0
  72. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions.js.map +1 -0
  73. package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile-helpers.js +12 -0
  74. package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile-helpers.js.map +1 -0
  75. package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile-styled.js +121 -42
  76. package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile-styled.js.map +1 -1
  77. package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile.js +174 -56
  78. package/dist/features/trial-session/comps/teacher-intro/teacher-profile/teacher-profile.js.map +1 -1
  79. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  80. package/dist/index.d.ts +81 -1
  81. package/dist/index.js +381 -365
  82. package/dist/index.js.map +1 -1
  83. package/dist/node_modules/date-fns/_lib/getRoundingMethod.js +10 -0
  84. package/dist/node_modules/date-fns/_lib/getRoundingMethod.js.map +1 -0
  85. package/dist/node_modules/date-fns/differenceInMilliseconds.js +9 -0
  86. package/dist/node_modules/date-fns/differenceInMilliseconds.js.map +1 -0
  87. package/dist/node_modules/date-fns/differenceInSeconds.js +11 -0
  88. package/dist/node_modules/date-fns/differenceInSeconds.js.map +1 -0
  89. package/dist/node_modules/date-fns/fromUnixTime.js +9 -0
  90. package/dist/node_modules/date-fns/fromUnixTime.js.map +1 -0
  91. package/dist/node_modules/uuid/dist/esm-browser/native.js +7 -0
  92. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +1 -0
  93. package/dist/node_modules/uuid/dist/esm-browser/rng.js +3 -2
  94. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  95. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +6 -10
  96. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  97. package/dist/node_modules/uuid/dist/esm-browser/v4.js +12 -9
  98. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  99. package/dist/static/{book-checked-green.c275dbd9.svg → book-checked-green.0436b91e.svg} +1 -1
  100. package/dist/static/learning-puzzle-bot.6fe93cf6.svg +1 -0
  101. package/dist/static/username-responsive.787b5515.json +1 -0
  102. package/package.json +3 -2
  103. package/dist/node_modules/uuid/dist/esm-browser/regex.js +0 -5
  104. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +0 -1
  105. package/dist/node_modules/uuid/dist/esm-browser/validate.js +0 -8
  106. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"circular-step-wrapper.js","sources":["../../../../../src/features/auth/signup/circular-step-wrapper/circular-step-wrapper.tsx"],"sourcesContent":["import type { ILottieAnimationRef } from '../../../ui/lottie-animation/types';\nimport type { ICircularStepRef, ICircularStepWrapperProps } from './circular-step-wrapper-types';\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n useState,\n memo,\n type Ref,\n} from 'react';\n\nimport Back2Icon from '../../../../assets/line-icons/icons/back2';\nimport Next2Icon from '../../../../assets/line-icons/icons/next2';\nimport AnimatedArc from '../../../ui/animated-arc/animated-arc';\nimport IconButton from '../../../ui/buttons/icon-button/icon-button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport LottieAnimation from '../../../ui/lottie-animation/lottie-animation';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport * as Styled from './circular-step-wrapper-styled';\n\nconst animationSettings = {\n autoplay: false,\n loop: false,\n renderer: 'canvas',\n rendererSettings: {\n preserveAspectRatio: 'xMidYMin slice',\n },\n};\n\nconst CircularStepWrapper = forwardRef<ICircularStepRef, ICircularStepWrapperProps>(\n (\n {\n children,\n onGoBack,\n onNext,\n label,\n showNext,\n showPrevious,\n animation,\n introFrames,\n outroFrames,\n isNextLoading,\n progressAngle,\n footerElement,\n },\n ref: Ref<ICircularStepRef>,\n ) => {\n const animationRef = useRef<ILottieAnimationRef | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerHeight, setContainerHeight] = useState<number | undefined>();\n const [showContent, setShowContent] = useState(false);\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n const onLottieRender = useCallback(() => {\n if (animation && animationRef.current) {\n animationRef.current.playSegments(introFrames, true);\n setShowContent(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animation]);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [animation]);\n\n useImperativeHandle(ref, () => ({\n playOutroAndFadeOut: async () => {\n return new Promise<void>(resolve => {\n const handleComplete = () => {\n resolve();\n animationRef.current?.removeEventListener('complete', handleComplete);\n };\n\n animationRef.current?.playSegments(outroFrames, true);\n timeoutRef.current = setTimeout(() => setShowContent(false), 400);\n animationRef.current?.addEventListener('complete', handleComplete);\n });\n },\n }));\n\n useLayoutEffect(() => {\n if (containerRef.current) {\n setContainerHeight(containerRef.current.offsetHeight);\n }\n }, []);\n\n return (\n <Styled.Container\n $flex={1}\n $flexDirection=\"column\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $width=\"100%\"\n $height=\"100%\"\n ref={containerRef}\n >\n {containerHeight && (\n <LottieAnimation\n width={1280}\n height={containerHeight}\n src={animation}\n ref={animationRef}\n onRender={onLottieRender}\n settings={animationSettings}\n />\n )}\n <Styled.CircularStepContainer\n $width={400}\n $height={400}\n $background=\"REAL_BLACK\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n {progressAngle && (\n <AnimatedArc\n radius={200}\n strokeWidth={2}\n color=\"WHITE\"\n targetAngle={progressAngle}\n mode=\"fade\"\n duration={1}\n />\n )}\n <Styled.ContentWrapper $isVisible={showContent} $width=\"100%\">\n {label && (\n <FlexView $gutterX={3.5}>\n <Text $renderAs=\"ab2\" $color=\"WHITE\" $align=\"center\">\n {label}\n </Text>\n <Separator heightX={1} />\n </FlexView>\n )}\n <Styled.InputContainer>{children}</Styled.InputContainer>\n </Styled.ContentWrapper>\n </Styled.CircularStepContainer>\n {footerElement && (\n <Styled.FooterWrapper $alignItems=\"center\" $justifyContent=\"center\">\n {footerElement}\n </Styled.FooterWrapper>\n )}\n {showPrevious && (\n <Styled.PrevButtonWrapper>\n <IconButton\n Icon={Back2Icon}\n renderAs=\"secondary-dark\"\n analyticsLabel=\"Prev\"\n onClick={onGoBack}\n disabled={isNextLoading}\n size=\"small\"\n />\n </Styled.PrevButtonWrapper>\n )}\n {showNext && (\n <Styled.NextButtonWrapper>\n <IconButton\n size=\"small\"\n Icon={Next2Icon}\n renderAs=\"secondary-dark\"\n analyticsLabel=\"Next\"\n onClick={onNext}\n busy={isNextLoading}\n />\n </Styled.NextButtonWrapper>\n )}\n </Styled.Container>\n );\n },\n);\n\nexport default memo(CircularStepWrapper);\n"],"names":["animationSettings","CircularStepWrapper","forwardRef","children","onGoBack","onNext","label","showNext","showPrevious","animation","introFrames","outroFrames","isNextLoading","progressAngle","footerElement","ref","animationRef","useRef","containerRef","containerHeight","setContainerHeight","useState","showContent","setShowContent","timeoutRef","onLottieRender","useCallback","useEffect","useImperativeHandle","resolve","handleComplete","_a","_b","useLayoutEffect","jsxs","Styled.Container","jsx","LottieAnimation","Styled.CircularStepContainer","AnimatedArc","Styled.ContentWrapper","FlexView","Text","Separator","Styled.InputContainer","Styled.FooterWrapper","Styled.PrevButtonWrapper","IconButton","Back2Icon","Styled.NextButtonWrapper","Next2Icon","circularStepWrapper","memo"],"mappings":"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"}
1
+ {"version":3,"file":"circular-step-wrapper.js","sources":["../../../../../src/features/auth/signup/circular-step-wrapper/circular-step-wrapper.tsx"],"sourcesContent":["import type { ILottieAnimationRef } from '../../../ui/lottie-animation/types';\nimport type { ICircularStepRef, ICircularStepWrapperProps } from './circular-step-wrapper-types';\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n useState,\n memo,\n type Ref,\n} from 'react';\nimport { useTheme } from 'styled-components';\n\nimport Back2Icon from '../../../../assets/line-icons/icons/back2';\nimport Next2Icon from '../../../../assets/line-icons/icons/next2';\nimport AnimatedArc from '../../../ui/animated-arc/animated-arc';\nimport IconButton from '../../../ui/buttons/icon-button/icon-button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport LottieAnimation from '../../../ui/lottie-animation/lottie-animation';\nimport Separator from '../../../ui/separator/separator';\nimport Text from '../../../ui/text/text';\nimport { EDeviceType } from '../../../ui/theme/constants';\nimport * as Styled from './circular-step-wrapper-styled';\n\nconst animationSettings = {\n autoplay: false,\n loop: false,\n renderer: 'canvas',\n rendererSettings: {\n preserveAspectRatio: 'xMidYMin slice',\n },\n};\n\nconst CircularStepWrapper = forwardRef<ICircularStepRef, ICircularStepWrapperProps>(\n (\n {\n children,\n onGoBack,\n onNext,\n label,\n showNext,\n showPrevious,\n animation,\n introFrames,\n outroFrames,\n isNextLoading,\n progressAngle,\n footerElement,\n isNextDisabled,\n animationSrcMobile,\n },\n ref: Ref<ICircularStepRef>,\n ) => {\n const animationRef = useRef<ILottieAnimationRef | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerHeight, setContainerHeight] = useState<number | undefined>();\n const [showContent, setShowContent] = useState(false);\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n const { device } = useTheme();\n const isMobile = device <= EDeviceType.MOBILE;\n\n const onLottieRender = useCallback(() => {\n if (animation && animationRef.current) {\n animationRef.current.playSegments(introFrames, true);\n setShowContent(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animation]);\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [animation]);\n\n useImperativeHandle(ref, () => ({\n playOutroAndFadeOut: async () => {\n return new Promise<void>(resolve => {\n const handleComplete = () => {\n resolve();\n animationRef.current?.removeEventListener('complete', handleComplete);\n };\n\n animationRef.current?.playSegments(outroFrames, true);\n timeoutRef.current = setTimeout(() => setShowContent(false), 400);\n animationRef.current?.addEventListener('complete', handleComplete);\n });\n },\n }));\n\n useLayoutEffect(() => {\n if (containerRef.current) {\n setContainerHeight(containerRef.current.offsetHeight);\n }\n }, []);\n\n return (\n <Styled.Container\n $flex={1}\n $flexDirection=\"column\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $width=\"100%\"\n $height=\"100%\"\n ref={containerRef}\n >\n {containerHeight && (\n <LottieAnimation\n width={1280}\n height={containerHeight}\n src={isMobile ? animationSrcMobile ?? animation : animation}\n ref={animationRef}\n onRender={onLottieRender}\n settings={animationSettings}\n />\n )}\n <Styled.CircularStepContainer\n $width={isMobile ? 290 : 400}\n $height={isMobile ? 290 : 400}\n $background=\"REAL_BLACK\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n {progressAngle && (\n <AnimatedArc\n radius={progressAngle ? 145 : 200}\n strokeWidth={2}\n color=\"WHITE\"\n targetAngle={progressAngle}\n mode=\"fade\"\n duration={1}\n />\n )}\n <Styled.ContentWrapper $isVisible={showContent} $width=\"100%\">\n {label && (\n <FlexView $gutterX={isMobile ? 1.5 : 3.5}>\n <Text $renderAs=\"ab2\" $color=\"WHITE\" $align=\"center\">\n {label}\n </Text>\n <Separator heightX={1} />\n </FlexView>\n )}\n <Styled.InputContainer>{children}</Styled.InputContainer>\n </Styled.ContentWrapper>\n </Styled.CircularStepContainer>\n {footerElement && (\n <Styled.FooterWrapper $alignItems=\"center\" $justifyContent=\"center\">\n {footerElement}\n </Styled.FooterWrapper>\n )}\n {showPrevious && (\n <Styled.PrevButtonWrapper>\n <IconButton\n Icon={Back2Icon}\n renderAs=\"black-dark\"\n analyticsLabel=\"Prev\"\n onClick={onGoBack}\n disabled={isNextLoading}\n size=\"small\"\n />\n </Styled.PrevButtonWrapper>\n )}\n {showNext && (\n <Styled.NextButtonWrapper>\n <IconButton\n size=\"small\"\n Icon={Next2Icon}\n renderAs=\"secondary-dark\"\n analyticsLabel=\"Next\"\n onClick={onNext}\n busy={isNextLoading}\n disabled={isNextLoading || isNextDisabled}\n />\n </Styled.NextButtonWrapper>\n )}\n </Styled.Container>\n );\n },\n);\n\nexport default memo(CircularStepWrapper);\n"],"names":["animationSettings","CircularStepWrapper","forwardRef","children","onGoBack","onNext","label","showNext","showPrevious","animation","introFrames","outroFrames","isNextLoading","progressAngle","footerElement","isNextDisabled","animationSrcMobile","ref","animationRef","useRef","containerRef","containerHeight","setContainerHeight","useState","showContent","setShowContent","timeoutRef","device","useTheme","isMobile","EDeviceType","onLottieRender","useCallback","useEffect","useImperativeHandle","resolve","handleComplete","_a","_b","useLayoutEffect","jsxs","Styled.Container","jsx","LottieAnimation","Styled.CircularStepContainer","AnimatedArc","Styled.ContentWrapper","FlexView","Text","Separator","Styled.InputContainer","Styled.FooterWrapper","Styled.PrevButtonWrapper","IconButton","Back2Icon","Styled.NextButtonWrapper","Next2Icon","circularStepWrapper","memo"],"mappings":"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"}
@@ -1,91 +1,96 @@
1
- import { jsx as c, jsxs as y } from "react/jsx-runtime";
2
- import { memo as A, useState as g, useRef as C, useCallback as a, useMemo as I, useEffect as T } from "react";
3
- import { useTheme as H } from "styled-components";
4
- import L from "../../../ui/layout/flex-view.js";
5
- import M from "./country-selector/country-selector.js";
6
- import { CustomInput as N } from "./custom-input-field-styled.js";
1
+ import { jsx as c, jsxs as K } from "react/jsx-runtime";
2
+ import { memo as L, useState as C, useRef as I, useCallback as p, useMemo as T, useEffect as W } from "react";
3
+ import { useTheme as A } from "styled-components";
4
+ import B from "../../../ui/layout/flex-view.js";
5
+ import { EDeviceType as H } from "../../../ui/theme/constants.js";
6
+ import N from "./country-selector/country-selector.js";
7
+ import { CustomInput as O } from "./custom-input-field-styled.js";
7
8
  import X from "./input-wrapper/input-wrapper.js";
8
9
  import _ from "./password-toggle/password-toggle.js";
9
10
  const q = ({
10
- value: o,
11
- onChange: m,
11
+ value: r,
12
+ onChange: d,
12
13
  error: u,
13
- helperText: W,
14
+ helperText: b,
14
15
  onEnter: n,
15
- isLoading: b,
16
- isValid: p,
17
- type: e = "text",
16
+ isLoading: D,
17
+ isValid: h,
18
+ type: t = "text",
18
19
  placeholder: F,
19
20
  actionElement: R,
20
21
  maxLength: $,
21
- width: D,
22
+ width: E,
22
23
  textTransform: P,
23
- textAlign: S = "center",
24
- selectedCountry: V,
25
- onCountryChange: j,
26
- autoSize: d = !1
24
+ textAlign: v = "center",
25
+ selectedCountry: M,
26
+ onCountryChange: S,
27
+ autoSize: x = !1
27
28
  }) => {
28
- const r = H(), [l, k] = g(!1), [z, h] = g(32), f = C(null), s = C(null), E = a(
29
- (t) => {
30
- t.key === "Enter" && (n == null || n());
29
+ const o = A(), l = o.device <= H.MOBILE, [f, V] = C(!1), [j, m] = C(l ? 24 : 32), a = I(null), s = I(null), k = p(
30
+ (e) => {
31
+ e.key === "Enter" && (n == null || n());
31
32
  },
32
33
  [n]
33
- ), G = I(() => e === "password" ? l ? "text" : "password" : e === "phone" ? "number" : e, [e, l]), K = I(() => u ? r.colors.RED : p ? r.colors.GREEN_4 : r.colors.WHITE, [u, p, r.colors]), x = a((t, w) => {
34
+ ), y = T(() => t === "password" ? f ? "text" : "password" : t === "phone" ? "number" : t, [t, f]), z = T(() => u ? o.colors.RED : h ? o.colors.GREEN_4 : o.colors.WHITE, [u, h, o.colors]), w = p((e, g) => {
34
35
  s.current || (s.current = document.createElement("canvas"));
35
36
  const i = s.current.getContext("2d");
36
- return i ? (i.font = w, i.measureText(t).width) : 0;
37
+ return i ? (i.font = g, i.measureText(e).width) : 0;
37
38
  }, []);
38
- T(() => {
39
- if (!f.current || !o || !d)
39
+ W(() => {
40
+ if (!a.current || !r || !x)
40
41
  return;
41
- const t = f.current.clientWidth;
42
- x(o, "32px 'Athletics-Light'") > t ? h(24) : h(32);
43
- }, [o, x, d]), T(() => () => {
42
+ if (l) {
43
+ m(24);
44
+ return;
45
+ }
46
+ const e = a.current.clientWidth;
47
+ w(r, "32px 'Athletics-Light'") > e ? m(24) : m(32);
48
+ }, [r, w, x, l]), W(() => () => {
44
49
  s.current = null;
45
50
  }, []);
46
- const v = a(
47
- (t) => m(t.target.value),
48
- [m]
51
+ const G = p(
52
+ (e) => d(e.target.value),
53
+ [d]
49
54
  );
50
55
  return /* @__PURE__ */ c(
51
56
  X,
52
57
  {
53
- helperText: u || W,
54
- isLoading: b,
58
+ helperText: u || b,
59
+ isLoading: D,
55
60
  actionElement: R,
56
- children: /* @__PURE__ */ y(
57
- L,
61
+ children: /* @__PURE__ */ K(
62
+ B,
58
63
  {
59
- $width: D ?? "100%",
64
+ $width: E ?? "100%",
60
65
  $flex: 1,
61
66
  $alignItems: "center",
62
67
  $flexDirection: "row",
63
68
  $flexGapX: 0.5,
64
69
  children: [
65
- e === "phone" && /* @__PURE__ */ c(M, { onChange: j, value: V }),
70
+ t === "phone" && /* @__PURE__ */ c(N, { onChange: S, value: M }),
66
71
  /* @__PURE__ */ c(
67
- N,
72
+ O,
68
73
  {
69
- ref: f,
70
- value: o,
71
- onChange: v,
74
+ ref: a,
75
+ value: r,
76
+ onChange: G,
72
77
  autoFocus: !0,
73
78
  placeholder: F,
74
- color: K,
79
+ color: z,
75
80
  autoCapitalize: "none",
76
81
  textTransform: P,
77
- type: G,
78
- onKeyDown: E,
82
+ type: y,
83
+ onKeyDown: k,
79
84
  maxLength: $,
80
- align: S,
81
- fontSize: z
85
+ align: v,
86
+ fontSize: j
82
87
  }
83
88
  ),
84
- e === "password" && /* @__PURE__ */ c(
89
+ t === "password" && /* @__PURE__ */ c(
85
90
  _,
86
91
  {
87
- isVisible: l,
88
- onToggle: () => k((t) => !t)
92
+ isVisible: f,
93
+ onToggle: () => V((e) => !e)
89
94
  }
90
95
  )
91
96
  ]
@@ -93,8 +98,8 @@ const q = ({
93
98
  )
94
99
  }
95
100
  );
96
- }, et = A(q);
101
+ }, ne = L(q);
97
102
  export {
98
- et as default
103
+ ne as default
99
104
  };
100
105
  //# sourceMappingURL=custom-input-field.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom-input-field.js","sources":["../../../../../src/features/auth/signup/custom-input-field/custom-input-field.tsx"],"sourcesContent":["import type { ICustomInputFieldProps } from './custom-input-field-types';\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n memo,\n type FC,\n type KeyboardEvent,\n type ChangeEvent,\n} from 'react';\nimport { useTheme } from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\nimport PhoneCountrySelector from './country-selector/country-selector';\nimport * as Styled from './custom-input-field-styled';\nimport InputWrapper from './input-wrapper/input-wrapper';\nimport PasswordToggleIcon from './password-toggle/password-toggle';\n\nconst CustomInputField: FC<ICustomInputFieldProps> = ({\n value,\n onChange,\n error,\n helperText,\n onEnter,\n isLoading,\n isValid,\n type = 'text',\n placeholder,\n actionElement,\n maxLength,\n width,\n textTransform,\n textAlign = 'center',\n selectedCountry,\n onCountryChange,\n autoSize = false,\n}) => {\n const theme = useTheme();\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\n const [fontSize, setFontSize] = useState(32);\n const inputRef = useRef<HTMLInputElement>(null);\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n onEnter?.();\n }\n },\n [onEnter],\n );\n\n const inputType = useMemo(() => {\n if (type === 'password') return isPasswordVisible ? 'text' : 'password';\n\n if (type === 'phone') return 'number';\n\n return type;\n }, [type, isPasswordVisible]);\n\n const inputColor = useMemo(() => {\n if (error) return theme.colors.RED;\n\n if (isValid) return theme.colors.GREEN_4;\n\n return theme.colors.WHITE;\n }, [error, isValid, theme.colors]);\n\n const measureTextWidth = useCallback((text: string, font: string): number => {\n if (!canvasRef.current) {\n canvasRef.current = document.createElement('canvas');\n }\n\n const context = canvasRef.current.getContext('2d');\n\n if (!context) return 0;\n\n context.font = font;\n\n return context.measureText(text).width;\n }, []);\n\n useEffect(() => {\n if (!inputRef.current || !value || !autoSize) {\n return;\n }\n\n const inputWidth = inputRef.current.clientWidth;\n\n const font32 = \"32px 'Athletics-Light'\";\n\n const textWidth32 = measureTextWidth(value, font32);\n\n if (textWidth32 > inputWidth) {\n setFontSize(24);\n } else {\n setFontSize(32);\n }\n }, [value, measureTextWidth, autoSize]);\n\n useEffect(() => {\n return () => {\n canvasRef.current = null;\n };\n }, []);\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value),\n [onChange],\n );\n\n return (\n <InputWrapper\n helperText={error || helperText}\n isLoading={isLoading}\n actionElement={actionElement}\n >\n <FlexView\n $width={width ?? '100%'}\n $flex={1}\n $alignItems=\"center\"\n $flexDirection=\"row\"\n $flexGapX={0.5}\n >\n {type === 'phone' && (\n <PhoneCountrySelector onChange={onCountryChange} value={selectedCountry} />\n )}\n <Styled.CustomInput\n ref={inputRef}\n value={value}\n onChange={handleChange}\n autoFocus\n placeholder={placeholder}\n color={inputColor}\n autoCapitalize=\"none\"\n textTransform={textTransform}\n type={inputType}\n onKeyDown={handleKeyDown}\n maxLength={maxLength}\n align={textAlign}\n fontSize={fontSize}\n />\n {type === 'password' && (\n <PasswordToggleIcon\n isVisible={isPasswordVisible}\n onToggle={() => setIsPasswordVisible(prev => !prev)}\n />\n )}\n </FlexView>\n </InputWrapper>\n );\n};\n\nexport default memo(CustomInputField);\n"],"names":["CustomInputField","value","onChange","error","helperText","onEnter","isLoading","isValid","type","placeholder","actionElement","maxLength","width","textTransform","textAlign","selectedCountry","onCountryChange","autoSize","theme","useTheme","isPasswordVisible","setIsPasswordVisible","useState","fontSize","setFontSize","inputRef","useRef","canvasRef","handleKeyDown","useCallback","event","inputType","useMemo","inputColor","measureTextWidth","text","font","context","useEffect","inputWidth","handleChange","jsx","InputWrapper","jsxs","FlexView","PhoneCountrySelector","Styled.CustomInput","PasswordToggleIcon","prev","customInputField","memo"],"mappings":"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"}
1
+ {"version":3,"file":"custom-input-field.js","sources":["../../../../../src/features/auth/signup/custom-input-field/custom-input-field.tsx"],"sourcesContent":["import type { ICustomInputFieldProps } from './custom-input-field-types';\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n memo,\n type FC,\n type KeyboardEvent,\n type ChangeEvent,\n} from 'react';\nimport { useTheme } from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\nimport { EDeviceType } from '../../../ui/theme/constants';\nimport PhoneCountrySelector from './country-selector/country-selector';\nimport * as Styled from './custom-input-field-styled';\nimport InputWrapper from './input-wrapper/input-wrapper';\nimport PasswordToggleIcon from './password-toggle/password-toggle';\n\nconst CustomInputField: FC<ICustomInputFieldProps> = ({\n value,\n onChange,\n error,\n helperText,\n onEnter,\n isLoading,\n isValid,\n type = 'text',\n placeholder,\n actionElement,\n maxLength,\n width,\n textTransform,\n textAlign = 'center',\n selectedCountry,\n onCountryChange,\n autoSize = false,\n}) => {\n const theme = useTheme();\n const isMobile = theme.device <= EDeviceType.MOBILE;\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\n const [fontSize, setFontSize] = useState(isMobile ? 24 : 32);\n const inputRef = useRef<HTMLInputElement>(null);\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n onEnter?.();\n }\n },\n [onEnter],\n );\n\n const inputType = useMemo(() => {\n if (type === 'password') return isPasswordVisible ? 'text' : 'password';\n\n if (type === 'phone') return 'number';\n\n return type;\n }, [type, isPasswordVisible]);\n\n const inputColor = useMemo(() => {\n if (error) return theme.colors.RED;\n\n if (isValid) return theme.colors.GREEN_4;\n\n return theme.colors.WHITE;\n }, [error, isValid, theme.colors]);\n\n const measureTextWidth = useCallback((text: string, font: string): number => {\n if (!canvasRef.current) {\n canvasRef.current = document.createElement('canvas');\n }\n\n const context = canvasRef.current.getContext('2d');\n\n if (!context) return 0;\n\n context.font = font;\n\n return context.measureText(text).width;\n }, []);\n\n useEffect(() => {\n if (!inputRef.current || !value || !autoSize) {\n return;\n }\n\n if (isMobile) {\n setFontSize(24);\n\n return;\n }\n\n const inputWidth = inputRef.current.clientWidth;\n\n const font32 = \"32px 'Athletics-Light'\";\n\n const textWidth32 = measureTextWidth(value, font32);\n\n if (textWidth32 > inputWidth) {\n setFontSize(24);\n } else {\n setFontSize(32);\n }\n }, [value, measureTextWidth, autoSize, isMobile]);\n\n useEffect(() => {\n return () => {\n canvasRef.current = null;\n };\n }, []);\n\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value),\n [onChange],\n );\n\n return (\n <InputWrapper\n helperText={error || helperText}\n isLoading={isLoading}\n actionElement={actionElement}\n >\n <FlexView\n $width={width ?? '100%'}\n $flex={1}\n $alignItems=\"center\"\n $flexDirection=\"row\"\n $flexGapX={0.5}\n >\n {type === 'phone' && (\n <PhoneCountrySelector onChange={onCountryChange} value={selectedCountry} />\n )}\n <Styled.CustomInput\n ref={inputRef}\n value={value}\n onChange={handleChange}\n autoFocus\n placeholder={placeholder}\n color={inputColor}\n autoCapitalize=\"none\"\n textTransform={textTransform}\n type={inputType}\n onKeyDown={handleKeyDown}\n maxLength={maxLength}\n align={textAlign}\n fontSize={fontSize}\n />\n {type === 'password' && (\n <PasswordToggleIcon\n isVisible={isPasswordVisible}\n onToggle={() => setIsPasswordVisible(prev => !prev)}\n />\n )}\n </FlexView>\n </InputWrapper>\n );\n};\n\nexport default memo(CustomInputField);\n"],"names":["CustomInputField","value","onChange","error","helperText","onEnter","isLoading","isValid","type","placeholder","actionElement","maxLength","width","textTransform","textAlign","selectedCountry","onCountryChange","autoSize","theme","useTheme","isMobile","EDeviceType","isPasswordVisible","setIsPasswordVisible","useState","fontSize","setFontSize","inputRef","useRef","canvasRef","handleKeyDown","useCallback","event","inputType","useMemo","inputColor","measureTextWidth","text","font","context","useEffect","inputWidth","handleChange","jsx","InputWrapper","jsxs","FlexView","PhoneCountrySelector","Styled.CustomInput","PasswordToggleIcon","prev","customInputField","memo"],"mappings":"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"}
@@ -1,29 +1,51 @@
1
- import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
- import { memo as c } from "react";
3
- import { LOTTIE as h } from "../../../../../assets/lottie/lottie.js";
4
- import r from "../../../../ui/layout/flex-view.js";
1
+ import { jsxs as t, jsx as r } from "react/jsx-runtime";
2
+ import { memo as h } from "react";
3
+ import { useTheme as s } from "styled-components";
4
+ import { LOTTIE as f } from "../../../../../assets/lottie/lottie.js";
5
+ import i from "../../../../ui/layout/flex-view.js";
5
6
  import $ from "../../../../ui/lottie-animation/lottie-animation.js";
6
- import i from "../../../../ui/separator/separator.js";
7
- import s from "../../../../ui/text/text.js";
8
- import { ContentWrapper as f } from "./input-wrapper-styled.js";
9
- const l = ({ children: m, helperText: n, actionElement: o, isLoading: p }) => /* @__PURE__ */ t(r, { $flex: 1, $gutterX: 2, $alignItems: "center", $justifyContent: "center", $width: "100%", children: [
10
- m,
11
- /* @__PURE__ */ t(f, { $alignItems: "center", $justifyContent: "center", children: [
12
- n && /* @__PURE__ */ t(r, { $gutterX: 3.5, children: [
13
- /* @__PURE__ */ e(s, { $renderAs: "ub2", $color: "WHITE_T_60", $align: "center", $whiteSpace: "pre-line", children: n }),
14
- /* @__PURE__ */ e(i, { heightX: 0.5 })
15
- ] }),
16
- o && /* @__PURE__ */ t(r, { $justifyContent: "center", $alignItems: "center", children: [
17
- o,
18
- /* @__PURE__ */ e(i, { heightX: 1 })
19
- ] }),
20
- p && /* @__PURE__ */ t(r, { children: [
21
- /* @__PURE__ */ e(i, { heightX: 2 }),
22
- /* @__PURE__ */ e($, { src: h.SPINNER_WHITE, height: 20, width: 40 })
23
- ] })
24
- ] })
25
- ] }), W = c(l);
7
+ import o from "../../../../ui/separator/separator.js";
8
+ import l from "../../../../ui/text/text.js";
9
+ import { EDeviceType as a } from "../../../../ui/theme/constants.js";
10
+ import { ContentWrapper as d } from "./input-wrapper-styled.js";
11
+ const u = ({ children: p, helperText: n, actionElement: m, isLoading: c }) => {
12
+ const e = s().device <= a.MOBILE;
13
+ return /* @__PURE__ */ t(
14
+ i,
15
+ {
16
+ $flex: 1,
17
+ $gutterX: e ? 1.5 : 2,
18
+ $alignItems: "center",
19
+ $justifyContent: "center",
20
+ $width: "100%",
21
+ children: [
22
+ p,
23
+ /* @__PURE__ */ t(d, { $alignItems: "center", $justifyContent: "center", children: [
24
+ n && /* @__PURE__ */ t(i, { $gutterX: e ? 2.25 : 3.5, children: [
25
+ /* @__PURE__ */ r(l, { $renderAs: "ub2", $color: "WHITE_T_60", $align: "center", $whiteSpace: "pre-line", children: n }),
26
+ /* @__PURE__ */ r(o, { heightX: 0.5 })
27
+ ] }),
28
+ m && /* @__PURE__ */ t(i, { $justifyContent: "center", $alignItems: "center", children: [
29
+ m,
30
+ /* @__PURE__ */ r(o, { heightX: 1 })
31
+ ] }),
32
+ c && /* @__PURE__ */ t(i, { children: [
33
+ /* @__PURE__ */ r(o, { heightX: e ? 0.5 : 2 }),
34
+ /* @__PURE__ */ r(
35
+ $,
36
+ {
37
+ src: f.SPINNER_WHITE,
38
+ height: e ? 14 : 20,
39
+ width: e ? 14 : 40
40
+ }
41
+ )
42
+ ] })
43
+ ] })
44
+ ]
45
+ }
46
+ );
47
+ }, L = h(u);
26
48
  export {
27
- W as default
49
+ L as default
28
50
  };
29
51
  //# sourceMappingURL=input-wrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-wrapper.js","sources":["../../../../../../src/features/auth/signup/custom-input-field/input-wrapper/input-wrapper.tsx"],"sourcesContent":["import type { IInputWrapperProps } from './input-wrapper-types';\n\nimport { memo } from 'react';\n\nimport { LOTTIE } from '../../../../../assets/lottie/lottie';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport LottieAnimation from '../../../../ui/lottie-animation/lottie-animation';\nimport Separator from '../../../../ui/separator/separator';\nimport Text from '../../../../ui/text/text';\nimport * as Styled from './input-wrapper-styled';\n\nconst InputWrapper = ({ children, helperText, actionElement, isLoading }: IInputWrapperProps) => {\n return (\n <FlexView $flex={1} $gutterX={2} $alignItems=\"center\" $justifyContent=\"center\" $width=\"100%\">\n {children}\n <Styled.ContentWrapper $alignItems=\"center\" $justifyContent=\"center\">\n {helperText && (\n <FlexView $gutterX={3.5}>\n <Text $renderAs=\"ub2\" $color=\"WHITE_T_60\" $align=\"center\" $whiteSpace=\"pre-line\">\n {helperText}\n </Text>\n <Separator heightX={0.5} />\n </FlexView>\n )}\n {actionElement && (\n <FlexView $justifyContent=\"center\" $alignItems=\"center\">\n {actionElement}\n <Separator heightX={1} />\n </FlexView>\n )}\n {isLoading && (\n <FlexView>\n <Separator heightX={2} />\n <LottieAnimation src={LOTTIE.SPINNER_WHITE} height={20} width={40} />\n </FlexView>\n )}\n </Styled.ContentWrapper>\n </FlexView>\n );\n};\n\nexport default memo(InputWrapper);\n"],"names":["InputWrapper","children","helperText","actionElement","isLoading","jsxs","FlexView","Styled.ContentWrapper","jsx","Text","Separator","LottieAnimation","LOTTIE","InputWrapper$1","memo"],"mappings":";;;;;;;;AAWA,MAAMA,IAAe,CAAC,EAAE,UAAAC,GAAU,YAAAC,GAAY,eAAAC,GAAe,WAAAC,QAEzD,gBAAAC,EAACC,GAAS,EAAA,OAAO,GAAG,UAAU,GAAG,aAAY,UAAS,iBAAgB,UAAS,QAAO,QACnF,UAAA;AAAA,EAAAL;AAAA,oBACAM,GAAA,EAAsB,aAAY,UAAS,iBAAgB,UACzD,UAAA;AAAA,IACCL,KAAA,gBAAAG,EAACC,GAAS,EAAA,UAAU,KAClB,UAAA;AAAA,MAAC,gBAAAE,EAAAC,GAAA,EAAK,WAAU,OAAM,QAAO,cAAa,QAAO,UAAS,aAAY,YACnE,UACHP,EAAA,CAAA;AAAA,MACA,gBAAAM,EAACE,GAAU,EAAA,SAAS,IAAK,CAAA;AAAA,IAAA,GAC3B;AAAA,IAEDP,KACE,gBAAAE,EAAAC,GAAA,EAAS,iBAAgB,UAAS,aAAY,UAC5C,UAAA;AAAA,MAAAH;AAAA,MACD,gBAAAK,EAACE,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,IAAA,GACzB;AAAA,IAEDN,uBACEE,GACC,EAAA,UAAA;AAAA,MAAC,gBAAAE,EAAAE,GAAA,EAAU,SAAS,EAAG,CAAA;AAAA,MACvB,gBAAAF,EAACG,KAAgB,KAAKC,EAAO,eAAe,QAAQ,IAAI,OAAO,IAAI;AAAA,IAAA,GACrE;AAAA,EAAA,GAEJ;AACF,EAAA,CAAA,GAIWC,IAAAC,EAAKd,CAAY;"}
1
+ {"version":3,"file":"input-wrapper.js","sources":["../../../../../../src/features/auth/signup/custom-input-field/input-wrapper/input-wrapper.tsx"],"sourcesContent":["import type { IInputWrapperProps } from './input-wrapper-types';\n\nimport { memo } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport { LOTTIE } from '../../../../../assets/lottie/lottie';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport LottieAnimation from '../../../../ui/lottie-animation/lottie-animation';\nimport Separator from '../../../../ui/separator/separator';\nimport Text from '../../../../ui/text/text';\nimport { EDeviceType } from '../../../../ui/theme/constants';\nimport * as Styled from './input-wrapper-styled';\n\nconst InputWrapper = ({ children, helperText, actionElement, isLoading }: IInputWrapperProps) => {\n const theme = useTheme();\n const isMobile = theme.device <= EDeviceType.MOBILE;\n\n return (\n <FlexView\n $flex={1}\n $gutterX={isMobile ? 1.5 : 2}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $width=\"100%\"\n >\n {children}\n <Styled.ContentWrapper $alignItems=\"center\" $justifyContent=\"center\">\n {helperText && (\n <FlexView $gutterX={isMobile ? 2.25 : 3.5}>\n <Text $renderAs=\"ub2\" $color=\"WHITE_T_60\" $align=\"center\" $whiteSpace=\"pre-line\">\n {helperText}\n </Text>\n <Separator heightX={0.5} />\n </FlexView>\n )}\n {actionElement && (\n <FlexView $justifyContent=\"center\" $alignItems=\"center\">\n {actionElement}\n <Separator heightX={1} />\n </FlexView>\n )}\n {isLoading && (\n <FlexView>\n <Separator heightX={isMobile ? 0.5 : 2} />\n <LottieAnimation\n src={LOTTIE.SPINNER_WHITE}\n height={isMobile ? 14 : 20}\n width={isMobile ? 14 : 40}\n />\n </FlexView>\n )}\n </Styled.ContentWrapper>\n </FlexView>\n );\n};\n\nexport default memo(InputWrapper);\n"],"names":["InputWrapper","children","helperText","actionElement","isLoading","isMobile","useTheme","EDeviceType","jsxs","FlexView","Styled.ContentWrapper","jsx","Text","Separator","LottieAnimation","LOTTIE","InputWrapper$1","memo"],"mappings":";;;;;;;;;;AAaA,MAAMA,IAAe,CAAC,EAAE,UAAAC,GAAU,YAAAC,GAAY,eAAAC,GAAe,WAAAC,QAAoC;AAEzF,QAAAC,IADQC,IACS,UAAUC,EAAY;AAG3C,SAAA,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,UAAUJ,IAAW,MAAM;AAAA,MAC3B,aAAY;AAAA,MACZ,iBAAgB;AAAA,MAChB,QAAO;AAAA,MAEN,UAAA;AAAA,QAAAJ;AAAA,0BACAS,GAAA,EAAsB,aAAY,UAAS,iBAAgB,UACzD,UAAA;AAAA,UAAAR,KACE,gBAAAM,EAAAC,GAAA,EAAS,UAAUJ,IAAW,OAAO,KACpC,UAAA;AAAA,YAAC,gBAAAM,EAAAC,GAAA,EAAK,WAAU,OAAM,QAAO,cAAa,QAAO,UAAS,aAAY,YACnE,UACHV,EAAA,CAAA;AAAA,YACA,gBAAAS,EAACE,GAAU,EAAA,SAAS,IAAK,CAAA;AAAA,UAAA,GAC3B;AAAA,UAEDV,KACE,gBAAAK,EAAAC,GAAA,EAAS,iBAAgB,UAAS,aAAY,UAC5C,UAAA;AAAA,YAAAN;AAAA,YACD,gBAAAQ,EAACE,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,UAAA,GACzB;AAAA,UAEDT,uBACEK,GACC,EAAA,UAAA;AAAA,YAAA,gBAAAE,EAACE,GAAU,EAAA,SAASR,IAAW,MAAM,GAAG;AAAA,YACxC,gBAAAM;AAAA,cAACG;AAAA,cAAA;AAAA,gBACC,KAAKC,EAAO;AAAA,gBACZ,QAAQV,IAAW,KAAK;AAAA,gBACxB,OAAOA,IAAW,KAAK;AAAA,cAAA;AAAA,YACzB;AAAA,UAAA,GACF;AAAA,QAAA,GAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,GAEeW,IAAAC,EAAKjB,CAAY;"}
@@ -12,10 +12,10 @@ import ee from "../body-layout/body-layout.js";
12
12
  import { ButtonWrapper as C } from "./goal-completion-date-selector-styled.js";
13
13
  import te from "./goal-completion-date-selector-view.js";
14
14
  import { lastDayOfMonth as v } from "../../../../../node_modules/date-fns/lastDayOfMonth.js";
15
- import { addDays as oe } from "../../../../../node_modules/date-fns/addDays.js";
16
- import { eachMonthOfInterval as se } from "../../../../../node_modules/date-fns/eachMonthOfInterval.js";
17
- import { addMonths as re } from "../../../../../node_modules/date-fns/addMonths.js";
15
+ import { eachMonthOfInterval as oe } from "../../../../../node_modules/date-fns/eachMonthOfInterval.js";
16
+ import { addMonths as se } from "../../../../../node_modules/date-fns/addMonths.js";
18
17
  import { formatDate as c } from "../../../../../node_modules/date-fns/format.js";
18
+ import { addDays as re } from "../../../../../node_modules/date-fns/addDays.js";
19
19
  const be = q(
20
20
  ({
21
21
  formData: D,
@@ -55,10 +55,10 @@ const be = q(
55
55
  flow: r ?? "CREATE",
56
56
  courseStream: O
57
57
  }), { testType: L, milestoneEndDate: t, committed: N } = D, { milestoneEndDate: w } = N, { title: j } = G, k = r === "EDIT" ? "Update goal" : "Create goal", T = /* @__PURE__ */ new Date(), n = c(T.setDate(T.getDate() + 1), "yyyy-MM-dd"), i = c(Date.now() + Q, "yyyy-MM-dd"), R = z(() => {
58
- const e = /* @__PURE__ */ new Date(), o = v(e) ? oe(e, 1) : e;
59
- return se({
58
+ const e = /* @__PURE__ */ new Date(), o = v(e) ? re(e, 1) : e;
59
+ return oe({
60
60
  start: o,
61
- end: re(o, 11)
61
+ end: se(o, 11)
62
62
  }).map((b) => {
63
63
  const x = v(b);
64
64
  return {
@@ -1,12 +1,12 @@
1
1
  import { startOfDay as s } from "../../../node_modules/date-fns/startOfDay.js";
2
- import { isToday as n } from "../../../node_modules/date-fns/isToday.js";
3
- import { isAfter as i } from "../../../node_modules/date-fns/isAfter.js";
4
- import { isBefore as f } from "../../../node_modules/date-fns/isBefore.js";
5
- import { addDays as d } from "../../../node_modules/date-fns/addDays.js";
2
+ import { isAfter as n } from "../../../node_modules/date-fns/isAfter.js";
3
+ import { isBefore as i } from "../../../node_modules/date-fns/isBefore.js";
4
+ import { addDays as f } from "../../../node_modules/date-fns/addDays.js";
5
+ import { isToday as d } from "../../../node_modules/date-fns/isToday.js";
6
6
  import { formatDate as m } from "../../../node_modules/date-fns/format.js";
7
7
  const u = (e) => {
8
- const o = /* @__PURE__ */ new Date(), t = new Date(e), r = d(s(o), 7);
9
- return n(t) ? `Today, ${m(t, "hh:mm a")}` : i(t, o) && f(t, r) ? m(t, "eee, hh:mm a") : m(t, "MMM dd, hh:mm a");
8
+ const o = /* @__PURE__ */ new Date(), t = new Date(e), r = f(s(o), 7);
9
+ return d(t) ? `Today, ${m(t, "hh:mm a")}` : n(t, o) && i(t, r) ? m(t, "eee, hh:mm a") : m(t, "MMM dd, hh:mm a");
10
10
  }, M = (e, o, t) => {
11
11
  const r = m(e * 1e3, "hh:mm a"), a = m((e + o + t) * 1e3, "hh:mm a");
12
12
  return `${r} - ${a}`;
@@ -0,0 +1,25 @@
1
+ import { GIF as t } from "../../../../../assets/gif/gif.js";
2
+ const o = [
3
+ {
4
+ icon: t.STAY_CONNECTED,
5
+ title: "STAY CONNECTED",
6
+ description: "Chat with your tutor and receive real-time updates.",
7
+ bgColor: "BLUE_6"
8
+ },
9
+ {
10
+ icon: t.TRACK_PROGRESS,
11
+ title: "TRACK PROGRESS",
12
+ description: "Progress, strengths, and areas of improvement.",
13
+ bgColor: "PURPLE_6"
14
+ },
15
+ {
16
+ icon: t.EASY_RESCHEDULING,
17
+ title: "EASY RESCHEDULING",
18
+ description: "Conveniently change your class timings.",
19
+ bgColor: "GREEN_6"
20
+ }
21
+ ];
22
+ export {
23
+ o as benefits
24
+ };
25
+ //# sourceMappingURL=cuemath-app-features-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cuemath-app-features-constants.js","sources":["../../../../../../src/features/trial-session/comps/pla/cuemath-app-features/cuemath-app-features-constants.ts"],"sourcesContent":["import type { ICuemathAppBenefit } from './cuemath-app-features-types';\n\nimport { GIF } from '../../../../../assets/gif/gif';\n\nexport const benefits: ICuemathAppBenefit[] = [\n {\n icon: GIF.STAY_CONNECTED,\n title: 'STAY CONNECTED',\n description: 'Chat with your tutor and receive real-time updates.',\n bgColor: 'BLUE_6',\n },\n {\n icon: GIF.TRACK_PROGRESS,\n title: 'TRACK PROGRESS',\n description: 'Progress, strengths, and areas of improvement.',\n bgColor: 'PURPLE_6',\n },\n {\n icon: GIF.EASY_RESCHEDULING,\n title: 'EASY RESCHEDULING',\n description: 'Conveniently change your class timings.',\n bgColor: 'GREEN_6',\n },\n];\n"],"names":["benefits","GIF"],"mappings":";AAIO,MAAMA,IAAiC;AAAA,EAC5C;AAAA,IACE,MAAMC,EAAI;AAAA,IACV,OAAO;AAAA,IACP,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAMA,EAAI;AAAA,IACV,OAAO;AAAA,IACP,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAMA,EAAI;AAAA,IACV,OAAO;AAAA,IACP,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AACF;"}
@@ -0,0 +1,15 @@
1
+ import i from "styled-components";
2
+ import t from "../../../../ui/layout/flex-view.js";
3
+ const h = i(t)(
4
+ ({ theme: e }) => `
5
+ height: 100%;
6
+ ${e.mediaQueries.minWidthTablet} {
7
+ width: 100%;
8
+ max-height: 250px;
9
+ }
10
+ `
11
+ );
12
+ export {
13
+ h as ImageWrapper
14
+ };
15
+ //# sourceMappingURL=cuemath-app-features-styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cuemath-app-features-styled.js","sources":["../../../../../../src/features/trial-session/comps/pla/cuemath-app-features/cuemath-app-features-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../../ui/layout/flex-view';\n\nexport const ImageWrapper = styled(FlexView)(\n ({ theme }) => `\n height: 100%;\n ${theme.mediaQueries.minWidthTablet} {\n width: 100%;\n max-height: 250px;\n }\n`,\n);\n"],"names":["ImageWrapper","styled","FlexView","theme"],"mappings":";;AAIa,MAAAA,IAAeC,EAAOC,CAAQ;AAAA,EACzC,CAAC,EAAE,OAAAC,EAAA,MAAY;AAAA;AAAA,IAEbA,EAAM,aAAa,cAAc;AAAA;AAAA;AAAA;AAAA;AAKrC;"}
@@ -0,0 +1,90 @@
1
+ import { jsxs as t, jsx as e, Fragment as s } from "react/jsx-runtime";
2
+ import { memo as $, useCallback as f } from "react";
3
+ import { useTheme as u } from "styled-components";
4
+ import { ILLUSTRATIONS as b } from "../../../../../assets/illustrations/illustrations.js";
5
+ import g from "../../../../../assets/line-icons/icons/next2.js";
6
+ import { CUEMATH_APP_URL as w } from "../../../../../constants/config.js";
7
+ import A from "../../../../ui/buttons/button/button.js";
8
+ import c from "../../../../ui/image/image.js";
9
+ import o from "../../../../ui/layout/flex-view.js";
10
+ import a from "../../../../ui/separator/separator.js";
11
+ import n from "../../../../ui/text/text.js";
12
+ import { EDeviceType as I } from "../../../../ui/theme/constants.js";
13
+ import { benefits as T } from "./cuemath-app-features-constants.js";
14
+ import { ImageWrapper as x } from "./cuemath-app-features-styled.js";
15
+ const E = () => {
16
+ const l = u(), r = l.device <= I.MOBILE, m = f(() => {
17
+ window.open(w, "_blank");
18
+ }, []);
19
+ return /* @__PURE__ */ t(o, { children: [
20
+ /* @__PURE__ */ t(o, { $flexDirection: "row", $justifyContent: "space-between", $alignItems: "center", children: [
21
+ /* @__PURE__ */ t(o, { children: [
22
+ /* @__PURE__ */ e(n, { $renderAs: "ah4-bold", $renderOnMobileAs: "ab1-bold", $color: "WHITE", children: "Do more with the Cuemath app" }),
23
+ !r && /* @__PURE__ */ t(s, { children: [
24
+ /* @__PURE__ */ e(a, { height: 4 }),
25
+ /* @__PURE__ */ t(o, { $flexDirection: "row", $alignItems: "center", $flexColumnGapX: 0.25, children: [
26
+ /* @__PURE__ */ e(n, { $renderAs: "ub1", $color: "WHITE_T_60", children: "Scan QR to download the app" }),
27
+ /* @__PURE__ */ e(g, { height: 24, width: 24, color: l.colors.WHITE_T_60 })
28
+ ] })
29
+ ] })
30
+ ] }),
31
+ !r && /* @__PURE__ */ e(o, { $background: "WHITE", children: /* @__PURE__ */ e(c, { src: b.CUEMATH_APP_QR_CODE, width: 60, height: 60 }) })
32
+ ] }),
33
+ /* @__PURE__ */ e(a, { height: r ? 16 : 20 }),
34
+ /* @__PURE__ */ e(o, { $flexGapX: 1, $justifyContent: "center", $flexDirection: r ? "column" : "row", children: T.map(({ icon: h, title: i, description: p, bgColor: d }) => /* @__PURE__ */ t(
35
+ o,
36
+ {
37
+ $flex: 1,
38
+ $flexDirection: r ? "row" : "column",
39
+ $alignItems: r ? "normal" : "center",
40
+ children: [
41
+ /* @__PURE__ */ e(
42
+ x,
43
+ {
44
+ $height: r ? "auto" : "100%",
45
+ $width: r ? "auto" : "100%",
46
+ children: /* @__PURE__ */ e(
47
+ c,
48
+ {
49
+ src: h,
50
+ height: r ? "auto" : 250,
51
+ width: r ? 84 : "100%",
52
+ alt: i
53
+ }
54
+ )
55
+ }
56
+ ),
57
+ /* @__PURE__ */ t(
58
+ o,
59
+ {
60
+ $background: d,
61
+ $gutterX: r ? 1 : 1.5,
62
+ $gapX: r ? 1 : 1.5,
63
+ $flex: 1,
64
+ $width: "100%",
65
+ children: [
66
+ /* @__PURE__ */ e(n, { $renderAs: "ac3-black", $color: "WHITE", $renderOnMobileAs: "ac4-black", children: i }),
67
+ /* @__PURE__ */ e(n, { $renderAs: "ub3", $color: "WHITE", children: p })
68
+ ]
69
+ }
70
+ )
71
+ ]
72
+ },
73
+ i
74
+ )) }),
75
+ r && /* @__PURE__ */ e(o, { $gapX: 1, children: /* @__PURE__ */ e(
76
+ A,
77
+ {
78
+ label: "Download the app",
79
+ renderAs: "secondary",
80
+ size: "small",
81
+ shape: "square",
82
+ onClick: m
83
+ }
84
+ ) })
85
+ ] });
86
+ }, R = $(E);
87
+ export {
88
+ R as default
89
+ };
90
+ //# sourceMappingURL=cuemath-app-features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cuemath-app-features.js","sources":["../../../../../../src/features/trial-session/comps/pla/cuemath-app-features/cuemath-app-features.tsx"],"sourcesContent":["import { memo, useCallback, type FC } from 'react';\nimport { useTheme } from 'styled-components';\n\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport Next2Icon from '../../../../../assets/line-icons/icons/next2';\nimport { CUEMATH_APP_URL } from '../../../../../constants/config';\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 { EDeviceType } from '../../../../ui/theme/constants';\nimport { benefits } from './cuemath-app-features-constants';\nimport * as Styled from './cuemath-app-features-styled';\n\nconst CuemathAppFeatures: FC = () => {\n const theme = useTheme();\n const isMobile = theme.device <= EDeviceType.MOBILE;\n\n const handleOpenApp = useCallback(() => {\n window.open(CUEMATH_APP_URL, '_blank');\n }, []);\n\n return (\n <FlexView>\n <FlexView $flexDirection=\"row\" $justifyContent=\"space-between\" $alignItems=\"center\">\n <FlexView>\n <Text $renderAs=\"ah4-bold\" $renderOnMobileAs=\"ab1-bold\" $color=\"WHITE\">\n Do more with the Cuemath app\n </Text>\n {!isMobile && (\n <>\n <Separator height={4} />\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexColumnGapX={0.25}>\n <Text $renderAs=\"ub1\" $color=\"WHITE_T_60\">\n Scan QR to download the app\n </Text>\n <Next2Icon height={24} width={24} color={theme.colors.WHITE_T_60} />\n </FlexView>\n </>\n )}\n </FlexView>\n {!isMobile && (\n <FlexView $background=\"WHITE\">\n <Image src={ILLUSTRATIONS.CUEMATH_APP_QR_CODE} width={60} height={60} />\n </FlexView>\n )}\n </FlexView>\n <Separator height={isMobile ? 16 : 20} />\n <FlexView $flexGapX={1} $justifyContent=\"center\" $flexDirection={isMobile ? 'column' : 'row'}>\n {benefits.map(({ icon, title, description, bgColor }) => (\n <FlexView\n key={title}\n $flex={1}\n $flexDirection={isMobile ? 'row' : 'column'}\n $alignItems={isMobile ? 'normal' : 'center'}\n >\n <Styled.ImageWrapper\n $height={isMobile ? 'auto' : '100%'}\n $width={isMobile ? 'auto' : '100%'}\n >\n <Image\n src={icon}\n height={isMobile ? 'auto' : 250}\n width={isMobile ? 84 : '100%'}\n alt={title}\n />\n </Styled.ImageWrapper>\n <FlexView\n $background={bgColor}\n $gutterX={isMobile ? 1 : 1.5}\n $gapX={isMobile ? 1 : 1.5}\n $flex={1}\n $width=\"100%\"\n >\n <Text $renderAs=\"ac3-black\" $color=\"WHITE\" $renderOnMobileAs=\"ac4-black\">\n {title}\n </Text>\n <Text $renderAs=\"ub3\" $color=\"WHITE\">\n {description}\n </Text>\n </FlexView>\n </FlexView>\n ))}\n </FlexView>\n {isMobile && (\n <FlexView $gapX={1}>\n <Button\n label=\"Download the app\"\n renderAs=\"secondary\"\n size=\"small\"\n shape=\"square\"\n onClick={handleOpenApp}\n />\n </FlexView>\n )}\n </FlexView>\n );\n};\n\nexport default memo(CuemathAppFeatures);\n"],"names":["CuemathAppFeatures","theme","useTheme","isMobile","EDeviceType","handleOpenApp","useCallback","CUEMATH_APP_URL","FlexView","jsxs","jsx","Text","Fragment","Separator","Next2Icon","Image","ILLUSTRATIONS","benefits","icon","title","description","bgColor","Styled.ImageWrapper","Button","cuemathAppFeatures","memo"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { GIF as t } from "../../../../../assets/gif/gif.js";
2
+ const a = [
3
+ {
4
+ title: "Strategy Games",
5
+ image: t.GAMES
6
+ },
7
+ {
8
+ title: "Logic Puzzles",
9
+ image: t.PUZZLES
10
+ },
11
+ {
12
+ title: "Mental Math",
13
+ image: t.SKILLS
14
+ }
15
+ ];
16
+ export {
17
+ a as mathPracticeData
18
+ };
19
+ //# sourceMappingURL=math-practice-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math-practice-constants.js","sources":["../../../../../../src/features/trial-session/comps/pla/math-practice/math-practice-constants.ts"],"sourcesContent":["import { GIF } from '../../../../../assets/gif/gif';\n\nexport const mathPracticeData = [\n {\n title: 'Strategy Games',\n image: GIF.GAMES,\n },\n {\n title: 'Logic Puzzles',\n image: GIF.PUZZLES,\n },\n {\n title: 'Mental Math',\n image: GIF.SKILLS,\n },\n];\n"],"names":["mathPracticeData","GIF"],"mappings":";AAEO,MAAMA,IAAmB;AAAA,EAC9B;AAAA,IACE,OAAO;AAAA,IACP,OAAOC,EAAI;AAAA,EACb;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAOA,EAAI;AAAA,EACb;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,OAAOA,EAAI;AAAA,EACb;AACF;"}