@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.
Files changed (30) hide show
  1. package/package.json +2 -2
  2. package/src/components/AuthComponent.js +29 -24
  3. package/src/components/Container.js +9 -0
  4. package/src/components/FooterMarketing.js +1 -1
  5. package/src/components/IconButton/index.js +21 -0
  6. package/src/components/IconButton/styles.module.scss +31 -0
  7. package/src/components/MarketingHero/ImagesColumn.js +41 -0
  8. package/src/components/MarketingHero/MainColumn.js +38 -0
  9. package/src/components/MarketingHero/index.js +44 -0
  10. package/src/components/MarketingHero/styles.module.scss +73 -0
  11. package/src/components/RegistrationLiteComponent.js +27 -25
  12. package/src/components/SponsorHeader.js +10 -21
  13. package/src/content/site-settings/index.json +1 -55
  14. package/src/styles/auth-component.module.scss +37 -0
  15. package/src/styles/fonts.scss +11 -16
  16. package/src/styles/marketing.module.scss +7 -11
  17. package/src/styles/style.scss +0 -49
  18. package/src/templates/content-page/Container.js +3 -0
  19. package/src/templates/content-page/template.js +3 -2
  20. package/src/templates/marketing-page-template/Container.js +3 -0
  21. package/src/templates/marketing-page-template/MainColumn.js +69 -0
  22. package/src/templates/marketing-page-template/Masonry.js +71 -0
  23. package/src/templates/marketing-page-template/index.js +72 -0
  24. package/src/templates/marketing-page-template/styles.module.scss +11 -0
  25. package/src/utils/hooks/index.js +5 -0
  26. package/src/utils/hooks/useResize.js +19 -0
  27. package/src/components/MarketingHeroComponent.js +0 -120
  28. package/src/styles/login-button.module.scss +0 -84
  29. package/src/styles/marketing-hero.module.scss +0 -200
  30. package/src/templates/marketing-page-template.js +0 -194
@@ -1,200 +0,0 @@
1
- @import "colors.scss";
2
-
3
- .hero-marketing {
4
- .hero-marketing-container {
5
- display: flex;
6
- flex-direction: row;
7
- height: calc(100% + 6rem);
8
-
9
- .hero-buttons {
10
- margin-top: 2.5rem;
11
- }
12
-
13
- .button {
14
- background-color: transparent;
15
- color: #fff;
16
- height: 5rem;
17
- width: 20rem;
18
- margin: 0 10px 10px 0;
19
-
20
- i {
21
- color: #fff;
22
- height: 1em;
23
- width: 2.5em;
24
- margin-right: auto;
25
- font-size: 1.8em;
26
- }
27
-
28
- b {
29
- display: inline-block;
30
- width: 100%;
31
- text-align: center;
32
- }
33
-
34
- &:hover,
35
- &:active {
36
- border-color: #fff;
37
- text-decoration: none;
38
- }
39
-
40
- &:focus {
41
- border-color: #fff;
42
- box-shadow: none;
43
- }
44
-
45
- &.white {
46
- background-color: #fff;
47
- color: #6d6e71;
48
-
49
- b,
50
- i {
51
- color: inherit;
52
- }
53
- }
54
- }
55
- }
56
-
57
- .link:first-of-type {
58
- .button {
59
- background-color: #fff;
60
- color: #6d6e71;
61
-
62
- i {
63
- color: #6d6e71;
64
- }
65
- }
66
- }
67
-
68
- .hero-marketing-columns {
69
- .left-column {
70
- background-color: var(--color_secondary_contrast);
71
- z-index: 3;
72
- min-height: 100%;
73
- background-size: cover;
74
- }
75
-
76
- h1 {
77
- font-size: calc(50px + (50 - 42) * (100vw - 250px) / (1080 - 250));
78
- font-weight: bold;
79
- margin: 6px 0 6px;
80
- }
81
-
82
- h2 {
83
- font-size: calc(40px + (40 - 36) * (100vw - 250px) / (1080 - 20));
84
- font-weight: normal;
85
- margin-bottom: 6px;
86
- }
87
-
88
- h4 {
89
- font-size: calc(22px + (22 - 14) * (100vw - 250px) / (1080 - 250));
90
- font-weight: bold;
91
- margin-top: 5px;
92
- }
93
-
94
- h1,
95
- h2,
96
- h4 {
97
- color: var(--color_text_light);
98
- }
99
-
100
- .date {
101
- transform: skew(-25deg);
102
- width: max-content;
103
- padding: 0.5rem 0;
104
- margin-left: -3em;
105
-
106
- div {
107
- font-size: 3rem;
108
- font-weight: bold;
109
- color: var(--color_text_light);
110
- letter-spacing: 0.1rem;
111
- }
112
-
113
- span {
114
- margin: 0 -1.5em;
115
- display: inline;
116
- }
117
-
118
- div:before {
119
- content: "";
120
- margin-right: 1.4em;
121
- }
122
-
123
- div:after {
124
- content: "";
125
- margin-left: 1.5em;
126
- }
127
- }
128
-
129
- .right-column {
130
- z-index: 1;
131
-
132
- .single-image {
133
- height: 100%;
134
- background-size: cover;
135
- min-height: 350px;
136
- }
137
-
138
- .image-slider {
139
- background-position: center;
140
- background-repeat: no-repeat;
141
- background-size: cover;
142
- min-height: 100%;
143
- overflow: hidden;
144
- }
145
- }
146
- }
147
- }
148
-
149
- @media (max-width: 978px) {
150
- .hero-marketing {
151
- .hero-marketing-columns {
152
- .left-column {
153
- .hero-marketing-container {
154
- height: 520px;
155
- padding: 2rem 1.5rem;
156
-
157
- .hero-buttons {
158
- display: flex;
159
- flex-direction: column;
160
- }
161
-
162
- .link {
163
- margin-bottom: 1rem;
164
- display: inline-block;
165
- }
166
- }
167
- }
168
-
169
- .right-column {
170
- .image-slider {
171
- height: 530px;
172
- }
173
- }
174
- }
175
- }
176
- }
177
-
178
- @media (max-width: 768px) {
179
- .hero-marketing {
180
- .hero-marketing-columns {
181
- .left-column {
182
- transform: none;
183
- width: 100%;
184
- margin-left: 0;
185
-
186
- .hero-marketing-container {
187
- transform: none;
188
- margin-left: 0;
189
- height: auto;
190
- }
191
- }
192
-
193
- .right-column {
194
- width: 100%;
195
- z-index: 1;
196
- margin-left: 0;
197
- }
198
- }
199
- }
200
- }
@@ -1,194 +0,0 @@
1
- import React, { useEffect, useRef, useState } from "react";
2
- import PropTypes from "prop-types";
3
- import { navigate } from "gatsby";
4
- import { GatsbyImage, getImage } from "gatsby-plugin-image";
5
- import Mdx from "@mdx-js/runtime";
6
-
7
- import Layout from "../components/Layout";
8
- import AttendanceTrackerComponent from "../components/AttendanceTrackerComponent";
9
- import MarketingHeroComponent from "../components/MarketingHeroComponent";
10
- import LiteScheduleComponent from "../components/LiteScheduleComponent";
11
- import DisqusComponent from "../components/DisqusComponent";
12
- import Countdown from "../components/Countdown";
13
- import Link from "../components/Link";
14
- import ResponsiveImage from "../components/ResponsiveImage";
15
-
16
- import Masonry from "react-masonry-css";
17
- import Slider from "react-slick";
18
- import { formatMasonry } from "../utils/masonry";
19
-
20
- import { PHASES } from "../utils/phasesUtils";
21
-
22
- import styles from "../styles/marketing.module.scss";
23
-
24
- const sliderSettings = {
25
- autoplay: true,
26
- autoplaySpeed: 5000,
27
- infinite: true,
28
- dots: false,
29
- slidesToShow: 1,
30
- slidesToScroll: 1
31
- };
32
-
33
- const shortcodes = {
34
- a: Link,
35
- img: ResponsiveImage
36
- };
37
-
38
- const MarketingPageTemplate = ({
39
- location,
40
- data,
41
- lastDataSync,
42
- summit,
43
- summitPhase,
44
- isLoggedUser,
45
- }) => {
46
- const rightColumnRef = useRef(null);
47
- const [rightColumnHeight, setRightColumnHeight] = useState();
48
-
49
- const onResize = () => {
50
- if (rightColumnRef?.current) {
51
- setRightColumnHeight(rightColumnRef.current.firstChild.clientHeight);
52
- }
53
- };
54
-
55
- useEffect(() => {
56
- onResize();
57
- window.addEventListener("resize", onResize);
58
- return () => {
59
- window.removeEventListener("resize", onResize);
60
- };
61
- }, [data, rightColumnRef]);
62
-
63
- const {
64
- marketingPageJson: {
65
- hero,
66
- countdown,
67
- widgets,
68
- masonry
69
- } = {}
70
- } = data || {};
71
-
72
- let scheduleProps = {};
73
- if (widgets?.schedule && isLoggedUser && summitPhase !== PHASES.BEFORE) {
74
- scheduleProps = {
75
- ...scheduleProps,
76
- onEventClick: (ev) => navigate(`/a/event/${ev.id}`)
77
- };
78
- }
79
-
80
- const shouldRenderMasonry = masonry?.display;
81
-
82
- return (
83
- <Layout marketing={true} location={location}>
84
- <AttendanceTrackerComponent />
85
- <MarketingHeroComponent
86
- location={location}
87
- data={hero}
88
- />
89
- {summit && countdown?.display && <Countdown summit={summit} text={countdown?.text} />}
90
- <div className="columns">
91
- <div
92
- className={`column mt-3 px-6 py-6 ${shouldRenderMasonry ? "is-half" : ""} ${styles.leftColumn || ""}`}
93
- style={{ maxHeight: shouldRenderMasonry && rightColumnHeight ? rightColumnHeight : "none" }}
94
- >
95
- {widgets?.content?.display && widgets?.content?.body &&
96
- <Mdx components={shortcodes}>
97
- {widgets.content.body}
98
- </Mdx>
99
- }
100
- {widgets?.schedule?.display &&
101
- <>
102
- <h2><b>{widgets.schedule.title}</b></h2>
103
- <LiteScheduleComponent
104
- {...scheduleProps}
105
- lastDataSync={lastDataSync}
106
- id={`marketing_lite_schedule_${lastDataSync}`}
107
- page="marketing-site"
108
- showAllEvents={true}
109
- showSearch={false}
110
- showNav={true}
111
- />
112
- </>
113
- }
114
- {widgets?.disqus?.display &&
115
- <>
116
- <h2><b>{widgets.disqus.title}</b></h2>
117
- <DisqusComponent page="marketing-site"/>
118
- </>
119
- }
120
- {widgets?.image?.display &&
121
- widgets?.image?.image.src &&
122
- <>
123
- <h2><b>{widgets.image.title}</b></h2>
124
- <br />
125
- <GatsbyImage image={getImage(widgets.image.image.src)} alt={widgets.image.image.alt ?? ""} />
126
- </>
127
- }
128
- </div>
129
- {shouldRenderMasonry &&
130
- <div
131
- ref={rightColumnRef}
132
- className={`column px-0 pb-0 is-half ${styles.rightColumn || ""}`}
133
- >
134
- <Masonry
135
- breakpointCols={2}
136
- className="my-masonry-grid"
137
- columnClassName="my-masonry-grid_column">
138
- {masonry.items && formatMasonry(masonry.items).map((item, index) => {
139
- if (item.images && item.images.length === 1) {
140
- const image = getImage(item.images[0].src);
141
- return (
142
- <div className={"single"} key={index}>
143
- {item.images[0].link ?
144
- <Link to={item.images[0].link}>
145
- <GatsbyImage image={image} alt={item.images[0].alt ?? ""} />
146
- </Link>
147
- :
148
- <GatsbyImage image={image} alt={item.images[0].alt ?? ""} />
149
- }
150
- </div>
151
- );
152
- } else if (item.images && item.images.length > 1) {
153
- return (
154
- <Slider {...sliderSettings} key={index}>
155
- {item.images.map((image, indexSlide) => {
156
- const img = getImage(image.src);
157
- return (
158
- <div className={styles.imageSlider} key={indexSlide}>
159
- {image.link ?
160
- <Link to={image.link}>
161
- <GatsbyImage image={img} alt={image.alt ?? ""} />
162
- </Link>
163
- :
164
- <GatsbyImage image={img} alt={image.alt ?? ""} />
165
- }
166
- </div>
167
- );
168
- })}
169
- </Slider>
170
- );
171
- } else {
172
- return (
173
- <div className="single" key={index} />
174
- );
175
- }
176
- })}
177
- </Masonry>
178
- </div>
179
- }
180
- </div>
181
- </Layout>
182
- );
183
- };
184
-
185
- MarketingPageTemplate.propTypes = {
186
- location: PropTypes.object,
187
- data: PropTypes.object,
188
- lastDataSync: PropTypes.number,
189
- summit: PropTypes.object,
190
- summitPhase: PropTypes.number,
191
- isLoggedUser: PropTypes.bool
192
- };
193
-
194
- export default MarketingPageTemplate;