diff --git a/website/src/app/docs/layout.tsx b/website/src/app/docs/layout.tsx
index c717badb3..89a9da8fb 100644
--- a/website/src/app/docs/layout.tsx
+++ b/website/src/app/docs/layout.tsx
@@ -1,7 +1,16 @@
+import fs from "fs";
+import path from "path";
+
+import LastUpdated from "@/components/LastUpdated";
import DocsSidebar from "@/components/DocsSidebar";
import Banner from "./banner.mdx";
export default function Layout({ children }: { children: React.ReactNode }) {
+ // timestamps.json was generated during build
+ const timestampsFile = path.resolve("timestamps.json");
+ const timestampsData = fs.readFileSync(timestampsFile, "utf-8");
+ const timestamps = JSON.parse(timestampsData);
+
return (
@@ -11,6 +20,9 @@ export default function Layout({ children }: { children: React.ReactNode }) {
{children}
+
+
+
diff --git a/website/src/app/kb/administer/backup-restore/page.tsx b/website/src/app/kb/administer/backup-restore/page.tsx
index a92dd1958..87e5e026e 100644
--- a/website/src/app/kb/administer/backup-restore/page.tsx
+++ b/website/src/app/kb/administer/backup-restore/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Backup and Restore • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/administer/logs/page.tsx b/website/src/app/kb/administer/logs/page.tsx
index 9d724ad3c..27abea629 100644
--- a/website/src/app/kb/administer/logs/page.tsx
+++ b/website/src/app/kb/administer/logs/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Viewing Logs • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/administer/page.tsx b/website/src/app/kb/administer/page.tsx
index 17e7ffde0..1e805dd59 100644
--- a/website/src/app/kb/administer/page.tsx
+++ b/website/src/app/kb/administer/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Administer • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/administer/troubleshooting/page.tsx b/website/src/app/kb/administer/troubleshooting/page.tsx
index 9b14ae613..bd33c495f 100644
--- a/website/src/app/kb/administer/troubleshooting/page.tsx
+++ b/website/src/app/kb/administer/troubleshooting/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Troubleshooting Guide • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/administer/uninstall/page.tsx b/website/src/app/kb/administer/uninstall/page.tsx
index 1fed4cc79..3e6583e73 100644
--- a/website/src/app/kb/administer/uninstall/page.tsx
+++ b/website/src/app/kb/administer/uninstall/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Uninstall Firezone • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/administer/upgrading/page.tsx b/website/src/app/kb/administer/upgrading/page.tsx
index eda833981..f5246bcb7 100644
--- a/website/src/app/kb/administer/upgrading/page.tsx
+++ b/website/src/app/kb/administer/upgrading/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Upgrading • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/architecture/core-components/page.tsx b/website/src/app/kb/architecture/core-components/page.tsx
index ef5fd2ef5..76cbd24f2 100644
--- a/website/src/app/kb/architecture/core-components/page.tsx
+++ b/website/src/app/kb/architecture/core-components/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Architecture: Core Components • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/architecture/critical-sequences/page.tsx b/website/src/app/kb/architecture/critical-sequences/page.tsx
index 625cc28b0..4d7fdff67 100644
--- a/website/src/app/kb/architecture/critical-sequences/page.tsx
+++ b/website/src/app/kb/architecture/critical-sequences/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Architecture: Critical Sequences • Firezone Docs",
@@ -9,10 +8,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/architecture/page.tsx b/website/src/app/kb/architecture/page.tsx
index f010fe039..beb9de1d2 100644
--- a/website/src/app/kb/architecture/page.tsx
+++ b/website/src/app/kb/architecture/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Architecture: Overview • Firezone Docs",
@@ -9,10 +8,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/architecture/security-controls/page.tsx b/website/src/app/kb/architecture/security-controls/page.tsx
index 595960d39..5b098cede 100644
--- a/website/src/app/kb/architecture/security-controls/page.tsx
+++ b/website/src/app/kb/architecture/security-controls/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Architecture: Security Controls • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/architecture/tech-stack/page.tsx b/website/src/app/kb/architecture/tech-stack/page.tsx
index ff20ea354..62d4ac67d 100644
--- a/website/src/app/kb/architecture/tech-stack/page.tsx
+++ b/website/src/app/kb/architecture/tech-stack/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Architecture: Stack • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/authenticate/directory-sync/page.tsx b/website/src/app/kb/authenticate/directory-sync/page.tsx
index 193eeec66..84e77c5c7 100644
--- a/website/src/app/kb/authenticate/directory-sync/page.tsx
+++ b/website/src/app/kb/authenticate/directory-sync/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Directory Sync • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/authenticate/email/page.tsx b/website/src/app/kb/authenticate/email/page.tsx
index 24102d3a6..68494701b 100644
--- a/website/src/app/kb/authenticate/email/page.tsx
+++ b/website/src/app/kb/authenticate/email/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Email Authentication • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/authenticate/entra/page.tsx b/website/src/app/kb/authenticate/entra/page.tsx
index 93622d882..815395584 100644
--- a/website/src/app/kb/authenticate/entra/page.tsx
+++ b/website/src/app/kb/authenticate/entra/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Microsoft Entra ID Authentication • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/authenticate/google/page.tsx b/website/src/app/kb/authenticate/google/page.tsx
index 511a6911e..62a05340d 100644
--- a/website/src/app/kb/authenticate/google/page.tsx
+++ b/website/src/app/kb/authenticate/google/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Google Workspace Authentication • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/authenticate/jumpcloud/page.tsx b/website/src/app/kb/authenticate/jumpcloud/page.tsx
index 77962ba5b..f0f4efc55 100644
--- a/website/src/app/kb/authenticate/jumpcloud/page.tsx
+++ b/website/src/app/kb/authenticate/jumpcloud/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "JumpCloud Authentication • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/authenticate/oidc/fusion/page.tsx b/website/src/app/kb/authenticate/oidc/fusion/page.tsx
index 91c1ae3a1..d4e092a2a 100644
--- a/website/src/app/kb/authenticate/oidc/fusion/page.tsx
+++ b/website/src/app/kb/authenticate/oidc/fusion/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "FusionAuth • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/authenticate/oidc/page.tsx b/website/src/app/kb/authenticate/oidc/page.tsx
index 699cdf9ef..6750e5cdf 100644
--- a/website/src/app/kb/authenticate/oidc/page.tsx
+++ b/website/src/app/kb/authenticate/oidc/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "OIDC Authentication • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/authenticate/okta/page.tsx b/website/src/app/kb/authenticate/okta/page.tsx
index ac4e5a0f5..3a8a840ec 100644
--- a/website/src/app/kb/authenticate/okta/page.tsx
+++ b/website/src/app/kb/authenticate/okta/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Okta Authentication • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/authenticate/page.tsx b/website/src/app/kb/authenticate/page.tsx
index 6ee13d187..9dd45c641 100644
--- a/website/src/app/kb/authenticate/page.tsx
+++ b/website/src/app/kb/authenticate/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Authentication Overview • Firezone Docs",
@@ -9,10 +8,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/authenticate/service-accounts/page.tsx b/website/src/app/kb/authenticate/service-accounts/page.tsx
index f7ce86bc7..6a856b72e 100644
--- a/website/src/app/kb/authenticate/service-accounts/page.tsx
+++ b/website/src/app/kb/authenticate/service-accounts/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Service Accounts • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/automate/docker-compose/page.tsx b/website/src/app/kb/automate/docker-compose/page.tsx
index 3cfe54715..f2bfe5604 100644
--- a/website/src/app/kb/automate/docker-compose/page.tsx
+++ b/website/src/app/kb/automate/docker-compose/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Docker Compose • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/automate/page.tsx b/website/src/app/kb/automate/page.tsx
index a25acda88..cec7ced4a 100644
--- a/website/src/app/kb/automate/page.tsx
+++ b/website/src/app/kb/automate/page.tsx
@@ -1,6 +1,5 @@
import { Metadata } from "next";
import _Page from "./_page";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Automate • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/automate/terraform/aws/page.tsx b/website/src/app/kb/automate/terraform/aws/page.tsx
index ef64ae004..e461b40db 100644
--- a/website/src/app/kb/automate/terraform/aws/page.tsx
+++ b/website/src/app/kb/automate/terraform/aws/page.tsx
@@ -1,6 +1,5 @@
import { Metadata } from "next";
import _Page from "./_page";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Deploy Firezone on AWS • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/automate/terraform/azure/page.tsx b/website/src/app/kb/automate/terraform/azure/page.tsx
index 4d9c4b368..7f6b747d4 100644
--- a/website/src/app/kb/automate/terraform/azure/page.tsx
+++ b/website/src/app/kb/automate/terraform/azure/page.tsx
@@ -1,6 +1,5 @@
import { Metadata } from "next";
import _Page from "./_page";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Deploy Firezone on Azure • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/automate/terraform/gcp/page.tsx b/website/src/app/kb/automate/terraform/gcp/page.tsx
index 6007bd70b..29309df77 100644
--- a/website/src/app/kb/automate/terraform/gcp/page.tsx
+++ b/website/src/app/kb/automate/terraform/gcp/page.tsx
@@ -1,6 +1,5 @@
import { Metadata } from "next";
import _Page from "./_page";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Deploy Firezone on GCP • Firezone Docs",
@@ -9,10 +8,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/deploy/clients/page.tsx b/website/src/app/kb/deploy/clients/page.tsx
index cd030d453..aa56dcd07 100644
--- a/website/src/app/kb/deploy/clients/page.tsx
+++ b/website/src/app/kb/deploy/clients/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Clients • Firezone Deploy Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/deploy/dns/page.tsx b/website/src/app/kb/deploy/dns/page.tsx
index 84b746d1d..40ef13aca 100644
--- a/website/src/app/kb/deploy/dns/page.tsx
+++ b/website/src/app/kb/deploy/dns/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Configure DNS • Firezone Deploy Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/deploy/gateways/page.tsx b/website/src/app/kb/deploy/gateways/page.tsx
index 00c32b966..31c8b236a 100644
--- a/website/src/app/kb/deploy/gateways/page.tsx
+++ b/website/src/app/kb/deploy/gateways/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Gateways • Firezone Deploy Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/deploy/groups/page.tsx b/website/src/app/kb/deploy/groups/page.tsx
index 69fdf691a..cae879062 100644
--- a/website/src/app/kb/deploy/groups/page.tsx
+++ b/website/src/app/kb/deploy/groups/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Groups • Firezone Deploy Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/deploy/page.tsx b/website/src/app/kb/deploy/page.tsx
index a503d9b2b..8e5387f92 100644
--- a/website/src/app/kb/deploy/page.tsx
+++ b/website/src/app/kb/deploy/page.tsx
@@ -1,6 +1,5 @@
import { Metadata } from "next";
import _Page from "./_page";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Deploy • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/deploy/policies/page.tsx b/website/src/app/kb/deploy/policies/page.tsx
index 9f9bd57b0..5299384f2 100644
--- a/website/src/app/kb/deploy/policies/page.tsx
+++ b/website/src/app/kb/deploy/policies/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Policies • Firezone Deploy Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/deploy/resources/page.tsx b/website/src/app/kb/deploy/resources/page.tsx
index 9832cbe54..350001cde 100644
--- a/website/src/app/kb/deploy/resources/page.tsx
+++ b/website/src/app/kb/deploy/resources/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Resources • Firezone Deploy Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/deploy/sites/page.tsx b/website/src/app/kb/deploy/sites/page.tsx
index 6a915a53b..ba6a6a2bb 100644
--- a/website/src/app/kb/deploy/sites/page.tsx
+++ b/website/src/app/kb/deploy/sites/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Sites • Firezone Deploy Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/deploy/users/page.tsx b/website/src/app/kb/deploy/users/page.tsx
index ddd87980b..d20a16457 100644
--- a/website/src/app/kb/deploy/users/page.tsx
+++ b/website/src/app/kb/deploy/users/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Users • Firezone Deploy Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/layout.tsx b/website/src/app/kb/layout.tsx
index 07009a35c..f3405f87f 100644
--- a/website/src/app/kb/layout.tsx
+++ b/website/src/app/kb/layout.tsx
@@ -1,6 +1,16 @@
+import fs from "fs";
+import path from "path";
+
+import LastUpdated from "@/components/LastUpdated";
+import DocsFeedback from "@/components/DocsFeedback";
import KbSidebar from "@/components/KbSidebar";
export default function Layout({ children }: { children: React.ReactNode }) {
+ // timestamps.json was generated during build
+ const timestampsFile = path.resolve("timestamps.json");
+ const timestampsData = fs.readFileSync(timestampsFile, "utf-8");
+ const timestamps = JSON.parse(timestampsData);
+
return (
@@ -9,6 +19,10 @@ export default function Layout({ children }: { children: React.ReactNode }) {
{children}
+
+
+
+
diff --git a/website/src/app/kb/page.tsx b/website/src/app/kb/page.tsx
index 91de49cdb..78a101d46 100644
--- a/website/src/app/kb/page.tsx
+++ b/website/src/app/kb/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Docs • Firezone",
@@ -9,10 +8,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/quickstart/page.tsx b/website/src/app/kb/quickstart/page.tsx
index 7981e5a65..eb5f774c0 100644
--- a/website/src/app/kb/quickstart/page.tsx
+++ b/website/src/app/kb/quickstart/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Quickstart • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/reference/faq/page.tsx b/website/src/app/kb/reference/faq/page.tsx
index 72c5b5099..5fb79ad90 100644
--- a/website/src/app/kb/reference/faq/page.tsx
+++ b/website/src/app/kb/reference/faq/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "FAQ • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/reference/glossary/page.tsx b/website/src/app/kb/reference/glossary/page.tsx
index dff141de9..d9e890083 100644
--- a/website/src/app/kb/reference/glossary/page.tsx
+++ b/website/src/app/kb/reference/glossary/page.tsx
@@ -1,6 +1,5 @@
import { Metadata } from "next";
import Content from "./readme.mdx";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Glossary • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/use-cases/host-access/page.tsx b/website/src/app/kb/use-cases/host-access/page.tsx
index 6b8127305..e51bff157 100644
--- a/website/src/app/kb/use-cases/host-access/page.tsx
+++ b/website/src/app/kb/use-cases/host-access/page.tsx
@@ -1,5 +1,4 @@
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
import _Page from "./_page";
export const metadata: Metadata = {
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/use-cases/nat-gateway/page.tsx b/website/src/app/kb/use-cases/nat-gateway/page.tsx
index a92d73307..f978541ff 100644
--- a/website/src/app/kb/use-cases/nat-gateway/page.tsx
+++ b/website/src/app/kb/use-cases/nat-gateway/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Use Cases: NAT Gateway • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/use-cases/page.tsx b/website/src/app/kb/use-cases/page.tsx
index a41c71bb8..271309d44 100644
--- a/website/src/app/kb/use-cases/page.tsx
+++ b/website/src/app/kb/use-cases/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Use Cases • Firezone Docs",
@@ -9,10 +8,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/use-cases/postgres-access/page.tsx b/website/src/app/kb/use-cases/postgres-access/page.tsx
index 118a2bde8..2b3c9d419 100644
--- a/website/src/app/kb/use-cases/postgres-access/page.tsx
+++ b/website/src/app/kb/use-cases/postgres-access/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Use Cases: Postgres Access • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/use-cases/private-network-access/page.tsx b/website/src/app/kb/use-cases/private-network-access/page.tsx
index b74f21fc5..6774f6912 100644
--- a/website/src/app/kb/use-cases/private-network-access/page.tsx
+++ b/website/src/app/kb/use-cases/private-network-access/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Use Cases: Private Network Access • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/use-cases/saas-app-access/page.tsx b/website/src/app/kb/use-cases/saas-app-access/page.tsx
index 8d29fb57a..12e8b164c 100644
--- a/website/src/app/kb/use-cases/saas-app-access/page.tsx
+++ b/website/src/app/kb/use-cases/saas-app-access/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Use Cases: Public SaaS Access • Firezone Docs",
@@ -9,10 +8,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/use-cases/scale-vpc-access/page.tsx b/website/src/app/kb/use-cases/scale-vpc-access/page.tsx
index a82993ee1..f96ee39e4 100644
--- a/website/src/app/kb/use-cases/scale-vpc-access/page.tsx
+++ b/website/src/app/kb/use-cases/scale-vpc-access/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Use Cases: Scale VPC Access • Firezone Docs",
@@ -9,10 +8,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/use-cases/secure-dns/page.tsx b/website/src/app/kb/use-cases/secure-dns/page.tsx
index 35aaef56f..a073c6f9a 100644
--- a/website/src/app/kb/use-cases/secure-dns/page.tsx
+++ b/website/src/app/kb/use-cases/secure-dns/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Use Cases: Secure DNS • Firezone Docs",
@@ -9,10 +8,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/use-cases/web-app-access/page.tsx b/website/src/app/kb/use-cases/web-app-access/page.tsx
index d8eb9c757..632ee5c53 100644
--- a/website/src/app/kb/use-cases/web-app-access/page.tsx
+++ b/website/src/app/kb/use-cases/web-app-access/page.tsx
@@ -1,6 +1,5 @@
import _Page from "./_page";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Use Cases: Private Web App Access • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/app/kb/user-guides/android-client/page.tsx b/website/src/app/kb/user-guides/android-client/page.tsx
index fdb58c4ee..d0d50867a 100644
--- a/website/src/app/kb/user-guides/android-client/page.tsx
+++ b/website/src/app/kb/user-guides/android-client/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Android & ChromeOS Client • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/user-guides/ios-client/page.tsx b/website/src/app/kb/user-guides/ios-client/page.tsx
index 07b4b3abe..4bf8ded1c 100644
--- a/website/src/app/kb/user-guides/ios-client/page.tsx
+++ b/website/src/app/kb/user-guides/ios-client/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "iOS Client • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/user-guides/linux-client/page.tsx b/website/src/app/kb/user-guides/linux-client/page.tsx
index 22b256efb..dfac175ad 100644
--- a/website/src/app/kb/user-guides/linux-client/page.tsx
+++ b/website/src/app/kb/user-guides/linux-client/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Linux Headless Client • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/user-guides/linux-gui-client/page.tsx b/website/src/app/kb/user-guides/linux-gui-client/page.tsx
index af19043f1..e0c4c0e79 100644
--- a/website/src/app/kb/user-guides/linux-gui-client/page.tsx
+++ b/website/src/app/kb/user-guides/linux-gui-client/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Linux GUI Client • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/user-guides/macos-client/page.tsx b/website/src/app/kb/user-guides/macos-client/page.tsx
index 53a19f970..086a411fe 100644
--- a/website/src/app/kb/user-guides/macos-client/page.tsx
+++ b/website/src/app/kb/user-guides/macos-client/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "macOS Client • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/user-guides/page.tsx b/website/src/app/kb/user-guides/page.tsx
index 3e4330316..8524d1c91 100644
--- a/website/src/app/kb/user-guides/page.tsx
+++ b/website/src/app/kb/user-guides/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "User Guides • Firezone Docs",
@@ -9,10 +8,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/kb/user-guides/windows-client/page.tsx b/website/src/app/kb/user-guides/windows-client/page.tsx
index 62213410d..2e2d1d168 100644
--- a/website/src/app/kb/user-guides/windows-client/page.tsx
+++ b/website/src/app/kb/user-guides/windows-client/page.tsx
@@ -1,6 +1,5 @@
import Content from "./readme.mdx";
import { Metadata } from "next";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Windows Client • Firezone Docs",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/website/src/app/support/page.tsx b/website/src/app/support/page.tsx
index f4a42141f..7733a5203 100644
--- a/website/src/app/support/page.tsx
+++ b/website/src/app/support/page.tsx
@@ -1,6 +1,5 @@
import { Metadata } from "next";
import _Page from "./_page";
-import LastUpdated from "@/components/LastUpdated";
export const metadata: Metadata = {
title: "Support • Firezone",
@@ -8,10 +7,5 @@ export const metadata: Metadata = {
};
export default function Page() {
- return (
- <>
- <_Page />
-
- >
- );
+ return <_Page />;
}
diff --git a/website/src/components/DocsFeedback/index.tsx b/website/src/components/DocsFeedback/index.tsx
new file mode 100644
index 000000000..657ca610a
--- /dev/null
+++ b/website/src/components/DocsFeedback/index.tsx
@@ -0,0 +1,23 @@
+"use client";
+
+import Link from "next/link";
+import { usePathname } from "next/navigation";
+
+export default function DocsFeedback() {
+ const pathname = usePathname();
+ const issueUrl = new URL(
+ `https://www.github.com/firezone/firezone/issues/new?title=docs: Feedback for page \`${pathname}\``
+ );
+
+ return (
+
+ Found a problem with this page?{" "}
+
+ Open an issue
+
+
+ );
+}
diff --git a/website/src/components/LastUpdated/index.tsx b/website/src/components/LastUpdated/index.tsx
index b1ebe7060..51c6bae1a 100644
--- a/website/src/components/LastUpdated/index.tsx
+++ b/website/src/components/LastUpdated/index.tsx
@@ -1,27 +1,19 @@
-import fs from "fs";
-import path from "path";
+"use client";
-export default function LastUpdated({ dirname }: { dirname: string }) {
- // timestamps.json was generated during build
- const timestampsFile = path.resolve("timestamps.json");
- const timestampsData = fs.readFileSync(timestampsFile, "utf-8");
- const timestamps = JSON.parse(timestampsData);
+import { usePathname } from "next/navigation";
- // Hack to get the path to the readme file
- const filePath = path.join(
- "src",
- dirname.split(".next/server")[1],
- "readme.mdx"
- );
+type Timestamps = { [key: string]: string };
- const timestamp = timestamps[filePath];
+export default function LastUpdated({
+ timestamps,
+}: {
+ timestamps: Timestamps;
+}) {
+ const pathname = usePathname();
+ const timestamp = timestamps[pathname];
if (timestamp) {
- return (
-
- Last updated: {timestamp}
-
- );
+ return Last updated: {timestamp}
;
} else {
return null;
}
diff --git a/website/timestamps.sh b/website/timestamps.sh
index abf51a796..210209cee 100755
--- a/website/timestamps.sh
+++ b/website/timestamps.sh
@@ -10,6 +10,10 @@ find src -name "*.mdx" | while read -r f; do
# Get the last modified date
last_modified=$(git log -1 --format="%ad" --date=format:'%B %d, %Y' -- "$f")
+ # Strip src/app prefix and /readme.mdx suffix to turn file path into URL path
+ f=${f#"src/app"}
+ f=${f%"/readme.mdx"}
+
if [ -s "$json_file" ]; then
echo ",\"$f\":\"$last_modified\"" >>"$json_file"
else