Fix dashboard link and set up proper linking to avoid page reloads

This commit is contained in:
2025-01-14 14:05:51 -05:00
parent 9ac1847116
commit 34443420f7
3 changed files with 23 additions and 42 deletions

View File

@@ -51,22 +51,8 @@ function App() {
<Toaster richColors position="top-center" /> <Toaster richColors position="top-center" />
<Routes> <Routes>
<Route path="/login" element={<Login />} /> <Route path="/login" element={<Login />} />
<Route {isLoggedIn ? (
path="/" <Route element={<MainLayout />}>
element={
isLoggedIn ? (
<Navigate to="/dashboard" replace />
) : (
<Navigate to="/login" replace />
)
}
/>
<Route
path="*"
element={
isLoggedIn ? (
<MainLayout>
<Routes>
<Route path="/" element={<Dashboard />} /> <Route path="/" element={<Dashboard />} />
<Route path="/products" element={<Products />} /> <Route path="/products" element={<Products />} />
<Route path="/import" element={<Import />} /> <Route path="/import" element={<Import />} />
@@ -74,13 +60,11 @@ function App() {
<Route path="/purchase-orders" element={<PurchaseOrders />} /> <Route path="/purchase-orders" element={<PurchaseOrders />} />
<Route path="/analytics" element={<Analytics />} /> <Route path="/analytics" element={<Analytics />} />
<Route path="/settings" element={<Settings />} /> <Route path="/settings" element={<Settings />} />
</Routes> <Route path="*" element={<Navigate to="/" replace />} />
</MainLayout> </Route>
) : ( ) : (
<Navigate to="/login" replace /> <Route path="*" element={<Navigate to="/login" replace />} />
) )}
}
/>
</Routes> </Routes>
</QueryClientProvider> </QueryClientProvider>
); );

View File

@@ -20,7 +20,7 @@ import {
SidebarMenuItem, SidebarMenuItem,
SidebarSeparator, SidebarSeparator,
} from "@/components/ui/sidebar"; } from "@/components/ui/sidebar";
import { useLocation, useNavigate } from "react-router-dom"; import { useLocation, useNavigate, Link } from "react-router-dom";
const items = [ const items = [
{ {
@@ -86,12 +86,12 @@ export function AppSidebar() {
tooltip={item.title} tooltip={item.title}
isActive={isActive} isActive={isActive}
> >
<a href={item.url}> <Link to={item.url}>
<item.icon className="h-4 w-4" /> <item.icon className="h-4 w-4" />
<span className="group-data-[collapsible=icon]:hidden"> <span className="group-data-[collapsible=icon]:hidden">
{item.title} {item.title}
</span> </span>
</a> </Link>
</SidebarMenuButton> </SidebarMenuButton>
</SidebarMenuItem> </SidebarMenuItem>
); );
@@ -110,12 +110,12 @@ export function AppSidebar() {
tooltip="Settings" tooltip="Settings"
isActive={location.pathname === "/settings"} isActive={location.pathname === "/settings"}
> >
<a href="/settings"> <Link to="/settings">
<Settings className="h-4 w-4" /> <Settings className="h-4 w-4" />
<span className="group-data-[collapsible=icon]:hidden"> <span className="group-data-[collapsible=icon]:hidden">
Settings Settings
</span> </span>
</a> </Link>
</SidebarMenuButton> </SidebarMenuButton>
</SidebarMenuItem> </SidebarMenuItem>
</SidebarMenu> </SidebarMenu>

View File

@@ -1,11 +1,8 @@
import { SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar"; import { SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar";
import { AppSidebar } from "./AppSidebar"; import { AppSidebar } from "./AppSidebar";
import { Outlet } from "react-router-dom";
interface MainLayoutProps { export function MainLayout() {
children: React.ReactNode;
}
export function MainLayout({ children }: MainLayoutProps) {
return ( return (
<SidebarProvider defaultOpen> <SidebarProvider defaultOpen>
<div className="flex min-h-screen w-full pr-2"> <div className="flex min-h-screen w-full pr-2">
@@ -15,7 +12,7 @@ export function MainLayout({ children }: MainLayoutProps) {
<SidebarTrigger /> <SidebarTrigger />
</div> </div>
<div className="overflow-auto h-[calc(100vh-3.5rem)] max-w-[1500px]"> <div className="overflow-auto h-[calc(100vh-3.5rem)] max-w-[1500px]">
{children} <Outlet />
</div> </div>
</main> </main>
</div> </div>