Admin User v1

This commit is contained in:
Eric Gullickson
2025-11-05 19:04:06 -06:00
parent e4e7e32a4f
commit 8174e0d5f9
48 changed files with 11289 additions and 1112 deletions

View File

@@ -0,0 +1,61 @@
/**
* @ai-summary Mobile admin screen for vehicle catalog management
* @ai-context CRUD operations for makes, models, years, trims, engines with mobile UI
*/
import React from 'react';
import { Navigate } from 'react-router-dom';
import { GlassCard } from '../../../shared-minimal/components/mobile/GlassCard';
import { MobileContainer } from '../../../shared-minimal/components/mobile/MobileContainer';
import { useAdminAccess } from '../../../core/auth/useAdminAccess';
export const AdminCatalogMobileScreen: React.FC = () => {
const { isAdmin, loading } = useAdminAccess();
if (loading) {
return (
<MobileContainer>
<div className="flex items-center justify-center min-h-[400px]">
<div className="text-center">
<div className="text-slate-500 mb-2">Loading admin access...</div>
<div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto"></div>
</div>
</div>
</MobileContainer>
);
}
if (!isAdmin) {
return <Navigate to="/garage/settings" replace />;
}
return (
<MobileContainer>
<div className="space-y-4 pb-20 p-4">
<div className="text-center mb-6">
<h1 className="text-2xl font-bold text-slate-800">Vehicle Catalog</h1>
<p className="text-slate-500 mt-2">Manage platform vehicle data</p>
</div>
<GlassCard padding="md">
<div>
<h2 className="text-lg font-semibold text-slate-800 mb-4">Platform Catalog</h2>
<p className="text-sm text-slate-600 mb-4">
Vehicle catalog management interface coming soon.
</p>
<div className="space-y-2 text-sm text-slate-600">
<p className="font-semibold">Features:</p>
<ul className="list-disc pl-5 space-y-1">
<li>Manage vehicle makes</li>
<li>Manage vehicle models</li>
<li>Manage model years</li>
<li>Manage trims</li>
<li>Manage engine specifications</li>
</ul>
</div>
</div>
</GlassCard>
</div>
</MobileContainer>
);
};

View File

@@ -0,0 +1,61 @@
/**
* @ai-summary Mobile admin screen for gas station management
* @ai-context CRUD operations for global station data with mobile UI
*/
import React from 'react';
import { Navigate } from 'react-router-dom';
import { GlassCard } from '../../../shared-minimal/components/mobile/GlassCard';
import { MobileContainer } from '../../../shared-minimal/components/mobile/MobileContainer';
import { useAdminAccess } from '../../../core/auth/useAdminAccess';
export const AdminStationsMobileScreen: React.FC = () => {
const { isAdmin, loading } = useAdminAccess();
if (loading) {
return (
<MobileContainer>
<div className="flex items-center justify-center min-h-[400px]">
<div className="text-center">
<div className="text-slate-500 mb-2">Loading admin access...</div>
<div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto"></div>
</div>
</div>
</MobileContainer>
);
}
if (!isAdmin) {
return <Navigate to="/garage/settings" replace />;
}
return (
<MobileContainer>
<div className="space-y-4 pb-20 p-4">
<div className="text-center mb-6">
<h1 className="text-2xl font-bold text-slate-800">Station Management</h1>
<p className="text-slate-500 mt-2">Manage gas station data</p>
</div>
<GlassCard padding="md">
<div>
<h2 className="text-lg font-semibold text-slate-800 mb-4">Gas Stations</h2>
<p className="text-sm text-slate-600 mb-4">
Station management interface coming soon.
</p>
<div className="space-y-2 text-sm text-slate-600">
<p className="font-semibold">Features:</p>
<ul className="list-disc pl-5 space-y-1">
<li>View all gas stations</li>
<li>Create new stations</li>
<li>Update station information</li>
<li>Delete stations</li>
<li>View station usage statistics</li>
</ul>
</div>
</div>
</GlassCard>
</div>
</MobileContainer>
);
};

View File

@@ -0,0 +1,61 @@
/**
* @ai-summary Mobile admin screen for user management
* @ai-context Manage admin users with mobile-optimized interface
*/
import React from 'react';
import { Navigate } from 'react-router-dom';
import { GlassCard } from '../../../shared-minimal/components/mobile/GlassCard';
import { MobileContainer } from '../../../shared-minimal/components/mobile/MobileContainer';
import { useAdminAccess } from '../../../core/auth/useAdminAccess';
export const AdminUsersMobileScreen: React.FC = () => {
const { isAdmin, loading } = useAdminAccess();
if (loading) {
return (
<MobileContainer>
<div className="flex items-center justify-center min-h-[400px]">
<div className="text-center">
<div className="text-slate-500 mb-2">Loading admin access...</div>
<div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto"></div>
</div>
</div>
</MobileContainer>
);
}
if (!isAdmin) {
return <Navigate to="/garage/settings" replace />;
}
return (
<MobileContainer>
<div className="space-y-4 pb-20 p-4">
<div className="text-center mb-6">
<h1 className="text-2xl font-bold text-slate-800">User Management</h1>
<p className="text-slate-500 mt-2">Manage admin users and permissions</p>
</div>
<GlassCard padding="md">
<div>
<h2 className="text-lg font-semibold text-slate-800 mb-4">Admin Users</h2>
<p className="text-sm text-slate-600 mb-4">
Admin user management interface coming soon.
</p>
<div className="space-y-2 text-sm text-slate-600">
<p className="font-semibold">Features:</p>
<ul className="list-disc pl-5 space-y-1">
<li>List all admin users</li>
<li>Add new admin users</li>
<li>Revoke admin access</li>
<li>Reinstate revoked admins</li>
<li>View audit logs</li>
</ul>
</div>
</div>
</GlassCard>
</div>
</MobileContainer>
);
};