fansunited-frontend-components 0.0.1-RC5 → 0.0.1-RC6

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 (88) hide show
  1. package/classic-quiz-play.es.js +4 -4
  2. package/classic-quiz-play.umd.js +1 -1
  3. package/package.json +1 -1
  4. package/src/components/ClassicQuizNotFound.d.ts +2 -1
  5. package/src/components/ClassicQuizPlay.d.ts +3 -2
  6. package/src/components/Leads/CollectLead.d.ts +2 -1
  7. package/src/components/Leads/LeadAgreementCheckbox.d.ts +3 -2
  8. package/src/components/Leads/LeadForm.d.ts +2 -1
  9. package/src/components/Shared/Answers/Answers.d.ts +3 -2
  10. package/src/components/Shared/Answers/Option.d.ts +3 -2
  11. package/src/components/Shared/Button.d.ts +2 -1
  12. package/src/components/Shared/MainCard.d.ts +2 -1
  13. package/src/components/Shared/Pagination.d.ts +3 -2
  14. package/src/components/Shared/PresentedBy.d.ts +2 -1
  15. package/src/components/Shared/ScoreStateWrapper.d.ts +4 -3
  16. package/src/components/Shared/Stepper.d.ts +3 -2
  17. package/src/components/Shared/Stopwatch.d.ts +2 -1
  18. package/src/components/Variants/Overlay/AuthError/OverlayAuthError.d.ts +3 -2
  19. package/src/components/Variants/Overlay/AuthError/OverlayAuthError.styles.d.ts +3 -2
  20. package/src/components/Variants/Overlay/OverlayVariant.d.ts +3 -2
  21. package/src/components/Variants/Overlay/OverlayVariant.styles.d.ts +4 -3
  22. package/src/components/Variants/Overlay/ScoreState/OverlayScoreState.d.ts +4 -3
  23. package/src/components/Variants/Overlay/ScoreState/OverlayScoreState.styles.d.ts +4 -3
  24. package/src/components/Variants/Split/AuthError/SplitAuthError.d.ts +3 -2
  25. package/src/components/Variants/Split/AuthError/SplitAuthError.styles.d.ts +3 -2
  26. package/src/components/Variants/Split/ScoreState/SplitScoreState.d.ts +4 -3
  27. package/src/components/Variants/Split/ScoreState/SplitScoreState.styles.d.ts +4 -3
  28. package/src/components/Variants/Split/SplitVariant.d.ts +3 -2
  29. package/src/components/Variants/Split/SplitVariant.styles.d.ts +4 -3
  30. package/src/components/Variants/Standard/AuthError/StandardAuthError.d.ts +3 -2
  31. package/src/components/Variants/Standard/AuthError/StandardAuthError.styles.d.ts +4 -3
  32. package/src/components/Variants/Standard/ScoreState/StandardScoreState.d.ts +4 -3
  33. package/src/components/Variants/Standard/ScoreState/StandardScoreState.styles.d.ts +4 -3
  34. package/src/components/Variants/Standard/StandardVariant.d.ts +4 -3
  35. package/src/components/Variants/Standard/StandardVariant.styles.d.ts +4 -3
  36. package/src/constants/constants.d.ts +2 -1
  37. package/src/hooks/useClassicQuizById.d.ts +2 -1
  38. package/src/hooks/useEmbedCodeContainer.d.ts +1 -1
  39. package/src/hooks/useMyParticipation.d.ts +2 -1
  40. package/src/hooks/useScoreStateHelpers.d.ts +3 -2
  41. package/src/index.d.ts +2 -1
  42. package/src/main.d.ts +3 -2
  43. package/src/main.d.ts.map +1 -1
  44. package/src/types/types.d.ts +3 -2
  45. package/src/components/ClassicQuizNotFound.js +0 -55
  46. package/src/components/ClassicQuizPlay.js +0 -321
  47. package/src/components/Leads/CollectLead.js +0 -20
  48. package/src/components/Leads/LeadAgreementCheckbox.js +0 -45
  49. package/src/components/Leads/LeadForm.js +0 -289
  50. package/src/components/Shared/AlertMessage.js +0 -37
  51. package/src/components/Shared/Answers/Answers.js +0 -31
  52. package/src/components/Shared/Answers/Option.js +0 -118
  53. package/src/components/Shared/Button.js +0 -43
  54. package/src/components/Shared/MainCard.js +0 -24
  55. package/src/components/Shared/Pagination.js +0 -118
  56. package/src/components/Shared/PresentedBy.js +0 -51
  57. package/src/components/Shared/ScoreStateWrapper.js +0 -254
  58. package/src/components/Shared/Stepper.js +0 -75
  59. package/src/components/Shared/Stopwatch.js +0 -103
  60. package/src/components/Variants/Overlay/AuthError/OverlayAuthError.js +0 -68
  61. package/src/components/Variants/Overlay/AuthError/OverlayAuthError.styles.js +0 -103
  62. package/src/components/Variants/Overlay/OverlayVariant.js +0 -100
  63. package/src/components/Variants/Overlay/OverlayVariant.styles.js +0 -266
  64. package/src/components/Variants/Overlay/ScoreState/OverlayScoreState.js +0 -90
  65. package/src/components/Variants/Overlay/ScoreState/OverlayScoreState.styles.js +0 -374
  66. package/src/components/Variants/Split/AuthError/SplitAuthError.js +0 -44
  67. package/src/components/Variants/Split/AuthError/SplitAuthError.styles.js +0 -95
  68. package/src/components/Variants/Split/ScoreState/SplitScoreState.js +0 -84
  69. package/src/components/Variants/Split/ScoreState/SplitScoreState.styles.js +0 -400
  70. package/src/components/Variants/Split/SplitVariant.js +0 -79
  71. package/src/components/Variants/Split/SplitVariant.styles.js +0 -216
  72. package/src/components/Variants/Standard/AuthError/StandardAuthError.js +0 -43
  73. package/src/components/Variants/Standard/AuthError/StandardAuthError.styles.js +0 -201
  74. package/src/components/Variants/Standard/ScoreState/StandardScoreState.js +0 -78
  75. package/src/components/Variants/Standard/ScoreState/StandardScoreState.styles.js +0 -349
  76. package/src/components/Variants/Standard/StandardVariant.js +0 -82
  77. package/src/components/Variants/Standard/StandardVariant.styles.js +0 -373
  78. package/src/constants/constants.js +0 -446
  79. package/src/hooks/useClassicQuizById.js +0 -20
  80. package/src/hooks/useEmbedCodeContainer.js +0 -38
  81. package/src/hooks/useMyParticipation.js +0 -22
  82. package/src/hooks/useScoreStateHelpers.js +0 -156
  83. package/src/index.js +0 -2
  84. package/src/main.js +0 -53
  85. package/src/services/service.js +0 -1
  86. package/src/styles/form.styles.js +0 -18
  87. package/src/types/types.js +0 -1
  88. package/tsconfig.tsbuildinfo +0 -1
@@ -1,82 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import React from "react";
3
- import { Box, Typography, Button as JoyButton, AspectRatio } from "@mui/joy";
4
- import { hexToRgb, stripHtmlTags, useImageUrl, useFontFamily, useCornerRadius, useColors, isMobile, useSpacingScale, useInternalTheme, } from "@fansunited/common";
5
- import ArrowRightAltIcon from "@mui/icons-material/ArrowRightAlt";
6
- import Button from "../../Shared/Button";
7
- import Answers from "../../Shared/Answers/Answers";
8
- import Stepper from "../../Shared/Stepper";
9
- import Stopwatch from "../../Shared/Stopwatch";
10
- import MainCard from "../../Shared/MainCard";
11
- import { useTranslation } from "react-i18next";
12
- import PresentedBy from "../../Shared/PresentedBy";
13
- import CollectLead from "../../Leads/CollectLead";
14
- import { quizTypes } from "../../../constants/constants";
15
- import { useEmbedCode } from "../../../hooks/useEmbedCodeContainer";
16
- import { createStyles } from "./StandardVariant.styles";
17
- const StandardVariant = (props) => {
18
- const [showLead, setShowLead] = React.useState(props.leads?.position === "before" &&
19
- props.classicQuiz.authRequirement === "LEAD");
20
- const embedContainerRef = useEmbedCode(props.question.embedCode, props.applyFilterScreen);
21
- const internalTheme = useInternalTheme();
22
- const quizImage = useImageUrl(props.classicQuiz.images);
23
- const questionImage = useImageUrl(props.question.images);
24
- const { t } = useTranslation();
25
- const brandingColors = props.classicQuiz.branding?.colors || null;
26
- const brandingLogo = isMobile()
27
- ? props.classicQuiz.branding?.images.mobileLogo ||
28
- props.classicQuiz.branding?.images.mainLogo ||
29
- ""
30
- : props.classicQuiz.branding?.images.mainLogo || "";
31
- const imagePosition = props.imagePosition || "left";
32
- // Styling variables
33
- const textColor = brandingColors?.contentColor || useColors().textColor;
34
- const secondaryColor = brandingColors?.secondaryColor || useColors().textColor;
35
- const fontFamilySecondary = useFontFamily().secondary;
36
- const opacity = "60%";
37
- const fontFamilyPrimary = useFontFamily().primary;
38
- const bgcolor = brandingColors?.backgroundColor || useColors().surfaceVariant;
39
- const mdBorderRadius = useCornerRadius().md;
40
- const smBorderRadius = useCornerRadius().sm;
41
- const primaryColor = brandingColors?.primaryColor || useColors().palette.primary.plainColor;
42
- const buttonRadius = useCornerRadius().xl;
43
- const spacingScale = useSpacingScale();
44
- // Create styles with current props/theme values
45
- const styles = createStyles({
46
- quizImage,
47
- questionImage,
48
- spacingScale,
49
- borderRadius: useCornerRadius(),
50
- fontFamilyPrimary,
51
- fontFamilySecondary,
52
- textColor,
53
- secondaryColor,
54
- bgcolor: hexToRgb(bgcolor || ""),
55
- mdBorderRadius,
56
- smBorderRadius,
57
- primaryColor,
58
- buttonRadius,
59
- opacity,
60
- brandingColors,
61
- imagePosition,
62
- applyFilterScreen: props.applyFilterScreen,
63
- darkTextColor: internalTheme.colorSchemes.dark.textColor,
64
- });
65
- const closeLeadForm = () => {
66
- setShowLead(false);
67
- };
68
- const renderStartButton = () => (_jsx(JoyButton, { variant: "soft", sx: {
69
- ...styles.startButton,
70
- ...styles.pulseAnimation,
71
- }, endDecorator: _jsx(ArrowRightAltIcon, {}), onClick: props.startPlaying, children: _jsx(Typography, { sx: styles.startButtonText, children: t("classicQuiz.buttons.start") }) }));
72
- const renderPresentedBy = (textColor) => (_jsx(PresentedBy, { brandingLogo: brandingLogo, textColor: textColor }));
73
- const renderStartButtonWithPresentedBy = (textColorOverride) => (_jsxs(Box, { sx: styles.startButtonContainer, children: [renderStartButton(), renderPresentedBy(textColorOverride || textColor)] }));
74
- return (_jsxs(MainCard, { brandingBorderColor: brandingColors?.borderColor || null, children: [quizImage ? (_jsx(Box, { sx: styles.mobileHeadlineWithImage, children: _jsxs(Box, { sx: styles.mobileHeadlineContent, children: [_jsxs(Box, { children: [_jsx(Typography, { level: "body-sm", sx: styles.headlineTypographyMobileImage, children: t("classicQuiz.headline") }), _jsxs(Box, { sx: styles.contentContainer, children: [_jsx(Typography, { level: "body-lg", sx: styles.titleTypographyMobileImage, children: props.classicQuiz.title }), _jsx(Typography, { level: "body-md", sx: styles.descriptionTypographyMobileImage, children: stripHtmlTags(props.classicQuiz.description) })] })] }), props.applyFilterScreen && (_jsx(Box, { children: renderStartButtonWithPresentedBy(brandingColors?.contentColor ||
75
- internalTheme.colorSchemes.dark.textColor) }))] }) })) : (_jsxs(Box, { sx: styles.mobileHeadlineWithoutImage, children: [_jsxs(Box, { children: [_jsx(Typography, { level: "body-sm", sx: styles.headlineTypography, children: t("classicQuiz.headline") }), _jsxs(Box, { sx: styles.contentContainer, children: [_jsx(Typography, { level: "h4", sx: styles.titleTypography, children: props.classicQuiz.title }), _jsx(Typography, { level: "body-md", sx: styles.descriptionTypography, children: stripHtmlTags(props.classicQuiz.description) })] })] }), props.applyFilterScreen && (_jsx(Box, { children: renderStartButtonWithPresentedBy() }))] })), quizImage && imagePosition === "left" && (_jsx(Box, { sx: styles.imageContainerLeft, children: _jsx("img", { src: quizImage, alt: "Quiz illustration", style: styles.quizImage }) })), _jsxs(Box, { sx: styles.mainContentArea, children: [_jsx(Box, { children: _jsxs(Box, { sx: styles.desktopHeadlineContainer, children: [_jsxs(Box, { children: [_jsx(Typography, { level: "body-sm", sx: styles.headlineTypographyDesktop, children: t("classicQuiz.headline") }), _jsxs(Box, { sx: styles.contentContainer, children: [_jsx(Typography, { level: "h4", sx: styles.titleTypographyDesktop, children: props.classicQuiz.title }), _jsx(Typography, { level: "body-md", sx: styles.descriptionTypographyDesktop, children: stripHtmlTags(props.classicQuiz.description) })] })] }), props.applyFilterScreen && (_jsx(Box, { children: renderStartButtonWithPresentedBy() }))] }) }), props.applyFilterScreen ? (_jsx(Box, { sx: styles.hiddenDesktopFilterContainer, children: renderStartButtonWithPresentedBy() })) : (_jsx(_Fragment, { children: showLead ? (_jsx(Box, { sx: styles.leadCollectionContainer, children: _jsx(Box, { sx: styles.leadQuestionContainer, children: _jsx(Box, { sx: styles.leadContentContainer, children: _jsx(CollectLead, { sdk: props.sdk, contentType: "quiz", startGame: closeLeadForm, contentId: props.classicQuiz.id, contentName: props.classicQuiz.title, brandingColors: props.classicQuiz.branding?.colors, brandingUrls: props.classicQuiz.branding?.urls, campaignId: props.leads?.campaignId, campaignName: props.leads?.campaignName, fields: props.leads?.fields, leadTitle: props.classicQuiz.labels?.leadTitle, leadDescription: props.classicQuiz.labels?.leadDescription, leadCta: props.classicQuiz.labels?.leadCta, leadSuccessTitle: props.classicQuiz.labels?.leadSuccessTitle, leadSuccessDescription: props.classicQuiz.labels?.leadSuccessDescription }) }) }) })) : (_jsxs(_Fragment, { children: [quizTypes.includes(props.classicQuiz.type?.toLocaleLowerCase()) && (_jsx(Box, { sx: styles.stopwatchContainer, children: _jsx(Stopwatch, { isRunning: props.isStopwatchRunning, timer: props.stopwatchTime, quizType: props.classicQuiz.type, initialTime: props.classicQuiz.time || 10, brandingPrimaryColor: brandingColors?.primaryColor || null, onTimeUpdate: props.onTimeUpdate }) })), _jsx(Box, { sx: styles.paginationContainer, children: _jsx(Stepper, { classicQuiz: props.classicQuiz, currentQuestion: props.currentQuestion, userParticipation: props.userParticipation, brandingPrimaryColor: brandingColors?.primaryColor }) }), _jsx(Box, { sx: styles.questionArea, children: _jsxs(Box, { sx: styles.questionContainer, children: [_jsxs(Box, { sx: styles.questionContentContainer, children: [props.question.embedCode && (_jsx(AspectRatio, { ratio: "16/9", sx: styles.aspectRatioContainer, children: _jsx(Box, { ref: embedContainerRef }) })), !props.question.embedCode && questionImage && (_jsx(AspectRatio, { ratio: "16/9", sx: styles.questionImageContainer, children: _jsx(Box, { sx: styles.questionImageBox, children: _jsx("img", { src: questionImage, alt: "Question illustration", style: styles.questionImage }) }) })), _jsx(Box, { sx: styles.questionTextContainer, children: _jsx(Typography, { level: "body-lg", sx: styles.questionText, children: props.question.question }) }), _jsx(Answers, { options: props.question.options || [], answerQuestion: props.answerQuestion, selectedOption: props.selectedOption, showAnswer: props.showAnswer, twoByTwo: true, questionImage: questionImage, brandingColors: brandingColors })] }), _jsxs(Box, { sx: brandingLogo
76
- ? styles.footerContainer
77
- : styles.footerContainerNoLogo, children: [_jsx(Box, { sx: styles.presentedByDesktop, children: renderPresentedBy(textColor) }), _jsx(Button, { showAnswer: props.showAnswer, selectedOption: props.selectedOption, endDecorator: _jsx(ArrowRightAltIcon, {}), label: props.currentQuestion ===
78
- props.classicQuiz.questionsCount
79
- ? t("classicQuiz.buttons.finish")
80
- : t("classicQuiz.buttons.next"), buttonColor: primaryColor, onClick: props.handleNext })] }), _jsx(Box, { sx: styles.presentedByMobile, children: renderPresentedBy(textColor) })] }) })] })) }))] }), quizImage && imagePosition === "right" && (_jsx(Box, { sx: styles.imageContainerRight, children: _jsx("img", { src: quizImage, alt: "Quiz illustration", style: styles.quizImage }) }))] }));
81
- };
82
- export default StandardVariant;
@@ -1,373 +0,0 @@
1
- export const createStyles = (props) => ({
2
- // Pulse animation for buttons
3
- pulseAnimation: {
4
- "@keyframes pulse": {
5
- "0%": { transform: "scale(1)" },
6
- "50%": { transform: "scale(1.05)" },
7
- "100%": { transform: "scale(1)" },
8
- },
9
- },
10
- // Mobile headline with image background
11
- mobileHeadlineWithImage: {
12
- display: { xs: "flex", md: "none" },
13
- flexDirection: "column",
14
- justifyContent: "space-between",
15
- gap: "10px",
16
- backgroundImage: `url(${props.quizImage})`,
17
- backgroundSize: "cover",
18
- backgroundPosition: "center",
19
- borderTopLeftRadius: "5px",
20
- borderTopRightRadius: "5px",
21
- position: "relative",
22
- minHeight: "210px",
23
- overflow: "hidden",
24
- height: "auto",
25
- "&::before": {
26
- content: '""',
27
- position: "absolute",
28
- width: "100%",
29
- height: "100%",
30
- background: "linear-gradient(rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0.7) 100%)",
31
- borderTopLeftRadius: "5px",
32
- borderTopRightRadius: "5px",
33
- },
34
- },
35
- // Mobile headline content
36
- mobileHeadlineContent: {
37
- zIndex: 1,
38
- height: "100%",
39
- p: props.spacingScale.xl,
40
- gap: props.spacingScale["2xl"],
41
- display: "flex",
42
- flexDirection: "column",
43
- justifyContent: "space-between",
44
- },
45
- // Mobile headline without image
46
- mobileHeadlineWithoutImage: {
47
- display: { xs: "flex", md: "none" },
48
- flex: "0.5",
49
- flexDirection: "column",
50
- justifyContent: "space-between",
51
- p: props.spacingScale.lg,
52
- gap: props.spacingScale["2xl"],
53
- },
54
- // Headline typography (mobile with image)
55
- headlineTypographyMobileImage: {
56
- fontWeight: 500,
57
- lineHeight: "166%",
58
- letterSpacing: "1px",
59
- fontSize: "0.75rem",
60
- color: props.brandingColors?.secondaryColor || props.darkTextColor,
61
- opacity: "70%",
62
- textTransform: "uppercase",
63
- fontFamily: props.fontFamilySecondary,
64
- textAlign: "center",
65
- },
66
- // Headline typography (mobile without image & desktop)
67
- headlineTypography: {
68
- fontWeight: 500,
69
- lineHeight: "166%",
70
- letterSpacing: "1px",
71
- textTransform: "uppercase",
72
- fontSize: "0.75rem",
73
- color: props.secondaryColor,
74
- opacity: props.opacity,
75
- fontFamily: props.fontFamilySecondary,
76
- textAlign: { xs: "center", md: "left" },
77
- },
78
- // Headline typography (desktop centered)
79
- headlineTypographyDesktop: {
80
- fontWeight: 500,
81
- lineHeight: "166%",
82
- letterSpacing: "1px",
83
- textTransform: "uppercase",
84
- fontSize: "0.75rem",
85
- color: props.secondaryColor,
86
- opacity: props.opacity,
87
- fontFamily: props.fontFamilySecondary,
88
- },
89
- // Content container
90
- contentContainer: {
91
- display: "flex",
92
- flexDirection: "column",
93
- gap: props.spacingScale["3xs"],
94
- },
95
- // Title typography (mobile with image)
96
- titleTypographyMobileImage: {
97
- fontWeight: 700,
98
- lineHeight: "133%",
99
- fontSize: "1.5rem",
100
- letterSpacing: "0.15px",
101
- color: props.brandingColors?.contentColor || props.darkTextColor,
102
- fontFamily: props.fontFamilyPrimary,
103
- textAlign: "center",
104
- },
105
- // Title typography (mobile without image & desktop responsive)
106
- titleTypography: {
107
- fontWeight: 700,
108
- lineHeight: "133%",
109
- letterSpacing: "0px",
110
- fontSize: "1.5rem",
111
- color: props.textColor,
112
- fontFamily: props.fontFamilyPrimary,
113
- textAlign: { xs: "center", md: "left" },
114
- },
115
- // Title typography (desktop centered)
116
- titleTypographyDesktop: {
117
- fontWeight: 700,
118
- lineHeight: "133%",
119
- letterSpacing: "0px",
120
- fontSize: "1.5rem",
121
- color: props.textColor,
122
- fontFamily: props.fontFamilyPrimary,
123
- },
124
- // Description typography (mobile with image)
125
- descriptionTypographyMobileImage: {
126
- fontWeight: 500,
127
- lineHeight: "140%",
128
- fontSize: "1.25rem",
129
- letterSpacing: "0.15px",
130
- color: props.brandingColors?.secondaryColor || props.darkTextColor,
131
- opacity: "70%",
132
- fontFamily: props.fontFamilyPrimary,
133
- textAlign: "center",
134
- },
135
- // Description typography (mobile without image & desktop responsive)
136
- descriptionTypography: {
137
- fontWeight: 500,
138
- lineHeight: "140%",
139
- letterSpacing: "0.15px",
140
- fontSize: "1.25rem",
141
- color: props.secondaryColor,
142
- opacity: props.opacity,
143
- fontFamily: props.fontFamilyPrimary,
144
- textAlign: { xs: "center", md: "left" },
145
- },
146
- // Description typography (desktop centered)
147
- descriptionTypographyDesktop: {
148
- fontWeight: 500,
149
- lineHeight: "140%",
150
- letterSpacing: "0.15px",
151
- fontSize: "1.25rem",
152
- color: props.secondaryColor,
153
- opacity: props.opacity,
154
- fontFamily: props.fontFamilyPrimary,
155
- },
156
- // Start button container
157
- startButtonContainer: {
158
- display: "flex",
159
- flexDirection: "column",
160
- justifyContent: "space-between",
161
- alignItems: "center",
162
- gap: props.spacingScale["2xl"],
163
- },
164
- // Start button
165
- startButton: {
166
- borderRadius: props.buttonRadius,
167
- py: "10px",
168
- pr: "12px",
169
- pl: "16px",
170
- bgcolor: props.primaryColor,
171
- color: "#FFFFFF",
172
- transition: "all 300ms cubic-bezier(0.2, 0, 0, 1)",
173
- transform: "scale(1)",
174
- alignSelf: "center",
175
- "&:hover": {
176
- bgcolor: props.primaryColor,
177
- transform: "scale(1.02)",
178
- },
179
- "&:active": {
180
- color: "#FFFFFF",
181
- transform: "scale(0.98)",
182
- },
183
- "&:disabled": {
184
- bgcolor: "#000000",
185
- color: "#FFFFFF",
186
- opacity: "12%",
187
- },
188
- animation: "pulse 1s infinite",
189
- },
190
- // Start button text
191
- startButtonText: {
192
- fontFamily: props.fontFamilyPrimary,
193
- fontWeight: 500,
194
- fontSize: "0.9375rem",
195
- lineHeight: "24px",
196
- letterSpacing: "0.46px",
197
- textTransform: "uppercase",
198
- color: "#FFFFFF",
199
- gap: "8px",
200
- display: "flex",
201
- alignItems: "center",
202
- },
203
- // Image container (left position)
204
- imageContainerLeft: {
205
- display: { xs: "none", md: "block" },
206
- flex: "0.3",
207
- borderTopLeftRadius: props.mdBorderRadius,
208
- borderBottomLeftRadius: props.mdBorderRadius,
209
- overflow: "hidden",
210
- height: "auto",
211
- position: "relative",
212
- },
213
- // Image container (right position)
214
- imageContainerRight: {
215
- display: { xs: "none", md: "block" },
216
- flex: "0.3",
217
- borderTopRightRadius: "5px",
218
- borderBottomRightRadius: "5px",
219
- overflow: "hidden",
220
- height: "auto",
221
- position: "relative",
222
- },
223
- // Quiz image
224
- quizImage: {
225
- width: "100%",
226
- height: "100%",
227
- objectFit: "cover",
228
- },
229
- // Main content area
230
- mainContentArea: {
231
- flex: { xs: "1", md: props.quizImage ? "0.7" : "1" },
232
- display: {
233
- md: "flex",
234
- xs: props.applyFilterScreen ? "none" : "flex",
235
- },
236
- flexDirection: "column",
237
- p: props.spacingScale.md,
238
- gap: { xs: props.spacingScale.sm, md: props.spacingScale.md },
239
- },
240
- // Desktop headline container
241
- desktopHeadlineContainer: {
242
- display: { xs: "none", md: "flex" },
243
- flexDirection: "column",
244
- justifyContent: "space-between",
245
- gap: props.spacingScale["2xl"],
246
- textAlign: "center",
247
- },
248
- // Hidden desktop filter screen container
249
- hiddenDesktopFilterContainer: {
250
- display: { xs: "none", md: "none" },
251
- },
252
- // Stopwatch container
253
- stopwatchContainer: {
254
- display: "flex",
255
- justifyContent: "center",
256
- },
257
- // Pagination container
258
- paginationContainer: {
259
- display: "flex",
260
- flexDirection: "column",
261
- alignItems: "centered",
262
- gap: props.spacingScale.md,
263
- },
264
- // Lead collection container
265
- leadCollectionContainer: {
266
- display: "flex",
267
- flexDirection: "column",
268
- p: props.spacingScale.md,
269
- },
270
- // Lead question container
271
- leadQuestionContainer: {
272
- display: "flex",
273
- flexDirection: "column",
274
- gap: { xs: props.spacingScale.lg, md: props.spacingScale.md },
275
- },
276
- // Lead content container
277
- leadContentContainer: {
278
- borderRadius: props.mdBorderRadius,
279
- px: props.spacingScale.md,
280
- pt: props.spacingScale.md,
281
- pb: props.spacingScale.lg,
282
- gap: props.spacingScale.md,
283
- bgcolor: `rgba(${props.bgcolor ? props.bgcolor.replace(/[^\d,]/g, "") : ""}, 0.5)`,
284
- display: "flex",
285
- flexDirection: "column",
286
- backdropFilter: "blur(4px)",
287
- },
288
- // Question area
289
- questionArea: {
290
- display: "flex",
291
- flexDirection: "column",
292
- p: props.spacingScale.md,
293
- },
294
- // Question container
295
- questionContainer: {
296
- display: "flex",
297
- flexDirection: "column",
298
- gap: { xs: props.spacingScale.lg, md: props.spacingScale.md },
299
- },
300
- // Question content container
301
- questionContentContainer: {
302
- borderRadius: props.mdBorderRadius,
303
- px: props.spacingScale.md,
304
- pt: props.spacingScale.md,
305
- pb: props.spacingScale.lg,
306
- gap: props.spacingScale.md,
307
- bgcolor: `rgba(${props.bgcolor ? props.bgcolor.replace(/[^\d,]/g, "") : ""}, 0.5)`,
308
- display: "flex",
309
- flexDirection: "column",
310
- backdropFilter: "blur(4px)",
311
- },
312
- // Aspect ratio container for embed/image
313
- aspectRatioContainer: {
314
- borderRadius: props.smBorderRadius,
315
- },
316
- // Question image container
317
- questionImageContainer: {
318
- overflow: "hidden",
319
- borderRadius: props.smBorderRadius,
320
- },
321
- // Question image box
322
- questionImageBox: {
323
- borderRadius: props.smBorderRadius,
324
- overflow: "hidden",
325
- height: "auto",
326
- },
327
- // Question image
328
- questionImage: {
329
- width: "100%",
330
- height: "100%",
331
- objectFit: "cover",
332
- },
333
- // Question text container
334
- questionTextContainer: {
335
- gap: "8px",
336
- display: "flex",
337
- justifyContent: "center",
338
- },
339
- // Question text
340
- questionText: {
341
- fontFamily: props.fontFamilyPrimary,
342
- lineHeight: "150%",
343
- letterSpacing: "0.15px",
344
- fontWeight: 500,
345
- fontSize: "1.25rem",
346
- textAlign: "center",
347
- color: props.textColor,
348
- },
349
- // Footer container
350
- footerContainer: {
351
- display: "flex",
352
- flexDirection: { xs: "column", md: "row" },
353
- justifyContent: "space-between",
354
- alignItems: "center",
355
- gap: props.spacingScale.lg,
356
- },
357
- // Footer container (no logo)
358
- footerContainerNoLogo: {
359
- display: "flex",
360
- flexDirection: { xs: "column", md: "row" },
361
- justifyContent: "flex-end",
362
- alignItems: "center",
363
- gap: props.spacingScale.lg,
364
- },
365
- // Presented by desktop
366
- presentedByDesktop: {
367
- display: { xs: "none", md: "block" },
368
- },
369
- // Presented by mobile
370
- presentedByMobile: {
371
- display: { xs: "block", md: "none" },
372
- },
373
- });