Align branding, PWA manifest, and contact details with mim4u.org.
Unify logos (footer dark symbol), OG image URL, canonical phone/EIN in siteContent, and foundation copy in i18n, env example, and AI chat prompt. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
+16
-24
@@ -5,31 +5,28 @@
|
||||
VITE_GA_MEASUREMENT_ID=G-XXXXXXXXXX
|
||||
VITE_ANALYTICS_ENABLED=true
|
||||
|
||||
# Contact Information
|
||||
# Contact Information (canonical: src/content/siteContent.ts)
|
||||
VITE_CONTACT_EMAIL=[email protected]
|
||||
VITE_PHONE_NUMBER=+15551234567
|
||||
VITE_ADDRESS="123 Community Way, Hometown, ST 12345"
|
||||
VITE_PHONE_NUMBER=+18184916884
|
||||
VITE_ADDRESS="Los Angeles County, California"
|
||||
|
||||
# Donation Processing
|
||||
VITE_DONATION_ENDPOINT=https://api.donation-processor.com/v1
|
||||
VITE_PAYPAL_CLIENT_ID=your_paypal_client_id
|
||||
VITE_STRIPE_PUBLISHABLE_KEY=pk_test_your_stripe_key
|
||||
VITE_DONATION_ENDPOINT=
|
||||
VITE_PAYPAL_CLIENT_ID=
|
||||
VITE_STRIPE_PUBLISHABLE_KEY=
|
||||
|
||||
# Organization Details
|
||||
VITE_EIN=12-3456789
|
||||
VITE_ORG_NAME="Miracles In Motion"
|
||||
VITE_ORG_DESCRIPTION="A 501(c)3 non-profit providing essentials for student success"
|
||||
VITE_EIN=33-4887159
|
||||
VITE_ORG_NAME="Miracles in Motion Foundation"
|
||||
VITE_ORG_DESCRIPTION="Restoring hope through compassion, community, and faith. Serving Los Angeles County."
|
||||
|
||||
# Social Media
|
||||
VITE_FACEBOOK_URL=https://facebook.com/miraclesinmotion
|
||||
VITE_INSTAGRAM_URL=https://instagram.com/miraclesinmotion
|
||||
VITE_TWITTER_URL=https://twitter.com/miraclesinmotion
|
||||
VITE_LINKEDIN_URL=https://linkedin.com/company/miraclesinmotion
|
||||
# Social Media (canonical Instagram: siteContent SOCIAL)
|
||||
VITE_INSTAGRAM_URL=https://www.instagram.com/miraclesinmotionfoundation
|
||||
|
||||
# API Endpoints
|
||||
VITE_API_BASE_URL=https://api.miraclesinmotion.org
|
||||
VITE_VOLUNTEER_FORM_URL=https://forms.miraclesinmotion.org/volunteer
|
||||
VITE_CONTACT_FORM_URL=https://forms.miraclesinmotion.org/contact
|
||||
# API Endpoints (set when backend is deployed on mim4u.org)
|
||||
VITE_API_BASE_URL=
|
||||
VITE_VOLUNTEER_FORM_URL=
|
||||
VITE_CONTACT_FORM_URL=
|
||||
|
||||
# Feature Flags
|
||||
VITE_ENABLE_CHAT=false
|
||||
@@ -38,9 +35,4 @@ VITE_ENABLE_EVENTS=true
|
||||
VITE_ENABLE_BLOG=false
|
||||
|
||||
# Optional chat API override
|
||||
# Default is same-origin /api/ai/chat via nginx proxy on the web container.
|
||||
# VITE_CHAT_API_BASE_URL=https://mim4u.org
|
||||
|
||||
# Development
|
||||
VITE_DEV_MODE=true
|
||||
VITE_LOG_LEVEL=info
|
||||
# VITE_CHAT_API_URL=
|
||||
|
||||
+1
-1
@@ -62,7 +62,7 @@ function normalizeMessages(messages: ChatMessage[] | undefined): ChatMessage[] {
|
||||
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.',
|
||||
'Answer as a warm, concise concierge for Miracles in Motion Foundation — a faith-centered nonprofit serving Los Angeles County with outreach, emergency assistance, resource navigation, wellness support, volunteer coordination, donations, and corporate partnerships.',
|
||||
'Use only the provided context and the user messages. If you are unsure, say so and direct the user to [email protected].',
|
||||
'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.',
|
||||
|
||||
+2
-2
@@ -16,13 +16,13 @@
|
||||
<meta property="og:description" content="Restoring hope through compassion, community, and faith." />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://mim4u.org" />
|
||||
<meta property="og:image" content="/og-image.png" />
|
||||
<meta property="og:image" content="https://mim4u.org/og-image.png" />
|
||||
|
||||
<!-- Twitter Card Meta Tags -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Miracles in Motion Foundation" />
|
||||
<meta name="twitter:description" content="Restoring hope through compassion, community, and faith." />
|
||||
<meta name="twitter:image" content="/og-image.png" />
|
||||
<meta name="twitter:image" content="https://mim4u.org/og-image.png" />
|
||||
|
||||
<!-- Favicon and Web App Manifest -->
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@
|
||||
"type": "git",
|
||||
"url": "https://github.com/Miracles-In-Motion/public-web.git"
|
||||
},
|
||||
"homepage": "https://miraclesinmotion.org",
|
||||
"homepage": "https://mim4u.org",
|
||||
"dependencies": {
|
||||
"@fontsource/inter": "^5.2.8",
|
||||
"@fontsource/playfair-display": "^5.2.8",
|
||||
|
||||
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 298 KiB |
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "Miracles In Motion Foundation",
|
||||
"name": "Miracles in Motion Foundation",
|
||||
"short_name": "MiM",
|
||||
"description": "A 501(c)3 non-profit providing essentials for student success",
|
||||
"description": "Restoring hope through compassion, community, and faith. Serving Los Angeles County.",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"background_color": "#1a3c34",
|
||||
@@ -26,7 +26,7 @@
|
||||
"purpose": "any"
|
||||
}
|
||||
],
|
||||
"categories": ["education", "social", "non-profit"],
|
||||
"categories": ["non-profit", "social", "charity"],
|
||||
"lang": "en-US",
|
||||
"dir": "ltr",
|
||||
"orientation": "portrait-primary",
|
||||
|
||||
+2
-2
@@ -501,7 +501,7 @@ function SEOHead({ title, description, image }: { title?: string, description?:
|
||||
|
||||
updateOGTag('og:title', title || `${SITE.name} — ${SITE.brandMessage}`)
|
||||
updateOGTag('og:description', description || 'Faith-centered nonprofit bringing hope, outreach, emergency assistance, and wellness support to families in Los Angeles County.')
|
||||
updateOGTag('og:image', image || '/og-image.jpg')
|
||||
updateOGTag('og:image', image || `${SITE.url}/og-image.png`)
|
||||
updateOGTag('og:type', 'website')
|
||||
}, [title, description, image])
|
||||
|
||||
@@ -2659,7 +2659,7 @@ function AssistanceRequestPage() {
|
||||
required
|
||||
type="tel"
|
||||
className={`input ${errors['contactInfo.phone'] ? 'border-red-500 dark:border-red-400' : ''}`}
|
||||
placeholder="(555) 123-4567"
|
||||
placeholder={SITE.phone}
|
||||
value={formData.contactInfo.phone}
|
||||
onChange={(e) => {
|
||||
setFormData({ ...formData, contactInfo: { ...formData.contactInfo, phone: e.target.value } })
|
||||
|
||||
@@ -120,12 +120,7 @@ export function Footer() {
|
||||
<div className="mt-8 border-t border-secondary-200/50 pt-8 text-center text-xs text-neutral-600 dark:border-white/10 dark:text-neutral-400">
|
||||
<p className="font-medium text-neutral-800 dark:text-neutral-200">{SITE.name}</p>
|
||||
<p className="mt-1">{SITE.legalStatus}</p>
|
||||
<p className="mt-1">
|
||||
EIN:{' '}
|
||||
<a href={`tel:${SITE.ein.replace(/-/g, '')}`} className="underline">
|
||||
{SITE.ein}
|
||||
</a>
|
||||
</p>
|
||||
<p className="mt-1">EIN: {SITE.ein}</p>
|
||||
<p className="mt-2">
|
||||
© {new Date().getFullYear()} {SITE.shortName}. All rights reserved. Donations may be
|
||||
tax-deductible to the extent allowed by law.
|
||||
|
||||
@@ -11,28 +11,28 @@ interface SEOProps {
|
||||
}
|
||||
|
||||
export const SEO: React.FC<SEOProps> = ({
|
||||
title = 'Miracles In Motion - Supporting Students in Need',
|
||||
description = 'A 501(c)3 non-profit providing school supplies, clothing, and emergency assistance to students and families in need.',
|
||||
keywords = ['nonprofit', 'charity', '501c3', 'student assistance', 'school supplies', 'donations'],
|
||||
image = 'https://miraclesinmotion.org/og-image.png',
|
||||
url = 'https://miraclesinmotion.org',
|
||||
title = 'Miracles in Motion Foundation',
|
||||
description = 'Restoring hope through compassion, community, and faith. Serving Los Angeles County with outreach, emergency assistance, and advocacy for families in crisis.',
|
||||
keywords = ['nonprofit', 'charity', '501c3', 'miracles in motion', 'Los Angeles County', 'donations', 'volunteer'],
|
||||
image = 'https://mim4u.org/og-image.png',
|
||||
url = 'https://mim4u.org',
|
||||
type = 'website'
|
||||
}) => {
|
||||
const structuredData = {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
"name": "Miracles In Motion",
|
||||
"name": "Miracles in Motion Foundation",
|
||||
"description": description,
|
||||
"url": url,
|
||||
"logo": "https://miraclesinmotion.org/logo.png",
|
||||
"logo": "https://mim4u.org/logo-symbol.png",
|
||||
"contactPoint": {
|
||||
"@type": "ContactPoint",
|
||||
"telephone": "+1-555-123-4567",
|
||||
"contactType": "Customer Service"
|
||||
"telephone": "+1-818-491-6884",
|
||||
"contactType": "Customer Service",
|
||||
"email": "[email protected]"
|
||||
},
|
||||
"sameAs": [
|
||||
"https://facebook.com/miraclesinmotion",
|
||||
"https://instagram.com/miraclesinmotion"
|
||||
"https://www.instagram.com/miraclesinmotionfoundation"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ export const SEO: React.FC<SEOProps> = ({
|
||||
|
||||
{/* Additional Meta Tags */}
|
||||
<meta name="robots" content="index, follow" />
|
||||
<meta name="author" content="Miracles In Motion" />
|
||||
<meta name="author" content="Miracles in Motion Foundation" />
|
||||
<link rel="canonical" href={url} />
|
||||
</Helmet>
|
||||
)
|
||||
|
||||
@@ -201,7 +201,7 @@ function PaymentForm({ amount, isRecurring = false, onSuccess, onError }: Paymen
|
||||
value={customerInfo.phone}
|
||||
onChange={(e) => setCustomerInfo(prev => ({ ...prev, phone: e.target.value }))}
|
||||
className="w-full px-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500"
|
||||
placeholder="(555) 123-4567"
|
||||
placeholder="(818) 491-6884"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -50,10 +50,18 @@ export function LogoMark({ variant = 'nav', className = '' }: LogoMarkProps) {
|
||||
className={['logo-mark', 'logo-mark--footer', className].filter(Boolean).join(' ')}
|
||||
aria-hidden={true}
|
||||
>
|
||||
<img
|
||||
src={BRAND.symbolSvg}
|
||||
alt=""
|
||||
className="logo-mark__img logo-mark__img--symbol hidden dark:block"
|
||||
width={100}
|
||||
height={99}
|
||||
decoding="async"
|
||||
/>
|
||||
<img
|
||||
src={BRAND.horizontal}
|
||||
alt=""
|
||||
className="logo-mark__img logo-mark__img--horizontal"
|
||||
className="logo-mark__img logo-mark__img--horizontal block dark:hidden"
|
||||
width={1024}
|
||||
height={354}
|
||||
decoding="async"
|
||||
|
||||
@@ -6,6 +6,10 @@ export const SITE = {
|
||||
brandMessage: 'Restoring hope through compassion, community, and faith.',
|
||||
email: '[email protected]',
|
||||
emailHref: 'mailto:[email protected]',
|
||||
phone: '(818) 491-6884',
|
||||
phoneHref: 'tel:+18184916884',
|
||||
phoneE164: '+18184916884',
|
||||
url: 'https://mim4u.org',
|
||||
ein: '33-4887159',
|
||||
legalStatus: 'California Nonprofit Public Benefit Corporation',
|
||||
serviceArea:
|
||||
|
||||
@@ -37,17 +37,17 @@ export const AuthProvider: React.FC<{ children: ReactNode }> = ({ children }) =>
|
||||
|
||||
// Mock user data based on email
|
||||
const mockUsers: Record<string, AuthUser> = {
|
||||
'admin@miraclesinmotion.org': {
|
||||
'admin@mim4u.org': {
|
||||
id: '1',
|
||||
email: 'admin@miraclesinmotion.org',
|
||||
email: 'admin@mim4u.org',
|
||||
role: 'admin',
|
||||
name: 'Admin User',
|
||||
lastLogin: new Date(),
|
||||
permissions: ['all']
|
||||
},
|
||||
'volunteer@miraclesinmotion.org': {
|
||||
'volunteer@mim4u.org': {
|
||||
id: '2',
|
||||
email: 'volunteer@miraclesinmotion.org',
|
||||
email: 'volunteer@mim4u.org',
|
||||
role: 'volunteer',
|
||||
name: 'Volunteer User',
|
||||
lastLogin: new Date(),
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
"settings": "Settings"
|
||||
},
|
||||
"hero": {
|
||||
"title": "Empowering Students with",
|
||||
"titleHighlight": "Essential Support",
|
||||
"subtitle": "A 501(c)(3) nonprofit providing students with school supplies, clothing, and emergency support to help them succeed in school and life.",
|
||||
"title": "Restoring hope through",
|
||||
"titleHighlight": "compassion & community",
|
||||
"subtitle": "Miracles in Motion Foundation serves Los Angeles County with faith-centered outreach, emergency assistance, and wellness support for families in crisis.",
|
||||
"primaryButton": "Make a Donation",
|
||||
"secondaryButton": "Learn More",
|
||||
"stats": {
|
||||
@@ -88,11 +88,11 @@
|
||||
},
|
||||
"footer": {
|
||||
"mission": "Our Mission",
|
||||
"missionText": "Empowering students with essential resources for educational success and personal growth.",
|
||||
"missionText": "Restoring hope through compassion, community, and faith.",
|
||||
"quickLinks": "Quick Links",
|
||||
"contact": "Contact Info",
|
||||
"address": "123 Hope Street, Education City, EC 12345",
|
||||
"phone": "+1 (555) 123-4567",
|
||||
"address": "Los Angeles County, California",
|
||||
"phone": "(818) 491-6884",
|
||||
"email": "[email protected]",
|
||||
"social": "Follow Us",
|
||||
"newsletter": "Newsletter",
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
"settings": "Configuración"
|
||||
},
|
||||
"hero": {
|
||||
"title": "Empoderando Estudiantes con",
|
||||
"titleHighlight": "Apoyo Esencial",
|
||||
"subtitle": "Una organización sin fines de lucro 501(c)(3) que proporciona a los estudiantes útiles escolares, ropa y apoyo de emergencia para ayudarlos a tener éxito en la escuela y la vida.",
|
||||
"title": "Restaurando la esperanza con",
|
||||
"titleHighlight": "compasión y comunidad",
|
||||
"subtitle": "Miracles in Motion Foundation sirve al condado de Los Ángeles con alcance centrado en la fe, asistencia de emergencia y apoyo de bienestar para familias en crisis.",
|
||||
"primaryButton": "Hacer una Donación",
|
||||
"secondaryButton": "Saber Más",
|
||||
"stats": {
|
||||
@@ -88,11 +88,11 @@
|
||||
},
|
||||
"footer": {
|
||||
"mission": "Nuestra Misión",
|
||||
"missionText": "Empoderando estudiantes con recursos esenciales para el éxito educativo y crecimiento personal.",
|
||||
"missionText": "Restaurando la esperanza con compasión, comunidad y fe.",
|
||||
"quickLinks": "Enlaces Rápidos",
|
||||
"contact": "Información de Contacto",
|
||||
"address": "123 Hope Street, Education City, EC 12345",
|
||||
"phone": "+1 (555) 123-4567",
|
||||
"address": "Condado de Los Ángeles, California",
|
||||
"phone": "(818) 491-6884",
|
||||
"email": "[email protected]",
|
||||
"social": "Síguenos",
|
||||
"newsletter": "Boletín",
|
||||
|
||||
+7
-1
@@ -158,11 +158,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
/* Footer: always horizontal */
|
||||
/* Footer: horizontal on light; symbol on dark (horizontal PNG has opaque panel) */
|
||||
.logo-mark--footer {
|
||||
height: 2.75rem;
|
||||
}
|
||||
|
||||
.logo-mark--footer .logo-mark__img--symbol {
|
||||
height: 100%;
|
||||
width: auto;
|
||||
max-width: 3.25rem;
|
||||
}
|
||||
|
||||
.logo-mark--footer .logo-mark__img--horizontal {
|
||||
height: 100%;
|
||||
width: auto;
|
||||
|
||||
@@ -6,6 +6,7 @@ import { useDonationImpact } from '@/hooks/useDonationImpact'
|
||||
import { useFormValidation } from '@/hooks/useDonationImpact'
|
||||
import { formatCurrency } from '@/utils/helpers'
|
||||
import { trackEvent, trackPageView } from '@/utils/analytics'
|
||||
import { SITE } from '@/content/siteContent'
|
||||
|
||||
interface DonatePageProps {
|
||||
className?: string
|
||||
@@ -362,7 +363,7 @@ const TrustBadges: React.FC = () => (
|
||||
|
||||
<div className="mt-6 pt-4 border-t border-gray-200 dark:border-gray-700">
|
||||
<p className="text-xs text-gray-500">
|
||||
EIN: 33-4887159 • All donations are tax-deductible to the fullest extent allowed by law.
|
||||
EIN: {SITE.ein} • All donations are tax-deductible to the fullest extent allowed by law.
|
||||
</p>
|
||||
</div>
|
||||
</Card>
|
||||
|
||||
Reference in New Issue
Block a user