Use @mim4u.org addresses across the public site and legal pages.

Centralize EMAILS in siteContent; primary contact [email protected]; role-specific privacy, donate, and access addresses; update SEO, chat, and i18n defaults.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
defiQUG
2026-05-27 13:32:14 -07:00
co-authored by Cursor
parent b096a79573
commit dc1281dc1f
11 changed files with 27 additions and 15 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ VITE_GA_MEASUREMENT_ID=G-XXXXXXXXXX
VITE_ANALYTICS_ENABLED=true
# Contact Information
VITE_CONTACT_EMAIL=contact@miraclesinmotion.org
VITE_CONTACT_EMAIL=info@mim4u.org
VITE_PHONE_NUMBER=+15551234567
VITE_ADDRESS="123 Community Way, Hometown, ST 12345"
+2 -2
View File
@@ -63,11 +63,11 @@ function buildSystemPrompt(pagePath: string): string {
return [
'You are the Miracles in Motion website assistant for MIM4U.',
'Answer as a warm, concise concierge for a nonprofit that supports students with school supplies, clothing, shoes, emergency support, volunteer coordination, donations, and sponsorships.',
'Use only the provided context and the user messages. If you are unsure, say so and direct the user to info@miraclesinmotion.org.',
'Use only the provided context and the user messages. If you are unsure, say so and direct the user to info@mim4u.org.',
'Keep replies practical and short. Prefer bullets only when they improve clarity.',
'When relevant, guide users to these routes: #/donate, #/volunteers, #/request-assistance, #/impact, #/stories.',
'Do not invent phone numbers, addresses, office hours, eligibility rules, or application steps.',
'If someone needs urgent support, tell them to use #/request-assistance and contact info@miraclesinmotion.org directly.',
'If someone needs urgent support, tell them to use #/request-assistance and contact info@mim4u.org directly.',
`Current page route: ${pagePath || '/'}`
].join('\n');
}
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 KiB

After

Width:  |  Height:  |  Size: 32 KiB

+4 -4
View File
@@ -78,7 +78,7 @@ import {
import { AwarenessCampaigns } from './components/home/AwarenessCampaigns'
import { CommunityGallery } from './components/home/CommunityGallery'
import { WhoWeServe } from './components/home/WhoWeServe'
import { COMMUNITY_PHOTOS, HOME_TESTIMONIAL, HOW_IT_WORKS, SITE, WHAT_WE_DO } from './content/siteContent'
import { COMMUNITY_PHOTOS, EMAILS, HOME_TESTIMONIAL, HOW_IT_WORKS, SITE, WHAT_WE_DO, mailto } from './content/siteContent'
/**
* Miracles in Motion — Complete Non-Profit Website
@@ -2251,7 +2251,7 @@ function LegalPage() {
return (
<PageShell title="Legal & Policies" icon={FileText} eyebrow="Trust & compliance" cta={<a href="#/donate" className="btn-secondary">Donate</a>}>
<PolicySection id="privacy" title="Privacy Policy">
<p>We collect only the data necessary to process donations, volunteer coordination, and email subscriptions. We do not sell or trade personal data. Assistance requests are used only to verify and deliver support; we do not share this data for marketing. You may request access, correction, or deletion at <a className="underline" href={SITE.emailHref}>{SITE.email}</a>.</p>
<p>We collect only the data necessary to process donations, volunteer coordination, and email subscriptions. We do not sell or trade personal data. Assistance requests are used only to verify and deliver support; we do not share this data for marketing. You may request access, correction, or deletion at <a className="underline" href={mailto(EMAILS.privacy)}>{EMAILS.privacy}</a>.</p>
</PolicySection>
<PolicySection id="donor-privacy" title="Donor Privacy Policy">
<p>We never sell, share, or trade donor names or personal information with any other entity, nor send donor mailings on behalf of other organizations. This policy applies to all information received online and offline.</p>
@@ -2267,7 +2267,7 @@ function LegalPage() {
<p>We use essential cookies for site functionality and, with your consent, privacy-friendly analytics. You can change your choices via the cookie banner or by clearing site data.</p>
</PolicySection>
<PolicySection id="refunds" title="Refund Policy">
<p>Donations are generally non-refundable. If you believe a donation was made in error, contact <a className="underline" href={SITE.emailHref}>{SITE.email}</a> within 15 days for assistance.</p>
<p>Donations are generally non-refundable. If you believe a donation was made in error, contact <a className="underline" href={mailto(EMAILS.donate)}>{EMAILS.donate}</a> within 15 days for assistance.</p>
</PolicySection>
<PolicySection id="gift-acceptance" title="Gift Acceptance Policy">
<ul className="list-disc pl-5 space-y-2">
@@ -2289,7 +2289,7 @@ function LegalPage() {
<p>We serve individuals and families regardless of race, color, religion, national origin, sex, sexual orientation, gender identity, disability, or any other protected status.</p>
</PolicySection>
<PolicySection id="accessibility" title="Accessibility Statement">
<p>We aim to meet WCAG 2.1 AA standards. If you encounter accessibility barriers, email <a className="underline" href="mailto:access@miraclesinmotion.org">access@miraclesinmotion.org</a>.</p>
<p>We aim to meet WCAG 2.1 AA standards. If you encounter accessibility barriers, email <a className="underline" href={mailto(EMAILS.access)}>{EMAILS.access}</a>.</p>
</PolicySection>
<PolicySection id="financials" title="Financials & 990">
<p>{SITE.name} is a {SITE.legalStatus.toLowerCase()}. EIN {SITE.ein}. Annual reports and Form 990s are available upon request or linked here when published.</p>
+1 -1
View File
@@ -18,7 +18,7 @@ interface BackendChatResponse {
const CHAT_ENABLED = import.meta.env.VITE_ENABLE_CHAT === 'true'
const CHAT_API_BASE_URL = (import.meta.env.VITE_CHAT_API_BASE_URL?.trim() || '').replace(/\/+$/, '')
const CONTACT_EMAIL = import.meta.env.VITE_CONTACT_EMAIL?.trim() || 'info@miraclesinmotion.org'
const CONTACT_EMAIL = import.meta.env.VITE_CONTACT_EMAIL?.trim() || 'info@mim4u.org'
const SUGGESTIONS = [
'How do I request help with school supplies?',
+1 -1
View File
@@ -99,7 +99,7 @@ export function SEOHead({
"@type": "ContactPoint",
"telephone": "+1-818-491-6884",
"contactType": "customer service",
"email": "info@faithforwardmiracles.org"
"email": "info@mim4u.org"
},
"address": {
"@type": "PostalAddress",
+14 -2
View File
@@ -4,8 +4,8 @@ export const SITE = {
shortName: 'Miracles in Motion',
tagline: 'Faith • Hope • Community • Restoration',
brandMessage: 'Restoring hope through compassion, community, and faith.',
email: 'info@faithforwardmiracles.org',
emailHref: 'mailto:info@faithforwardmiracles.org',
email: 'info@mim4u.org',
emailHref: 'mailto:info@mim4u.org',
ein: '33-4887159',
legalStatus: 'California Nonprofit Public Benefit Corporation',
serviceArea:
@@ -14,6 +14,18 @@ export const SITE = {
wellnessTagline: 'Healing minds. Restoring hope. Transforming lives.',
} as const
/** Public @mim4u.org addresses (Mailcow — see scripts/mailcow/provision-mim4u-public-mail.sh) */
export const EMAILS = {
info: '[email protected]',
contact: '[email protected]',
donate: '[email protected]',
privacy: '[email protected]',
access: '[email protected]',
noreply: '[email protected]',
} as const
export const mailto = (address: string) => `mailto:${address}`
/** Client-provided awareness / campaign graphics (public/photos/campaigns/) */
export const CAMPAIGN_GRAPHICS = [
{
+1 -1
View File
@@ -93,7 +93,7 @@
"contact": "Contact Info",
"address": "123 Hope Street, Education City, EC 12345",
"phone": "+1 (555) 123-4567",
"email": "info@miraclesinmotion.org",
"email": "info@mim4u.org",
"social": "Follow Us",
"newsletter": "Newsletter",
"newsletterText": "Stay updated with our latest programs and impact stories.",
+1 -1
View File
@@ -93,7 +93,7 @@
"contact": "Información de Contacto",
"address": "123 Hope Street, Education City, EC 12345",
"phone": "+1 (555) 123-4567",
"email": "info@miraclesinmotion.org",
"email": "info@mim4u.org",
"social": "Síguenos",
"newsletter": "Boletín",
"newsletterText": "Mantente actualizado con nuestros últimos programas e historias de impacto.",
+2 -2
View File
@@ -55,8 +55,8 @@ export function BrandAssetsPage() {
</li>
<li>
Questions:{' '}
<a className="underline" href="mailto:info@faithforwardmiracles.org">
info@faithforwardmiracles.org
<a className="underline" href="mailto:contact@mim4u.org">
contact@mim4u.org
</a>
</li>
</ul>