diff --git a/app/[doc_id]/page.tsx b/app/[doc_id]/page.tsx index d3fb5b7b..a1a22d45 100644 --- a/app/[doc_id]/page.tsx +++ b/app/[doc_id]/page.tsx @@ -5,6 +5,7 @@ import { createServerClient } from "@supabase/ssr"; import { SelectionManager } from "components/SelectionManager"; import { Cards } from "components/Cards"; import { ThemeProvider } from "components/ThemeManager/ThemeProvider"; +import { MobileFooter } from "components/MobileFooter"; export const preferredRegion = ["sfo1"]; export const dynamic = "force-dynamic"; @@ -30,6 +31,7 @@ export default async function DocumentPage(props: { > + ); diff --git a/components/Cards.tsx b/components/Cards.tsx index fb4bd5c2..648f68c3 100644 --- a/components/Cards.tsx +++ b/components/Cards.tsx @@ -4,6 +4,7 @@ import { Blocks } from "./Blocks"; import useMeasure from "react-use-measure"; import { elementId } from "src/utils/elementId"; import { ThemePopover } from "./ThemeManager/ThemeSetter"; +import { Media } from "./Media"; export function Cards(props: { rootCard: string }) { let cards = useUIState((s) => s.openCards); @@ -15,9 +16,9 @@ export function Cards(props: { rootCard: string }) { className="flex justify-end items-start" style={{ width: `calc((100vw - ${cardWidth}px)/2)` }} > -
+ -
+ {cards.map((card, index) => ( diff --git a/components/Media.tsx b/components/Media.tsx new file mode 100644 index 00000000..e6644cc7 --- /dev/null +++ b/components/Media.tsx @@ -0,0 +1,21 @@ +import { useIsInitialRender, useIsMobile } from "src/hooks/isMobile"; + +export function Media(props: { + mobile: boolean; + children: React.ReactNode; + className: string; +}) { + let initialRender = useIsInitialRender(); + let isMobile = useIsMobile(); + if (initialRender) + return ( +
+ {props.children} +
+ ); + if ((isMobile && props.mobile) || (!isMobile && !props.mobile)) + return
{props.children}
; + return null; +} diff --git a/components/MobileFooter.tsx b/components/MobileFooter.tsx new file mode 100644 index 00000000..4059de51 --- /dev/null +++ b/components/MobileFooter.tsx @@ -0,0 +1,14 @@ +"use client"; +import { Media } from "./Media"; +import { ThemePopover } from "./ThemeManager/ThemeSetter"; + +export function MobileFooter(props: { entityID: string }) { + return ( + + + + ); +} diff --git a/src/hooks/isMobile.ts b/src/hooks/isMobile.ts index ad40e2f9..d223aa20 100644 --- a/src/hooks/isMobile.ts +++ b/src/hooks/isMobile.ts @@ -20,7 +20,7 @@ function getWindowDimensions() { }; } -function useWindowDimensions() { +export function useWindowDimensions() { const [windowDimensions, setWindowDimensions] = useState( getWindowDimensions(), );