From 271c944930983a143992d1b2c9f0ff376710c032 Mon Sep 17 00:00:00 2001
From: Noel Welsh <noel@noelwelsh.com>
Date: Mon, 5 Feb 2024 15:31:11 +0000
Subject: [PATCH] Fix footer

- Copyright date is updated to when this new book started (2022)
- Inner Product is the publisher
- Styling for footer
- Include license
- Give attribution to Scala with Cats
---
 src/meta/metadata.yaml                       |   2 +-
 src/scss/common/footer.scss                  |  57 +++++++++++++++++++
 src/templates/images/inner-product-white.png | Bin 0 -> 6657 bytes
 3 files changed, 58 insertions(+), 1 deletion(-)
 create mode 100644 src/scss/common/footer.scss
 create mode 100644 src/templates/images/inner-product-white.png

diff --git a/src/meta/metadata.yaml b/src/meta/metadata.yaml
index fc772b24..c193b093 100644
--- a/src/meta/metadata.yaml
+++ b/src/meta/metadata.yaml
@@ -4,7 +4,7 @@ subtitle: "In Scala with Cats"
 author: "Noel Welsh"
 date: "February 2024"
 tocDepth: 1
-copyright: "2014-24"
+copyright: "2022-24"
 figPrefixTemplate: "$$i$$"
 eqnPrefixTemplate: "$$i$$"
 tblPrefixTemplate: "$$i$$"
diff --git a/src/scss/common/footer.scss b/src/scss/common/footer.scss
new file mode 100644
index 00000000..875be133
--- /dev/null
+++ b/src/scss/common/footer.scss
@@ -0,0 +1,57 @@
+footer {
+    margin-top: 2 * $spacer;
+    padding: 4 * $spacer 0;
+
+    background: $primary;
+    color: $white;
+
+    a { color: $white; }
+
+    h1,h2,h3,h4,h5,h6 {
+        color: $white;
+    }
+
+    .footer-brand {
+        margin: 0;
+    }
+
+    .sitemap {
+        margin: 0 0 $line-height-computed;
+
+        font-size: .9em;
+
+        ul {
+            margin: 0;
+        }
+
+        li {
+            text-align: center;
+        }
+
+        h5 {
+            margin-top: $line-height-computed;
+            text-align: center;
+            a { font-weight: bold; }
+        }
+
+        a {
+            display: block;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            color: #fff;
+            font-weight: 200;
+            text-decoration: none;
+
+            &:hover {
+                text-decoration: underline;
+            }
+        }
+    }
+
+    .small {
+        margin: 0 0 $line-height-computed;
+        font-size: .8em;
+        font-weight: 200;
+    }
+}
diff --git a/src/templates/images/inner-product-white.png b/src/templates/images/inner-product-white.png
new file mode 100644
index 0000000000000000000000000000000000000000..c97b7a7b5c4b8e6b262a832963cd5b2278245092
GIT binary patch
literal 6657
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
LNkvXXu0mjfSP%J7

literal 0
HcmV?d00001