◊(define parent-page (parent here)) ◊(define previous-page (previous here)) ◊(define next-page (next here)) ◊(define here-title (or (select-from-metas 'title here) (symbol->string here))) ◊(define toolbar? (not (select-from-metas 'toolbar-blank metas))) ◊(define (make-side-nav id url text) ◊div[#:class "nav-outer" #:id id]{◊(link (or url "") ◊div[#:class "nav-inner"]{◊div[#:class "nav-flex" text]})}) ◊(define center-cell-width 14) ◊(define side-cell-width (/ (- 100 (+ 10 (* center-cell-width 2))) 2)) ◊(local-require pollen/tag) ◊; the name `link` is already defined as a function that makes hyperlinks, ◊; so we use `make-default-tag-function` to make a literal `link` tag ◊(define literal-link (make-default-tag-function 'link)) ◊(define (make-subnav children) (apply ul #:class "subnav" (for/list ([child (in-list children)]) (li (xref (select-from-metas 'title child)))))) ◊(local-require css-tools) ◊(capitalize-first-letter here-title) | Typography for Lawyers ◊if[(not (select-from-metas 'tfl-font-template metas)) ""]{ } ◊(when/block (hash-ref metas 'tfl-font-template #f) ◊string-append{ }) ◊(define (empty-string) "") ◊(define (tfl-font-template-body) ◊body{ ◊style[#:type "text/css"]{ #tfl-fonts-nav { top: 0; width: 29rem; margin-bottom: 2rem; font-size: 90%; } #tfl-fonts-nav tr:first-child { background: ◊|content-rule-color|; ◊make-css-background-gradient[(list ◊|content-rule-color| "#777") '("17%" "100%")] color: white; } #tfl-fonts-nav tr:first-child td { padding: 0; padding-top: 0.3em; padding-bottom: 0.5em; } #tfl-fonts-nav tr + tr td { padding: 0; } #tfl-fonts-nav tr + tr td .xref { display: inline-block; height: 100%; width: 100%; padding-top: 0.3em; padding-bottom: 0.3em; box-sizing: content-box; background: none; } #content { padding-top: 0; padding-bottom: 2rem; border-top: 0; } } ◊div[#:id "content"]{ ◊table[#:id "tfl-fonts-nav"]{ ◊tr{◊td[#:colspan "4"]{◊xref["fonts.html"]{The TFL fonts — designed by Matthew Butterick}}} ◊tr{ ◊td{◊xref{Equity}} ◊td{◊xref{Concourse}} ◊td{◊xref{Triplicate}} ◊td{◊xref{Advocate}}}} ◊doc} ◊if[(not toolbar?) ""]{ ◊div[#:class "nav-outer" #:id "bottom"]{ ◊div[#:class "nav-inner"]{ ◊span[#:style "width:33%"]{◊xref["/index.html"]{TFL home}} ◊span[#:style "width:34%"]{◊xref["/toc.html"]{Read excerpts}} ◊span[#:style "width:33%"]{◊xref[buy-url]{get the book}}}}}}) ◊(define (default-body) ◊body{ ◊; use this body for all other pages ◊div[#:id "top-stripe"]{} ◊div[#:id "content"]{ ◊doc ◊(gap 1) ◊(make-subnav (or (children here) null))} ◊(if previous-page ◊make-side-nav["prev" previous-page]{<} "") ◊(if next-page ◊make-side-nav["next" next-page]{>} "") ◊; ◊(if (not toolbar?) (empty-string) ◊div[#:class "nav-outer" #:id "bottom"]{ ◊div[#:class "nav-inner"]{ ◊span[#:id "left"]{◊(if (eq? here 'toc.html) ◊xref["index.html"]{home} ◊xref{◊(select 'title previous-page)})} ◊span{◊xref["/index.html"]{TFL home}} ◊span{◊xref[buy-url]{get the book}} ◊span{◊xref["/fonts.html"]{get the fonts}} ◊span[#:id "right"]{◊(if next-page ◊xref{◊(select 'title next-page)} ◊xref["https://www.google.com/search?q=boxer+puppies&safe=off&tbm=isch"]{boxer puppies})}}})}) ◊(->html (body (if (select-from-metas 'tfl-font-template metas) (tfl-font-template-body) (default-body))))