feat(tactical): sovereign military suite with 100% real satellite DEM intervisibility, viewshed 360, offline engines, and entitlements

This commit is contained in:
Hamza-Ayed
2026-08-22 15:11:16 +03:00
parent 4a7859f4c2
commit c10fd2396c
74 changed files with 14866 additions and 4001 deletions
+15 -7
View File
@@ -6,6 +6,7 @@ import CompareView from './pages/CompareView'
import IntelligenceDashboard from './pages/IntelligenceDashboard'
import { ExecutiveShowcase } from './pages/ExecutiveShowcase'
import { TacticalDefenseView } from './pages/TacticalDefenseView'
import { SiroStrategicReport } from './pages/SiroStrategicReport'
import './index.css'
maplibregl.setRTLTextPlugin(
@@ -16,15 +17,15 @@ maplibregl.setRTLTextPlugin(
// Lightweight hash router
const NAV = [
{ hash: '#siro', label: 'تقرير المركز الجغرافي (سيرو)', icon: '🏛️' },
{ hash: '#tactical', label: 'المنظومة التكتيكية العسكرية', icon: '🎖️' },
{ hash: '#map', label: 'الخريطة والطقس', icon: '🗺️' },
{ hash: '#review', label: 'تدقيق الطرق', icon: '🔍' },
{ hash: '#compare', label: 'المقارنة المرجعية', icon: '⚖️' },
{ hash: '#executive', label: 'العرض الاستراتيجي', icon: '🏛️' },
{ hash: '#map', label: 'الخريطة والطقس والملاحة', icon: '🗺️' },
{ hash: '#compare', label: 'مقارنة العمالقة والأسعار', icon: '⚖️' },
{ hash: '#review', label: 'تدقيق الطرق الذكي', icon: '🔍' },
]
function ViewNav({ hash }: { hash: string }) {
const currentHash = hash || '#executive'
const currentHash = hash || '#siro'
return (
<div style={{
position: 'fixed',
@@ -145,16 +146,23 @@ function Root() {
return () => window.removeEventListener('hashchange', on);
}, []);
const isSiro = hash === '#siro' || hash === '#report' || hash === '' || hash === '#executive';
const isTactical = hash === '#tactical' || hash === '#military';
const isExecutive = hash === '#executive' || hash === '#pitch';
const isExecutive = hash === '#showcase' || hash === '#pitch';
const isCompare = hash === '#compare';
const isReview = hash === '#review';
const isMap = !isTactical && !isExecutive && !isCompare && !isReview;
const isMap = hash === '#map';
return (
<ErrorBoundary>
<ViewNav hash={hash} />
{isSiro && (
<div style={{ width: '100vw', height: '100vh', position: 'absolute', top: 0, left: 0, overflowY: 'auto', overflowX: 'hidden' }}>
<SiroStrategicReport />
</div>
)}
{isTactical && (
<div style={{ width: '100vw', height: '100vh', position: 'absolute', top: 0, left: 0 }}>
<TacticalDefenseView />