@openeventkit/event-site 2.1.41 → 2.1.42
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/README.md +8 -0
- package/gatsby-browser.js +15 -0
- package/package.json +10 -4
- package/src/actions/event-actions.js +1 -8
- package/src/components/Certificates/generatePDF.js +14 -120
- package/src/components/MyOrdersTicketsComponent.js +29 -0
- package/src/content/site-settings/index.json +1 -1
- package/src/content/sponsors.json +1 -1
- package/src/styles/colors.scss +11 -11
- package/src/utils/pdfFonts.js +177 -0
- package/src/utils/useMarketingSettings.js +11 -0
- package/.claude/settings.local.json +0 -11
package/README.md
CHANGED
|
@@ -120,6 +120,14 @@ MacOS users might also encounter some errors, for more info check [node-gyp](htt
|
|
|
120
120
|
|
|
121
121
|
This plugin uses [gatsby-plugin-purgecss](https://www.gatsbyjs.org/packages/gatsby-plugin-purgecss/) and [bulma](https://bulma.io/). The bulma builds are usually ~170K but reduced 90% by purgecss.
|
|
122
122
|
|
|
123
|
+
## Dependency Notes
|
|
124
|
+
|
|
125
|
+
### cross-fetch Resolution
|
|
126
|
+
|
|
127
|
+
The `cross-fetch` package is pinned to version 3.1.8 via `resolutions`/`overrides` in package.json to fix a "Failed to execute 'fetch' on 'Window': Illegal invocation" error that occurs with `@react-pdf/renderer` when loading custom fonts.
|
|
128
|
+
|
|
129
|
+
See: https://github.com/diegomura/react-pdf/issues/3034
|
|
130
|
+
|
|
123
131
|
# CONTRIBUTING
|
|
124
132
|
|
|
125
133
|
Contributions are always welcome, no matter how large or small. Before contributing,
|
package/gatsby-browser.js
CHANGED
|
@@ -17,6 +17,9 @@ import "./src/styles/bulma.scss";
|
|
|
17
17
|
import "./src/styles/style.scss";
|
|
18
18
|
// import global fontawesome
|
|
19
19
|
import "./src/utils/fontAwesome";
|
|
20
|
+
// PDF font registration
|
|
21
|
+
import { initializePdfFonts } from "./src/utils/pdfFonts";
|
|
22
|
+
import fontVariable from "./static/fonts/nunito-sans/NunitoSans-Variable.ttf";
|
|
20
23
|
|
|
21
24
|
import colors from "data/colors.json";
|
|
22
25
|
import marketingSettings from "data/marketing-settings.json";
|
|
@@ -29,6 +32,18 @@ export const onClientEntry = () => {
|
|
|
29
32
|
// smooth scroll polyfill needed for Safari
|
|
30
33
|
smoothscroll.polyfill();
|
|
31
34
|
|
|
35
|
+
// Initialize PDF fonts for certificate and receipt generation
|
|
36
|
+
// Import site settings to check for custom fonts
|
|
37
|
+
import("./src/content/site-settings/index.json").then((siteSettings) => {
|
|
38
|
+
initializePdfFonts({
|
|
39
|
+
defaultFontFile: fontVariable,
|
|
40
|
+
siteFont: siteSettings.siteFont
|
|
41
|
+
});
|
|
42
|
+
}).catch(() => {
|
|
43
|
+
// Fall back to default font if site settings can't be loaded
|
|
44
|
+
initializePdfFonts({ defaultFontFile: fontVariable });
|
|
45
|
+
});
|
|
46
|
+
|
|
32
47
|
// show cookie consent only if google tag manager was deferred loaded
|
|
33
48
|
// see gatsby-google-tag-manager-plugin in gatsby-config
|
|
34
49
|
if (getEnvVariable(GOOGLE_TAGMANAGER_ID)) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openeventkit/event-site",
|
|
3
3
|
"description": "Event Site",
|
|
4
|
-
"version": "2.1.
|
|
4
|
+
"version": "2.1.42",
|
|
5
5
|
"author": "Tipit LLC",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@emotion/server": "^11.11.0",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"markdown-it": "^12.0.0",
|
|
88
88
|
"moment": "^2.27.0",
|
|
89
89
|
"moment-timezone": "^0.5.31",
|
|
90
|
-
"my-orders-tickets-widget": "1.0.
|
|
90
|
+
"my-orders-tickets-widget": "1.0.8",
|
|
91
91
|
"object.assign": "^4.1.5",
|
|
92
92
|
"openstack-uicore-foundation": "4.2.16",
|
|
93
93
|
"path-browserify": "^1.0.1",
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
"stream-browserify": "^3.0.0",
|
|
136
136
|
"stream-chat": "^2.7.2",
|
|
137
137
|
"stream-chat-react": "3.1.7",
|
|
138
|
-
"summit-registration-lite": "6.0.
|
|
138
|
+
"summit-registration-lite": "6.0.6",
|
|
139
139
|
"superagent": "8.0.9",
|
|
140
140
|
"sweetalert2": "^11.11.1",
|
|
141
141
|
"upcoming-events-widget": "3.0.7",
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
"gatsby-clean": "gatsby clean",
|
|
162
162
|
"start": "npm run develop",
|
|
163
163
|
"build": "NODE_ENV=production NODE_OPTIONS=--max-old-space-size=10240 cross-env node --trace-warnings node_modules/.bin/gatsby build --log-pages",
|
|
164
|
-
"develop": "NODE_OPTIONS=--max-old-space-size=8192 npm run gatsby-clean && node --trace-warnings node_modules/.bin/gatsby develop --S -H 0.0.0.0",
|
|
164
|
+
"develop": "NODE_OPTIONS=--max-old-space-size=8192 npm run gatsby-clean && NODE_OPTIONS=--max-old-space-size=8192 node --trace-warnings node_modules/.bin/gatsby develop --S -H 0.0.0.0",
|
|
165
165
|
"format": "prettier --trailing-comma es5 --no-semi --single-quote --write \"{gatsby-*.js,src/**/*.js}\"",
|
|
166
166
|
"test": "jest",
|
|
167
167
|
"update-libs": "yarn upgrade live-event-widget openstack-uicore-foundation schedule-lite simple-chat-widget speakers-widget attendee-to-attendee-widget"
|
|
@@ -225,5 +225,11 @@
|
|
|
225
225
|
"setupFilesAfterEnv": [
|
|
226
226
|
"<rootDir>/jest.setup.js"
|
|
227
227
|
]
|
|
228
|
+
},
|
|
229
|
+
"resolutions": {
|
|
230
|
+
"cross-fetch": "3.1.8"
|
|
231
|
+
},
|
|
232
|
+
"overrides": {
|
|
233
|
+
"cross-fetch": "3.1.8"
|
|
228
234
|
}
|
|
229
235
|
}
|
|
@@ -103,14 +103,7 @@ export const getEventStreamingInfoById = (
|
|
|
103
103
|
customErrorHandler,
|
|
104
104
|
{},
|
|
105
105
|
true)
|
|
106
|
-
(params)(dispatch)
|
|
107
|
-
return payload
|
|
108
|
-
}).catch(e => {
|
|
109
|
-
dispatch(createAction(GET_EVENT_DATA_ERROR)(e));
|
|
110
|
-
console.log('ERROR: ', e);
|
|
111
|
-
clearAccessToken();
|
|
112
|
-
return (e);
|
|
113
|
-
});
|
|
106
|
+
(params)(dispatch);
|
|
114
107
|
};
|
|
115
108
|
|
|
116
109
|
/**
|
|
@@ -1,94 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Document, Page, Text, View, Image, StyleSheet,
|
|
2
|
+
import { Document, Page, Text, View, Image, StyleSheet, pdf } from "@react-pdf/renderer";
|
|
3
3
|
|
|
4
|
-
import
|
|
4
|
+
import {
|
|
5
|
+
getRegisteredFontFamily,
|
|
6
|
+
registerCustomFont
|
|
7
|
+
} from "../../utils/pdfFonts";
|
|
5
8
|
import { USER_ROLES } from './constants';
|
|
6
9
|
|
|
7
|
-
const registerDefaultFont = () => {
|
|
8
|
-
try {
|
|
9
|
-
Font.register({
|
|
10
|
-
family: "Nunito Sans",
|
|
11
|
-
fonts: [
|
|
12
|
-
{
|
|
13
|
-
src: fontVariable,
|
|
14
|
-
fontWeight: "normal"
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
src: fontVariable,
|
|
18
|
-
fontWeight: "bold"
|
|
19
|
-
},
|
|
20
|
-
]
|
|
21
|
-
});
|
|
22
|
-
return true;
|
|
23
|
-
} catch (error) {
|
|
24
|
-
console.error("Failed to register default font:", error);
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
// helper to convert relative font paths to absolute URLs
|
|
30
|
-
const getFontUrl = (fontPath) => {
|
|
31
|
-
if (!fontPath) return null;
|
|
32
|
-
|
|
33
|
-
if (fontPath.startsWith("http://") || fontPath.startsWith("https://")) {
|
|
34
|
-
return fontPath;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// For relative paths, prepend the origin
|
|
38
|
-
// Site settings fonts are served from /fonts/ (not /static/fonts/)
|
|
39
|
-
if (typeof window !== "undefined") {
|
|
40
|
-
// Remove /static prefix if present since fonts are served at root /fonts/
|
|
41
|
-
const cleanPath = fontPath.replace("/static/fonts/", "/fonts/");
|
|
42
|
-
return `${window.location.origin}${cleanPath}`;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return fontPath;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
// register custom font from site settings if available
|
|
49
|
-
const registerCustomFont = (siteFont) => {
|
|
50
|
-
if (!siteFont || !siteFont.fontFamily || !siteFont.regularFont || !siteFont.boldFont) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const fonts = [];
|
|
55
|
-
|
|
56
|
-
if (siteFont.regularFont.fontFile && siteFont.regularFont.fontFormat === "ttf") {
|
|
57
|
-
const fontUrl = getFontUrl(siteFont.regularFont.fontFile);
|
|
58
|
-
if (fontUrl) {
|
|
59
|
-
fonts.push({
|
|
60
|
-
src: fontUrl,
|
|
61
|
-
fontWeight: "normal"
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if (siteFont.boldFont.fontFile && siteFont.boldFont.fontFormat === "ttf") {
|
|
67
|
-
const fontUrl = getFontUrl(siteFont.boldFont.fontFile);
|
|
68
|
-
if (fontUrl) {
|
|
69
|
-
fonts.push({
|
|
70
|
-
src: fontUrl,
|
|
71
|
-
fontWeight: "bold"
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
if (fonts.length > 0) {
|
|
77
|
-
try {
|
|
78
|
-
Font.register({
|
|
79
|
-
family: siteFont.fontFamily,
|
|
80
|
-
fonts: fonts
|
|
81
|
-
});
|
|
82
|
-
return true;
|
|
83
|
-
} catch (error) {
|
|
84
|
-
console.warn("Failed to register custom font:", error);
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
return false;
|
|
90
|
-
};
|
|
91
|
-
|
|
92
10
|
|
|
93
11
|
const calculateOptimalFontSize = (text, maxWidth = 650, initialFontSize = 48, minFontSize = 24) => {
|
|
94
12
|
// estimate average character width based on font size
|
|
@@ -119,26 +37,6 @@ const calculateOptimalFontSize = (text, maxWidth = 650, initialFontSize = 48, mi
|
|
|
119
37
|
return finalSize;
|
|
120
38
|
};
|
|
121
39
|
|
|
122
|
-
// Validate image URL before PDF generation
|
|
123
|
-
const validateImageUrl = async (url) => {
|
|
124
|
-
if (!url) return null;
|
|
125
|
-
|
|
126
|
-
try {
|
|
127
|
-
const response = await fetch(url, {
|
|
128
|
-
method: 'GET',
|
|
129
|
-
mode: 'cors'
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
if (response.ok) {
|
|
133
|
-
return url;
|
|
134
|
-
}
|
|
135
|
-
return null;
|
|
136
|
-
} catch (error) {
|
|
137
|
-
console.warn("Image validation failed:", error);
|
|
138
|
-
return null;
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
|
|
142
40
|
const CertificatePDF = ({
|
|
143
41
|
attendee,
|
|
144
42
|
summit,
|
|
@@ -156,17 +54,15 @@ const CertificatePDF = ({
|
|
|
156
54
|
const nameFontSize = calculateOptimalFontSize(fullName);
|
|
157
55
|
|
|
158
56
|
|
|
159
|
-
|
|
57
|
+
// Use fonts registered at app init, or try custom font from site settings
|
|
58
|
+
let fontFamily = getRegisteredFontFamily();
|
|
160
59
|
|
|
60
|
+
// If site settings has a custom font, try to register it (may already be registered at init)
|
|
161
61
|
if (settings?.siteFont && settings.siteFont.fontFamily) {
|
|
162
62
|
const customFontRegistered = registerCustomFont(settings.siteFont);
|
|
163
63
|
if (customFontRegistered) {
|
|
164
64
|
fontFamily = settings.siteFont.fontFamily;
|
|
165
|
-
} else {
|
|
166
|
-
registerDefaultFont();
|
|
167
65
|
}
|
|
168
|
-
} else {
|
|
169
|
-
registerDefaultFont();
|
|
170
66
|
}
|
|
171
67
|
|
|
172
68
|
const styles = StyleSheet.create({
|
|
@@ -336,15 +232,13 @@ const CertificatePDF = ({
|
|
|
336
232
|
// helper function to generate and download the certificate
|
|
337
233
|
export const generatePDF = async (attendee, summit, settings) => {
|
|
338
234
|
try {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
const
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
attendee={attendee}
|
|
345
|
-
summit={summit}
|
|
235
|
+
const logoUrl = settings.logo || summit.logo || null;
|
|
236
|
+
|
|
237
|
+
const doc = <CertificatePDF
|
|
238
|
+
attendee={attendee}
|
|
239
|
+
summit={summit}
|
|
346
240
|
settings={settings}
|
|
347
|
-
logoUrl={
|
|
241
|
+
logoUrl={logoUrl}
|
|
348
242
|
/>;
|
|
349
243
|
const blob = await pdf(doc).toBlob();
|
|
350
244
|
|
|
@@ -8,6 +8,9 @@ import loadable from "@loadable/component";
|
|
|
8
8
|
import 'my-orders-tickets-widget/dist/index.css';
|
|
9
9
|
import 'my-orders-tickets-widget/dist/i18n';
|
|
10
10
|
import { SentryFallbackFunction } from "./SentryErrorComponent";
|
|
11
|
+
import useMarketingSettings, { MARKETING_SETTINGS_KEYS } from '../utils/useMarketingSettings';
|
|
12
|
+
import useSiteSettings from '../utils/useSiteSettings';
|
|
13
|
+
import { DEFAULT_FONT_FAMILY, DEFAULT_FONT_PATH, getFontUrl } from '../utils/pdfFonts';
|
|
11
14
|
const MyOrdersMyTicketsWidget = loadable(() => import("my-orders-tickets-widget/dist/index"), {
|
|
12
15
|
ssr: false,
|
|
13
16
|
fallback: null,
|
|
@@ -17,9 +20,34 @@ export const MyOrdersTicketsComponent = () => {
|
|
|
17
20
|
const dispatch = useDispatch();
|
|
18
21
|
const user = useSelector(state => state.userState);
|
|
19
22
|
const summit = useSelector(state => state.summitState.summit);
|
|
23
|
+
const { getSettingByKey } = useMarketingSettings();
|
|
24
|
+
const siteSettings = useSiteSettings();
|
|
20
25
|
|
|
21
26
|
if (!summit) return null;
|
|
22
27
|
|
|
28
|
+
// Get font info from site settings, defaulting to Nunito Sans
|
|
29
|
+
const siteFont = siteSettings?.siteFont;
|
|
30
|
+
const fontFamily = siteFont?.fontFamily || DEFAULT_FONT_FAMILY;
|
|
31
|
+
const fontUrl = getFontUrl(siteFont?.regularFont?.fontFile || DEFAULT_FONT_PATH, window.location.origin);
|
|
32
|
+
|
|
33
|
+
// Build receipt settings from marketing settings
|
|
34
|
+
const receiptSettings = {
|
|
35
|
+
primaryColor: getSettingByKey(MARKETING_SETTINGS_KEYS.colorPrimary),
|
|
36
|
+
fontFamily,
|
|
37
|
+
fontUrl,
|
|
38
|
+
printLogo: getSettingByKey(MARKETING_SETTINGS_KEYS.printLogo),
|
|
39
|
+
organizerLegalName: getSettingByKey(MARKETING_SETTINGS_KEYS.receiptOrganizerLegalName),
|
|
40
|
+
organizerAddressLine1: getSettingByKey(MARKETING_SETTINGS_KEYS.receiptOrganizerAddressLine1),
|
|
41
|
+
organizerAddressLine2: getSettingByKey(MARKETING_SETTINGS_KEYS.receiptOrganizerAddressLine2),
|
|
42
|
+
organizerCity: getSettingByKey(MARKETING_SETTINGS_KEYS.receiptOrganizerCity),
|
|
43
|
+
organizerState: getSettingByKey(MARKETING_SETTINGS_KEYS.receiptOrganizerState),
|
|
44
|
+
organizerPostalCode: getSettingByKey(MARKETING_SETTINGS_KEYS.receiptOrganizerPostalCode),
|
|
45
|
+
organizerCountry: getSettingByKey(MARKETING_SETTINGS_KEYS.receiptOrganizerCountry),
|
|
46
|
+
organizerTaxId: getSettingByKey(MARKETING_SETTINGS_KEYS.receiptOrganizerTaxId),
|
|
47
|
+
organizerTaxIdLabel: getSettingByKey(MARKETING_SETTINGS_KEYS.receiptOrganizerTaxIdLabel),
|
|
48
|
+
supportEmail: summit.support_email || getEnvVariable(SUPPORT_EMAIL),
|
|
49
|
+
};
|
|
50
|
+
|
|
23
51
|
const widgetProps = {
|
|
24
52
|
apiBaseUrl: getEnvVariable(SUMMIT_API_BASE_URL),
|
|
25
53
|
clientId: getEnvVariable(OAUTH2_CLIENT_ID),
|
|
@@ -30,6 +58,7 @@ export const MyOrdersTicketsComponent = () => {
|
|
|
30
58
|
updateProfile: (profile) => dispatch(updateProfile(profile)),
|
|
31
59
|
summit,
|
|
32
60
|
user,
|
|
61
|
+
receiptSettings,
|
|
33
62
|
onTicketAssigned: (ticket) => dispatch(ticketOwnerChange(ticket))
|
|
34
63
|
};
|
|
35
64
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"favicon":{"asset":"icon.png"},"widgets":{"chat":{"enabled":true,"showQA":false,"showHelp":false,"defaultScope":"page"},"schedule":{"allowClick":true}},"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":
|
|
1
|
+
{"favicon":{"asset":"icon.png"},"widgets":{"chat":{"enabled":true,"showQA":false,"showHelp":false,"defaultScope":"page"},"schedule":{"allowClick":true}},"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":1769530063616},{"file":"src/data/events.json","build_time":1769530065075},{"file":"src/data/events.idx.json","build_time":1769530065077},{"file":"src/data/speakers.json","build_time":1769530065728},{"file":"src/data/speakers.idx.json","build_time":1769530065728},{"file":"src/content/sponsors.json","build_time":1769530068156},{"file":"src/data/voteable-presentations.json","build_time":1769530068650}],"lastBuild":1769530068651}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"id":533,"created":1754503947,"last_edited":1755716348,"order":1,"summit_id":69,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":"","intro":"","external_link":"","video_link":"","chat_link":"","featured_event_id":0,"header_image_alt_text":"","side_image_alt_text":"","header_image_mobile_alt_text":"","carousel_advertise_image_alt_text":"","show_logo_in_event_page":true,"lead_report_setting_id":6,"company":{"id":1,"created":1579886208,"last_edited":1579886208,"name":"Intel Corporation","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/1/logos/OCP21GLO-SessionBrandingBar-Sponsor-Intel2.png","big_logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/1/logos/OCP21GLO-SessionBrandingBar-Sponsor-Intel3.png","color":"#f0f0ee"},"extra_questions":[763],"members":[],"sponsorship":{"id":2072,"widget_title":"","lobby_template":null,"expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":false,"sponsor_page_use_live_event_widget":false,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":69,"order":3,"should_display_on_expo_hall_page":false,"should_display_on_lobby_page":false,"type":{"id":9,"created":1605551482,"last_edited":1605551482,"name":"Silver","label":"Silver","order":9,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":543,"created":1754667572,"last_edited":1754667572,"order":2,"summit_id":69,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":3,"created":1580138376,"last_edited":1580138376,"name":"Tipit , LLC","url":null,"url_segment":null,"city":null,"state":null,"country":null,"description":null,"industry":null,"contributions":null,"member_level":"None","overview":null,"products":null,"commitment":null,"commitment_author":null,"logo":null,"big_logo":null,"color":"#f0f0ee"},"extra_questions":[],"members":[],"sponsorship":{"id":2071,"widget_title":"test","lobby_template":"small-images","expo_hall_template":"big-images","sponsor_page_template":"big-header","event_page_template":"big-images","sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":69,"order":2,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":3,"created":1579890943,"last_edited":1579890943,"name":"Gold","label":"not sure??","order":3,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":564,"created":1755645526,"last_edited":1755645526,"order":3,"summit_id":69,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":4,"created":1582745992,"last_edited":1582745992,"name":"FNTECH","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/4/logos/FNTECH-BLK-logo-rgb-1-color-white-720px2.png","big_logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/4/logos/FNTECH-BLK-logo-rgb-1-color-white-720px3.png","color":"#f0f0ee"},"extra_questions":[],"members":[],"sponsorship":{"id":2071,"widget_title":"test","lobby_template":"small-images","expo_hall_template":"big-images","sponsor_page_template":"big-header","event_page_template":"big-images","sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":69,"order":2,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":3,"created":1579890943,"last_edited":1579890943,"name":"Gold","label":"not sure??","order":3,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":565,"created":1755716372,"last_edited":1755716401,"order":4,"summit_id":69,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":5,"created":1594672447,"last_edited":1594672447,"name":"Meta","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/5/logos/OCP21GLO-SessionBrandingBar-Sponsor-Meta1.png","big_logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/5/logos/OCP21GLO-SessionBrandingBar-Sponsor-Meta.png","color":"#f0f0ee"},"extra_questions":[],"members":[36416],"sponsorship":{"id":2073,"widget_title":"","lobby_template":null,"expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":false,"sponsor_page_use_live_event_widget":false,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":69,"order":1,"should_display_on_expo_hall_page":false,"should_display_on_lobby_page":false,"type":{"id":2,"created":1579287407,"last_edited":1579287407,"name":"Diamond","label":"20 x 20 booth","order":2,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":566,"created":1755717072,"last_edited":1755717072,"order":5,"summit_id":69,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":11,"created":1603222606,"last_edited":1603222606,"name":"FakeCo","url":null,"url_segment":null,"city":null,"state":null,"country":null,"description":null,"industry":null,"contributions":null,"member_level":null,"overview":null,"products":null,"commitment":null,"commitment_author":null,"logo":null,"big_logo":null,"color":"#f0f0ee"},"extra_questions":[],"members":[],"sponsorship":{"id":2071,"widget_title":"test","lobby_template":"small-images","expo_hall_template":"big-images","sponsor_page_template":"big-header","event_page_template":"big-images","sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":69,"order":2,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":3,"created":1579890943,"last_edited":1579890943,"name":"Gold","label":"not sure??","order":3,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":567,"created":1755717143,"last_edited":1755717143,"order":6,"summit_id":69,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":12,"created":1603223078,"last_edited":1603223078,"name":"Phase Two","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/12/logos/IF2020-Phasetwo-Presentedby-Logo.png","big_logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/12/logos/IF2020-Phasetwo-Presentedby-Logo1.png","color":"#f0f0ee"},"extra_questions":[],"members":[],"sponsorship":{"id":2071,"widget_title":"test","lobby_template":"small-images","expo_hall_template":"big-images","sponsor_page_template":"big-header","event_page_template":"big-images","sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":69,"order":2,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":3,"created":1579890943,"last_edited":1579890943,"name":"Gold","label":"not sure??","order":3,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":568,"created":1755717768,"last_edited":1755717768,"order":7,"summit_id":69,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":6,"created":1600118396,"last_edited":1600118396,"name":"FNtest","url":null,"url_segment":null,"city":null,"state":null,"country":null,"description":null,"industry":null,"contributions":null,"member_level":"None","overview":null,"products":null,"commitment":null,"commitment_author":null,"logo":null,"big_logo":null,"color":"#f0f0ee"},"extra_questions":[],"members":[],"sponsorship":{"id":2076,"widget_title":"test2","lobby_template":"carousel","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":false,"sponsor_page_use_live_event_widget":false,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":69,"order":7,"should_display_on_expo_hall_page":false,"should_display_on_lobby_page":false,"type":{"id":8,"created":1603223268,"last_edited":1603223268,"name":"Featured","label":"Featured","order":8,"size":"Large"}},"ads":[],"materials":[],"social_networks":[]},{"id":569,"created":1755717799,"last_edited":1755717799,"order":8,"summit_id":69,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":13,"created":1603223094,"last_edited":1603223094,"name":"Essentia Water","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/13/logos/IF2020-Essentia-Presentedby-Logo-V2.png","big_logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/13/logos/IF2020-Essentia-Presentedby-Logo-V21.png","color":"#f0f0ee"},"extra_questions":[],"members":[],"sponsorship":{"id":2071,"widget_title":"test","lobby_template":"small-images","expo_hall_template":"big-images","sponsor_page_template":"big-header","event_page_template":"big-images","sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":69,"order":2,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":3,"created":1579890943,"last_edited":1579890943,"name":"Gold","label":"not sure??","order":3,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":570,"created":1755717951,"last_edited":1755717951,"order":9,"summit_id":69,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":8,"created":1603222234,"last_edited":1603222234,"name":"Z by HP","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/8/logos/IF2020-ZbyHP-Presentedby-Logo.png","big_logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/8/logos/IF2020-ZbyHP-Presentedby-Logo1.png","color":"#f0f0ee"},"extra_questions":[],"members":[],"sponsorship":{"id":2071,"widget_title":"test","lobby_template":"small-images","expo_hall_template":"big-images","sponsor_page_template":"big-header","event_page_template":"big-images","sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":69,"order":2,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":3,"created":1579890943,"last_edited":1579890943,"name":"Gold","label":"not sure??","order":3,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":571,"created":1755717973,"last_edited":1755717973,"order":10,"summit_id":69,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":24,"created":1605551226,"last_edited":1605551226,"name":"Bronze - Lower Tier","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":null,"big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":2071,"widget_title":"test","lobby_template":"small-images","expo_hall_template":"big-images","sponsor_page_template":"big-header","event_page_template":"big-images","sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":69,"order":2,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":3,"created":1579890943,"last_edited":1579890943,"name":"Gold","label":"not sure??","order":3,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":572,"created":1755717993,"last_edited":1755717993,"order":11,"summit_id":69,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":47,"created":1629851431,"last_edited":1629851431,"name":"BizLink Technology, Inc.","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/47/logos/OCP21GLO-SessionBrandingBar-Sponsor-Bizlink.png","big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":2071,"widget_title":"test","lobby_template":"small-images","expo_hall_template":"big-images","sponsor_page_template":"big-header","event_page_template":"big-images","sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":69,"order":2,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":3,"created":1579890943,"last_edited":1579890943,"name":"Gold","label":"not sure??","order":3,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":573,"created":1755718518,"last_edited":1755718518,"order":12,"summit_id":69,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":79,"created":1630351802,"last_edited":1630351802,"name":"Test and Validation","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":null,"big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":2083,"widget_title":"test8","lobby_template":"small-images","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":false,"sponsor_page_use_live_event_widget":false,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":69,"order":13,"should_display_on_expo_hall_page":false,"should_display_on_lobby_page":false,"type":{"id":19,"created":1630352146,"last_edited":1630352146,"name":"Experience Center","label":"Experience Center","order":19,"size":"Small"}},"ads":[],"materials":[],"social_networks":[]},{"id":574,"created":1755718559,"last_edited":1755718559,"order":13,"summit_id":69,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":10,"created":1603222343,"last_edited":1603222343,"name":"Microsoft","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/10/logos/OCP21GLO-SessionBrandingBar-Sponsor-Microsoft1.png","big_logo":"https://summit-api-dev-assets.nyc3.digitaloceanspaces.com/companies/10/logos/OCP21GLO-SessionBrandingBar-Sponsor-Microsoft.png","color":"#f0f0ee"},"extra_questions":[],"members":[],"sponsorship":{"id":2071,"widget_title":"test","lobby_template":"small-images","expo_hall_template":"big-images","sponsor_page_template":"big-header","event_page_template":"big-images","sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":69,"order":2,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":3,"created":1579890943,"last_edited":1579890943,"name":"Gold","label":"not sure??","order":3,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]}]
|
|
1
|
+
[{"id":7,"created":1598305743,"last_edited":1761081660,"order":1,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":"https://summit-api-assets.sfo2.digitaloceanspaces.com/summits/13/sponsors/7/logo-middle-tier-fntech.png","marquee":"","intro":"","external_link":"","video_link":"","chat_link":"","featured_event_id":0,"header_image_alt_text":"","side_image_alt_text":"","header_image_mobile_alt_text":"","carousel_advertise_image_alt_text":"fntech","show_logo_in_event_page":true,"lead_report_setting_id":1,"company":{"id":4,"created":1582745992,"last_edited":1582745992,"name":"FNTECH","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/4/logos/FNTECH-BLK-logo-rgb-1-color-white-720px2.png","big_logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/4/logos/FNTECH-BLK-logo-rgb-1-color-white-720px3.png","color":"#f0f0ee"},"extra_questions":[457,459,460,462,468],"members":[26396,28171,111106],"sponsorship":{"id":486,"widget_title":"Top-Tier Sponsors","lobby_template":"carousel","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":12,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":12,"created":1610061360,"last_edited":1610061360,"name":"Top-Tier","label":"Top-Tier","order":12,"size":"Large"}},"ads":[],"materials":[],"social_networks":[]},{"id":27,"created":1610063550,"last_edited":1757964873,"order":4,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":25,"created":1610060787,"last_edited":1610060787,"name":"Wherehol","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/25/logos/Logo-Middle-Tier-Wherehol.png","big_logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/25/logos/Logo-Middle-Tier-Wherehol1.png","color":"#DADADA"},"extra_questions":[],"members":[36416],"sponsorship":{"id":486,"widget_title":"Top-Tier Sponsors","lobby_template":"carousel","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":12,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":12,"created":1610061360,"last_edited":1610061360,"name":"Top-Tier","label":"Top-Tier","order":12,"size":"Large"}},"ads":[],"materials":[],"social_networks":[]},{"id":28,"created":1610063866,"last_edited":1761585874,"order":9,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":26,"created":1610063779,"last_edited":1610063779,"name":"Mobility","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/26/logos/Logo-Top-Tier-Mobility.png","big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":529,"widget_title":"Middle-Tier Sponsors","lobby_template":"small-images","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":13,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":13,"created":1610061803,"last_edited":1610061803,"name":"Middle-Tier","label":"Middle-Tier","order":13,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":29,"created":1610063887,"last_edited":1610063887,"order":12,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":27,"created":1610063790,"last_edited":1610063790,"name":"Treva","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/27/logos/logo-lower-tier-treva.png","big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":572,"widget_title":"Lower-Tier Sponsors","lobby_template":"small-images","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":14,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":14,"created":1610061840,"last_edited":1610061840,"name":"Lower-Tier","label":"Lower-Tier","order":14,"size":"Small"}},"ads":[],"materials":[],"social_networks":[]},{"id":30,"created":1610646759,"last_edited":1761585874,"order":8,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":28,"created":1610646606,"last_edited":1610646606,"name":"DVC","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/28/logos/DVC-LOGO-968X968.png","big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":486,"widget_title":"Top-Tier Sponsors","lobby_template":"carousel","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":12,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":12,"created":1610061360,"last_edited":1610061360,"name":"Top-Tier","label":"Top-Tier","order":12,"size":"Large"}},"ads":[],"materials":[],"social_networks":[]},{"id":31,"created":1610649182,"last_edited":1610649182,"order":3,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":29,"created":1610649003,"last_edited":1610649003,"name":"Seeing Eye Lighting Design","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/29/logos/logo-middle-tier-seeingeye.png","big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":486,"widget_title":"Top-Tier Sponsors","lobby_template":"carousel","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":12,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":12,"created":1610061360,"last_edited":1610061360,"name":"Top-Tier","label":"Top-Tier","order":12,"size":"Large"}},"ads":[],"materials":[],"social_networks":[]},{"id":32,"created":1610649204,"last_edited":1610649204,"order":2,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":"","intro":"","external_link":"","video_link":"","chat_link":"","featured_event_id":0,"header_image_alt_text":"","side_image_alt_text":"","header_image_mobile_alt_text":"","carousel_advertise_image_alt_text":"","show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":30,"created":1610649028,"last_edited":1610649028,"name":"Hughston Engineering","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/30/logos/logo-middle-tier-hughston.png","big_logo":null,"color":"#DADADA"},"extra_questions":[463,464],"members":[],"sponsorship":{"id":486,"widget_title":"Top-Tier Sponsors","lobby_template":"carousel","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":12,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":12,"created":1610061360,"last_edited":1610061360,"name":"Top-Tier","label":"Top-Tier","order":12,"size":"Large"}},"ads":[],"materials":[],"social_networks":[]},{"id":33,"created":1610649224,"last_edited":1761585874,"order":7,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":31,"created":1610649044,"last_edited":1610649044,"name":"Curtin Convention Services","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/31/logos/logo-middle-tier-curtin.png","big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":486,"widget_title":"Top-Tier Sponsors","lobby_template":"carousel","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":12,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":12,"created":1610061360,"last_edited":1610061360,"name":"Top-Tier","label":"Top-Tier","order":12,"size":"Large"}},"ads":[],"materials":[],"social_networks":[]},{"id":37,"created":1617308510,"last_edited":1617308510,"order":5,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":null,"intro":null,"external_link":null,"video_link":null,"chat_link":null,"featured_event_id":0,"header_image_alt_text":null,"side_image_alt_text":null,"header_image_mobile_alt_text":null,"carousel_advertise_image_alt_text":null,"show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":35,"created":1617308469,"last_edited":1617308469,"name":"Anthony Drake & Associates","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/35/logos/YOCO-ADA-Sponsor-Ad-Home.jpg","big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":486,"widget_title":"Top-Tier Sponsors","lobby_template":"carousel","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":12,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":12,"created":1610061360,"last_edited":1610061360,"name":"Top-Tier","label":"Top-Tier","order":12,"size":"Large"}},"ads":[],"materials":[],"social_networks":[]},{"id":246,"created":1694795645,"last_edited":1761585874,"order":6,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":"","intro":"","external_link":"","video_link":"","chat_link":"","featured_event_id":0,"header_image_alt_text":"","side_image_alt_text":"","header_image_mobile_alt_text":"","carousel_advertise_image_alt_text":"","show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":4238,"created":1694795086,"last_edited":1694795086,"name":"GameHub","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/4238/logos/logo-middle-tier-gamehub.png","big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":529,"widget_title":"Middle-Tier Sponsors","lobby_template":"small-images","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":13,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":13,"created":1610061803,"last_edited":1610061803,"name":"Middle-Tier","label":"Middle-Tier","order":13,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":247,"created":1694795681,"last_edited":1694795681,"order":10,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":"","intro":"","external_link":"","video_link":"","chat_link":"","featured_event_id":0,"header_image_alt_text":"","side_image_alt_text":"","header_image_mobile_alt_text":"","carousel_advertise_image_alt_text":"","show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":4239,"created":1694795131,"last_edited":1694795131,"name":"Hyved","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/4239/logos/logo-middle-tier-hyved.png","big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":529,"widget_title":"Middle-Tier Sponsors","lobby_template":"small-images","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":13,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":13,"created":1610061803,"last_edited":1610061803,"name":"Middle-Tier","label":"Middle-Tier","order":13,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":248,"created":1694795712,"last_edited":1694795712,"order":11,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":"","intro":"","external_link":"","video_link":"","chat_link":"","featured_event_id":0,"header_image_alt_text":"","side_image_alt_text":"","header_image_mobile_alt_text":"","carousel_advertise_image_alt_text":"","show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":4240,"created":1694795194,"last_edited":1694795194,"name":"FlightPath","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/4240/logos/Logo-Top-Tier-Flightpath.png","big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":529,"widget_title":"Middle-Tier Sponsors","lobby_template":"small-images","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":13,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":13,"created":1610061803,"last_edited":1610061803,"name":"Middle-Tier","label":"Middle-Tier","order":13,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]},{"id":249,"created":1694795831,"last_edited":1694795831,"order":13,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":"","intro":"","external_link":"","video_link":"","chat_link":"","featured_event_id":0,"header_image_alt_text":"","side_image_alt_text":"","header_image_mobile_alt_text":"","carousel_advertise_image_alt_text":"","show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":4241,"created":1694795289,"last_edited":1694795289,"name":"Topographic Tech","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/4241/logos/logo-lower-tier-topographic.png","big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":572,"widget_title":"Lower-Tier Sponsors","lobby_template":"small-images","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":14,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":14,"created":1610061840,"last_edited":1610061840,"name":"Lower-Tier","label":"Lower-Tier","order":14,"size":"Small"}},"ads":[],"materials":[],"social_networks":[]},{"id":250,"created":1694795937,"last_edited":1694795937,"order":14,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":"","intro":"","external_link":"","video_link":"","chat_link":"","featured_event_id":0,"header_image_alt_text":"","side_image_alt_text":"","header_image_mobile_alt_text":"","carousel_advertise_image_alt_text":"","show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":2569,"created":1654774524,"last_edited":1654774524,"name":"Open Technologies","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/2569/logos/logo-top-tier-opentech.png","big_logo":null,"color":"#f0f0ee"},"extra_questions":[],"members":[],"sponsorship":{"id":572,"widget_title":"Lower-Tier Sponsors","lobby_template":"small-images","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":14,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":14,"created":1610061840,"last_edited":1610061840,"name":"Lower-Tier","label":"Lower-Tier","order":14,"size":"Small"}},"ads":[],"materials":[],"social_networks":[]},{"id":251,"created":1694795962,"last_edited":1694795962,"order":15,"summit_id":13,"is_published":true,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":"","intro":"","external_link":"","video_link":"","chat_link":"","featured_event_id":0,"header_image_alt_text":"","side_image_alt_text":"","header_image_mobile_alt_text":"","carousel_advertise_image_alt_text":"","show_logo_in_event_page":true,"lead_report_setting_id":0,"company":{"id":4242,"created":1694795398,"last_edited":1694795398,"name":"Tilted","url":"","url_segment":null,"city":"","state":"","country":"","description":"","industry":"","contributions":"","member_level":"None","overview":"","products":"","commitment":"","commitment_author":"","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/companies/4242/logos/logo-lower-tier-tilted.png","big_logo":null,"color":"#DADADA"},"extra_questions":[],"members":[],"sponsorship":{"id":572,"widget_title":"Lower-Tier Sponsors","lobby_template":"small-images","expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":true,"sponsor_page_use_live_event_widget":true,"sponsor_page_use_schedule_widget":true,"sponsor_page_use_banner_widget":true,"badge_image":null,"badge_image_alt_text":"","summit_id":13,"order":14,"should_display_on_expo_hall_page":true,"should_display_on_lobby_page":true,"type":{"id":14,"created":1610061840,"last_edited":1610061840,"name":"Lower-Tier","label":"Lower-Tier","order":14,"size":"Small"}},"ads":[],"materials":[],"social_networks":[]}]
|
package/src/styles/colors.scss
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
$color_accent: #
|
|
1
|
+
$color_accent: #ff5e32;
|
|
2
2
|
$color_alerts: #ff0000;
|
|
3
3
|
$color_background_light: #ffffff;
|
|
4
4
|
$color_background_dark: #000000;
|
|
5
|
-
$color_button_background_color: #
|
|
6
|
-
$color_button_color: #
|
|
7
|
-
$color_gray_lighter: #
|
|
8
|
-
$color_gray_light: #
|
|
5
|
+
$color_button_background_color: #FC5200;
|
|
6
|
+
$color_button_color: #FFFFFF;
|
|
7
|
+
$color_gray_lighter: #F2F2F2;
|
|
8
|
+
$color_gray_light: #DFDFDF;
|
|
9
9
|
$color_gray_dark: #999999;
|
|
10
|
-
$color_gray_darker: #
|
|
10
|
+
$color_gray_darker: #4A4A4A;
|
|
11
11
|
$color_horizontal_rule_light: #e5e5e5;
|
|
12
12
|
$color_horizontal_rule_dark: #7b7b7b;
|
|
13
13
|
$color_icon_light: #ffffff;
|
|
@@ -19,13 +19,13 @@ $color_input_text_color_light: #363636;
|
|
|
19
19
|
$color_input_text_color_dark: #ffffff;
|
|
20
20
|
$color_input_text_color_disabled_light: #ffffff;
|
|
21
21
|
$color_input_text_color_disabled_dark: #ffffff;
|
|
22
|
-
$color_primary: #
|
|
23
|
-
$color_primary_contrast: #
|
|
24
|
-
$color_secondary: #
|
|
25
|
-
$color_secondary_contrast: #
|
|
22
|
+
$color_primary: #6d6e71;
|
|
23
|
+
$color_primary_contrast: #f1f2f2;
|
|
24
|
+
$color_secondary: #00CEC4;
|
|
25
|
+
$color_secondary_contrast: #ff5e32;
|
|
26
26
|
$color_text_light: #ffffff;
|
|
27
27
|
$color_text_med: #828282;
|
|
28
|
-
$color_text_dark: #
|
|
28
|
+
$color_text_dark: #333333;
|
|
29
29
|
$color_text_input_hints_light: #7b7b7b;
|
|
30
30
|
$color_text_input_hints_dark: #7b7b7b;
|
|
31
31
|
$color_text_input_hints: #c4c4c4;
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared PDF font registration utility
|
|
3
|
+
* Used by certificate and receipt PDF generation
|
|
4
|
+
*
|
|
5
|
+
* Font.register() is a global static method in @react-pdf/renderer
|
|
6
|
+
* Once registered, fonts are available to all PDFs in the application
|
|
7
|
+
*/
|
|
8
|
+
import { Font } from "@react-pdf/renderer";
|
|
9
|
+
|
|
10
|
+
// Default font family name
|
|
11
|
+
export const DEFAULT_FONT_FAMILY = "Nunito Sans";
|
|
12
|
+
|
|
13
|
+
// Default font file path (relative to static folder, served at /fonts/)
|
|
14
|
+
export const DEFAULT_FONT_PATH = "/fonts/nunito-sans/NunitoSans-Variable.ttf";
|
|
15
|
+
|
|
16
|
+
// Track if fonts have been registered
|
|
17
|
+
let fontsRegistered = false;
|
|
18
|
+
let registeredFontFamily = DEFAULT_FONT_FAMILY;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Register the default Nunito Sans font
|
|
22
|
+
* @param {string} fontFile - Path to the font file
|
|
23
|
+
* @returns {boolean} - Whether registration was successful
|
|
24
|
+
*/
|
|
25
|
+
export const registerDefaultFont = (fontFile) => {
|
|
26
|
+
if (!fontFile) {
|
|
27
|
+
console.warn("No font file provided for default font registration");
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
try {
|
|
32
|
+
Font.register({
|
|
33
|
+
family: DEFAULT_FONT_FAMILY,
|
|
34
|
+
fonts: [
|
|
35
|
+
{
|
|
36
|
+
src: fontFile,
|
|
37
|
+
fontWeight: "normal"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
src: fontFile,
|
|
41
|
+
fontWeight: "bold"
|
|
42
|
+
},
|
|
43
|
+
]
|
|
44
|
+
});
|
|
45
|
+
registeredFontFamily = DEFAULT_FONT_FAMILY;
|
|
46
|
+
return true;
|
|
47
|
+
} catch (error) {
|
|
48
|
+
console.error("Failed to register default font:", error);
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Convert font paths to absolute URLs
|
|
55
|
+
* @param {string} fontPath - The font path (relative or absolute)
|
|
56
|
+
* @param {string} origin - The origin to use for absolute URL (e.g., window.location.origin)
|
|
57
|
+
* @returns {string|null} - The absolute URL or null
|
|
58
|
+
*/
|
|
59
|
+
export const getFontUrl = (fontPath, origin) => {
|
|
60
|
+
if (!fontPath) return null;
|
|
61
|
+
|
|
62
|
+
// Already an absolute URL - return as-is
|
|
63
|
+
if (fontPath.startsWith("http://") || fontPath.startsWith("https://")) {
|
|
64
|
+
return fontPath;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Clean up the path - remove /static prefix since fonts are served at root /fonts/
|
|
68
|
+
const cleanPath = fontPath.replace("/static/fonts/", "/fonts/");
|
|
69
|
+
|
|
70
|
+
// Convert to absolute URL
|
|
71
|
+
return new URL(cleanPath, origin).href;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Register custom font from site settings
|
|
76
|
+
* @param {Object} siteFont - Site font configuration
|
|
77
|
+
* @param {string} siteFont.fontFamily - Font family name
|
|
78
|
+
* @param {Object} siteFont.regularFont - Regular font config
|
|
79
|
+
* @param {Object} siteFont.boldFont - Bold font config
|
|
80
|
+
* @returns {boolean} - Whether registration was successful
|
|
81
|
+
*/
|
|
82
|
+
export const registerCustomFont = (siteFont) => {
|
|
83
|
+
if (!siteFont || !siteFont.fontFamily || !siteFont.regularFont || !siteFont.boldFont) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const fonts = [];
|
|
88
|
+
const origin = window.location.origin;
|
|
89
|
+
|
|
90
|
+
if (siteFont.regularFont.fontFile && siteFont.regularFont.fontFormat === "ttf") {
|
|
91
|
+
const fontUrl = getFontUrl(siteFont.regularFont.fontFile, origin);
|
|
92
|
+
if (fontUrl) {
|
|
93
|
+
fonts.push({
|
|
94
|
+
src: fontUrl,
|
|
95
|
+
fontWeight: "normal"
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (siteFont.boldFont.fontFile && siteFont.boldFont.fontFormat === "ttf") {
|
|
101
|
+
const fontUrl = getFontUrl(siteFont.boldFont.fontFile, origin);
|
|
102
|
+
if (fontUrl) {
|
|
103
|
+
fonts.push({
|
|
104
|
+
src: fontUrl,
|
|
105
|
+
fontWeight: "bold"
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (fonts.length > 0) {
|
|
111
|
+
try {
|
|
112
|
+
Font.register({
|
|
113
|
+
family: siteFont.fontFamily,
|
|
114
|
+
fonts: fonts
|
|
115
|
+
});
|
|
116
|
+
registeredFontFamily = siteFont.fontFamily;
|
|
117
|
+
return true;
|
|
118
|
+
} catch (error) {
|
|
119
|
+
console.warn("Failed to register custom font:", error);
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return false;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Initialize PDF fonts - call this at app startup
|
|
129
|
+
* @param {Object} options - Font options
|
|
130
|
+
* @param {string} options.defaultFontFile - Path to default font file
|
|
131
|
+
* @param {Object} options.siteFont - Custom site font config (optional)
|
|
132
|
+
* @returns {string} - The registered font family name
|
|
133
|
+
*/
|
|
134
|
+
export const initializePdfFonts = ({ defaultFontFile, siteFont = null }) => {
|
|
135
|
+
if (fontsRegistered) {
|
|
136
|
+
return registeredFontFamily;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Try custom font first if available
|
|
140
|
+
if (siteFont) {
|
|
141
|
+
const customFontRegistered = registerCustomFont(siteFont);
|
|
142
|
+
if (customFontRegistered) {
|
|
143
|
+
fontsRegistered = true;
|
|
144
|
+
return registeredFontFamily;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Fall back to default font
|
|
149
|
+
if (defaultFontFile) {
|
|
150
|
+
const defaultRegistered = registerDefaultFont(defaultFontFile);
|
|
151
|
+
if (defaultRegistered) {
|
|
152
|
+
fontsRegistered = true;
|
|
153
|
+
return registeredFontFamily;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// If all else fails, return Helvetica (built-in)
|
|
158
|
+
registeredFontFamily = "Helvetica";
|
|
159
|
+
fontsRegistered = true;
|
|
160
|
+
return registeredFontFamily;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Get the currently registered font family
|
|
165
|
+
* @returns {string} - The registered font family name
|
|
166
|
+
*/
|
|
167
|
+
export const getRegisteredFontFamily = () => {
|
|
168
|
+
return registeredFontFamily;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Check if fonts have been registered
|
|
173
|
+
* @returns {boolean}
|
|
174
|
+
*/
|
|
175
|
+
export const areFontsRegistered = () => {
|
|
176
|
+
return fontsRegistered;
|
|
177
|
+
};
|
|
@@ -72,6 +72,17 @@ export const MARKETING_SETTINGS_KEYS = {
|
|
|
72
72
|
certificateSpeakerTitleText: "CERTIFICATE_SPEAKER_TITLE_TEXT",
|
|
73
73
|
certificateSummitName: "CERTIFICATE_SUMMIT_NAME",
|
|
74
74
|
certificateShowRole: "CERTIFICATE_SHOW_ROLE",
|
|
75
|
+
// Receipt settings
|
|
76
|
+
printLogo: "PRINT_LOGO",
|
|
77
|
+
receiptOrganizerLegalName: "RECEIPT_ORGANIZER_LEGAL_NAME",
|
|
78
|
+
receiptOrganizerAddressLine1: "RECEIPT_ORGANIZER_ADDRESS_LINE_1",
|
|
79
|
+
receiptOrganizerAddressLine2: "RECEIPT_ORGANIZER_ADDRESS_LINE_2",
|
|
80
|
+
receiptOrganizerCity: "RECEIPT_ORGANIZER_CITY",
|
|
81
|
+
receiptOrganizerState: "RECEIPT_ORGANIZER_STATE",
|
|
82
|
+
receiptOrganizerPostalCode: "RECEIPT_ORGANIZER_POSTAL_CODE",
|
|
83
|
+
receiptOrganizerCountry: "RECEIPT_ORGANIZER_COUNTRY",
|
|
84
|
+
receiptOrganizerTaxId: "RECEIPT_ORGANIZER_TAX_ID",
|
|
85
|
+
receiptOrganizerTaxIdLabel: "RECEIPT_ORGANIZER_TAX_ID_LABEL",
|
|
75
86
|
}
|
|
76
87
|
|
|
77
88
|
const marketingSettingsQuery = graphql`
|