|
1 | 1 | <footer class="site-footer"> |
2 | 2 | <div class="footer-inner"> |
3 | 3 |
|
4 | | - {{/* Newsletter isn't wired to a real list yet (Privacy Policy already |
5 | | - commits to Mailchimp for this) — shown disabled rather than faking |
6 | | - a signup, same "Coming soon" treatment as the Press Releases page's |
7 | | - Newsletter channel card. */}} |
| 4 | + {{/* Newsletter signup, wired to Brevo. The form posts directly to Brevo's |
| 5 | + hosted endpoint (no API key on the frontend); Brevo's own script |
| 6 | + (loaded at the bottom of this partial) intercepts the submit and |
| 7 | + shows #error-message / #success-message inline instead of |
| 8 | + navigating away. Structural ids/classes below (sib-form, EMAIL, |
| 9 | + email_address_check, locale, sib-form-block__button-with-loader, |
| 10 | + sib-hide-loader-icon) come straight from Brevo's generated embed |
| 11 | + code and must stay as-is for that script to find the field. */}} |
8 | 12 | <div class="footer-newsletter"> |
9 | 13 | <div class="footer-newsletter-text"> |
10 | 14 | <strong>Stay in the loop</strong> |
11 | 15 | <span>One email, every so often. No noise — just what matters for MySQL.</span> |
12 | 16 | </div> |
13 | | - <form class="footer-newsletter-form" title="Coming soon"> |
14 | | - <input type="email" placeholder="you@email.com" disabled> |
15 | | - <button type="submit" class="about-btn about-btn--primary about-btn--disabled" disabled>Subscribe</button> |
16 | | - </form> |
| 17 | + |
| 18 | + <div id="sib-form-container" class="footer-newsletter-form-container"> |
| 19 | + {{/* Brevo's script overwrites this inner text with its own copy once |
| 20 | + a submit resolves, so the strings here only matter for the |
| 21 | + instant before that happens — kept identical to avoid a flash |
| 22 | + of different text. */}} |
| 23 | + <div id="error-message" class="sib-form-message-panel footer-newsletter-message footer-newsletter-message--error"> |
| 24 | + <span class="sib-form-message-panel__inner-text">Your subscription could not be saved. Please try again.</span> |
| 25 | + </div> |
| 26 | + <div id="success-message" class="sib-form-message-panel footer-newsletter-message footer-newsletter-message--success"> |
| 27 | + <span class="sib-form-message-panel__inner-text">Your subscription has been successful.</span> |
| 28 | + </div> |
| 29 | + |
| 30 | + <form id="sib-form" method="POST" action="https://64f8c957.sibforms.com/serve/MUIFAJ9Hor_z_M6MDKVaoYCTLL191egrhA0H-adYyLsYs26X-XB5NlRM0VoLjVPWLLLwN2VbHg4TmYyTlcBbVXtPX6fEYgO8uH1g2N9S0RDkBdRVtd_SY2BwyCz3FnKaBzq1g-75lcnWlGAffahgO1K1UwVMa0C1B2N8xaY-l3vuxgxy5OjEbkvdmqFIYOEoH0xwvCkNaiScMi5zZA==" data-type="subscription" class="footer-newsletter-form"> |
| 31 | + <div class="footer-newsletter-field"> |
| 32 | + <label for="EMAIL" class="footer-newsletter-label">Email address</label> |
| 33 | + <input class="input" type="text" id="EMAIL" name="EMAIL" autocomplete="email" inputmode="email" placeholder="you@email.com" data-required="true" required> |
| 34 | + <label class="entry__error entry__error--primary footer-newsletter-field-error"></label> |
| 35 | + </div> |
| 36 | + <button class="sib-form-block__button sib-form-block__button-with-loader about-btn about-btn--primary" form="sib-form" type="submit"> |
| 37 | + <svg class="icon clickable__icon progress-indicator__icon sib-hide-loader-icon" viewBox="0 0 512 512" aria-hidden="true"><path d="M460.116 373.846l-20.823-12.022c-5.541-3.199-7.54-10.159-4.663-15.874 30.137-59.886 28.343-131.652-5.386-189.946-33.641-58.394-94.896-95.833-161.827-99.676C261.028 55.961 256 50.751 256 44.352V20.309c0-6.904 5.808-12.337 12.703-11.982 83.556 4.306 160.163 50.864 202.11 123.677 42.063 72.696 44.079 162.316 6.031 236.832-3.14 6.148-10.75 8.461-16.728 5.01z"/></svg> |
| 38 | + Subscribe |
| 39 | + </button> |
| 40 | + <input type="text" name="email_address_check" value="" class="footer-newsletter-honeypot" tabindex="-1" autocomplete="off"> |
| 41 | + <input type="hidden" name="locale" value="en"> |
| 42 | + </form> |
| 43 | + </div> |
17 | 44 | </div> |
18 | 45 |
|
19 | 46 | <div class="footer-main"> |
@@ -93,3 +120,27 @@ <h4>Resources</h4> |
93 | 120 |
|
94 | 121 | </div> |
95 | 122 | </footer> |
| 123 | + |
| 124 | +{{/* Brevo's own signup-form script: reads window.LOCALE/*_MESSAGE globals |
| 125 | + and binds to the #sib-form markup above to submit via AJAX and toggle |
| 126 | + #error-message/#success-message instead of navigating away. */}} |
| 127 | +<script> |
| 128 | + window.REQUIRED_CODE_ERROR_MESSAGE = 'Please choose a country code'; |
| 129 | + window.LOCALE = 'en'; |
| 130 | + window.EMAIL_INVALID_MESSAGE = window.SMS_INVALID_MESSAGE = "The information provided is invalid. Please review the field format and try again."; |
| 131 | + window.REQUIRED_ERROR_MESSAGE = "This field cannot be left blank. "; |
| 132 | + window.GENERIC_INVALID_MESSAGE = "The information provided is invalid. Please review the field format and try again."; |
| 133 | + window.INVALID_NUMBER = "The information provided is invalid. Please review the field format and try again."; |
| 134 | + window.INVALID_DATE = "Please enter a valid date"; |
| 135 | + window.REQUIRED_MULTISELECT_MESSAGE = 'Please select at least 1 option'; |
| 136 | + window.translation = { |
| 137 | + common: { |
| 138 | + selectedList: '{quantity} list selected', |
| 139 | + selectedLists: '{quantity} lists selected', |
| 140 | + selectedOption: '{quantity} selected', |
| 141 | + selectedOptions: '{quantity} selected', |
| 142 | + } |
| 143 | + }; |
| 144 | + var AUTOHIDE = Boolean(0); |
| 145 | +</script> |
| 146 | +<script defer src="https://sibforms.com/forms/end-form/build/main.js"></script> |
0 commit comments