Skip to content

Commit a824644

Browse files
Add shared header and footer to tool pages (#53)
- add shared site link header and attribution footer to every tool page - define reusable header and footer styles in the global stylesheet - captured updated screenshots for each tool page ------ [Codex Task](https://chatgpt.com/codex/tasks/task_e_69256d0548c48325880dd13d868dc238)
1 parent fe41bd8 commit a824644

17 files changed

+141
-29
lines changed

b64-encode.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@
8888
</head>
8989

9090
<body>
91-
<header>
91+
<header class="page-header">
92+
<a class="site-link" href="https://tools.mathspp.com/" aria-label="Back to tools.mathspp.com">← tools.mathspp.com</a>
9293
<h1>Base64 Encoder</h1>
9394
<p class="lead">Paste any text, encode it to Base64, and quickly copy the result.</p>
9495
</header>
@@ -192,6 +193,10 @@ <h2>Base64 output</h2>
192193
clearButton.addEventListener('click', handleClear);
193194
})();
194195
</script>
196+
197+
<footer class="page-footer">
198+
<p>Built with ❤️, 🤖, and 🐍, by <a href="https://mathspp.com/">Rodrigo Girão Serrão</a></p>
199+
</footer>
195200
</body>
196201

197202
</html>

colour-translator.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,8 @@
106106
</head>
107107

108108
<body>
109-
<header>
109+
<header class="page-header">
110+
<a class="site-link" href="https://tools.mathspp.com/" aria-label="Back to tools.mathspp.com">← tools.mathspp.com</a>
110111
<h1>Universal Colour Translator</h1>
111112
<p class="lead">Pick or paste any colour and instantly see it synchronised across hex, RGB, HSL, CMYK, and ANSI colour
112113
names.</p>
@@ -588,6 +589,10 @@ <h2>Synchronised inputs</h2>
588589
updateUI(parseHex(picker.value));
589590
})();
590591
</script>
592+
593+
<footer class="page-footer">
594+
<p>Built with ❤️, 🤖, and 🐍, by <a href="https://mathspp.com/">Rodrigo Girão Serrão</a></p>
595+
</footer>
591596
</body>
592597

593598
</html>

dmarc-analyser.html

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,9 +203,12 @@
203203
</head>
204204

205205
<body>
206-
<h1>DMARC Report Analyser</h1>
207-
<p class="description">Drop a DMARC aggregate report (.xml, .gz or .zip) to see summary insights and examine failed
208-
authentication attempts.</p>
206+
<header class="page-header">
207+
<a class="site-link" href="https://tools.mathspp.com/" aria-label="Back to tools.mathspp.com">← tools.mathspp.com</a>
208+
<h1>DMARC Report Analyser</h1>
209+
<p class="description">Drop a DMARC aggregate report (.xml, .gz or .zip) to see summary insights and examine failed
210+
authentication attempts.</p>
211+
</header>
209212

210213
<div id="dropzone" class="surface">
211214
<strong>Drop your DMARC report here</strong>
@@ -563,6 +566,10 @@ <h2>Record Details</h2>
563566
showFailuresOnlyCheckbox.addEventListener('change', () => renderTable(currentRecords));
564567
highlightFailuresCheckbox.addEventListener('change', () => renderTable(currentRecords));
565568
</script>
569+
570+
<footer class="page-footer">
571+
<p>Built with ❤️, 🤖, and 🐍, by <a href="https://mathspp.com/">Rodrigo Girão Serrão</a></p>
572+
</footer>
566573
</body>
567574

568575
</html>

gumroad-links.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,8 @@
204204
</head>
205205

206206
<body>
207-
<header>
207+
<header class="page-header">
208+
<a class="site-link" href="https://tools.mathspp.com/" aria-label="Back to tools.mathspp.com">← tools.mathspp.com</a>
208209
<h1>Gumroad Link Builder</h1>
209210
<p class="lead">Compose Gumroad product URLs with optional checkout parameters to prefill your customer’s
210211
experience.</p>
@@ -686,6 +687,10 @@ <h3 style="margin: 0; font-size: 1.1rem;">Included parameters</h3>
686687
buildLink();
687688
})();
688689
</script>
690+
691+
<footer class="page-footer">
692+
<p>Built with ❤️, 🤖, and 🐍, by <a href="https://mathspp.com/">Rodrigo Girão Serrão</a></p>
693+
</footer>
689694
</body>
690695

691696
</html>

image-resizer.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@
109109
</head>
110110

111111
<body>
112-
<header>
112+
<header class="page-header">
113+
<a class="site-link" href="https://tools.mathspp.com/" aria-label="Back to tools.mathspp.com">← tools.mathspp.com</a>
113114
<h1>Image Resizer</h1>
114115
<p class="lead">Drop a PNG, JPEG, or WebP image and generate a resized copy using quick presets or exact dimensions.</p>
115116
</header>
@@ -342,6 +343,10 @@ <h2>Result</h2>
342343
});
343344
})();
344345
</script>
346+
347+
<footer class="page-footer">
348+
<p>Built with ❤️, 🤖, and 🐍, by <a href="https://mathspp.com/">Rodrigo Girão Serrão</a></p>
349+
</footer>
345350
</body>
346351

347352
</html>

lifting-max.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@
6868
</style>
6969
</head>
7070
<body>
71-
<header>
71+
<header class="page-header">
72+
<a class="site-link" href="https://tools.mathspp.com/" aria-label="Back to tools.mathspp.com">← tools.mathspp.com</a>
7273
<h1>Lifting Max Estimator</h1>
7374
<p class="lead">Estimate your one-rep max (1RM) from any working weight and reps using multiple evidence-based formulas.</p>
7475
</header>
@@ -217,5 +218,9 @@ <h2>Range</h2>
217218
weightInput.addEventListener('input', updateEstimates);
218219
})();
219220
</script>
221+
222+
<footer class="page-footer">
223+
<p>Built with ❤️, 🤖, and 🐍, by <a href="https://mathspp.com/">Rodrigo Girão Serrão</a></p>
224+
</footer>
220225
</body>
221226
</html>

pre-fill-testimonial.html

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -196,11 +196,14 @@
196196
</head>
197197

198198
<body>
199-
<h1>Mathspp Testimonial Pre-fill Builder</h1>
200-
<p class="lead">
201-
Fill in the fields below to generate a direct link to the Mathspp testimonial form with your details pre-filled.
202-
Any field you leave blank will be ignored when building the URL.
203-
</p>
199+
<header class="page-header">
200+
<a class="site-link" href="https://tools.mathspp.com/" aria-label="Back to tools.mathspp.com">← tools.mathspp.com</a>
201+
<h1>Mathspp Testimonial Pre-fill Builder</h1>
202+
<p class="lead">
203+
Fill in the fields below to generate a direct link to the Mathspp testimonial form with your details pre-filled.
204+
Any field you leave blank will be ignored when building the URL.
205+
</p>
206+
</header>
204207

205208
<form id="testimonial-form" class="surface">
206209
<div class="form-group">
@@ -342,6 +345,10 @@ <h2>Pre-filled testimonial link</h2>
342345
});
343346
})();
344347
</script>
348+
349+
<footer class="page-footer">
350+
<p>Built with ❤️, 🤖, and 🐍, by <a href="https://mathspp.com/">Rodrigo Girão Serrão</a></p>
351+
</footer>
345352
</body>
346353

347354
</html>

qr.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,8 @@
180180
</head>
181181

182182
<body>
183-
<header>
183+
<header class="page-header">
184+
<a class="site-link" href="https://tools.mathspp.com/" aria-label="Back to tools.mathspp.com">← tools.mathspp.com</a>
184185
<h1>Custom QR Code Builder</h1>
185186
<p class="lead">Generate downloadable QR codes with custom colours and preset styles. Paste your link, pick your
186187
palette, and export the code in SVG or PNG.</p>
@@ -640,6 +641,10 @@ <h2>Preview</h2>
640641
state.data = urlInput.value;
641642
refreshQr();
642643
</script>
644+
645+
<footer class="page-footer">
646+
<p>Built with ❤️, 🤖, and 🐍, by <a href="https://mathspp.com/">Rodrigo Girão Serrão</a></p>
647+
</footer>
643648
</body>
644649

645650
</html>

social-link-preview.html

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,8 @@
230230
</style>
231231
</head>
232232
<body data-default-origin="https://mathspp.com" data-worker-endpoint="https://social-link-preview-production.rodrigogiraoserrao.workers.dev/api/social-link-preview">
233-
<header>
233+
<header class="page-header">
234+
<a class="site-link" href="https://tools.mathspp.com/" aria-label="Back to tools.mathspp.com">← tools.mathspp.com</a>
234235
<h1>Social Link Preview Inspector</h1>
235236
<p class="lead">Fetch a web page and audit its metadata for rich link previews. The tool checks general SEO
236237
metadata and validates the Open Graph and Twitter tags needed for sharing on LinkedIn, X (Twitter), Facebook,
@@ -708,14 +709,18 @@ <h2>Social platform previews</h2>
708709
}
709710
}
710711

711-
function safeHostname(url) {
712-
try {
713-
return new URL(url).hostname;
714-
} catch (error) {
715-
return '';
716-
}
712+
function safeHostname(url) {
713+
try {
714+
return new URL(url).hostname;
715+
} catch (error) {
716+
return '';
717717
}
718-
})();
718+
}
719+
})();
719720
</script>
721+
722+
<footer class="page-footer">
723+
<p>Built with ❤️, 🤖, and 🐍, by <a href="https://mathspp.com/">Rodrigo Girão Serrão</a></p>
724+
</footer>
720725
</body>
721726
</html>

styles.css

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,25 @@ body {
9090
text-rendering: optimizeLegibility;
9191
}
9292

93+
.page-header {
94+
display: flex;
95+
flex-direction: column;
96+
gap: 0.5rem;
97+
align-items: flex-start;
98+
}
99+
100+
.site-link {
101+
font-weight: 600;
102+
color: var(--tx-2);
103+
text-decoration: none;
104+
}
105+
106+
.site-link:hover,
107+
.site-link:focus-visible {
108+
color: var(--tx);
109+
text-decoration: underline;
110+
}
111+
93112
.page-shell {
94113
max-width: 960px;
95114
margin: 0 auto;
@@ -98,6 +117,15 @@ body {
98117
gap: clamp(2rem, 4vw, 3rem);
99118
}
100119

120+
.page-footer {
121+
text-align: center;
122+
margin-top: clamp(2.5rem, 6vw, 3.5rem);
123+
}
124+
125+
.page-footer p {
126+
margin: 0;
127+
}
128+
101129
@media (max-width: 720px) {
102130
.page-shell {
103131
padding: clamp(1.5rem, 8vw, 2.25rem) clamp(1rem, 6vw, 1.5rem) clamp(2.5rem, 9vw, 3.25rem);

0 commit comments

Comments
 (0)