diff --git a/config/_default/server.toml b/config/_default/server.toml index 5c7c6ac07..03332c6c8 100644 --- a/config/_default/server.toml +++ b/config/_default/server.toml @@ -10,15 +10,11 @@ Referrer-Policy = "no-referrer" Permissions-Policy = """ geolocation=(), midi=(), - notifications=(), - push=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), - speaker=(self), - vibrate=(), fullscreen=(self), interest-cohort=() """ @@ -28,20 +24,38 @@ Permissions-Policy = """ # "form-action" is NOT set, so it allows everything (it doesn't default to default-src). If restricted, It must allow at least www.paypal.com and its redirects Content-Security-Policy = """ default-src 'none'; - style-src 'self'; - font-src 'self'; + style-src 'self' 'unsafe-inline' + https://donorbox.org + https://doublethedonation.com + https://rsms.me + http://rsms.me + ; + font-src 'self' + https://doublethedonation.com + https://rsms.me + http://rsms.me + ; script-src 'unsafe-eval' 'unsafe-inline' 'self' data: https://www.google-analytics.com https://www.googleadservices.com https://www.googletagmanager.com + https://cdn.jsdelivr.net + http://cdn.jsdelivr.net https://googleads.g.doubleclick.net https://donorbox.org + https://doublethedonation.com + https://js.stripe.com https://js.stripe.com/v3/ + https://jspm.dev https://sdks.shopifycdn.com https://www.paypal.com + https://widget.thegivingblock.com + https://js.dev.shift4.com ; img-src 'self' data: blob: https://www.google-analytics.com + https://donorbox.org + https://doublethedonation.com https://www.paypal.com https://www.paypalobjects.com https://ak2s.abmr.net @@ -59,10 +73,15 @@ Content-Security-Policy = """ https://js.stripe.com/v2/ https://www.paypal.com https://outreach.abetterinternet.org + https://widget.thegivingblock.com/ ; connect-src 'self' https://d4twhgtvn0ff5.cloudfront.net/ + https://donorbox.org + https://doublethedonation.com https://letsencrypt-merch.myshopify.com + https://www.google-analytics.com + https://www.paypal.com ; frame-ancestors 'none'; """ diff --git a/content/en/donate-2026.html b/content/en/donate-2026.html new file mode 100644 index 000000000..0b80a6eae --- /dev/null +++ b/content/en/donate-2026.html @@ -0,0 +1,10 @@ +--- +title: "Support ISRG, the nonprofit behind Let’s Encrypt, Prossimo and Divvi Up today!" +slug: donate-2026 +type: page +layout: donate-2026 +no_donate_footer: true +useContainer: false +imageHero: true +lastmod: 2026-07-07 +--- diff --git a/i18n/en.toml b/i18n/en.toml index 3ada28eb5..f9b28e857 100644 --- a/i18n/en.toml +++ b/i18n/en.toml @@ -549,3 +549,168 @@ other = "We are able to accept most cryptocurrency donations {{ .cryptoLink }}." [donate_page_crypto_link_text] other = "here" + +[donate_2026_page_title] +other = "Support ISRG, the nonprofit behind Let’s Encrypt, Prossimo and Divvi Up today!" + +[donate_2026_funding_details_stat_text] +other = "Get the limited-edition ISRG Root X1 t-shirt when you give $75 or more this summer." + +[donate_2026_ways_to_give_heading] +other = "More Ways to Give" + +[donate_2026_employer_matching_gifts_title] +other = "Employer matching gifts" + +[donate_2026_employer_matching_gifts_text] +other = "Many organizations match donations to nonprofits made by employees. Check if your organization has a matching program and double your impact!" + +[donate_2026_become_a_sponsor_title] +other = "Become a sponsor" + +[donate_2026_become_a_sponsor_text] +other = "Nearly 100 companies and organizations support our work – from two-person businesses to nonprofits to Fortune 100 companies. Join our roster of generous sponsors that are helping to provide a more secure and privacy respecting Internet for billions of people." + +[donate_2026_become_a_sponsor_link_text] +other = "here" + +[donate_2026_become_a_sponsor_link_sentence] +other = "Learn more {{ .sponsorshipLink }}." + +[donate_2026_donate_stock_title] +other = "Donate stock" + +[donate_2026_donate_stock_intro_text] +other = "Appreciated securities or mutual fund shares that you've owned for more than one year can be excellent charitable gifts." + +[donate_2026_donate_stock_brokerage_firm] +other = "Brokerage Firm:" + +[donate_2026_donate_stock_brokerage_firm_value] +other = "Vanguard" + +[donate_2026_donate_stock_account_name] +other = "Account Name:" + +[donate_2026_donate_stock_account_name_value] +other = "Internet Security Research Group" + +[donate_2026_donate_stock_account_number] +other = "Account #:" + +[donate_2026_donate_stock_account_number_value] +other = "44865458" + +[donate_2026_donate_stock_dtc_number] +other = "DTC #:" + +[donate_2026_donate_stock_dtc_number_value] +other = "0062" + +[donate_2026_donate_stock_tax_id] +other = "Tax ID #:" + +[donate_2026_donate_stock_tax_id_value] +other = "46-3344200" + +[donate_2026_donate_stock_outro_text] +other = "Please contact us if you are transferring securities at {{ .donateEmailLink }} to ensure that we are able to credit you for your gift." + +[donate_2026_donate_stock_online_text] +other = "You can also donate stock in a couple clicks via {{ .givingBlockLink }}. We do incur processing fees through these transactions, so please consider covering the fees to help ensure your gift has the greatest impact." + +[donate_2026_donate_cryptocurrency_title] +other = "Donate cryptocurrency" + +[donate_2026_donate_cryptocurrency_text] +other = "We are able to accept most cryptocurrency by visiting {{ .givingBlockLink }}. We do incur processing fees through these transactions, so please consider covering the fees to help ensure your gift has the greatest impact." + +[donate_2026_donor_advised_funds_title] +other = "Donor Advised Funds (DAFs)" + +[donate_2026_donor_advised_funds_text] +other = "Simply inform your DAF sponsor that you’d like to make a gift to:" + +[donate_2026_donor_advised_funds_online_text] +other = "You can also donate through your DAF via DAFpay in a couple clicks via {{ .givingBlockLink }}. We do incur processing fees this way, so please consider covering the fees to help ensure your gift has the greatest impact." + +[donate_2026_org_name] +other = "Internet Security Research Group" + +[donate_2026_org_ein] +other = "EIN: 46-3344200" + +[donate_2026_org_address_line1] +other = "548 Market St" + +[donate_2026_org_address_line2] +other = "PMB 77519" + +[donate_2026_org_address_line3] +other = "San Francisco, California 94104-5401" + +[donate_2026_planned_legacy_giving_title] +other = "Planned/Legacy giving" + +[donate_2026_planned_legacy_giving_text] +other = "Please consider making ISRG a beneficiary of your will or retirement plan to help protect Internet users by lowering monetary, technological, and informational barriers to a more secure and privacy-respecting Internet." + +[donate_2026_planned_legacy_giving_notify_text] +other = "Have you already included ISRG in your estate plans? {{ .legacyGivingFormLink }}." + +[donate_2026_planned_legacy_giving_confidentiality_text] +other = "While documenting your planned gift is confidential and non-binding, it allows us to plan for the future and thank you for your generosity today." + +[donate_2026_planned_legacy_giving_advisor_text] +other = "Please seek the advice of your financial or legal advisor." + +[donate_2026_qualified_charitable_distribution_title] +other = "Qualified Charitable Distribution" + +[donate_2026_qualified_charitable_distribution_text] +other = "If you are 70½ or older, you can give directly from your US-based IRA to ISRG without paying income tax on the distribution. This option is often called an IRA charitable rollover or a qualified charitable distribution (QCD). You can give up to an annual maximum set by the IRS, which adjusts each year, so confirm the current amount with your advisor." + +[donate_2026_qualified_charitable_distribution_advisor_text] +other = "Please seek the advice of your financial or legal advisor." + +[donate_2026_qualified_charitable_distribution_instructions_text] +other = "To make your gift, ask your IRA administrator to send the distribution directly to ISRG. Give them our legal name and federal tax ID so they can identify us. Please also let us know about your gift. Many IRA administrators send distributions without identifying the donor, so a quick note from you lets us thank you and honor your wishes for the gift." + +[donate_2026_legal_name_label] +other = "Legal name:" + +[donate_2026_legal_address_label] +other = "Address:" + +[donate_2026_org_full_address] +other = "548 Market St, PMB 77519, San Francisco, California 94104-5401" + +[donate_2026_federal_tax_id_label] +other = "Federal tax ID number:" + +[donate_2026_federal_tax_id_value] +other = "46-3344200" + +[donate_2026_mailing_address_heading] +other = "Mailing Address" + +[donate_2026_mailing_address_intro] +other = "(only for check-processing)" + +[donate_2026_mailing_address_attention] +other = "Internet Security Research Group" + +[donate_2026_mailing_address_line1] +other = "ATTN: Advancement Department" + +[donate_2026_mailing_address_line2] +other = "PO Box 18666" + +[donate_2026_mailing_address_line3] +other = "Minneapolis, MN 55418-0666, USA" + +[donate_2026_donate_by_check_title] +other = "Donate by check" + +[donate_2026_donate_by_check_text] +other = "You can donate by personal check payable to \"ISRG\" at the address below:" diff --git a/netlify.toml b/netlify.toml index d46666fa1..de90817df 100644 --- a/netlify.toml +++ b/netlify.toml @@ -20,15 +20,11 @@ Referrer-Policy = "no-referrer" Permissions-Policy = """ geolocation=(), midi=(), - notifications=(), - push=(), sync-xhr=(), microphone=(), camera=(), magnetometer=(), gyroscope=(), - speaker=(self), - vibrate=(), fullscreen=(self), interest-cohort=() """ @@ -38,14 +34,28 @@ Permissions-Policy = """ # "form-action" is NOT set, so it allows everything (it doesn't default to default-src). If restricted, It must allow at least www.paypal.com and its redirects Content-Security-Policy = """ default-src 'none'; - font-src 'self'; - style-src 'self'; + font-src 'self' + https://doublethedonation.com + https://rsms.me + http://rsms.me + ; + style-src 'self' 'unsafe-inline' + https://donorbox.org + https://doublethedonation.com + https://rsms.me + http://rsms.me + ; script-src 'unsafe-eval' 'unsafe-inline' 'self' data: https://www.google-analytics.com https://www.googleadservices.com https://www.googletagmanager.com + https://cdn.jsdelivr.net + http://cdn.jsdelivr.net https://googleads.g.doubleclick.net https://donorbox.org + https://doublethedonation.com + https://js.stripe.com + https://jspm.dev https://js.stripe.com/v3/ https://sdks.shopifycdn.com https://www.paypal.com @@ -55,6 +65,8 @@ Content-Security-Policy = """ ; img-src 'self' data: blob: https://www.google-analytics.com + https://donorbox.org + https://doublethedonation.com https://*.paypal.com https://www.paypalobjects.com https://ak2s.abmr.net @@ -77,6 +89,8 @@ Content-Security-Policy = """ ; connect-src 'self' https://d4twhgtvn0ff5.cloudfront.net/ + https://donorbox.org + https://doublethedonation.com https://letsencrypt-merch.myshopify.com https://monorail-edge.shopifysvc.com https://www.paypal.com diff --git a/themes/le-2025/assets/css/donate-2026.css b/themes/le-2025/assets/css/donate-2026.css new file mode 100644 index 000000000..9e2699968 --- /dev/null +++ b/themes/le-2025/assets/css/donate-2026.css @@ -0,0 +1,44 @@ +#cmp-FundingDetails2026 .donate-2026-stat-text { + font-size: 2rem; + font-weight: 700; + line-height: 1.3; +} + +#cmp-DonationForms2026 .btn { + display: inline-block; + background: #3a76f0; + color: #ffffff; + text-decoration: none; + font-weight: 600; + padding: 0.8rem 1.6rem; + border-radius: 999px; + margin-top: 0.75rem; +} + +#cmp-DonationForms2026 .btn:hover { + background: #2f63cf; +} + +#cmp-DonationForms2026 .blurb { + color: #6b6f76; + font-size: 0.98rem; + margin-top: 0; + margin-bottom: 1.5rem; +} + +#cmp-DonationForms2026 dbox-widget { + display: block; + width: 100%; + max-width: 500px; + margin-left: auto; + margin-right: auto; +} + +#cmp-DonationForms2026 iframe { + max-width: 500px; + min-width: 250px; + max-height: none; + width: 100%; + margin-left: auto; + margin-right: auto; +} diff --git a/themes/le-2025/assets/css/le-2025-theme-input.css b/themes/le-2025/assets/css/le-2025-theme-input.css index f5384b05b..95109a5f3 100644 --- a/themes/le-2025/assets/css/le-2025-theme-input.css +++ b/themes/le-2025/assets/css/le-2025-theme-input.css @@ -104,6 +104,52 @@ @apply md:ml-auto w-full; } } + +#cmp-DonationForms2026 { + max-width: 560px; + margin: 0 auto; + text-align: center; +} + +#cmp-DonationForms2026 .donate-2026-tabs { + display: inline-flex; + background: #f6f7f9; + border-radius: 999px; + padding: 4px; + margin-bottom: 2rem; +} + +#cmp-DonationForms2026 .donate-2026-tab { + border: 0; + background: transparent; + color: #6b6f76; + font: inherit; + font-weight: 600; + padding: 0.55rem 1.1rem; + border-radius: 999px; + cursor: pointer; +} + +#cmp-DonationForms2026 .donate-2026-tab[aria-selected='true'] { + background: #ffffff; + color: #1b1b1b; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12); +} + +#cmp-DonationForms2026 .donate-2026-embed-panel { + display: none; +} + +#cmp-DonationForms2026 .donate-2026-embed-panel.active { + display: block; +} + +#cmp-DonationForms2026 .donate-2026-embed-frame { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; +} @utility donate-2025-stat { @apply font-bold text-[128px] leading-[167px]; } diff --git a/themes/le-2025/assets/js/donate-2026.js b/themes/le-2025/assets/js/donate-2026.js new file mode 100644 index 000000000..ac12a9987 --- /dev/null +++ b/themes/le-2025/assets/js/donate-2026.js @@ -0,0 +1,195 @@ +const Donate2026 = { + init() { + const page = document.getElementById('page-Donate2026'); + if (!page) return; + + this.page = page; + this.forms = page.querySelector('#cmp-DonationForms2026'); + this.formOverlay = page.querySelector('#cmp-Donate2026FormOverlay'); + this.formSpacer = page.querySelector('#cmp-Donate2026FormSpacer'); + this.lowerContent = page.querySelector('#cmp-Donate2026WaysToGive'); + this.desktopMediaQuery = window.matchMedia('(min-width: 768px)'); + + window.addEventListener('hashchange', () => { + this.syncAccordionToLocation(); + }); + + window.addEventListener('popstate', () => { + this.syncAccordionToLocation(); + }); + + this.bindFormSpacerHeight(); + this.bindDonationTabs(); + this.bindAccordionLinks(); + + if (window.location.hash) { + this.syncAccordionToLocation(); + } + + this.syncFormSpacerHeight(); + }, + + bindDonationTabs() { + if (!this.forms) return; + + this.tabs = Array.from(this.forms.querySelectorAll('.donate-2026-tab')); + this.panels = Array.from(this.forms.querySelectorAll('.donate-2026-embed-panel')); + + if (!this.tabs.length || !this.panels.length) return; + + this.tabs.forEach(tab => { + tab.addEventListener('click', () => { + this.activateDonationTab(tab.dataset.panel); + }); + }); + + const selectedTab = this.tabs.find(tab => tab.getAttribute('aria-selected') === 'true') || this.tabs[0]; + this.activateDonationTab(selectedTab.dataset.panel); + }, + + activateDonationTab(panelName) { + if (!panelName || !this.tabs || !this.panels) return; + + this.tabs.forEach(tab => { + const isSelected = tab.dataset.panel === panelName; + tab.setAttribute('aria-selected', isSelected ? 'true' : 'false'); + tab.setAttribute('tabindex', isSelected ? '0' : '-1'); + }); + + this.panels.forEach(panel => { + const isActive = panel.id === `donate-2026-panel-${panelName}`; + panel.classList.toggle('active', isActive); + panel.setAttribute('aria-hidden', isActive ? 'false' : 'true'); + }); + + this.scheduleFormSpacerHeightSync?.(); + }, + + bindFormSpacerHeight() { + if (!this.formOverlay || !this.formSpacer) return; + + this.scheduleFormSpacerHeightSync = () => { + if (this.formSpacerSyncFrame) return; + + this.formSpacerSyncFrame = requestAnimationFrame(() => { + this.formSpacerSyncFrame = null; + this.syncFormSpacerHeight(); + }); + }; + + window.addEventListener('resize', this.scheduleFormSpacerHeightSync); + window.addEventListener('load', this.scheduleFormSpacerHeightSync); + + if (this.desktopMediaQuery?.addEventListener) { + this.desktopMediaQuery.addEventListener('change', this.scheduleFormSpacerHeightSync); + } else if (this.desktopMediaQuery?.addListener) { + this.desktopMediaQuery.addListener(this.scheduleFormSpacerHeightSync); + } + + if (window.ResizeObserver) { + this.formSpacerObserver = new ResizeObserver(this.scheduleFormSpacerHeightSync); + this.formSpacerObserver.observe(this.formOverlay); + + if (this.lowerContent) { + this.formSpacerObserver.observe(this.lowerContent); + } + } + }, + + syncFormSpacerHeight() { + if (!this.formOverlay || !this.formSpacer) return; + + if (!this.desktopMediaQuery?.matches) { + this.formSpacer.style.minHeight = ''; + return; + } + + this.formSpacer.style.minHeight = ''; + + const formBottom = this.formOverlay.getBoundingClientRect().bottom; + const spacerTop = this.formSpacer.getBoundingClientRect().top; + const shortfall = Math.max(Math.ceil(formBottom - spacerTop), 0); + + this.formSpacer.style.minHeight = shortfall ? `${shortfall}px` : ''; + }, + + bindAccordionLinks() { + this.page.querySelectorAll('.accordion-button').forEach(button => { + button.addEventListener('click', () => { + const item = button.closest('.accordion-item'); + if (!item) return; + + const isOpen = item.classList.contains('is-open'); + this.updateHistory(item.id, isOpen); + }); + }); + }, + + updateHistory(id, isOpen) { + const url = new URL(window.location.href); + url.hash = isOpen ? id : ''; + window.history.pushState({}, '', `${url.pathname}${url.search}${url.hash}`); + }, + + syncAccordionToLocation() { + const hash = window.location.hash.replace(/^#/, ''); + + if (!hash) { + this.closeAllAccordions(); + return; + } + + this.openAccordionById(hash); + }, + + closeAllAccordions() { + this.page.querySelectorAll('.accordion-item').forEach(item => { + const button = item.querySelector('.accordion-button'); + const content = item.querySelector('.accordion-content'); + const icon = item.querySelector('.accordion-icon'); + + if (!button || !content) return; + + button.classList.remove('active'); + button.setAttribute('aria-expanded', 'false'); + content.classList.add('hidden'); + item.classList.remove('is-open'); + + if (icon) icon.textContent = '+'; + }); + + this.scheduleFormSpacerHeightSync?.(); + }, + + openAccordionById(id) { + const target = document.getElementById(id); + if (!target) return; + + this.closeAllAccordions(); + + const item = target.classList.contains('accordion-item') ? target : target.closest('.accordion-item'); + if (!item) return; + + const button = item.querySelector('.accordion-button'); + const content = item.querySelector('.accordion-content'); + const icon = item.querySelector('.accordion-icon'); + + if (!button || !content) return; + + button.classList.add('active'); + button.setAttribute('aria-expanded', 'true'); + content.classList.remove('hidden'); + item.classList.add('is-open'); + if (icon) icon.textContent = '−'; + + requestAnimationFrame(() => { + item.scrollIntoView({ block: 'start' }); + }); + + this.scheduleFormSpacerHeightSync?.(); + } +}; + +document.addEventListener('DOMContentLoaded', () => { + Donate2026.init(); +}); diff --git a/themes/le-2025/layouts/_default/baseof.html b/themes/le-2025/layouts/_default/baseof.html index 0ccfaf1a1..dff54937f 100644 --- a/themes/le-2025/layouts/_default/baseof.html +++ b/themes/le-2025/layouts/_default/baseof.html @@ -2,6 +2,7 @@ {{ partial "head.html" . }} + {{ block "head-extra" . }}{{ end }} {{ partial "header.html" . }} diff --git a/themes/le-2025/layouts/page/donate-2026.html b/themes/le-2025/layouts/page/donate-2026.html new file mode 100644 index 000000000..5f247d0f3 --- /dev/null +++ b/themes/le-2025/layouts/page/donate-2026.html @@ -0,0 +1,48 @@ +{{ define "head-extra" }} +{{ with resources.Get "css/donate-2026.css" }} + {{ if hugo.IsDevelopment }} + + {{ else }} + {{ with . | minify | fingerprint }} + + {{ end }} + {{ end }} +{{ end }} +{{ end }} + +{{ define "main" }} +{{ partial "components/post-hero-image" (dict "page" . "image" "images/donate-hero.jpg" "title" (T "donate_2026_page_title")) }} +
+
+
+
{{ partial "funding-details-2026.html" . }}
+
+ +
+ {{ partial "donation-forms-2026.html" . }} +
+
+
+
+
+
+
+
{{ partial "donate-accordion-2026.html" . }}
+ +
+
+
+
+{{ with resources.Get "js/donate-2026.js" }} + {{ if eq hugo.Environment "development" }} + {{ with . | js.Build }} + + {{ end }} + {{ else }} + {{ $opts := dict "minify" true }} + {{ with . | js.Build $opts | fingerprint }} + + {{ end }} + {{ end }} +{{ end }} +{{ end }} diff --git a/themes/le-2025/layouts/partials/components/accordion-item-2026.html b/themes/le-2025/layouts/partials/components/accordion-item-2026.html new file mode 100644 index 000000000..91eb8f71c --- /dev/null +++ b/themes/le-2025/layouts/partials/components/accordion-item-2026.html @@ -0,0 +1,34 @@ +
+ + + {{ .title }} +
+ {{ if .is_open }}−{{ else }}+{{ end }} +
+
+
+
+ {{ if .content_partial }} + {{ partial .content_partial .page_context }} + {{ else if .content }} +

+ {{ .content }} +

+ {{ end }} + {{ if and .link_url .link_text }} + + {{ .link_text }} → + + {{ end }} +
+
+
diff --git a/themes/le-2025/layouts/partials/donate-accordion-2026.html b/themes/le-2025/layouts/partials/donate-accordion-2026.html new file mode 100644 index 000000000..26c8f3c7e --- /dev/null +++ b/themes/le-2025/layouts/partials/donate-accordion-2026.html @@ -0,0 +1,54 @@ +
+

{{ T "donate_2026_ways_to_give_heading" }}

+ {{ $page_context := .Page }} + {{ partial "components/accordion-item-2026.html" (dict + "id" "employer-matching-gifts" + "title" (T "donate_2026_employer_matching_gifts_title") + "content_partial" "donate-content-2026/employer-matching-gifts.html" + "is_open" true + "page_context" $page_context + ) }} + {{ partial "components/accordion-item-2026.html" (dict + "id" "become-a-sponsor" + "title" (T "donate_2026_become_a_sponsor_title") + "content_partial" "donate-content-2026/become-a-sponsor.html" + "page_context" $page_context + ) }} + {{ partial "components/accordion-item-2026.html" (dict + "id" "donate-stock" + "title" (T "donate_2026_donate_stock_title") + "content_partial" "donate-content-2026/donate-stock.html" + "page_context" $page_context + ) }} + {{ partial "components/accordion-item-2026.html" (dict + "id" "donate-cryptocurrency" + "title" (T "donate_2026_donate_cryptocurrency_title") + "content_partial" "donate-content-2026/donate-cryptocurrency.html" + "page_context" $page_context + ) }} + {{ partial "components/accordion-item-2026.html" (dict + "id" "donor-advised-funds" + "title" (T "donate_2026_donor_advised_funds_title") + "content_partial" "donate-content-2026/donor-advised-funds.html" + "page_context" $page_context + ) }} + {{ partial "components/accordion-item-2026.html" (dict + "id" "planned-legacy-giving" + "title" (T "donate_2026_planned_legacy_giving_title") + "content_partial" "donate-content-2026/planned-legacy-giving.html" + "page_context" $page_context + ) }} + {{ partial "components/accordion-item-2026.html" (dict + "id" "qualified-charitable-distribution" + "title" (T "donate_2026_qualified_charitable_distribution_title") + "content_partial" "donate-content-2026/qualified-charitable-distribution.html" + "page_context" $page_context + ) }} + {{ partial "components/accordion-item-2026.html" (dict + "id" "donate-by-check" + "title" (T "donate_2026_donate_by_check_title") + "content_partial" "donate-content-2026/donate-by-check.html" + "last" true + "page_context" $page_context + ) }} +
diff --git a/themes/le-2025/layouts/partials/donate-content-2026/become-a-sponsor.html b/themes/le-2025/layouts/partials/donate-content-2026/become-a-sponsor.html new file mode 100644 index 000000000..0d982ac86 --- /dev/null +++ b/themes/le-2025/layouts/partials/donate-content-2026/become-a-sponsor.html @@ -0,0 +1,6 @@ +
+

{{ T "donate_2026_become_a_sponsor_text" }}

+ {{ $sponsorshipLinkText := T "donate_2026_become_a_sponsor_link_text" }} + {{ $sponsorshipLink := printf "%s" site.Params.sponsorshipURL $sponsorshipLinkText }} +

{{ T "donate_2026_become_a_sponsor_link_sentence" (dict "sponsorshipLink" $sponsorshipLink) | safeHTML }}

+
diff --git a/themes/le-2025/layouts/partials/donate-content-2026/donate-by-check.html b/themes/le-2025/layouts/partials/donate-content-2026/donate-by-check.html new file mode 100644 index 000000000..1a369f3dc --- /dev/null +++ b/themes/le-2025/layouts/partials/donate-content-2026/donate-by-check.html @@ -0,0 +1,9 @@ +
+

{{ T "donate_2026_donate_by_check_text" }}

+
+

{{ T "donate_2026_mailing_address_attention" }}

+

{{ T "donate_2026_mailing_address_line1" }}

+

{{ T "donate_2026_mailing_address_line2" }}

+

{{ T "donate_2026_mailing_address_line3" }}

+
+
diff --git a/themes/le-2025/layouts/partials/donate-content-2026/donate-cryptocurrency.html b/themes/le-2025/layouts/partials/donate-content-2026/donate-cryptocurrency.html new file mode 100644 index 000000000..5d165de0b --- /dev/null +++ b/themes/le-2025/layouts/partials/donate-content-2026/donate-cryptocurrency.html @@ -0,0 +1,4 @@ +
+ {{ $givingBlockLink := "this page" }} +

{{ T "donate_2026_donate_cryptocurrency_text" (dict "givingBlockLink" $givingBlockLink) | safeHTML }}

+
diff --git a/themes/le-2025/layouts/partials/donate-content-2026/donate-stock.html b/themes/le-2025/layouts/partials/donate-content-2026/donate-stock.html new file mode 100644 index 000000000..7ad624ddb --- /dev/null +++ b/themes/le-2025/layouts/partials/donate-content-2026/donate-stock.html @@ -0,0 +1,30 @@ +
+

{{ T "donate_2026_donate_stock_intro_text" }}

+ + + + + + + + + + + + + + + + + + + + + +
{{ T "donate_2026_donate_stock_brokerage_firm" }}{{ T "donate_2026_donate_stock_brokerage_firm_value" }}
{{ T "donate_2026_donate_stock_account_name" }}{{ T "donate_2026_donate_stock_account_name_value" }}
{{ T "donate_2026_donate_stock_account_number" }}{{ T "donate_2026_donate_stock_account_number_value" }}
{{ T "donate_2026_donate_stock_dtc_number" }}{{ T "donate_2026_donate_stock_dtc_number_value" }}
{{ T "donate_2026_donate_stock_tax_id" }}{{ T "donate_2026_donate_stock_tax_id_value" }}
+ {{ $donateEmail := "donate@abetterinternet.org" }} + {{ $donateEmailLink := printf "%s" $donateEmail $donateEmail }} +

{{ T "donate_2026_donate_stock_outro_text" (dict "donateEmailLink" $donateEmailLink) | safeHTML }}

+ {{ $givingBlockLink := "this page" }} +

{{ T "donate_2026_donate_stock_online_text" (dict "givingBlockLink" $givingBlockLink) | safeHTML }}

+
diff --git a/themes/le-2025/layouts/partials/donate-content-2026/donor-advised-funds.html b/themes/le-2025/layouts/partials/donate-content-2026/donor-advised-funds.html new file mode 100644 index 000000000..09589f3cf --- /dev/null +++ b/themes/le-2025/layouts/partials/donate-content-2026/donor-advised-funds.html @@ -0,0 +1,6 @@ +
+

{{ T "donate_2026_donor_advised_funds_text" }}

+ {{ partial "donate-content-2026/org-address.html" . }} + {{ $givingBlockLink := "this page" }} +

{{ T "donate_2026_donor_advised_funds_online_text" (dict "givingBlockLink" $givingBlockLink) | safeHTML }}

+
diff --git a/themes/le-2025/layouts/partials/donate-content-2026/employer-matching-gifts.html b/themes/le-2025/layouts/partials/donate-content-2026/employer-matching-gifts.html new file mode 100644 index 000000000..65fe5be03 --- /dev/null +++ b/themes/le-2025/layouts/partials/donate-content-2026/employer-matching-gifts.html @@ -0,0 +1,16 @@ +
+

{{ T "donate_2026_employer_matching_gifts_text" }}

+
+
+ + +
+
+
diff --git a/themes/le-2025/layouts/partials/donate-content-2026/legal-details.html b/themes/le-2025/layouts/partials/donate-content-2026/legal-details.html new file mode 100644 index 000000000..28184dba8 --- /dev/null +++ b/themes/le-2025/layouts/partials/donate-content-2026/legal-details.html @@ -0,0 +1,5 @@ +
+

{{ T "donate_2026_legal_name_label" }} {{ T "donate_2026_org_name" }}

+

{{ T "donate_2026_legal_address_label" }} {{ T "donate_2026_org_full_address" }}

+

{{ T "donate_2026_federal_tax_id_label" }} {{ T "donate_2026_federal_tax_id_value" }}

+
diff --git a/themes/le-2025/layouts/partials/donate-content-2026/mailing-address.html b/themes/le-2025/layouts/partials/donate-content-2026/mailing-address.html new file mode 100644 index 000000000..d09451352 --- /dev/null +++ b/themes/le-2025/layouts/partials/donate-content-2026/mailing-address.html @@ -0,0 +1,7 @@ +
+

{{ T "donate_2026_mailing_address_intro" }}

+

{{ T "donate_2026_mailing_address_attention" }}

+

{{ T "donate_2026_mailing_address_line1" }}

+

{{ T "donate_2026_mailing_address_line2" }}

+

{{ T "donate_2026_mailing_address_line3" }}

+
diff --git a/themes/le-2025/layouts/partials/donate-content-2026/org-address.html b/themes/le-2025/layouts/partials/donate-content-2026/org-address.html new file mode 100644 index 000000000..552137e47 --- /dev/null +++ b/themes/le-2025/layouts/partials/donate-content-2026/org-address.html @@ -0,0 +1,7 @@ +
+

{{ T "donate_2026_org_name" }}

+

{{ T "donate_2026_org_ein" }}

+

{{ T "donate_2026_org_address_line1" }}

+

{{ T "donate_2026_org_address_line2" }}

+

{{ T "donate_2026_org_address_line3" }}

+
diff --git a/themes/le-2025/layouts/partials/donate-content-2026/planned-legacy-giving.html b/themes/le-2025/layouts/partials/donate-content-2026/planned-legacy-giving.html new file mode 100644 index 000000000..9bd194cf6 --- /dev/null +++ b/themes/le-2025/layouts/partials/donate-content-2026/planned-legacy-giving.html @@ -0,0 +1,8 @@ +
+ {{ $legacyGivingFormURL := "https://docs.google.com/forms/d/e/1FAIpQLSehKBhx5Z4s3wRC9RpnS_ivT9w4ftcCyfLo0hswQyZFG3AxiA/viewform?usp=publish-editor" }} + {{ $legacyGivingFormLink := printf "Let us know here" $legacyGivingFormURL }} +

{{ T "donate_2026_planned_legacy_giving_text" }}

+

{{ T "donate_2026_planned_legacy_giving_notify_text" (dict "legacyGivingFormLink" $legacyGivingFormLink) | safeHTML }}

+

{{ T "donate_2026_planned_legacy_giving_confidentiality_text" }}

+

{{ T "donate_2026_planned_legacy_giving_advisor_text" }}

+
diff --git a/themes/le-2025/layouts/partials/donate-content-2026/qualified-charitable-distribution.html b/themes/le-2025/layouts/partials/donate-content-2026/qualified-charitable-distribution.html new file mode 100644 index 000000000..9fc9d23bf --- /dev/null +++ b/themes/le-2025/layouts/partials/donate-content-2026/qualified-charitable-distribution.html @@ -0,0 +1,12 @@ +
+

{{ T "donate_2026_qualified_charitable_distribution_text" }}

+

{{ T "donate_2026_qualified_charitable_distribution_advisor_text" }}

+

{{ T "donate_2026_qualified_charitable_distribution_instructions_text" }}

+
+ {{ partial "donate-content-2026/legal-details.html" . }} +
+
+

{{ T "donate_2026_mailing_address_heading" }}

+ {{ partial "donate-content-2026/mailing-address.html" . }} +
+
diff --git a/themes/le-2025/layouts/partials/donation-forms-2026.html b/themes/le-2025/layouts/partials/donation-forms-2026.html new file mode 100644 index 000000000..8e6938770 --- /dev/null +++ b/themes/le-2025/layouts/partials/donation-forms-2026.html @@ -0,0 +1,50 @@ + diff --git a/themes/le-2025/layouts/partials/donorbox-2026.html b/themes/le-2025/layouts/partials/donorbox-2026.html new file mode 100644 index 000000000..01fd63b88 --- /dev/null +++ b/themes/le-2025/layouts/partials/donorbox-2026.html @@ -0,0 +1,21 @@ + diff --git a/themes/le-2025/layouts/partials/funding-details-2026.html b/themes/le-2025/layouts/partials/funding-details-2026.html new file mode 100644 index 000000000..73865bdb5 --- /dev/null +++ b/themes/le-2025/layouts/partials/funding-details-2026.html @@ -0,0 +1,5 @@ +
+ +