Add brand kit, #/brand page, and responsive logo marks

Export script generates PNG/WebP/favicons/ZIP and OG image; nav uses symbol on mobile and horizontal lockup on desktop; press kit at #/brand with download links and print-friendly guidelines.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
defiQUG
2026-05-26 20:53:37 -07:00
co-authored by Cursor
parent 2019f56f27
commit 33aab0d3de
48 changed files with 569 additions and 77 deletions
+29 -26
View File
@@ -58,14 +58,15 @@ import {
import AIAssistancePortal from './components/AIAssistancePortal'
// Phase 3B: Enterprise Components
import AdvancedAnalyticsDashboard from './components/AdvancedAnalyticsDashboard'
import MobileVolunteerApp from './components/MobileVolunteerApp'
import StaffTrainingDashboard from './components/StaffTrainingDashboard'
import MimChatAgent from './components/MimChatAgent'
import AdvancedAnalyticsDashboard from './components/AdvancedAnalyticsDashboard'
import MobileVolunteerApp from './components/MobileVolunteerApp'
import StaffTrainingDashboard from './components/StaffTrainingDashboard'
import MimChatAgent from './components/MimChatAgent'
// Phase 4: Extracted Components
import { Navigation } from './components/Navigation'
import { Footer } from './components/Footer'
import { BrandAssetsPage } from './pages/BrandPage'
/**
* Miracles in Motion — Complete Non-Profit Website
@@ -2184,7 +2185,7 @@ function SponsorsPage() {
]
return (
<PageShell title="Corporate Sponsorship" icon={Building2} eyebrow="Partner with purpose" cta={<a className="btn-secondary" href="#">Download prospectus</a>}>
<PageShell title="Corporate Sponsorship" icon={Building2} eyebrow="Partner with purpose" cta={<a className="btn-secondary" href="#/brand">Brand assets</a>}>
<div className="grid gap-6 md:grid-cols-2">
<div className="space-y-6">
{tiers.map((t) => (
@@ -2368,7 +2369,7 @@ function LegalPage() {
</PolicySection>
<PolicySection id="sponsorship-terms" title="Sponsorship Terms & Logo Use">
<ul className="list-disc pl-5 space-y-2">
<li>Logo usage requires prior written approval and must follow brand guidelines.</li>
<li>Logo usage requires prior written approval and must follow our <a className="underline" href="#/brand">brand assets and guidelines</a>.</li>
<li>Sponsorship does not imply endorsement of products or services.</li>
<li>Benefits may be adjusted for equivalency based on availability.</li>
</ul>
@@ -4576,6 +4577,8 @@ function AppContent() {
return <TestimoniesPage />
case '/legal':
return <LegalPage />
case '/brand':
return <BrandAssetsPage />
case '/impact':
return <ImpactReportPage />
case '/request-assistance':
@@ -4603,9 +4606,9 @@ function AppContent() {
}
}
return (
<div className={`min-h-screen transition-colors duration-300 bg-neutral-50 text-neutral-900 antialiased selection:bg-primary-200/60 dark:bg-neutral-950 dark:text-neutral-50 ${darkMode ? 'dark' : ''}`}>
<BackgroundDecor />
return (
<div className={`min-h-screen transition-colors duration-300 bg-neutral-50 text-neutral-900 antialiased selection:bg-primary-200/60 dark:bg-neutral-950 dark:text-neutral-50 ${darkMode ? 'dark' : ''}`}>
<BackgroundDecor />
<SkipToContent />
{/* Offline Indicator */}
@@ -4628,20 +4631,20 @@ function AppContent() {
<main id="content" className="relative flex-1">
{renderPage()}
</main>
<Footer />
{![
'/admin-portal',
'/volunteer-portal',
'/resource-portal',
'/analytics',
'/ai-portal',
'/advanced-analytics',
'/mobile-volunteer',
'/staff-training'
].includes(currentPath) && <MimChatAgent currentPath={currentPath} />}
<StickyDonate />
<CookieBanner />
</div>
)
}
<Footer />
{![
'/admin-portal',
'/volunteer-portal',
'/resource-portal',
'/analytics',
'/ai-portal',
'/advanced-analytics',
'/mobile-volunteer',
'/staff-training'
].includes(currentPath) && <MimChatAgent currentPath={currentPath} />}
<StickyDonate />
<CookieBanner />
</div>
)
}