feat(marketing): add ZeroTier Network Governance page and content
Add comprehensive marketing content for ZeroTier Network Governance feature including a dedicated landing page, navigation updates, and feature highlights across the homepage and features page. - Add new ZeroTierPage with feature documentation and use cases - Add ZeroTier to navigation in MarketingLayout header and footer - Update HomePage hero headline and add ZeroTier feature section - Add ZeroTier features section to FeaturesPage - Add ScrollToTop component for better navigation UX - Move ApiDevTools to AuthenticatedLayout (dev mode only) - Add SSR tests for marketing pages - Update SSHCertificatesPage comparison table for clarity - Add documentation link to MarketingLayout footer
This commit is contained in:
+14
-4
@@ -2,7 +2,8 @@ import { Toaster } from "@/components/ui/toaster";
|
||||
import { Toaster as Sonner } from "@/components/ui/sonner";
|
||||
import { TooltipProvider } from "@/components/ui/tooltip";
|
||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
||||
import { BrowserRouter, Routes, Route } from "react-router-dom";
|
||||
import { BrowserRouter, Routes, Route, useLocation } from "react-router-dom";
|
||||
import { useEffect } from "react";
|
||||
|
||||
// Layouts
|
||||
import PublicLayout from "@/components/layouts/PublicLayout";
|
||||
@@ -15,6 +16,7 @@ import FeaturesPage from "@/pages/marketing/FeaturesPage";
|
||||
import PricingPage from "@/pages/marketing/PricingPage";
|
||||
import SecurityPage from "@/pages/marketing/SecurityPage";
|
||||
import SSHCertificatesPage from "@/pages/marketing/SSHCertificatesPage";
|
||||
import ZeroTierPage from "@/pages/marketing/ZeroTierPage";
|
||||
import DemoPage from "@/pages/marketing/DemoPage";
|
||||
|
||||
// Public pages
|
||||
@@ -59,7 +61,6 @@ import OAuthProvidersPage from "@/pages/admin/OAuthProvidersPage";
|
||||
import OrgSetupPage from "@/pages/auth/OrgSetupPage";
|
||||
|
||||
import NotFound from "@/pages/NotFound";
|
||||
import ApiDevTools from "@/components/dev/ApiDevTools";
|
||||
|
||||
const queryClient = new QueryClient({
|
||||
defaultOptions: {
|
||||
@@ -82,12 +83,22 @@ const App = () => (
|
||||
<Toaster />
|
||||
<Sonner />
|
||||
<BrowserRouter>
|
||||
<ScrollToTop />
|
||||
<AppRoutes />
|
||||
</BrowserRouter>
|
||||
</TooltipProvider>
|
||||
</QueryClientProvider>
|
||||
);
|
||||
|
||||
// Scroll to top on navigation
|
||||
function ScrollToTop() {
|
||||
const location = useLocation();
|
||||
useEffect(() => {
|
||||
window.scrollTo({ top: 0, left: 0, behavior: 'instant' });
|
||||
}, [location.pathname]);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Separate component so AuthProvider can use useNavigate
|
||||
import { AuthProvider, useAuth } from "@/contexts/AuthContext";
|
||||
import { OrgProvider } from "@/contexts/OrgContext";
|
||||
@@ -148,6 +159,7 @@ function AppRoutes() {
|
||||
<Route path="/pricing" element={<PricingPage />} />
|
||||
<Route path="/security" element={<SecurityPage />} />
|
||||
<Route path="/ssh-certificates" element={<SSHCertificatesPage />} />
|
||||
<Route path="/zerotier" element={<ZeroTierPage />} />
|
||||
<Route path="/demo" element={<DemoPage />} />
|
||||
</Route>
|
||||
|
||||
@@ -208,8 +220,6 @@ function AppRoutes() {
|
||||
<Route path="*" element={<NotFound />} />
|
||||
</Routes>
|
||||
|
||||
{/* Dev tools - only shown in development */}
|
||||
<ApiDevTools />
|
||||
</OrgProvider>
|
||||
</AuthProvider>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user