aboutsummaryrefslogtreecommitdiff
path: root/apps/web/src
diff options
context:
space:
mode:
authorYash <[email protected]>2024-04-04 16:45:12 +0000
committerYash <[email protected]>2024-04-04 16:45:12 +0000
commit3d334829a4f9c30b201b72a518239bab09c0bac2 (patch)
tree84a1fe199355b83a689020524e7519a5f930aef4 /apps/web/src
parentMerge branch 'new-ui' of https://github.com/Dhravya/supermemory into new-ui (diff)
downloadsupermemory-3d334829a4f9c30b201b72a518239bab09c0bac2.tar.xz
supermemory-3d334829a4f9c30b201b72a518239bab09c0bac2.zip
improve phone ux
Diffstat (limited to 'apps/web/src')
-rw-r--r--apps/web/src/app/globals.css7
-rw-r--r--apps/web/src/components/Main.tsx45
-rw-r--r--apps/web/src/components/MemoryDrawer.tsx16
-rw-r--r--apps/web/src/lib/utils.ts1
4 files changed, 56 insertions, 13 deletions
diff --git a/apps/web/src/app/globals.css b/apps/web/src/app/globals.css
index 7d8b7c4e..ea526495 100644
--- a/apps/web/src/app/globals.css
+++ b/apps/web/src/app/globals.css
@@ -39,3 +39,10 @@ body {
text-wrap: balance;
}
}
+
+.sidebar {
+ height: 100vh;
+ height: 100dvh;
+ max-height: 100vh;
+ max-height: 100dvh;
+} \ No newline at end of file
diff --git a/apps/web/src/components/Main.tsx b/apps/web/src/components/Main.tsx
index 8796c52e..aa72a48e 100644
--- a/apps/web/src/components/Main.tsx
+++ b/apps/web/src/components/Main.tsx
@@ -6,37 +6,66 @@ import { ArrowRight } from "lucide-react";
import { MemoryDrawer } from "./MemoryDrawer";
import useViewport from "@/hooks/useViewport";
import { motion } from "framer-motion";
+import { cn } from "@/lib/utils";
export default function Main({ sidebarOpen }: { sidebarOpen: boolean }) {
+ const [hide, setHide] = useState(false);
const [value, setValue] = useState("");
const { width } = useViewport();
const textArea = useRef<HTMLTextAreaElement>(null);
+ const main = useRef<HTMLDivElement>(null);
console.log("main px", sidebarOpen);
useEffect(() => {
function onResize() {
- if (!textArea.current || !window.visualViewport) return;
-
- const visualViewportHeight = window.visualViewport.height;
+ if (!main.current || !window.visualViewport) return;
+ // setValue(
+ // (prev) =>
+ // prev +
+ // " changed to " +
+ // window.visualViewport?.height +
+ // " " +
+ // window.innerHeight,
+ // );
+ if (
+ window.visualViewport.height < window.innerHeight + 20 &&
+ window.visualViewport.height > window.innerHeight - 20
+ ) {
+ setHide(false);
+ window.scrollTo(0, 0);
+ } else {
+ setHide(true);
+ window.scrollTo(0, document.body.scrollHeight);
+ }
}
window.visualViewport?.addEventListener("resize", onResize);
- return () => window.visualViewport?.removeEventListener("resize", onResize);
+ return () => {
+ window.visualViewport?.removeEventListener("resize", onResize);
+ };
}, []);
return (
<motion.main
data-sidebar-open={sidebarOpen}
- className="flex h-screen max-h-screen w-full flex-col items-end justify-center gap-5 px-5 pb-[20vh] pt-5 transition-[padding] delay-200 duration-200 md:items-center md:px-72 [&[data-sidebar-open='true']]:pl-[calc(2.5rem+30vw)] [&[data-sidebar-open='true']]:pr-10 [&[data-sidebar-open='true']]:delay-0 "
+ ref={main}
+ className={cn(
+ "sidebar flex w-full flex-col items-end justify-center gap-5 px-5 pt-5 transition-[padding-left,padding-top,padding-right] delay-200 duration-200 md:items-center md:px-72 [&[data-sidebar-open='true']]:pr-10 [&[data-sidebar-open='true']]:delay-0 md:[&[data-sidebar-open='true']]:pl-[calc(2.5rem+30vw)]",
+ hide
+ ? "pb-5"
+ : CSS.supports("height: 100dvh")
+ ? "pb-[13vh]"
+ : "pb-[20vh]",
+ )}
>
- <h1 className="text-rgray-11 text-center text-3xl">
+ <h1 className="text-rgray-11 mt-auto w-full text-center text-3xl">
Ask your Second brain
</h1>
<Textarea2
ref={textArea}
- className="h-max max-h-[30em] min-h-[3em] resize-y flex-row items-start justify-center overflow-auto py-5 md:h-[20vh] md:resize-none md:flex-col md:items-center md:justify-center md:p-2 md:pb-2 md:pt-2"
+ className="mt-auto h-max max-h-[30em] min-h-[3em] resize-y flex-row items-start justify-center overflow-auto py-5 md:h-[20vh] md:resize-none md:flex-col md:items-center md:justify-center md:p-2 md:pb-2 md:pt-2"
textAreaProps={{
placeholder: "Ask your SuperMemory...",
className:
@@ -56,7 +85,7 @@ export default function Main({ sidebarOpen }: { sidebarOpen: boolean }) {
</button>
</div>
</Textarea2>
- {width <= 768 && <MemoryDrawer />}
+ {width <= 768 && <MemoryDrawer hide={hide} />}
</motion.main>
);
}
diff --git a/apps/web/src/components/MemoryDrawer.tsx b/apps/web/src/components/MemoryDrawer.tsx
index f9d7d6c4..e4d2e5db 100644
--- a/apps/web/src/components/MemoryDrawer.tsx
+++ b/apps/web/src/components/MemoryDrawer.tsx
@@ -1,10 +1,13 @@
-import { useState } from "react";
+import { useRef, useState } from "react";
import { Drawer, DrawerContent, DrawerOverlay } from "./ui/drawer";
import { MemoryIcon } from "@/assets/Memories";
+import { cn } from "@/lib/utils";
-export interface Props extends React.ButtonHTMLAttributes<HTMLButtonElement> {}
+export interface Props extends React.ButtonHTMLAttributes<HTMLButtonElement> {
+ hide?: boolean;
+}
-export function MemoryDrawer({ className, ...props }: Props) {
+export function MemoryDrawer({ className, hide = false, ...props }: Props) {
const [activeSnapPoint, setActiveSnapPoint] = useState<
number | null | string
>(0.1);
@@ -21,10 +24,13 @@ export function MemoryDrawer({ className, ...props }: Props) {
>
<DrawerContent
overlay={false}
- className="border-rgray-6 h-full w-screen border-2 pt-4 focus-visible:outline-none"
+ className={cn(
+ "border-rgray-6 h-full w-screen border pt-4 focus-visible:outline-none",
+ hide ? "hidden" : "",
+ )}
handle={false}
>
- <div className="bg-rgray-4 border-rgray-6 text-rgray-11 absolute left-1/2 top-0 flex w-fit -translate-x-1/2 -translate-y-1/2 items-center justify-center gap-2 rounded-md border-2 px-3 py-2">
+ <div className="bg-rgray-4 border-rgray-6 text-rgray-11 absolute left-1/2 top-0 flex w-fit -translate-x-1/2 -translate-y-1/2 items-center justify-center gap-2 rounded-md border px-3 py-2">
<MemoryIcon className="h-7 w-7" />
Memories
</div>
diff --git a/apps/web/src/lib/utils.ts b/apps/web/src/lib/utils.ts
index c6678e4b..665f0973 100644
--- a/apps/web/src/lib/utils.ts
+++ b/apps/web/src/lib/utils.ts
@@ -1,3 +1,4 @@
+"use client";
import { type ClassValue, clsx } from "clsx";
import { twMerge } from "tailwind-merge";