weekend update
This commit is contained in:
61
src/components/DispatchHubView.tsx
Normal file
61
src/components/DispatchHubView.tsx
Normal file
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* @license
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import React, { useState } from 'react';
|
||||
import { Route, ShoppingBag, Truck } from 'lucide-react';
|
||||
import DispatchView from './DispatchView';
|
||||
import OrdersView from './OrdersView';
|
||||
import DeliveriesView from './DeliveriesView';
|
||||
|
||||
interface DispatchHubViewProps {
|
||||
locationid?: number;
|
||||
tenantId?: number;
|
||||
}
|
||||
|
||||
export default function DispatchHubView({ locationid, tenantId }: DispatchHubViewProps) {
|
||||
const [activeTab, setActiveTab] = useState<'map' | 'orders' | 'deliveries'>('map');
|
||||
|
||||
const renderTabs = () => (
|
||||
<div className="flex items-center !p-1 bg-slate-100/80 !rounded-lg border border-slate-200/80 shadow-inner">
|
||||
<button
|
||||
onClick={() => setActiveTab('map')}
|
||||
className={`flex items-center !gap-1.5 !px-3 !py-1.5 text-[11px] font-extrabold !rounded-md transition-all duration-300 uppercase tracking-wide ${
|
||||
activeTab === 'map' ? 'bg-white text-[#581c87] shadow-sm ring-1 ring-black/5' : 'text-slate-500 hover:text-slate-800 hover:bg-slate-200/50'
|
||||
}`}
|
||||
>
|
||||
<Route size={13} className={activeTab === 'map' ? 'text-[#581c87]' : 'text-slate-400'} /> Map
|
||||
</button>
|
||||
|
||||
<button
|
||||
onClick={() => setActiveTab('orders')}
|
||||
className={`flex items-center !gap-1.5 !px-3 !py-1.5 text-[11px] font-extrabold !rounded-md transition-all duration-300 uppercase tracking-wide ${
|
||||
activeTab === 'orders' ? 'bg-white text-[#581c87] shadow-sm ring-1 ring-black/5' : 'text-slate-500 hover:text-slate-800 hover:bg-slate-200/50'
|
||||
}`}
|
||||
>
|
||||
<ShoppingBag size={13} className={activeTab === 'orders' ? 'text-[#581c87]' : 'text-slate-400'} /> Orders
|
||||
</button>
|
||||
|
||||
<button
|
||||
onClick={() => setActiveTab('deliveries')}
|
||||
className={`flex items-center !gap-1.5 !px-3 !py-1.5 text-[11px] font-extrabold !rounded-md transition-all duration-300 uppercase tracking-wide ${
|
||||
activeTab === 'deliveries' ? 'bg-white text-[#581c87] shadow-sm ring-1 ring-black/5' : 'text-slate-500 hover:text-slate-800 hover:bg-slate-200/50'
|
||||
}`}
|
||||
>
|
||||
<Truck size={13} className={activeTab === 'deliveries' ? 'text-[#581c87]' : 'text-slate-400'} /> Deliveries
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
|
||||
return (
|
||||
<div className="flex flex-col h-[calc(100vh-80px)] w-full">
|
||||
{/* Content Area - Header removed as requested, tabs passed down */}
|
||||
<div className={`flex-1 min-h-0 bg-[#f8fafc] ${activeTab !== 'map' ? 'overflow-y-auto w-full p-4 md:p-8 relative' : 'relative'}`}>
|
||||
{activeTab === 'map' && <DispatchView locationid={locationid} tenantId={tenantId} headerTabs={renderTabs()} />}
|
||||
{activeTab === 'orders' && <OrdersView locationid={locationid} tenantId={tenantId} headerTabs={renderTabs()} />}
|
||||
{activeTab === 'deliveries' && <DeliveriesView locationid={locationid} tenantId={tenantId} headerTabs={renderTabs()} />}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user