From 9e785658dcd1f942f0f698c7b4ed87486760ae2f Mon Sep 17 00:00:00 2001
From: Remi  PLANEL <rplanel@pasteur.fr>
Date: Wed, 10 May 2023 17:04:54 +0200
Subject: [PATCH] anchor take into account navbar height

---
 components/content/ProseH1.vue |  9 ++++++++-
 components/content/ProseH2.vue |  9 ++++++++-
 components/content/ProseH3.vue | 29 +++++++++++++++++++++++++++++
 3 files changed, 45 insertions(+), 2 deletions(-)
 create mode 100644 components/content/ProseH3.vue

diff --git a/components/content/ProseH1.vue b/components/content/ProseH1.vue
index 504cd7b1..25ea7b5a 100644
--- a/components/content/ProseH1.vue
+++ b/components/content/ProseH1.vue
@@ -1,5 +1,6 @@
 <template>
-  <h1 class="text-h3 font-weight-bold" :id="id">
+  <span :id="id" class="anchor"></span>
+  <h1 class="text-h3 font-weight-bold my-6">
     <a v-if="id && generate" :href="`#${id}`" class="text-decoration-none">
       <slot />
     </a>
@@ -21,4 +22,10 @@ const generate =
 a {
   color: inherit;
 }
+anchor {
+  display: block;
+  position: relative;
+  top: -64px;
+  visibility: hidden;
+}
 </style>
diff --git a/components/content/ProseH2.vue b/components/content/ProseH2.vue
index 964db2b7..6461c9ce 100644
--- a/components/content/ProseH2.vue
+++ b/components/content/ProseH2.vue
@@ -1,5 +1,6 @@
 <template>
-  <h2 class="text-h4 font-weight-bold" :id="id">
+  <span :id="id" class="anchor"></span>
+  <h2 class="text-h4 font-weight-bold my-4">
     <a v-if="id && generate" :href="`#${id}`" class="text-decoration-none">
       <slot />
     </a>
@@ -19,4 +20,10 @@ const generate =
 a {
   color: inherit;
 }
+.anchor {
+  display: block;
+  position: relative;
+  top: -64px;
+  visibility: hidden;
+}
 </style>
diff --git a/components/content/ProseH3.vue b/components/content/ProseH3.vue
new file mode 100644
index 00000000..5d1e7945
--- /dev/null
+++ b/components/content/ProseH3.vue
@@ -0,0 +1,29 @@
+<template>
+  <span :id="id" class="anchor"></span>
+  <h3 class="text-h6 font-weight-bold my-3">
+    <a v-if="id && generate" :href="`#${id}`" class="text-decoration-none">
+      <slot />
+    </a>
+    <slot v-else />
+  </h3>
+</template>
+
+<script setup lang="ts">
+import { useRuntimeConfig } from "#imports";
+defineProps<{ id?: string }>();
+const heading = 3;
+const { anchorLinks } = useRuntimeConfig().public.content;
+const generate =
+  anchorLinks?.depth >= heading && !anchorLinks?.exclude.includes(heading);
+</script>
+<style scoped>
+a {
+  color: inherit;
+}
+.anchor {
+  display: block;
+  position: relative;
+  top: -64px;
+  visibility: hidden;
+}
+</style>
-- 
GitLab