@openeventkit/event-site 2.0.113 → 2.0.115
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/package.json +2 -2
- package/src/components/AuthComponent.js +29 -24
- package/src/components/Container.js +9 -0
- package/src/components/FooterMarketing.js +1 -1
- package/src/components/IconButton/index.js +21 -0
- package/src/components/IconButton/styles.module.scss +31 -0
- package/src/components/MarketingHero/ImagesColumn.js +41 -0
- package/src/components/MarketingHero/MainColumn.js +38 -0
- package/src/components/MarketingHero/index.js +44 -0
- package/src/components/MarketingHero/styles.module.scss +73 -0
- package/src/components/RegistrationLiteComponent.js +27 -25
- package/src/components/SponsorHeader.js +10 -21
- package/src/content/site-settings/index.json +1 -55
- package/src/styles/auth-component.module.scss +37 -0
- package/src/styles/fonts.scss +11 -16
- package/src/styles/marketing.module.scss +7 -11
- package/src/styles/style.scss +0 -49
- package/src/templates/content-page/Container.js +3 -0
- package/src/templates/content-page/template.js +3 -2
- package/src/templates/marketing-page-template/Container.js +3 -0
- package/src/templates/marketing-page-template/MainColumn.js +69 -0
- package/src/templates/marketing-page-template/Masonry.js +71 -0
- package/src/templates/marketing-page-template/index.js +72 -0
- package/src/templates/marketing-page-template/styles.module.scss +11 -0
- package/src/utils/hooks/index.js +5 -0
- package/src/utils/hooks/useResize.js +19 -0
- package/src/components/MarketingHeroComponent.js +0 -120
- package/src/styles/login-button.module.scss +0 -84
- package/src/styles/marketing-hero.module.scss +0 -200
- package/src/templates/marketing-page-template.js +0 -194
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openeventkit/event-site",
|
|
3
3
|
"description": "Event Site",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.115",
|
|
5
5
|
"author": "Tipit LLC",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@fortawesome/fontawesome-svg-core": "^6.5.2",
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"react-redux": "^7.2.6",
|
|
105
105
|
"react-rte": "^0.16.3",
|
|
106
106
|
"react-select": "^2.4.4",
|
|
107
|
-
"react-slick": "^0.
|
|
107
|
+
"react-slick": "^0.30.2",
|
|
108
108
|
"react-star-ratings": "^2.3.0",
|
|
109
109
|
"react-stars": "^2.2.5",
|
|
110
110
|
"react-tabs": "^3.0.0",
|
|
@@ -1,25 +1,27 @@
|
|
|
1
|
-
import React, { useEffect, useState, useMemo } from "react"
|
|
2
|
-
import
|
|
1
|
+
import React, { useEffect, useState, useMemo } from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import { navigate } from "gatsby";
|
|
3
4
|
import { connect } from "react-redux";
|
|
4
|
-
import URI from "urijs"
|
|
5
|
-
|
|
6
|
-
import LoginComponent from 'summit-registration-lite/dist/components/login';
|
|
7
|
-
import PasswordlessLoginComponent from 'summit-registration-lite/dist/components/login-passwordless';
|
|
5
|
+
import URI from "urijs";
|
|
6
|
+
|
|
8
7
|
import FragmentParser from "openstack-uicore-foundation/lib/utils/fragment-parser";
|
|
9
|
-
import { doLogin, passwordlessStart } from
|
|
8
|
+
import { doLogin, passwordlessStart } from "openstack-uicore-foundation/lib/security/methods";
|
|
10
9
|
import { setPasswordlessLogin, setUserOrder, checkOrderData } from "../actions/user-actions";
|
|
11
10
|
import { getThirdPartyProviders } from "../actions/base-actions";
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
import
|
|
15
|
-
import
|
|
11
|
+
|
|
12
|
+
// these two libraries are client-side only
|
|
13
|
+
import LoginComponent from "summit-registration-lite/dist/components/login";
|
|
14
|
+
import PasswordlessLoginComponent from "summit-registration-lite/dist/components/login-passwordless";
|
|
15
|
+
import "summit-registration-lite/dist/index.css";
|
|
16
|
+
import IconButton from "./IconButton";
|
|
16
17
|
import Link from "./Link";
|
|
17
18
|
|
|
19
|
+
import { getDefaultLocation, validateIdentityProviderButtons } from "@utils/loginUtils";
|
|
20
|
+
import { userHasAccessLevel, VirtualAccessLevel } from "@utils/authorizedGroups";
|
|
21
|
+
import useSiteSettings from "@utils/useSiteSettings";
|
|
18
22
|
import { PHASES } from "@utils/phasesUtils";
|
|
19
|
-
import { getDefaultLocation } from "@utils/loginUtils";
|
|
20
|
-
import { userHasAccessLevel, VirtualAccessLevel } from "../utils/authorizedGroups";
|
|
21
23
|
|
|
22
|
-
import
|
|
24
|
+
import styles from "../styles/auth-component.module.scss";
|
|
23
25
|
|
|
24
26
|
const AuthComponent = ({
|
|
25
27
|
getThirdPartyProviders,
|
|
@@ -166,23 +168,26 @@ const AuthComponent = ({
|
|
|
166
168
|
const { loginButton } = marketingPageSettings.hero.buttons;
|
|
167
169
|
|
|
168
170
|
const defaultLoginButton = () => (
|
|
169
|
-
<
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
<IconButton
|
|
172
|
+
iconClass="fa fa-2x fa-edit"
|
|
173
|
+
buttonText={loginButton.text}
|
|
174
|
+
onClick={handleOpenPopup}
|
|
175
|
+
/>
|
|
173
176
|
);
|
|
174
177
|
|
|
175
178
|
const defaultEnterButton = () => (
|
|
176
|
-
<Link
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
<Link
|
|
180
|
+
to={defaultPath}
|
|
181
|
+
>
|
|
182
|
+
<IconButton
|
|
183
|
+
iconClass="fa fa-2x fa-sign-in"
|
|
184
|
+
buttonText="Enter"
|
|
185
|
+
/>
|
|
181
186
|
</Link>
|
|
182
187
|
);
|
|
183
188
|
|
|
184
189
|
return (
|
|
185
|
-
<div style={style} className={styles.
|
|
190
|
+
<div style={style} className={styles.authComponent}>
|
|
186
191
|
{!isLoggedUser ?
|
|
187
192
|
renderLoginButton ? renderLoginButton(handleOpenPopup) : defaultLoginButton()
|
|
188
193
|
:
|
|
@@ -23,7 +23,7 @@ const FooterMarketing = () => (
|
|
|
23
23
|
{footerContent.social.networks.map((net, index) => (
|
|
24
24
|
net.display &&
|
|
25
25
|
<Link href={net.link} className={styles.link} key={index}>
|
|
26
|
-
<FontAwesomeIcon icon={`fa-brands ${net.icon}`} />
|
|
26
|
+
<FontAwesomeIcon icon={`fa-brands ${net.icon}`} size="lg" />
|
|
27
27
|
</Link>
|
|
28
28
|
))}
|
|
29
29
|
</div>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import styles from "./styles.module.scss";
|
|
3
|
+
|
|
4
|
+
const IconButton = ({
|
|
5
|
+
className = "",
|
|
6
|
+
iconClass = "",
|
|
7
|
+
buttonText,
|
|
8
|
+
onClick = () => {},
|
|
9
|
+
disabled = false
|
|
10
|
+
}) => (
|
|
11
|
+
<button
|
|
12
|
+
className={`button is-large mt-5 ${styles.button} ${className}`}
|
|
13
|
+
onClick={onClick}
|
|
14
|
+
disabled={disabled}
|
|
15
|
+
>
|
|
16
|
+
<i className={`icon ${iconClass}`} />
|
|
17
|
+
<b>{buttonText}</b>
|
|
18
|
+
</button>
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
export default IconButton;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
.button {
|
|
2
|
+
background-color: transparent!important;
|
|
3
|
+
color: #fff!important;
|
|
4
|
+
height: 5rem!important;
|
|
5
|
+
width: 20rem!important;
|
|
6
|
+
i {
|
|
7
|
+
color: #fff;
|
|
8
|
+
height: 1em!important;
|
|
9
|
+
width: 2.5em!important;
|
|
10
|
+
font-size: 1.8em!important;
|
|
11
|
+
}
|
|
12
|
+
b {
|
|
13
|
+
display: inline-block;
|
|
14
|
+
width: 100%;
|
|
15
|
+
text-align: center;
|
|
16
|
+
}
|
|
17
|
+
&:hover,
|
|
18
|
+
&:active {
|
|
19
|
+
border-color: #fff!important;
|
|
20
|
+
}
|
|
21
|
+
&:focus {
|
|
22
|
+
border-color: #fff!important;
|
|
23
|
+
}
|
|
24
|
+
&.register {
|
|
25
|
+
background-color: #fff!important;
|
|
26
|
+
color: #6d6e71!important;
|
|
27
|
+
i {
|
|
28
|
+
color: #6d6e71!important;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { GatsbyImage, getImage, getSrc } from "gatsby-plugin-image";
|
|
3
|
+
import Slider from "react-slick";
|
|
4
|
+
|
|
5
|
+
import styles from "./styles.module.scss";
|
|
6
|
+
|
|
7
|
+
const sliderSettings = {
|
|
8
|
+
autoplay: false,
|
|
9
|
+
autoplaySpeed: 5000,
|
|
10
|
+
infinite: true,
|
|
11
|
+
dots: false,
|
|
12
|
+
slidesToShow: 1,
|
|
13
|
+
slidesToScroll: 1
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const ImagesColumn = ({ images }) => {
|
|
17
|
+
return images.length === 0 ? null : (
|
|
18
|
+
<div className={`column is-half p-0 ${styles.imagesColumn}`}>
|
|
19
|
+
{images.length > 1 ? (
|
|
20
|
+
<Slider {...sliderSettings} >
|
|
21
|
+
{images.map((image, index) => (
|
|
22
|
+
<img
|
|
23
|
+
key={index}
|
|
24
|
+
src={getSrc(image.src)}
|
|
25
|
+
alt={image.alt}
|
|
26
|
+
/>
|
|
27
|
+
))}
|
|
28
|
+
</Slider>
|
|
29
|
+
) : (
|
|
30
|
+
<GatsbyImage
|
|
31
|
+
className={styles.singleImage}
|
|
32
|
+
image={getImage(images[0].src)}
|
|
33
|
+
alt={images[0].alt}
|
|
34
|
+
/>
|
|
35
|
+
)}
|
|
36
|
+
</div>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export default ImagesColumn;
|
|
41
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { getSrc } from "gatsby-plugin-image";
|
|
3
|
+
import AuthComponent from "../AuthComponent";
|
|
4
|
+
import RegistrationLiteComponent from "../RegistrationLiteComponent";
|
|
5
|
+
|
|
6
|
+
import styles from "./styles.module.scss";
|
|
7
|
+
|
|
8
|
+
const ButtonGroup = ({ location, registerButton, loginButton }) => (
|
|
9
|
+
<>
|
|
10
|
+
{registerButton?.display && (
|
|
11
|
+
<span className={styles.link}>
|
|
12
|
+
<RegistrationLiteComponent location={location} />
|
|
13
|
+
</span>
|
|
14
|
+
)}
|
|
15
|
+
{loginButton?.display && <AuthComponent location={location} />}
|
|
16
|
+
</>
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
const MainColumn = ({ location, title, subTitle, date, time, buttons, backgroundSrc, fullWidth }) => {
|
|
20
|
+
const backgroundImageStyle = backgroundSrc
|
|
21
|
+
? { backgroundImage: `url(${getSrc(backgroundSrc)})` }
|
|
22
|
+
: {};
|
|
23
|
+
return (
|
|
24
|
+
<div className={`column ${!fullWidth ? "is-half" : ""} p-0 ${styles.mainColumn}`} style={backgroundImageStyle}>
|
|
25
|
+
<div className={`hero-body ${styles.heroBody}`}>
|
|
26
|
+
{title && <h1 className="title">{title}</h1>}
|
|
27
|
+
{subTitle && <h2 className="subtitle">{subTitle}</h2>}
|
|
28
|
+
{date && <h4>{date}</h4>}
|
|
29
|
+
{time && <h4>{time}</h4>}
|
|
30
|
+
<div className={styles.heroButtons}>
|
|
31
|
+
<ButtonGroup {...buttons} location={location} />
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export default MainColumn;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import MainColumn from "./MainColumn";
|
|
4
|
+
import ImagesColumn from "./ImagesColumn";
|
|
5
|
+
|
|
6
|
+
import styles from "./styles.module.scss";
|
|
7
|
+
|
|
8
|
+
const MarketingHero = ({ location, data }) => {
|
|
9
|
+
const {
|
|
10
|
+
title,
|
|
11
|
+
subTitle,
|
|
12
|
+
date,
|
|
13
|
+
time,
|
|
14
|
+
buttons = {},
|
|
15
|
+
background,
|
|
16
|
+
images = []
|
|
17
|
+
} = data || {};
|
|
18
|
+
return (
|
|
19
|
+
<section>
|
|
20
|
+
<div className={"columns is-marginless"}>
|
|
21
|
+
<MainColumn
|
|
22
|
+
location={location}
|
|
23
|
+
title={title}
|
|
24
|
+
subTitle={subTitle}
|
|
25
|
+
date={date}
|
|
26
|
+
time={time}
|
|
27
|
+
buttons={buttons}
|
|
28
|
+
backgroundSrc={background?.src}
|
|
29
|
+
fullWidth={images.length === 0}
|
|
30
|
+
/>
|
|
31
|
+
{images.length > 0 && (
|
|
32
|
+
<ImagesColumn images={images} />
|
|
33
|
+
)}
|
|
34
|
+
</div>
|
|
35
|
+
</section>
|
|
36
|
+
);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
MarketingHero.propTypes = {
|
|
40
|
+
location: PropTypes.string.isRequired,
|
|
41
|
+
data: PropTypes.object
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export default MarketingHero;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
@import "../../styles/colors.scss";
|
|
2
|
+
|
|
3
|
+
.mainColumn {
|
|
4
|
+
background-color: var(--color_secondary_contrast);
|
|
5
|
+
min-height: 100%;
|
|
6
|
+
background-size: cover;
|
|
7
|
+
h1 {
|
|
8
|
+
font-size: calc(50px + (50 - 42) * (100vw - 250px) / (1080 - 250));
|
|
9
|
+
font-weight: bold;
|
|
10
|
+
margin-top: 0rem;
|
|
11
|
+
}
|
|
12
|
+
h2 {
|
|
13
|
+
font-size: calc(40px + (40 - 36) * (100vw - 250px) / (1080 - 20));
|
|
14
|
+
font-weight: normal;
|
|
15
|
+
}
|
|
16
|
+
h4 {
|
|
17
|
+
font-size: calc(22px + (22 - 14) * (100vw - 250px) / (1080 - 250));
|
|
18
|
+
font-weight: bold;
|
|
19
|
+
}
|
|
20
|
+
h1,
|
|
21
|
+
h2,
|
|
22
|
+
h4 {
|
|
23
|
+
color: var(--color_text_light);
|
|
24
|
+
}
|
|
25
|
+
.heroBody {
|
|
26
|
+
padding: 4rem 3rem;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.imagesColumn {
|
|
31
|
+
:global(.slick-slider) {
|
|
32
|
+
height: 100%; /* Ensure the slider takes the full height of its parent */
|
|
33
|
+
position: relative; /* Position the slider container */
|
|
34
|
+
:global(.slick-list) {
|
|
35
|
+
height: 100%; /* Ensure the slick-list takes the full height of its parent */
|
|
36
|
+
overflow: hidden; /* Hide any overflow to prevent scrollbar affecting layout */
|
|
37
|
+
:global(.slick-track) {
|
|
38
|
+
display: flex;
|
|
39
|
+
align-items: stretch;
|
|
40
|
+
height: 100%; /* Ensure the slick-track takes the full height */
|
|
41
|
+
:global(.slick-slide) {
|
|
42
|
+
display: flex;
|
|
43
|
+
justify-content: center;
|
|
44
|
+
align-items: stretch;
|
|
45
|
+
height: 100%; /* Ensure each slide takes the full height of the slick-track */
|
|
46
|
+
position: relative; /* Ensure relative positioning for the slide */
|
|
47
|
+
div {
|
|
48
|
+
width: 100%;
|
|
49
|
+
position: relative; /* Position the container for enforcing aspect ratio */
|
|
50
|
+
&::before {
|
|
51
|
+
content: ""; /* Create a pseudo-element */
|
|
52
|
+
display: block;
|
|
53
|
+
padding-top: 56.25%; /* 16:9 aspect ratio (9 / 16 * 100) */
|
|
54
|
+
}
|
|
55
|
+
img {
|
|
56
|
+
position: absolute;
|
|
57
|
+
top: 0;
|
|
58
|
+
left: 0;
|
|
59
|
+
width: 100%;
|
|
60
|
+
height: 100%;
|
|
61
|
+
object-fit: cover; /* Cover the entire container without distorting the image */
|
|
62
|
+
object-position: center; /* Center the image within the container */
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
.singleImage {
|
|
70
|
+
height: 100%;
|
|
71
|
+
background-size: cover;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import React, { useEffect, useState } from "react"
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
2
3
|
import * as Sentry from "@sentry/react";
|
|
3
|
-
import { navigate, withPrefix } from "gatsby"
|
|
4
|
+
import { navigate, withPrefix } from "gatsby";
|
|
4
5
|
import { connect } from "react-redux";
|
|
5
6
|
import URI from "urijs";
|
|
6
|
-
import PropTypes from 'prop-types';
|
|
7
|
-
|
|
8
|
-
// these two libraries are client-side only
|
|
9
|
-
import RegistrationLiteWidget from "summit-registration-lite/dist";
|
|
10
|
-
import "summit-registration-lite/dist/index.css";
|
|
11
|
-
import FragmentParser from "openstack-uicore-foundation/lib/utils/fragment-parser";
|
|
12
|
-
import {doLogin, passwordlessStart, getAccessToken} from "openstack-uicore-foundation/lib/security/methods"
|
|
13
|
-
import {doLogout} from "openstack-uicore-foundation/lib/security/actions"
|
|
14
|
-
import {getEnvVariable, SUMMIT_API_BASE_URL, OAUTH2_CLIENT_ID, REGISTRATION_BASE_URL, SUPPORT_EMAIL} from "../utils/envVariables"
|
|
15
|
-
import {getUserProfile, setPasswordlessLogin, setUserOrder, checkOrderData} from "../actions/user-actions";
|
|
16
|
-
import {getThirdPartyProviders} from "../actions/base-actions";
|
|
17
|
-
import { validateIdentityProviderButtons } from "../utils/loginUtils";
|
|
18
7
|
import Swal from "sweetalert2";
|
|
19
|
-
import {checkRequireExtraQuestionsByAttendee} from "../actions/user-actions";
|
|
20
|
-
import {userHasAccessLevel, VirtualAccessLevel} from "../utils/authorizedGroups";
|
|
21
8
|
|
|
9
|
+
import FragmentParser from "openstack-uicore-foundation/lib/utils/fragment-parser";
|
|
10
|
+
import { doLogin, passwordlessStart, getAccessToken } from "openstack-uicore-foundation/lib/security/methods"
|
|
11
|
+
import { doLogout } from "openstack-uicore-foundation/lib/security/actions"
|
|
12
|
+
import { getUserProfile, setPasswordlessLogin, setUserOrder, checkOrderData } from "../actions/user-actions";
|
|
13
|
+
import { getThirdPartyProviders } from "../actions/base-actions";
|
|
14
|
+
import { checkRequireExtraQuestionsByAttendee } from "../actions/user-actions";
|
|
22
15
|
import { getExtraQuestions } from "../actions/summit-actions";
|
|
23
16
|
|
|
24
|
-
import
|
|
25
|
-
import
|
|
17
|
+
import IconButton from "./IconButton";
|
|
18
|
+
import iconButtonStyles from "./IconButton/styles.module.scss";
|
|
19
|
+
|
|
26
20
|
import { SentryFallbackFunction } from "./SentryErrorComponent";
|
|
21
|
+
// these two libraries are client-side only
|
|
22
|
+
import RegistrationLiteWidget from "summit-registration-lite/dist";
|
|
23
|
+
import "summit-registration-lite/dist/index.css";
|
|
27
24
|
|
|
25
|
+
import useSiteSettings from "@utils/useSiteSettings";
|
|
26
|
+
import useMarketingSettings, { MARKETING_SETTINGS_KEYS } from "@utils/useMarketingSettings";
|
|
27
|
+
import { getEnvVariable, SUMMIT_API_BASE_URL, OAUTH2_CLIENT_ID, REGISTRATION_BASE_URL, SUPPORT_EMAIL } from "@utils/envVariables";
|
|
28
|
+
import { userHasAccessLevel, VirtualAccessLevel } from "@utils/authorizedGroups";
|
|
29
|
+
import { validateIdentityProviderButtons } from "@utils/loginUtils";
|
|
28
30
|
import { triggerAnalyticsTrackEvent } from "@utils/customEvents";
|
|
29
31
|
import { PURCHASE_COMPLETE } from "@utils/analytics/events";
|
|
30
32
|
|
|
31
|
-
import styles from "../styles/marketing-hero.module.scss";
|
|
32
|
-
|
|
33
33
|
const RegistrationLiteComponent = ({
|
|
34
34
|
registrationProfile,
|
|
35
35
|
userProfile,
|
|
@@ -208,11 +208,13 @@ const RegistrationLiteComponent = ({
|
|
|
208
208
|
React.cloneElement(children, { onClick: handleOpenPopup })
|
|
209
209
|
:
|
|
210
210
|
registerButton.display &&
|
|
211
|
-
<
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
211
|
+
<IconButton
|
|
212
|
+
className={iconButtonStyles.register}
|
|
213
|
+
iconClass="fa fa-2x fa-edit"
|
|
214
|
+
buttonText={registerButton.text}
|
|
215
|
+
onClick={handleOpenPopup}
|
|
216
|
+
disabled={isActive}
|
|
217
|
+
/>
|
|
216
218
|
}
|
|
217
219
|
<Sentry.ErrorBoundary fallback={SentryFallbackFunction({componentName: "Registration Lite"})}>
|
|
218
220
|
{isActive && <RegistrationLiteWidget {...widgetProps} />}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import React, { useState, useEffect, useRef } from
|
|
1
|
+
import React, { useState, useEffect, useRef } from "react";
|
|
2
|
+
import Link from "./Link";
|
|
3
|
+
import { useResize } from "@utils/hooks";
|
|
2
4
|
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
import styles from '../styles/sponsor-page.module.scss'
|
|
5
|
+
import styles from "../styles/sponsor-page.module.scss";
|
|
6
6
|
|
|
7
7
|
const SponsorHeader = ({ sponsor, scanBadge }) => {
|
|
8
8
|
|
|
@@ -15,24 +15,13 @@ const SponsorHeader = ({ sponsor, scanBadge }) => {
|
|
|
15
15
|
const setIsMuted = (isMuted) => {
|
|
16
16
|
const player = videoParentRef.current.children[0];
|
|
17
17
|
player.muted = isMuted;
|
|
18
|
-
_setIsMuted(isMuted)
|
|
18
|
+
_setIsMuted(isMuted);
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
const onResize = () => {
|
|
22
|
-
|
|
23
|
-
setIsMobile(true);
|
|
24
|
-
} else {
|
|
25
|
-
setIsMobile(false);
|
|
26
|
-
}
|
|
22
|
+
setIsMobile(window.innerWidth <= 768);
|
|
27
23
|
};
|
|
28
|
-
|
|
29
|
-
useEffect(() => {
|
|
30
|
-
onResize();
|
|
31
|
-
window.addEventListener("resize", onResize);
|
|
32
|
-
return () => {
|
|
33
|
-
window.removeEventListener("resize", onResize);
|
|
34
|
-
};
|
|
35
|
-
});
|
|
24
|
+
useResize(onResize);
|
|
36
25
|
|
|
37
26
|
return (
|
|
38
27
|
<section className={styles.hero}>
|
|
@@ -107,8 +96,8 @@ const SponsorHeader = ({ sponsor, scanBadge }) => {
|
|
|
107
96
|
</div>
|
|
108
97
|
</div>
|
|
109
98
|
}
|
|
110
|
-
</section
|
|
99
|
+
</section>
|
|
111
100
|
)
|
|
112
|
-
}
|
|
101
|
+
};
|
|
113
102
|
|
|
114
|
-
export default SponsorHeader
|
|
103
|
+
export default SponsorHeader;
|
|
@@ -1,55 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"widgets": {
|
|
3
|
-
"chat": {
|
|
4
|
-
"enabled": true,
|
|
5
|
-
"showQA": false,
|
|
6
|
-
"showHelp": false,
|
|
7
|
-
"defaultScope": "page"
|
|
8
|
-
},
|
|
9
|
-
"schedule": {
|
|
10
|
-
"allowClick": true
|
|
11
|
-
}
|
|
12
|
-
},
|
|
13
|
-
"favicon": {
|
|
14
|
-
"asset": "icon.png"
|
|
15
|
-
},
|
|
16
|
-
"idpLogo": {
|
|
17
|
-
"idpLogoDark": "",
|
|
18
|
-
"idpLogoLight": "",
|
|
19
|
-
"idpLogoAlt": ""
|
|
20
|
-
},
|
|
21
|
-
"identityProviderButtons": [
|
|
22
|
-
{
|
|
23
|
-
"buttonColor": "#082238",
|
|
24
|
-
"providerLabel": "Continue with FNid",
|
|
25
|
-
"providerLogo": "logo_fn.svg",
|
|
26
|
-
"providerLogoSize": 27
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"buttonColor": "#0A66C2",
|
|
30
|
-
"providerLabel": "Sign in with LinkedIn",
|
|
31
|
-
"providerParam": "linkedin",
|
|
32
|
-
"providerLogo": "logo_linkedin.svg",
|
|
33
|
-
"providerLogoSize": 18
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"buttonColor": "#000000",
|
|
37
|
-
"providerLabel": "Sign in with Apple",
|
|
38
|
-
"providerParam": "apple",
|
|
39
|
-
"providerLogoSize": 17,
|
|
40
|
-
"providerLogo": "logo_apple.svg"
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"buttonColor": "#1877F2",
|
|
44
|
-
"providerLabel": "Login with Facebook",
|
|
45
|
-
"providerParam": "facebook",
|
|
46
|
-
"providerLogo": "logo_facebook.svg",
|
|
47
|
-
"providerLogoSize": 20
|
|
48
|
-
}
|
|
49
|
-
],
|
|
50
|
-
"maintenanceMode" : {
|
|
51
|
-
"enabled": false,
|
|
52
|
-
"title": "Site under maintenance",
|
|
53
|
-
"subtitle": "Please reload page shortly"
|
|
54
|
-
}
|
|
55
|
-
}
|
|
1
|
+
{"widgets":{"chat":{"enabled":true,"showQA":false,"showHelp":false,"defaultScope":"page"},"schedule":{"allowClick":true}},"favicon":{"asset":"icon.png"},"idpLogo":{"idpLogoDark":"","idpLogoLight":"","idpLogoAlt":""},"identityProviderButtons":[{"buttonColor":"#082238","providerLabel":"Continue with FNid","providerLogo":"logo_fn.svg","providerLogoSize":27},{"buttonColor":"#0A66C2","providerLabel":"Sign in with LinkedIn","providerParam":"linkedin","providerLogo":"logo_linkedin.svg","providerLogoSize":18},{"buttonColor":"#000000","providerLabel":"Sign in with Apple","providerParam":"apple","providerLogoSize":17,"providerLogo":"logo_apple.svg"},{"buttonColor":"#1877F2","providerLabel":"Login with Facebook","providerParam":"facebook","providerLogo":"logo_facebook.svg","providerLogoSize":20}],"maintenanceMode":{"enabled":false,"title":"Site under maintenance","subtitle":"Please reload page shortly"},"staticJsonFilesBuildTime":[{"file":"src/data/summit.json","build_time":1717432857795},{"file":"src/data/events.json","build_time":1717432863110},{"file":"src/data/events.idx.json","build_time":1717432863115},{"file":"src/data/speakers.json","build_time":1717432864148},{"file":"src/data/speakers.idx.json","build_time":1717432864149},{"file":"src/content/sponsors.json","build_time":1717432868235},{"file":"src/data/voteable-presentations.json","build_time":1717432868631}],"lastBuild":1717432868632}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
@import "colors.scss";
|
|
2
|
+
|
|
3
|
+
.authComponent {
|
|
4
|
+
#modal {
|
|
5
|
+
padding: 100px 0;
|
|
6
|
+
}
|
|
7
|
+
.modalContent {
|
|
8
|
+
overflow: initial;
|
|
9
|
+
}
|
|
10
|
+
.outerWrapper {
|
|
11
|
+
border: 1px solid var(--color_input_border_color);
|
|
12
|
+
background-color: var(--color_background_light);
|
|
13
|
+
border-radius: 5px;
|
|
14
|
+
}
|
|
15
|
+
.innerWrapper {
|
|
16
|
+
padding: 10px;
|
|
17
|
+
}
|
|
18
|
+
.title {
|
|
19
|
+
display: flex;
|
|
20
|
+
justify-content: center;
|
|
21
|
+
align-items: center;
|
|
22
|
+
border-bottom: 1px solid var(--color_input_border_color);
|
|
23
|
+
margin: 0px -10px;
|
|
24
|
+
padding: 0px 15px 5px;
|
|
25
|
+
i {
|
|
26
|
+
cursor: pointer;
|
|
27
|
+
margin-left: auto;
|
|
28
|
+
}
|
|
29
|
+
span {
|
|
30
|
+
width: 100%;
|
|
31
|
+
font-weight: bold;
|
|
32
|
+
font-size: 18px;
|
|
33
|
+
text-align: center;
|
|
34
|
+
color: var(--color_text_dark);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
package/src/styles/fonts.scss
CHANGED
|
@@ -1,31 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Warning:
|
|
3
|
+
* Dont edit this file by hand, this file is used as default font implementation for the whole site
|
|
4
|
+
* and it been re generated if font settings are set through CMS on gatsby-node.js line # 346
|
|
5
|
+
**/
|
|
6
|
+
|
|
7
|
+
$font-family: 'Nunito Sans', sans-serif;
|
|
2
8
|
|
|
3
9
|
:root {
|
|
4
|
-
--font_family:
|
|
10
|
+
--font_family: #{$font-family};
|
|
5
11
|
}
|
|
6
12
|
|
|
7
|
-
@font-face {
|
|
8
|
-
font-family: "proximanova";
|
|
9
|
-
src: url("/fonts/proximanovaregular.otf") format("opentype");
|
|
10
|
-
font-weight: normal;
|
|
11
|
-
}
|
|
12
|
-
@font-face {
|
|
13
|
-
font-family: "proximanova";
|
|
14
|
-
src: url("/fonts/proximanovabold.otf") format("opentype");
|
|
15
|
-
font-weight: bold;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
13
|
%font-regular {
|
|
19
|
-
font-family:
|
|
14
|
+
font-family: 'Nunito Sans', sans-serif;
|
|
20
15
|
font-weight: 400;
|
|
21
16
|
}
|
|
22
17
|
|
|
23
18
|
%font-semi {
|
|
24
|
-
font-family:
|
|
19
|
+
font-family: 'Nunito Sans', sans-serif;
|
|
25
20
|
font-weight: 600;
|
|
26
21
|
}
|
|
27
22
|
|
|
28
23
|
%font-bold {
|
|
29
|
-
font-family:
|
|
24
|
+
font-family: 'Nunito Sans', sans-serif;
|
|
30
25
|
font-weight: 700;
|
|
31
26
|
}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
.leftColumn {
|
|
3
|
-
overflow-y: auto;
|
|
1
|
+
.mainColumn {
|
|
4
2
|
}
|
|
5
3
|
|
|
6
|
-
.
|
|
7
|
-
.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
min-height: 100%;
|
|
13
|
-
overflow: hidden;
|
|
4
|
+
.masonry {
|
|
5
|
+
.grid {
|
|
6
|
+
display: flex;
|
|
7
|
+
}
|
|
8
|
+
.slide {
|
|
9
|
+
margin-bottom: -5px;
|
|
14
10
|
}
|
|
15
11
|
}
|