@openeventkit/event-site 2.1.41 → 2.1.43
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/.claude/CLAUDE.md +122 -0
- package/.claude/settings.local.json +14 -5
- 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/data/colors.json +1 -0
- package/src/data/events.idx.json +1 -0
- package/src/data/events.json +1 -0
- package/src/data/marketing-settings.json +1 -0
- package/src/data/speakers.idx.json +1 -0
- package/src/data/speakers.json +1 -0
- package/src/data/summit.json +1 -0
- package/src/data/voteable-presentations.json +1 -0
- package/src/styles/colors.scss +11 -11
- package/src/utils/pdfFonts.js +177 -0
- package/src/utils/useMarketingSettings.js +11 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"id":9,"created":1597087807,"modified":1597087807,"key":"color_primary","value":"#6d6e71","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":10,"created":1597087843,"modified":1597087843,"key":"color_primary_contrast","value":"#f1f2f2","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":11,"created":1597088097,"modified":1597088097,"key":"color_secondary","value":"#00CEC4","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":12,"created":1597088124,"modified":1597088124,"key":"color_secondary_contrast","value":"#ff5e32","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":13,"created":1597088158,"modified":1597088158,"key":"color_text_dark","value":"#333333","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":14,"created":1597088190,"modified":1597088190,"key":"color_text_light","value":"#ffffff","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":15,"created":1597088218,"modified":1597972142,"key":"hero_title","value":"YOCO Summit. Live Now!","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":16,"created":1597088247,"modified":1598130870,"key":"hero_subtitle","value":"virtual · pacific time","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":17,"created":1597088278,"modified":1597088278,"key":"disqus_threads_by","value":"event","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":201,"created":1624487665,"modified":1624487665,"key":"SCHEDULE_EVENT_COLOR_ORIGIN","value":"TRACK","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":249,"created":1630617286,"modified":1634140170,"key":"SCHEDULE_FILTER_BY_DATE_ENABLED","value":"1","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":250,"created":1630617287,"modified":1630617287,"key":"SCHEDULE_FILTER_BY_DATE_LABEL","value":"Date","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":251,"created":1630617760,"modified":1645661767,"key":"SCHEDULE_FILTER_BY_TRACK_ENABLED","value":"0","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":252,"created":1630617761,"modified":1630617761,"key":"SCHEDULE_FILTER_BY_TRACK_LABEL","value":"Categories","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":253,"created":1630617762,"modified":1630617762,"key":"SCHEDULE_FILTER_BY_TAGS_ENABLED","value":"1","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":254,"created":1630617762,"modified":1630617762,"key":"SCHEDULE_FILTER_BY_TAGS_LABEL","value":"Tags","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":255,"created":1630617764,"modified":1630617764,"key":"SCHEDULE_FILTER_BY_COMPANY_ENABLED","value":"1","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":256,"created":1630617764,"modified":1630617764,"key":"SCHEDULE_FILTER_BY_COMPANY_LABEL","value":"Company","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":257,"created":1630617766,"modified":1645661769,"key":"SCHEDULE_FILTER_BY_SPEAKERS_ENABLED","value":"0","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":258,"created":1630617766,"modified":1630617766,"key":"SCHEDULE_FILTER_BY_SPEAKERS_LABEL","value":"Speakers","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":259,"created":1630617767,"modified":1630617767,"key":"SCHEDULE_FILTER_BY_EVENT_TYPES_ENABLED","value":"1","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":260,"created":1630617768,"modified":1630617768,"key":"SCHEDULE_FILTER_BY_EVENT_TYPES_LABEL","value":"Activity Types","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":261,"created":1630617769,"modified":1630617769,"key":"SCHEDULE_FILTER_BY_TITLE_ENABLED","value":"1","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":262,"created":1630617769,"modified":1630617769,"key":"SCHEDULE_FILTER_BY_TITLE_LABEL","value":"Title","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":319,"created":1637106558,"modified":1637106558,"key":"color_text_input_hints","value":"#c4c4c4","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":320,"created":1637106580,"modified":1637106580,"key":"color_accent","value":"#ff5e32","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":446,"created":1659056069,"modified":1659056069,"key":"test","value":"Overview of the development efforts being worked on within the ORV3 Blind Mate Liquid Cooling Interfaces Group. The group is working on blind-mate quick connect valves, blind-mate manifolds, ORV3 frame interfaces, blind-mate liquid cooled IT gear interfaces and concepts, hoses and tubing solutions to work with the blind-mate valves, and various white papers. This presentation will help provide the community context in terms how the various efforts relate prior to more detailed discussions planned later in the Summit. The contributing suppliers and their respective expertise will be discussed. We will provide a brief update on the progress in each area. This effort is being developed under an OCP CLA.","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":447,"created":1659056103,"modified":1659056103,"key":"test2","value":"<p>Overview of the development efforts being worked on within the ORV3 Blind Mate Liquid Cooling Interfaces Group. The group is working on blind-mate quick connect valves, blind-mate manifolds, ORV3 frame interfaces, blind-mate liquid cooled IT gear interfaces and concepts, hoses and tubing solutions to work with the blind-mate valves, and various white papers. This presentation will help provide the community context in terms how the various efforts relate prior to more detailed discussions planned later in the Summit. The contributing suppliers and their respective expertise will be discussed. We will provide a brief update on the progress in each area. This effort is being developed under an OCP CLA. </p>","type":"TEXTAREA","file":null,"show_id":13,"selection_plan_id":0},{"id":448,"created":1659056251,"modified":1659056251,"key":"test3","value":"https://object-storage-ca-ymq-1.vexxhost.net/swift/v1/6e4619c416ff4bd19e1c087f27a43eea/marketing-api/YOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-Speakers.csv","type":"FILE","file":"https://object-storage-ca-ymq-1.vexxhost.net/swift/v1/6e4619c416ff4bd19e1c087f27a43eea/marketing-api/YOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-SpeakersYOCO_Virtual_Summit-Speakers.csv","show_id":13,"selection_plan_id":0},{"id":497,"created":1675278272,"modified":1769736573,"key":"CFP_SPEAKERS_SINGULAR_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":12},{"id":498,"created":1675278688,"modified":1769736573,"key":"CFP_SPEAKERS_PLURAL_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":12},{"id":561,"created":1679606234,"modified":1769462919,"key":"REG_LITE_COMPANY_INPUT_PLACEHOLDER","value":"Enter your company","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":562,"created":1679606234,"modified":1769462919,"key":"REG_LITE_COMPANY_DDL_PLACEHOLDER","value":"Select a company","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":563,"created":1679606234,"modified":1769462919,"key":"REG_LITE_ALLOW_PROMO_CODES","value":"1","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":573,"created":1679677936,"modified":1679687880,"key":"registration_in_person_disclaimer","value":"<p>TEST! Information here will show up during the Registration process. <br>\r\n<br>\r\nI agree to the YOCO Event Terms & Conditions.</p>\r\n<p><strong>Cookies</strong></p>\r\n<p>We use cookies to personalize content, to provide social media features and to analyze our traffic. We also share information about your use of our site with our social media, solution providers, members, sponsors and analytics partners who may combine it with other information that you’ve provided to them or that they’ve collected from your use of their services. You consent to our cookies if you continue to use this website. </p>","type":"TEXTAREA","file":null,"show_id":13,"selection_plan_id":0},{"id":574,"created":1680191479,"modified":1769736573,"key":"CFP_PRESENTATION_SUMMARY_HIDE_TRACK_SELECTION","value":"0","type":"TEXT","file":null,"show_id":13,"selection_plan_id":12},{"id":575,"created":1680191479,"modified":1769736573,"key":"CFP_PRESENTATION_SUMMARY_HIDE_ACTIVITY_TYPE_SELECTION","value":"0","type":"TEXT","file":null,"show_id":13,"selection_plan_id":12},{"id":579,"created":1680191994,"modified":1769736573,"key":"CFP_PRESENTATION_EDITION_DEFAULT_TAB","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":12},{"id":580,"created":1680191994,"modified":1769736573,"key":"CFP_PRESENTATION_EDITION_CUSTOM_MESSAGE","value":"<p>This is a custom message you can display to speakers.</p>","type":"TEXTAREA","file":null,"show_id":13,"selection_plan_id":12},{"id":603,"created":1681712958,"modified":1769736573,"key":"CFP_PRESENTATION_SUMMARY_SOCIAL_SUMMARY_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":12},{"id":604,"created":1681712958,"modified":1769736573,"key":"CFP_PRESENTATION_SUMMARY_TITLE_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":12},{"id":605,"created":1681712958,"modified":1769736573,"key":"CFP_PRESENTATIONS_PLURAL_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":12},{"id":606,"created":1681712959,"modified":1769736573,"key":"CFP_PRESENTATION_SUMMARY_LINKS_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":12},{"id":607,"created":1681712959,"modified":1769736573,"key":"CFP_PRESENTATION_SUMMARY_ABSTRACT_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":12},{"id":608,"created":1681712959,"modified":1769736573,"key":"CFP_PRESENTATIONS_SINGULAR_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":12},{"id":664,"created":1684861626,"modified":1718652724,"key":"CFP_SPEAKERS_PLURAL_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":36},{"id":665,"created":1684861626,"modified":1718652725,"key":"CFP_PRESENTATION_SUMMARY_ABSTRACT_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":36},{"id":666,"created":1684861626,"modified":1718652724,"key":"CFP_PRESENTATIONS_SINGULAR_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":36},{"id":667,"created":1684861626,"modified":1718652725,"key":"CFP_PRESENTATIONS_PLURAL_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":36},{"id":668,"created":1684861626,"modified":1718652724,"key":"CFP_PRESENTATION_SUMMARY_HIDE_ACTIVITY_TYPE_SELECTION","value":"0","type":"TEXT","file":null,"show_id":13,"selection_plan_id":36},{"id":669,"created":1684861626,"modified":1718652725,"key":"CFP_PRESENTATION_SUMMARY_SOCIAL_SUMMARY_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":36},{"id":670,"created":1684861627,"modified":1718652724,"key":"CFP_SPEAKERS_SINGULAR_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":36},{"id":671,"created":1684861627,"modified":1718652724,"key":"CFP_PRESENTATION_EDITION_CUSTOM_MESSAGE","value":"","type":"TEXTAREA","file":null,"show_id":13,"selection_plan_id":36},{"id":672,"created":1684861627,"modified":1718652724,"key":"CFP_PRESENTATION_EDITION_DEFAULT_TAB","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":36},{"id":673,"created":1684861627,"modified":1718652724,"key":"CFP_PRESENTATION_SUMMARY_LINKS_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":36},{"id":674,"created":1684861627,"modified":1718652725,"key":"CFP_PRESENTATION_SUMMARY_TITLE_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":36},{"id":675,"created":1684861627,"modified":1718652724,"key":"CFP_PRESENTATION_SUMMARY_HIDE_TRACK_SELECTION","value":"0","type":"TEXT","file":null,"show_id":13,"selection_plan_id":36},{"id":771,"created":1688064402,"modified":1769736573,"key":"CFP_TRACK_QUESTION_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":12},{"id":1387,"created":1705351056,"modified":1769462920,"key":"PRINT_APP_HIDE_FIND_TICKET_BY_FULLNAME","value":"0","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":1388,"created":1705351056,"modified":1769462919,"key":"REG_LITE_ORDER_COMPLETE_STEP_2ND_PARAGRAPH","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":1389,"created":1705351056,"modified":1769462919,"key":"REG_LITE_INITIAL_ORDER_COMPLETE_STEP_2ND_PARAGRAPH","value":"If you wish to transfer your assigned ticket, close this window and visit the \"My Orders/Tickets\" tab in the top navigation bar.","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":1390,"created":1705351056,"modified":1769462919,"key":"REG_LITE_INITIAL_ORDER_COMPLETE_BTN_LABEL","value":"Finish Now","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":1391,"created":1705351056,"modified":1769462919,"key":"REG_LITE_ORDER_COMPLETE_STEP_1ST_PARAGRAPH","value":"You may visit the My Orders/Tickets tab in the top right-hand corner of the navigation bar to\r\n assign/reassign tickets or to complete any required ticket details.","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":1392,"created":1705351056,"modified":1769462920,"key":"PRINT_APP_HIDE_FIND_TICKET_BY_EMAIL","value":"0","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":1393,"created":1705351056,"modified":1769462919,"key":"REG_LITE_NO_ALLOWED_TICKETS_MESSAGE","value":"<span>You already have purchased all available tickets for this event and/or there are no tickets available for you to purchase.</span><br/><span><a href=\"/a/my-tickets\">Visit the my orders / my tickets page</a> to review your existing tickets.</span>","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":1394,"created":1705351056,"modified":1769462919,"key":"REG_LITE_INITIAL_ORDER_COMPLETE_STEP_1ST_PARAGRAPH","value":"A ticket has been assigned to you. To complete your additional ticket details, please click the \"{button}\" button.","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":1395,"created":1705351057,"modified":1769462919,"key":"REG_LITE_SHOW_COMPANY_INPUT_DEFAULT_OPTIONS","value":"0","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":1396,"created":1705351057,"modified":1769462919,"key":"REG_LITE_ORDER_COMPLETE_BTN_LABEL","value":"View My Orders/Tickets","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":1397,"created":1705351057,"modified":1769462919,"key":"REG_LITE_SHOW_COMPANY_INPUT","value":"1","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":1398,"created":1706546213,"modified":1769736573,"key":"CFP_LANDING_PAGE_TITLE","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":12},{"id":2046,"created":1718652552,"modified":1718652552,"key":"CFP_LANDING_PAGE_TITLE","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":36},{"id":2047,"created":1718652552,"modified":1718652552,"key":"CFP_TRACK_QUESTION_LABEL","value":"","type":"TEXT","file":null,"show_id":13,"selection_plan_id":36},{"id":2542,"created":1740260620,"modified":1740260620,"key":"EMAIL_TEMPLATE_SPEAKERS_FROM","value":"yoco@fntech.com","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":2543,"created":1740260620,"modified":1740260620,"key":"EMAIL_TEMPLATE_GENERIC_FROM","value":"yoco@fntech.com","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":2558,"created":1743533794,"modified":1769462919,"key":"REG_LITE_ORDER_COMPLETE_TITLE","value":"Payment Processed","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":2934,"created":1755821488,"modified":1755822419,"key":"BADGE_TEMPLATE_QR_SIZE","value":"100","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":2935,"created":1755821488,"modified":1755828206,"key":"BADGE_TEMPLATE_QR_COLOR","value":"#1c9ddd","type":"HEX_COLOR","file":null,"show_id":13,"selection_plan_id":0},{"id":2936,"created":1755821488,"modified":1755822562,"key":"BADGE_TEMPLATE_QR_TOP","value":"320px","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":2937,"created":1755821488,"modified":1755822631,"key":"BADGE_TEMPLATE_QR_LEFT","value":"115px","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":2938,"created":1755822247,"modified":1767909260,"key":"BADGE_TEMPLATE_BACKGROUND_IMG","value":"https://object-storage-ca-ymq-1.vexxhost.net/swift/v1/6e4619c416ff4bd19e1c087f27a43eea/marketing-api/mma.png","type":"FILE","file":"https://object-storage-ca-ymq-1.vexxhost.net/swift/v1/6e4619c416ff4bd19e1c087f27a43eea/marketing-api/mma.png","show_id":13,"selection_plan_id":0},{"id":2939,"created":1755822375,"modified":1755822375,"key":"BADGE_TEMPLATE_FIRST_NAME_FONT_SIZE_MIN","value":"14","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":2940,"created":1755822375,"modified":1755822375,"key":"BADGE_TEMPLATE_NAME_DISPLAY_MODE","value":"FULL_NAME","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":2941,"created":1755822375,"modified":1755822375,"key":"BADGE_TEMPLATE_TEXT_FIELDS_ALIGN","value":"CENTER","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":2942,"created":1755822375,"modified":1755822375,"key":"BADGE_TEMPLATE_FIRST_NAME_FONT_SIZE_MAX","value":"18","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":2943,"created":1755822375,"modified":1755822375,"key":"BADGE_TEMPLATE_FIRST_NAME_TEXT_ALIGN","value":"CENTER","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0},{"id":2944,"created":1755822562,"modified":1755822609,"key":"BADGE_TEMPLATE_TEXT_FIELDS_MARGIN","value":"40px","type":"TEXT","file":null,"show_id":13,"selection_plan_id":0}]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"27083":2,"27084":3,"27085":4,"27086":10,"27088":7,"27090":6,"27093":5,"27101":8,"27265":1,"27274":11,"29129":9,"29348":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"id":29348,"first_name":"JP","last_name":"Maxwell","title":"","bio":"","member_id":1,"pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","big_pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","company":null,"presentations":[6143],"moderated_presentations":[],"badge_features":[]},{"id":27265,"first_name":"Test","last_name":"User","title":"","bio":"","member_id":27732,"pic":"https://summit-api-assets.sfo2.digitaloceanspaces.com/profile-images/Bree-Avatar1.png","big_pic":"https://summit-api-assets.sfo2.digitaloceanspaces.com/profile-images/Bree-Avatar2.png","company":null,"presentations":[6149],"moderated_presentations":[],"badge_features":[]},{"id":27083,"first_name":"Kevin","last_name":"Griffin","title":"CSO","bio":"<p>With a unique combination of creative vision, client understanding, production knowledge, and business acumen, Kevin – or “Grif” as he is known to his warm circle – provides a guiding hand to all aspects of our events. One minute he’s analyzing a show budget and the next he’s discussing creative solutions to a technical puzzle or communication need. This balance of right brain/left brain has been honed through many years of event experience, along with continual education, including his master’s degree in business. A gifted moneyman, Grif owned/managed an accounting firm, communications company, and software firm before going back to his true passion, event production. Making roosters jealous, Grif is generally up before the crack of dawn blueprinting next steps, researching new ideas, and getting a jump on the day. </p>\n<p>Grif’s words to live by: Focus on being kind and having a positive attitude; it will change the world around you. </p>","member_id":27717,"pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","big_pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","company":null,"presentations":[745,747,746,626,730,732,731,616],"moderated_presentations":[],"badge_features":[{"id":19,"name":"Speaker","image":"https://summit-api-assets.sfo2.digitaloceanspaces.com/summit-event-images/YOCO-BadgeIcon-Speaker.svg"}]},{"id":27084,"first_name":"Heather","last_name":"Griffin","title":"Creative Director","bio":"<p>An imaginative, resourceful and strategic creative professional with 20+ years of experience in a myriad of visual art platforms, Heather is the ultimate idea wrangler. Skilled in both the artistic and logistic aspects of the development process, Heather possesses the ideal blend of creativity, ingenuity and grit necessary to see each project through to stunning completion. Heather’s background in marketing, communications, print/digital graphics, copywriting, web design, merchandizing, and event management helps ensure all teams are moving in conga-line sync. </p>\n<p>Most intense work experience: Completely redesigning and rerouting a 1500-person global summit in less than 24 hours when a Category 5 hurricane blew the entire beachfront venue to smithereens. Eeeekkk!</p>","member_id":27718,"pic":"https://summit-api-assets.sfo2.digitaloceanspaces.com/profile-images/Heather-Griffin-Square.jpg","big_pic":"https://summit-api-assets.sfo2.digitaloceanspaces.com/profile-images/Heather-Griffin-Portrait.jpg","company":null,"presentations":[751,752,753,634,730,732,731,616],"moderated_presentations":[],"badge_features":[]},{"id":27085,"first_name":"Kelley","last_name":"Schmidt","title":"","bio":"","member_id":27683,"pic":"https://summit-api-assets.sfo2.digitaloceanspaces.com/profile-images/KSchmidt-square.jpg","big_pic":"https://summit-api-assets.sfo2.digitaloceanspaces.com/profile-images/Kelley-Schmidt-Portrait.jpg","company":null,"presentations":[739,740,741,730,732,731,616,624],"moderated_presentations":[],"badge_features":[]},{"id":27093,"first_name":"Jeremy","last_name":"Muir","title":"CEO","bio":"<p>Jeremy has over 25 years of experience in the event industry. In 1996, he and his business partner Chad Kropke founded FNTECH in a small shop in Huntington Beach, CA. Bob Moe soon joined them and together they grew FNTECH into a full-service production company with multiple locations, over 100 fulltime employees and millions in revenue. Jeremy began his career in production as an audio engineer and quickly moved up the ladder to technical director, project manager, and finally executive producer. Having a deep well of experience executing high-profile, multi-million dollar events all over the world, some with more than 120,000 in attendance, we can safely say that there’s a blue moon in the sky when Jeremy is surprised by anything event related.</p>\n<p>Jeremy, his beloved guitar, and his stack of super-secret nerd books currently reside in Southern California with his wife and daughter.</p>","member_id":27695,"pic":"https://summit-api-assets.sfo2.digitaloceanspaces.com/profile-images/Jeremy-Muir-Square.jpg","big_pic":"https://summit-api-assets.sfo2.digitaloceanspaces.com/profile-images/Jeremy-Muir-Portrait.jpg","company":null,"presentations":[736,737,738,730,732,6146,731,616],"moderated_presentations":[],"badge_features":[]},{"id":27090,"first_name":"Kelly","last_name":"Gotelli","title":"Sr Event Manager","bio":"<p>Kelly has over 13 years of corporate event experience, including 8 years of specializing in Expo, Sponsorships and Show Services Management. Assisting over 500+ sponsors. She has produced exhibit booths and experiences at industry tradeshows such as CES, Game Developer Conference America and EU, CTIA, Strata Data Conference. Managed events for high profile companies including Facebook, Hewlett Packard, and Palm Inc. With experience on both sides of an exhibit floor I have played a key role in creating the FNTECH Sponsor Portal. This is a user-friendly portal, a one stop shop for sponsors to order services and turn in all sponsorship deliverables. </p>","member_id":8,"pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","big_pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","company":null,"presentations":[755,743,744,756,742,754,625,635],"moderated_presentations":[],"badge_features":[]},{"id":27088,"first_name":"Jacki","last_name":"Krawiecki","title":"Sponsor Manager","bio":"","member_id":26395,"pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","big_pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","company":null,"presentations":[743,744,742,625],"moderated_presentations":[],"badge_features":[]},{"id":27101,"first_name":"Steve","last_name":"Heuseveldt","title":"Producer","bio":"<p>I produce stuff</p>","member_id":27716,"pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","big_pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","company":null,"presentations":[748,749,750,633],"moderated_presentations":[],"badge_features":[]},{"id":29129,"first_name":"tipit2","last_name":"Espinoza","title":"Sys Engr","bio":"<p>test</p>","member_id":81337,"pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","big_pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","company":null,"presentations":[3174],"moderated_presentations":[],"badge_features":[]},{"id":27086,"first_name":"JP","last_name":"Maxwell","title":"Software Architect","bio":"<p>test</p>","member_id":26402,"pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","big_pic":"https://idp.sfo2.cdn.digitaloceanspaces.com/FNV-Generic-Profile-Icon_Circle.svg","company":null,"presentations":[733,734,735],"moderated_presentations":[],"badge_features":[]},{"id":27274,"first_name":"Chris","last_name":"Angerame","title":"IT Department Manager","bio":"","member_id":27746,"pic":"https://summit-api-assets.sfo2.digitaloceanspaces.com/profile-images/Chris-Angerame-Portrait1.jpg","big_pic":"https://summit-api-assets.sfo2.digitaloceanspaces.com/profile-images/Chris-Angerame-Portrait2.jpg","company":null,"presentations":[733,734,735],"moderated_presentations":[],"badge_features":[]}]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":13,"name":"YOCO Summit","start_date":1769700600,"end_date":1769842740,"start_showing_venues_date":1765609200,"dates_label":"","time_zone_id":"America/Los_Angeles","slug":"yoco-virtual-summit","logo":"https://summit-api-assets.sfo2.digitaloceanspaces.com/summits/13/yoco-logo.png","secondary_logo":null,"reassign_ticket_till_date":1780873200,"registration_disclaimer_content":"","registration_disclaimer_mandatory":false,"support_email":"support@fntech.com","allow_update_attendee_extra_questions":true,"time_zone_label":"America/Los_Angeles","registration_allowed_refund_request_till_date":1767168000,"event_types":[{"id":134},{"id":135},{"id":136},{"id":137},{"id":138},{"id":139},{"id":140},{"id":141},{"id":142},{"id":143},{"id":144},{"id":885},{"id":959},{"id":960},{"id":961},{"id":962},{"id":963}],"badge_features_types":[{"id":19,"created":1594227652,"last_edited":1594227652,"name":"Speaker","description":"<p>This is a speaker feature to show a speaker icon on the badge</p>","template_content":"","summit_id":13,"image":"https://summit-api-assets.sfo2.digitaloceanspaces.com/summit-event-images/YOCO-BadgeIcon-Speaker.svg"},{"id":58,"created":1630434548,"last_edited":1630434548,"name":"Expo","description":"<p>Adds expo icon to badge for early access to EXPO for set up </p>","template_content":"","summit_id":13,"image":"https://summit-api-assets.sfo2.digitaloceanspaces.com/summit-event-images/YOCO-BadgeIcon-Partner.svg"},{"id":63,"created":1634141581,"last_edited":1634141581,"name":"Student","description":"<p>Adds a student icon to badge</p>","template_content":"","summit_id":13,"image":"https://summit-api-assets.sfo2.digitaloceanspaces.com/summit-event-images/YOCO-BadgeIcon-Student.svg"},{"id":64,"created":1634141645,"last_edited":1634141645,"name":"Media","description":"<p>Adds a media icon to badge</p>","template_content":"","summit_id":13,"image":"https://summit-api-assets.sfo2.digitaloceanspaces.com/summit-event-images/YOCO-BadgeIcon-Media.svg"},{"id":149,"created":1722614559,"last_edited":1722614559,"name":"Table 1","description":"<p>A seat at table 1</p>","template_content":"","summit_id":13,"image":null},{"id":150,"created":1722614643,"last_edited":1722614643,"name":"Table 2","description":"<p>A seat at table 2</p>","template_content":"","summit_id":13,"image":null},{"id":151,"created":1722614658,"last_edited":1722614658,"name":"Table 3","description":"<p>A seat at table 3</p>","template_content":"","summit_id":13,"image":null}],"tracks":[{"id":35821,"name":"Virtual Events","code":"T1","color":"#f1f2f2","text_color":"#000000","order":1,"parent_id":0,"subtracks":[]},{"id":35820,"name":"Keynote","code":"key","color":"#1eaaa3","text_color":"#000000","order":2,"parent_id":0,"subtracks":[]},{"id":35824,"name":"Hybrid Events","code":"T3","color":"#006d68","text_color":"#000000","order":3,"parent_id":0,"subtracks":[]},{"id":35823,"name":"In Person Events","code":"T2","color":"#ff5e32","text_color":"#000000","order":4,"parent_id":0,"subtracks":[]},{"id":36232,"name":"Test","code":"test","color":"#DADADA","text_color":"#000000","order":5,"parent_id":0,"subtracks":[]}],"track_groups":[{"id":16,"name":"Virtual Tracks","color":"#f0f0ee"},{"id":73,"name":"Open Submissions","color":"#f0f0ee"}],"schedule_settings":[{"id":6,"created":1648845398,"last_edited":1648845398,"key":"my-schedule-main","summit_id":13,"is_my_schedule":true,"only_events_with_attendee_access":false,"color_source":"EVENT_TYPES","is_enabled":true,"is_default":true,"hide_past_events_with_show_always_on_schedule":false,"time_format":"12h","filters":[{"id":145,"created":1648845398,"last_edited":1648845398,"type":"DATE","label":"Date","is_enabled":true,"config_id":6,"order":0},{"id":146,"created":1648845398,"last_edited":1648845398,"type":"TRACK","label":"Categories","is_enabled":true,"config_id":6,"order":0},{"id":148,"created":1648845398,"last_edited":1648845398,"type":"TRACK_GROUPS","label":"Category Groups","is_enabled":true,"config_id":6,"order":0},{"id":149,"created":1648845398,"last_edited":1648845398,"type":"COMPANY","label":"Company","is_enabled":true,"config_id":6,"order":0},{"id":150,"created":1648845398,"last_edited":1648845398,"type":"LEVEL","label":"Level","is_enabled":true,"config_id":6,"order":0},{"id":151,"created":1648845398,"last_edited":1648845398,"type":"SPEAKERS","label":"Speakers","is_enabled":true,"config_id":6,"order":0},{"id":152,"created":1648845398,"last_edited":1648845398,"type":"VENUES","label":"Venues","is_enabled":true,"config_id":6,"order":0},{"id":153,"created":1648845398,"last_edited":1648845398,"type":"EVENT_TYPES","label":"Activity Types","is_enabled":true,"config_id":6,"order":0},{"id":154,"created":1648845398,"last_edited":1648845398,"type":"TITLE","label":"Title","is_enabled":true,"config_id":6,"order":0},{"id":155,"created":1648845398,"last_edited":1648845398,"type":"CUSTOM_ORDER","label":"Custom Order","is_enabled":true,"config_id":6,"order":0},{"id":156,"created":1648845398,"last_edited":1648845398,"type":"ABSTRACT","label":"Abstract","is_enabled":true,"config_id":6,"order":0},{"id":147,"created":1648845398,"last_edited":1648845398,"type":"TAGS","label":"Tags","is_enabled":true,"config_id":6,"order":0}],"pre_filters":[{"id":145,"created":1648845398,"last_edited":1648845398,"type":"DATE","config_id":6,"values":[]},{"id":146,"created":1648845398,"last_edited":1648845398,"type":"TRACK","config_id":6,"values":[]},{"id":148,"created":1648845398,"last_edited":1648845398,"type":"TRACK_GROUPS","config_id":6,"values":[]},{"id":149,"created":1648845398,"last_edited":1648845398,"type":"COMPANY","config_id":6,"values":[]},{"id":150,"created":1648845398,"last_edited":1648845398,"type":"LEVEL","config_id":6,"values":[]},{"id":151,"created":1648845398,"last_edited":1648845398,"type":"SPEAKERS","config_id":6,"values":[]},{"id":152,"created":1648845398,"last_edited":1648845398,"type":"VENUES","config_id":6,"values":[]},{"id":153,"created":1648845398,"last_edited":1648845398,"type":"EVENT_TYPES","config_id":6,"values":[]},{"id":154,"created":1648845398,"last_edited":1648845398,"type":"TITLE","config_id":6,"values":[]},{"id":155,"created":1648845398,"last_edited":1648845398,"type":"CUSTOM_ORDER","config_id":6,"values":[]},{"id":156,"created":1648845398,"last_edited":1648845398,"type":"ABSTRACT","config_id":6,"values":[]},{"id":147,"created":1648845398,"last_edited":1648845398,"type":"TAGS","config_id":6,"values":[]}]},{"id":5,"created":1648845398,"last_edited":1648845398,"key":"schedule-main","summit_id":13,"is_my_schedule":false,"only_events_with_attendee_access":false,"color_source":"EVENT_TYPES","is_enabled":true,"is_default":true,"hide_past_events_with_show_always_on_schedule":false,"time_format":"12h","filters":[{"id":133,"created":1648845398,"last_edited":1648845398,"type":"DATE","label":"Date","is_enabled":true,"config_id":5,"order":0},{"id":134,"created":1648845398,"last_edited":1648845398,"type":"TRACK","label":"Categories","is_enabled":true,"config_id":5,"order":0},{"id":136,"created":1648845398,"last_edited":1648845398,"type":"TRACK_GROUPS","label":"Category Groups","is_enabled":true,"config_id":5,"order":0},{"id":137,"created":1648845398,"last_edited":1648845398,"type":"COMPANY","label":"Company","is_enabled":true,"config_id":5,"order":0},{"id":138,"created":1648845398,"last_edited":1648845398,"type":"LEVEL","label":"Level","is_enabled":true,"config_id":5,"order":0},{"id":139,"created":1648845398,"last_edited":1648845398,"type":"SPEAKERS","label":"Speakers","is_enabled":true,"config_id":5,"order":0},{"id":140,"created":1648845398,"last_edited":1648845398,"type":"VENUES","label":"Venues","is_enabled":true,"config_id":5,"order":0},{"id":141,"created":1648845398,"last_edited":1648845398,"type":"EVENT_TYPES","label":"Activity Types","is_enabled":true,"config_id":5,"order":0},{"id":142,"created":1648845398,"last_edited":1648845398,"type":"TITLE","label":"Title","is_enabled":true,"config_id":5,"order":0},{"id":143,"created":1648845398,"last_edited":1648845398,"type":"CUSTOM_ORDER","label":"Custom Order","is_enabled":true,"config_id":5,"order":0},{"id":144,"created":1648845398,"last_edited":1648845398,"type":"ABSTRACT","label":"Abstract","is_enabled":true,"config_id":5,"order":0},{"id":135,"created":1648845398,"last_edited":1648845398,"type":"TAGS","label":"Tags","is_enabled":true,"config_id":5,"order":0}],"pre_filters":[{"id":133,"created":1648845398,"last_edited":1648845398,"type":"DATE","config_id":5,"values":[]},{"id":134,"created":1648845398,"last_edited":1648845398,"type":"TRACK","config_id":5,"values":[]},{"id":136,"created":1648845398,"last_edited":1648845398,"type":"TRACK_GROUPS","config_id":5,"values":[]},{"id":137,"created":1648845398,"last_edited":1648845398,"type":"COMPANY","config_id":5,"values":[]},{"id":138,"created":1648845398,"last_edited":1648845398,"type":"LEVEL","config_id":5,"values":[]},{"id":139,"created":1648845398,"last_edited":1648845398,"type":"SPEAKERS","config_id":5,"values":[]},{"id":140,"created":1648845398,"last_edited":1648845398,"type":"VENUES","config_id":5,"values":[]},{"id":141,"created":1648845398,"last_edited":1648845398,"type":"EVENT_TYPES","config_id":5,"values":[]},{"id":142,"created":1648845398,"last_edited":1648845398,"type":"TITLE","config_id":5,"values":[]},{"id":143,"created":1648845398,"last_edited":1648845398,"type":"CUSTOM_ORDER","config_id":5,"values":[]},{"id":144,"created":1648845398,"last_edited":1648845398,"type":"ABSTRACT","config_id":5,"values":[]},{"id":135,"created":1648845398,"last_edited":1648845398,"type":"TAGS","config_id":5,"values":[]}]}],"ticket_types":[{"id":11,"created":1594227815,"name":"Virtual Event Ticket - No In-Person Access","cost":0,"sub_type":"Regular"},{"id":42,"created":1626726525,"name":"In Person Only Ticket - No Virtual Access","cost":0,"sub_type":"Regular"},{"id":86,"created":1675987789,"name":"Super King Ticket - Both Virtual & In-Person Access","cost":10,"sub_type":"Regular"},{"id":167,"created":1719867345,"name":"VIP","cost":0,"sub_type":"Regular"},{"id":168,"created":1719867377,"name":"REGULAR","cost":0,"sub_type":"Regular"}],"dates_with_events":["2026-01-29","2026-01-30"],"time_zone":{"country_code":"US","latitude":34.05222,"longitude":-118.24277,"comments":"Pacific","name":"America/Los_Angeles","offset":-28800,"offsets":[{"from":1769700600,"offset":-28800,"abbr":"PST","to":1769842740}]},"payment_profiles":[{"id":0,"created":1769788624,"last_edited":1769788624,"active":true,"provider":"Stripe","application_type":"Registration","test_mode_enabled":true,"live_publishable_key":"pk_live_3Gkil0JrzMm3Fr28UZa3ZQ4F","test_publishable_key":"pk_test_ilnx6prJ1iL3nFnIGsVwgtbM","send_email_receipt":false},{"id":0,"created":1769788624,"last_edited":1769788624,"active":true,"provider":"Stripe","application_type":"BookableRooms","test_mode_enabled":true,"live_publishable_key":"pk_live_CWJwJQZcq24B7pdfADpXK83C","test_publishable_key":"pk_test_PcXosTp7pD3VL6HDsqILTqtr","send_email_receipt":false}],"locations":[{"id":100,"name":"FNvirtual","class_name":"SummitVenue","city":"Santa Ana","country":"US","is_main":true},{"id":102,"name":"Keynote","class_name":"SummitVenueRoom","venue":{"name":"FNvirtual"}},{"id":104,"name":"Virtual Events","class_name":"SummitVenueRoom","venue":{"name":"FNvirtual"}},{"id":105,"name":"In-Person Events","class_name":"SummitVenueRoom","venue":{"name":"FNvirtual"}},{"id":106,"name":"Hybrid Events","class_name":"SummitVenueRoom","venue":{"name":"FNvirtual"}},{"id":676,"name":"Test Bookable","class_name":"SummitBookableVenueRoom","venue":{"name":"FNvirtual"},"image":{"id":5931,"created":1727382982,"last_edited":1727382982,"title":"Danielly Design Group","name":"Danielly-Design-Group.jpg","url":"https://summit-api-assets.sfo2.digitaloceanspaces.com/summits/13/locations/100/rooms/Danielly-Design-Group.jpg"},"attributes":[]}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[]
|
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`
|