diff --git a/mdx/rehype.mjs b/mdx/rehype.mjs
index 0ddd7c78..d6b85d9d 100644
--- a/mdx/rehype.mjs
+++ b/mdx/rehype.mjs
@@ -54,7 +54,7 @@ function rehypeInsertLastUpdated() {
type: 'element',
tagName: 'p',
properties: {
- className: ['not-prose', 'text-sm', 'text-slate-400', 'dark:text-zinc-500', 'mt-0', 'mb-8', 'ml-2.5'],
+ className: ['not-prose', 'text-sm', 'text-slate-400', 'dark:text-zinc-500', 'mt-0', 'mb-8', 'md:ml-2.5'],
},
children: [
{ type: 'text', value: 'Updated ' },
diff --git a/src/components/Layout.jsx b/src/components/Layout.jsx
index a54a6e11..4eefa80c 100644
--- a/src/components/Layout.jsx
+++ b/src/components/Layout.jsx
@@ -188,7 +188,7 @@ export function Layout({ children, title, tableOfContents }) {
-
-
- {children}
+
diff --git a/src/components/MobileNavigation.jsx b/src/components/MobileNavigation.jsx
index 54c531be..64188353 100644
--- a/src/components/MobileNavigation.jsx
+++ b/src/components/MobileNavigation.jsx
@@ -7,6 +7,7 @@ import { Header } from '@/components/Header'
import { NavigationAPI } from '@/components/NavigationAPI'
import {NavigationDocs} from "@/components/NavigationDocs";
import {useRouter} from "next/router";
+import { useAnnouncements } from '@/components/announcement-banner/AnnouncementBannerProvider'
function MenuIcon(props) {
return (
@@ -52,6 +53,7 @@ export const useMobileNavigationStore = create((set) => ({
export function MobileNavigation() {
let isInsideMobileNavigation = useIsInsideMobileNavigation()
let { isOpen, toggle, close } = useMobileNavigationStore()
+ let { bannerHeight } = useAnnouncements()
let ToggleIcon = isOpen ? XIcon : MenuIcon
let router = useRouter()
@@ -78,7 +80,10 @@ export function MobileNavigation() {
leaveFrom="opacity-100"
leaveTo="opacity-0"
>
-
+
@@ -105,7 +110,8 @@ export function MobileNavigation() {
>
{router.route.startsWith("/ipa") ? :
}
diff --git a/src/components/announcement-banner/AnnouncementBanner.jsx b/src/components/announcement-banner/AnnouncementBanner.jsx
index 1ae0e96f..f2ce8f57 100644
--- a/src/components/announcement-banner/AnnouncementBanner.jsx
+++ b/src/components/announcement-banner/AnnouncementBanner.jsx
@@ -1,4 +1,4 @@
-import clsx from 'clsx'
+import { useLayoutEffect, useRef } from 'react'
import Link from 'next/link'
import { useAnnouncements } from '@/components/announcement-banner/AnnouncementBannerProvider'
@@ -36,19 +36,34 @@ function CloseIcon(props) {
function AnnouncementItem({ announcement, onClose }) {
const announcementLink = useCustomQueryURL(announcement.link || '')
+ const bannerRef = useRef(null)
+ const { setBannerHeight } = useAnnouncements()
+
+ useLayoutEffect(() => {
+ const banner = bannerRef.current
+ // Text wrapping and viewport changes can make the banner taller on phones.
+ const updateHeight = () => setBannerHeight(banner.getBoundingClientRect().height)
+ updateHeight()
+ const observer = new ResizeObserver(updateHeight)
+ observer.observe(banner)
+
+ return () => {
+ observer.disconnect()
+ setBannerHeight(0)
+ }
+ }, [setBannerHeight])
return (
-
+
{announcement.tag ? (
-
+
{announcement.tag}
-
+
) : null}
{announcement.text}
@@ -101,4 +116,4 @@ export function AnnouncementBanner() {
onClose={closeAnnouncement}
/>
)
-}
\ No newline at end of file
+}
diff --git a/src/components/announcement-banner/AnnouncementBannerProvider.jsx b/src/components/announcement-banner/AnnouncementBannerProvider.jsx
index 51f17ac0..72231de9 100644
--- a/src/components/announcement-banner/AnnouncementBannerProvider.jsx
+++ b/src/components/announcement-banner/AnnouncementBannerProvider.jsx
@@ -12,10 +12,10 @@ const ANNOUNCEMENTS_URL =
'https://raw.githubusercontent.com/netbirdio/dashboard/main/announcements.json'
const STORAGE_KEY = 'netbird-announcements'
const CACHE_DURATION_MS = 30 * 60 * 1000
-const BANNER_HEIGHT = 33
const AnnouncementContext = createContext({
bannerHeight: 0,
+ setBannerHeight: () => {},
announcements: undefined,
closeAnnouncement: () => {},
})
@@ -83,6 +83,7 @@ const saveAnnouncements = (closedAnnouncements) => {
export function AnnouncementBannerProvider({ children }) {
const [announcements, setAnnouncements] = useState(undefined)
+ const [bannerHeight, setBannerHeight] = useState(0)
const fetchingRef = useRef(false)
useEffect(() => {
@@ -108,12 +109,11 @@ export function AnnouncementBannerProvider({ children }) {
[announcements]
)
- const bannerHeight = announcements?.some((a) => a.isOpen) ? BANNER_HEIGHT : 0
-
return (
+
+
+ )
+}
+
export const h2 = function H2(props) {
return
}
diff --git a/typography.js b/typography.js
index 5915d5a4..b5fa59c4 100644
--- a/typography.js
+++ b/typography.js
@@ -48,9 +48,13 @@ module.exports = ({ theme }) => ({
// Layout
'> *': {
- maxWidth: theme('maxWidth.2xl'),
- marginLeft: 10,
+ maxWidth: '100%',
+ marginLeft: 0,
marginRight: 'auto',
+ '@screen md': {
+ maxWidth: theme('maxWidth.2xl'),
+ marginLeft: 10,
+ },
'@screen lg': {
maxWidth: theme('maxWidth.3xl'),
marginLeft: 10,