mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 02:18:47 +00:00
docs: DRY up docs footer timestamp; add link to open issue (#5928)
Fixes #4707
This commit is contained in:
@@ -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 (
|
||||
<div className="flex">
|
||||
<DocsSidebar />
|
||||
@@ -11,6 +20,9 @@ export default function Layout({ children }: { children: React.ReactNode }) {
|
||||
<Banner />
|
||||
{children}
|
||||
</article>
|
||||
<div className="mt-8 flex flex-wrap justify-end text-sm text-neutral-600">
|
||||
<LastUpdated timestamps={timestamps} />
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<div className="flex">
|
||||
<KbSidebar />
|
||||
@@ -9,6 +19,10 @@ export default function Layout({ children }: { children: React.ReactNode }) {
|
||||
<article className="max-w-full md:max-w-md lg:max-w-3xl xl:max-w-4xl tracking-[-0.01em] format format-sm md:format-md lg:format-lg format-firezone">
|
||||
{children}
|
||||
</article>
|
||||
<div className="mt-8 flex justify-between flex-wrap text-sm text-neutral-600">
|
||||
<DocsFeedback />
|
||||
<LastUpdated timestamps={timestamps} />
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Content />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <Content />;
|
||||
}
|
||||
|
||||
@@ -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 />
|
||||
<LastUpdated dirname={__dirname} />
|
||||
</>
|
||||
);
|
||||
return <_Page />;
|
||||
}
|
||||
|
||||
23
website/src/components/DocsFeedback/index.tsx
Normal file
23
website/src/components/DocsFeedback/index.tsx
Normal file
@@ -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 (
|
||||
<div>
|
||||
Found a problem with this page?{" "}
|
||||
<Link
|
||||
href={issueUrl}
|
||||
className="text-accent-500 underline hover:no-underline"
|
||||
>
|
||||
Open an issue
|
||||
</Link>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -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 (
|
||||
<div className="flex justify-end text-sm text-gray-500">
|
||||
Last updated: {timestamp}
|
||||
</div>
|
||||
);
|
||||
return <div>Last updated: {timestamp}</div>;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user