From 1205cf8700b6491d8793e6703c6bda7990c26dc2 Mon Sep 17 00:00:00 2001 From: Jamil Date: Sun, 21 Jul 2024 07:20:00 -0700 Subject: [PATCH] docs: DRY up docs footer timestamp; add link to open issue (#5928) Fixes #4707 --- website/src/app/docs/layout.tsx | 12 ++++++++ .../app/kb/administer/backup-restore/page.tsx | 8 +---- website/src/app/kb/administer/logs/page.tsx | 8 +---- website/src/app/kb/administer/page.tsx | 8 +---- .../kb/administer/troubleshooting/page.tsx | 8 +---- .../src/app/kb/administer/uninstall/page.tsx | 8 +---- .../src/app/kb/administer/upgrading/page.tsx | 8 +---- .../kb/architecture/core-components/page.tsx | 8 +---- .../architecture/critical-sequences/page.tsx | 8 +---- website/src/app/kb/architecture/page.tsx | 8 +---- .../architecture/security-controls/page.tsx | 8 +---- .../app/kb/architecture/tech-stack/page.tsx | 8 +---- .../kb/authenticate/directory-sync/page.tsx | 8 +---- .../src/app/kb/authenticate/email/page.tsx | 8 +---- .../src/app/kb/authenticate/entra/page.tsx | 8 +---- .../src/app/kb/authenticate/google/page.tsx | 8 +---- .../app/kb/authenticate/jumpcloud/page.tsx | 8 +---- .../app/kb/authenticate/oidc/fusion/page.tsx | 8 +---- website/src/app/kb/authenticate/oidc/page.tsx | 8 +---- website/src/app/kb/authenticate/okta/page.tsx | 8 +---- website/src/app/kb/authenticate/page.tsx | 8 +---- .../kb/authenticate/service-accounts/page.tsx | 8 +---- .../app/kb/automate/docker-compose/page.tsx | 8 +---- website/src/app/kb/automate/page.tsx | 8 +---- .../app/kb/automate/terraform/aws/page.tsx | 8 +---- .../app/kb/automate/terraform/azure/page.tsx | 8 +---- .../app/kb/automate/terraform/gcp/page.tsx | 8 +---- website/src/app/kb/deploy/clients/page.tsx | 8 +---- website/src/app/kb/deploy/dns/page.tsx | 8 +---- website/src/app/kb/deploy/gateways/page.tsx | 8 +---- website/src/app/kb/deploy/groups/page.tsx | 8 +---- website/src/app/kb/deploy/page.tsx | 8 +---- website/src/app/kb/deploy/policies/page.tsx | 8 +---- website/src/app/kb/deploy/resources/page.tsx | 8 +---- website/src/app/kb/deploy/sites/page.tsx | 8 +---- website/src/app/kb/deploy/users/page.tsx | 8 +---- website/src/app/kb/layout.tsx | 14 +++++++++ website/src/app/kb/page.tsx | 8 +---- website/src/app/kb/quickstart/page.tsx | 8 +---- website/src/app/kb/reference/faq/page.tsx | 8 +---- .../src/app/kb/reference/glossary/page.tsx | 8 +---- .../src/app/kb/use-cases/host-access/page.tsx | 8 +---- .../src/app/kb/use-cases/nat-gateway/page.tsx | 8 +---- website/src/app/kb/use-cases/page.tsx | 8 +---- .../app/kb/use-cases/postgres-access/page.tsx | 8 +---- .../use-cases/private-network-access/page.tsx | 8 +---- .../app/kb/use-cases/saas-app-access/page.tsx | 8 +---- .../kb/use-cases/scale-vpc-access/page.tsx | 8 +---- .../src/app/kb/use-cases/secure-dns/page.tsx | 8 +---- .../app/kb/use-cases/web-app-access/page.tsx | 8 +---- .../kb/user-guides/android-client/page.tsx | 8 +---- .../app/kb/user-guides/ios-client/page.tsx | 8 +---- .../app/kb/user-guides/linux-client/page.tsx | 8 +---- .../kb/user-guides/linux-gui-client/page.tsx | 8 +---- .../app/kb/user-guides/macos-client/page.tsx | 8 +---- website/src/app/kb/user-guides/page.tsx | 8 +---- .../kb/user-guides/windows-client/page.tsx | 8 +---- website/src/app/support/page.tsx | 8 +---- website/src/components/DocsFeedback/index.tsx | 23 ++++++++++++++ website/src/components/LastUpdated/index.tsx | 30 +++++++------------ website/timestamps.sh | 4 +++ 61 files changed, 120 insertions(+), 411 deletions(-) create mode 100644 website/src/components/DocsFeedback/index.tsx 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