From 040416b3eb6525af6dcd8fb3ae813a2e3e9006c9 Mon Sep 17 00:00:00 2001 From: sterni Date: Wed, 12 May 2021 16:00:39 +0200 Subject: refactor(web): common template for index pages of tvl and atward Use simple string interpolation based approach to templating and allow changing the main body, the title and to inject extra HTML into the head element. Additionally we can use `https://tvl.fyi/` instead of `/` when referring to assets. One limitation currently is that the template only works for index pages (it link to self using `href="/"`), but this should be easy to fix. For atward, instead of using the `onload` attribute of `body`, we now register an event listener in JavaScript which makes the template code less complicated. When building the derivation the template is rendered to HTML and injected into the source. Change-Id: I2ea0c5bf5f6286e781285ade7751a348bab3bdc8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3112 Tested-by: BuildkiteCI Reviewed-by: tazjin --- web/tvl/template/default.nix | 52 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 web/tvl/template/default.nix (limited to 'web/tvl/template') diff --git a/web/tvl/template/default.nix b/web/tvl/template/default.nix new file mode 100644 index 000000000000..26efef6de32f --- /dev/null +++ b/web/tvl/template/default.nix @@ -0,0 +1,52 @@ +{ depot, pkgs, ... }: + +{ # content of the tag + title + # main part of the page, usually wrapped with <main> +, content + # optional extra html to inject into <head> +, extraHead ? null + # whether to use global URLs instead of absolute paths +, useUrls ? false +}@args: + +let + inherit (pkgs) writeText lib; + + baseUrl = lib.optionalString useUrls "https://tvl.fyi"; +in + +writeText "index.html" ('' + <!DOCTYPE html> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content="The Virus Lounge"> + <link rel="stylesheet" type="text/css" href="${baseUrl}/static/tazjin.css" media="all"> + <link rel="icon" type="image/webp" href="${baseUrl}/static/favicon.webp"> + <title>${title} +'' + lib.optionalString (args ? extraHead) extraHead + '' + + +
+

${title}

+
+
+ + ${content} + +
+ + +'') -- cgit 1.4.1