feat: add Mapbox-grade sovereign portal landing page with interactive showcase, unit economics ROI simulator, and developer playground
This commit is contained in:
+10
-1
@@ -8,6 +8,7 @@ import { ExecutiveShowcase } from './pages/ExecutiveShowcase'
|
|||||||
import { TacticalDefenseView } from './pages/TacticalDefenseView'
|
import { TacticalDefenseView } from './pages/TacticalDefenseView'
|
||||||
import { TourismMapView } from './pages/TourismMapView'
|
import { TourismMapView } from './pages/TourismMapView'
|
||||||
import { Terrain3DView } from './pages/Terrain3DView'
|
import { Terrain3DView } from './pages/Terrain3DView'
|
||||||
|
import { LandingPage } from './pages/LandingPage'
|
||||||
import './index.css'
|
import './index.css'
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -24,6 +25,7 @@ try {
|
|||||||
|
|
||||||
// Lightweight hash router with Sovereign Executive Styling
|
// Lightweight hash router with Sovereign Executive Styling
|
||||||
const NAV = [
|
const NAV = [
|
||||||
|
{ hash: '#portal', label: 'البوابة التعريفية', icon: '✨' },
|
||||||
{ hash: '#map', label: 'الخريطة والملاحة الشاملة', icon: '🗺️' },
|
{ hash: '#map', label: 'الخريطة والملاحة الشاملة', icon: '🗺️' },
|
||||||
{ hash: '#terrain3d', label: 'الخريطة ثلاثية الأبعاد والتضاريس', icon: '🏔️' },
|
{ hash: '#terrain3d', label: 'الخريطة ثلاثية الأبعاد والتضاريس', icon: '🏔️' },
|
||||||
{ hash: '#tourism', label: 'الخريطة السياحية والتراثية', icon: '🏛️' },
|
{ hash: '#tourism', label: 'الخريطة السياحية والتراثية', icon: '🏛️' },
|
||||||
@@ -276,13 +278,14 @@ function Root() {
|
|||||||
return () => window.removeEventListener('hashchange', on);
|
return () => window.removeEventListener('hashchange', on);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
const isPortal = hash === '#portal' || hash === '#landing' || hash === '#home';
|
||||||
const isTourism = hash === '#tourism' || hash === '#heritage' || hash === '#tourist';
|
const isTourism = hash === '#tourism' || hash === '#heritage' || hash === '#tourist';
|
||||||
const isTactical = hash === '#tactical' || hash === '#military' || hash === '#siro';
|
const isTactical = hash === '#tactical' || hash === '#military' || hash === '#siro';
|
||||||
const isTerrain3D = hash === '#terrain3d' || hash === '#3d' || hash === '#terrain';
|
const isTerrain3D = hash === '#terrain3d' || hash === '#3d' || hash === '#terrain';
|
||||||
const isExecutive = hash === '#showcase' || hash === '#pitch';
|
const isExecutive = hash === '#showcase' || hash === '#pitch';
|
||||||
const isCompare = hash === '#compare';
|
const isCompare = hash === '#compare';
|
||||||
const isReview = hash === '#review';
|
const isReview = hash === '#review';
|
||||||
const isMap = hash === '#map' || (!isTourism && !isTactical && !isTerrain3D && !isExecutive && !isCompare && !isReview);
|
const isMap = hash === '#map' || (!isPortal && !isTourism && !isTactical && !isTerrain3D && !isExecutive && !isCompare && !isReview);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ErrorBoundary>
|
<ErrorBoundary>
|
||||||
@@ -298,6 +301,12 @@ function Root() {
|
|||||||
height: 'calc(100vh - 52px)',
|
height: 'calc(100vh - 52px)',
|
||||||
overflow: 'hidden'
|
overflow: 'hidden'
|
||||||
}}>
|
}}>
|
||||||
|
{isPortal && (
|
||||||
|
<div style={{ width: '100%', height: '100%', overflowY: 'auto' }}>
|
||||||
|
<LandingPage />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
{isTerrain3D && (
|
{isTerrain3D && (
|
||||||
<div style={{ width: '100%', height: '100%' }}>
|
<div style={{ width: '100%', height: '100%' }}>
|
||||||
<Terrain3DView />
|
<Terrain3DView />
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user