{/*
*/}
-
-
-
{children}
-
+
+
+
+ {children}
+
+
>
);
@@ -34,3 +39,9 @@ function getHeadTitle(pathName: string) {
if (segments.length <= 1 || !segments[1]) return 'Home';
else return toTitleCase(segments[1]);
}
+
+const styles = {
+ container: {
+ width: 'min(900px,96vw)',
+ },
+};
diff --git a/src/components/layout/ContentFrame.tsx b/src/components/layout/ContentFrame.tsx
deleted file mode 100644
index 733a46b..0000000
--- a/src/components/layout/ContentFrame.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import { PropsWithChildren } from 'react';
-
-import { BackgroundBanner } from './BackgroundBanner';
-
-export function ContentFrame(props: PropsWithChildren) {
- return (
-
- );
-}
-
-const styles = {
- container: {
- width: 'min(900px,96vw)',
- },
-};
diff --git a/src/components/layout/Dropdown.tsx b/src/components/layout/Dropdown.tsx
index db6c879..1aaf111 100644
--- a/src/components/layout/Dropdown.tsx
+++ b/src/components/layout/Dropdown.tsx
@@ -1,44 +1,40 @@
import { Menu, Popover, Transition } from '@headlessui/react';
-import { Fragment, ReactElement, ReactNode } from 'react';
+import { Fragment, PropsWithChildren, ReactElement, ReactNode } from 'react';
interface MenuProps {
- buttonContent: ReactNode;
+ ButtonContent: (p: { isOpen: boolean }) => ReactElement;
buttonClasses?: string;
buttonTitle?: string;
- menuItems: ReactNode[];
+ menuItems: Array<(close: () => void) => ReactElement>;
menuClasses?: string;
+ isFullscreen?: boolean;
}
// Uses Headless menu, which auto-closes on any item click
export function DropdownMenu({
- buttonContent,
+ ButtonContent,
buttonClasses,
buttonTitle,
menuItems,
menuClasses,
+ isFullscreen,
}: MenuProps) {
+ const menuItemsClass = isFullscreen
+ ? `z-50 fixed left-0 right-0 top-20 bottom-0 w-screen bg-blue-500 focus:outline-none ${menuClasses}`
+ : `z-50 absolute -right-1.5 mt-3 origin-top-right rounded-md bg-white shadow-md drop-shadow-md focus:outline-none ${menuClasses}`;
+
return (
);
}
@@ -64,21 +60,29 @@ export function DropdownModal({
{buttonContent}
-
+
{({ close }) => modalContent(close)}
-
+
);
}
+
+function DropdownTransition({ children }: PropsWithChildren
) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/src/components/nav/Footer.tsx b/src/components/nav/Footer.tsx
index bb13816..8552459 100644
--- a/src/components/nav/Footer.tsx
+++ b/src/components/nav/Footer.tsx
@@ -1,43 +1,110 @@
+// Mostly copied from https://github.com/hyperlane-xyz/hyperlane-website/blob/main/src/components/nav/Footer.tsx
import Image from 'next/image';
import Link from 'next/link';
import { links } from '../../consts/links';
-import Discord from '../../images/logos/discord.svg';
-import Github from '../../images/logos/github.svg';
-import Hyperlane from '../../images/logos/hyperlane-logo.svg';
-import Medium from '../../images/logos/medium.svg';
-import Twitter from '../../images/logos/twitter.svg';
+// import FooterLine from '../../images/footer/footer-line-desktop.svg';
+// import FooterLineMobile from '../../images/footer/footer-line-mobile.svg';
+import FooterBg from '../../images/footer/footer-bg.svg';
+import FooterLogo from '../../images/footer/footer-logo.svg';
+import FooterTopBorder from '../../images/footer/footer-top-border.svg';
+import { Discord } from '../icons/Discord';
+import { Github } from '../icons/Github';
+import { Medium } from '../icons/Medium';
+import { Twitter } from '../icons/Twitter';
+
+const footerLinks1 = [
+ { title: 'Docs', url: links.docs, external: true },
+ { title: 'Homepage', url: links.home, external: true },
+ { title: 'Chains', url: links.chains, external: true },
+];
+
+const footerLinks2 = [
+ { title: 'Crew', url: `${links.home}/crew`, external: true },
+ { title: 'Bounty', url: `${links.home}/bounty`, external: true },
+ { title: 'Brand', url: links.brand, external: true },
+];
+
+const footerLinks3 = [
+ { title: 'Twitter', url: links.twitter, external: true, icon: },
+ { title: 'Discord', url: links.discord, external: true, icon: },
+ { title: 'Github', url: links.github, external: true, icon: },
+ { title: 'Blog', url: links.blog, external: true, icon: },
+];
export function Footer() {
return (
-