From 32352ca5f46f5cda98fe596361b619ff6191a47b Mon Sep 17 00:00:00 2001 From: Nikita Date: Fri, 30 Aug 2024 16:19:29 +0300 Subject: [PATCH] force graph, palette --- bun.lockb | Bin 383000 -> 393376 bytes web/.env.example | 8 +- web/app/(auth)/layout.tsx | 7 + .../(auth)/sign-in/[[...sign-in]]/page.tsx | 9 + .../(auth)/sign-up/[[...sign-up]]/page.tsx | 9 + web/app/(pages)/layout.tsx | 45 ++- .../(pages)/profile/_components/wrapper.tsx | 4 +- web/app/globals.css | 8 +- web/app/layout.tsx | 11 +- web/components/custom/ai-search.tsx | 2 +- web/components/custom/auth-ui.tsx | 45 --- .../custom/clerk/clerk-provider-client.tsx | 7 + .../custom/clerk/sign-in-client.tsx | 7 + .../custom/clerk/sign-up-client.tsx | 7 + .../custom/clerk/signed-in-client.tsx | 7 + web/components/custom/delete-modal.tsx | 2 +- .../custom/sidebar/partial/page-section.tsx | 8 +- .../sidebar/partial/profile-section.tsx | 6 +- .../custom/sidebar/partial/topic-section.tsx | 6 +- web/components/routes/EditProfileRoute.tsx | 21 +- web/components/routes/PublicHomeRoute.tsx | 51 +-- web/components/routes/anim.ts | 84 +++++ .../routes/force-graph-client-lazy.tsx | 354 ++++++++++++++++++ web/components/routes/force-graph-client.tsx | 336 +++++++++++++++++ web/components/routes/force-graph.tsx | 26 -- web/components/routes/graph-data.json | 1 + web/components/routes/link/bottom-bar.tsx | 28 +- web/components/routes/search/wrapper.tsx | 183 ++++++--- .../topics/detail/partials/link-item.tsx | 2 +- web/components/ui/CommandPalette.tsx | 177 +++++++++ web/lib/providers/jazz-provider.tsx | 110 +++++- web/lib/utils/canvas.ts | 52 +++ web/lib/utils/schedule.ts | 148 ++++++++ web/lib/utils/window-size.ts | 28 ++ web/middleware.ts | 18 + web/package.json | 17 +- web/tailwind.config.ts | 8 +- web/tsconfig.json | 3 +- 38 files changed, 1602 insertions(+), 243 deletions(-) create mode 100644 web/app/(auth)/layout.tsx create mode 100644 web/app/(auth)/sign-in/[[...sign-in]]/page.tsx create mode 100644 web/app/(auth)/sign-up/[[...sign-up]]/page.tsx delete mode 100644 web/components/custom/auth-ui.tsx create mode 100644 web/components/custom/clerk/clerk-provider-client.tsx create mode 100644 web/components/custom/clerk/sign-in-client.tsx create mode 100644 web/components/custom/clerk/sign-up-client.tsx create mode 100644 web/components/custom/clerk/signed-in-client.tsx create mode 100644 web/components/routes/anim.ts create mode 100644 web/components/routes/force-graph-client-lazy.tsx create mode 100644 web/components/routes/force-graph-client.tsx delete mode 100644 web/components/routes/force-graph.tsx create mode 100644 web/components/routes/graph-data.json create mode 100644 web/components/ui/CommandPalette.tsx create mode 100644 web/lib/utils/canvas.ts create mode 100644 web/lib/utils/schedule.ts create mode 100644 web/lib/utils/window-size.ts create mode 100644 web/middleware.ts diff --git a/bun.lockb b/bun.lockb index 569990d66eb59d0cc176f2e5cc59e81eb83515a1..1491662a0a227c246333f00c766be0263b43d2a5 100755 GIT binary patch delta 93212 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 E0qR~9X#fBK diff --git a/web/.env.example b/web/.env.example index 37112a6d..c775b455 100644 --- a/web/.env.example +++ b/web/.env.example @@ -1,4 +1,10 @@ NEXT_PUBLIC_APP_NAME="Learn Anything" NEXT_PUBLIC_APP_URL=http://localhost:3000 -NEXT_PUBLIC_JAZZ_GLOBAL_GROUP="" \ No newline at end of file +NEXT_PUBLIC_JAZZ_GLOBAL_GROUP="" + +NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY= +CLERK_SECRET_KEY= + +NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in +NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up \ No newline at end of file diff --git a/web/app/(auth)/layout.tsx b/web/app/(auth)/layout.tsx new file mode 100644 index 00000000..e99c8df2 --- /dev/null +++ b/web/app/(auth)/layout.tsx @@ -0,0 +1,7 @@ +export default function AuthLayout({ + children +}: Readonly<{ + children: React.ReactNode +}>) { + return

{children}
+} diff --git a/web/app/(auth)/sign-in/[[...sign-in]]/page.tsx b/web/app/(auth)/sign-in/[[...sign-in]]/page.tsx new file mode 100644 index 00000000..0b5feeb9 --- /dev/null +++ b/web/app/(auth)/sign-in/[[...sign-in]]/page.tsx @@ -0,0 +1,9 @@ +import { SignInClient } from "@/components/custom/clerk/sign-in-client" + +export default async function Page() { + return ( +
+ +
+ ) +} diff --git a/web/app/(auth)/sign-up/[[...sign-up]]/page.tsx b/web/app/(auth)/sign-up/[[...sign-up]]/page.tsx new file mode 100644 index 00000000..57c4d9e3 --- /dev/null +++ b/web/app/(auth)/sign-up/[[...sign-up]]/page.tsx @@ -0,0 +1,9 @@ +import { SignUpClient } from "@/components/custom/clerk/sign-up-client" + +export default async function Page() { + return ( +
+ +
+ ) +} diff --git a/web/app/(pages)/layout.tsx b/web/app/(pages)/layout.tsx index 5fecb9a3..fb32036d 100644 --- a/web/app/(pages)/layout.tsx +++ b/web/app/(pages)/layout.tsx @@ -1,22 +1,33 @@ +import { SignedInClient } from "@/components/custom/clerk/signed-in-client" import { Sidebar } from "@/components/custom/sidebar/sidebar" -import PublicHomeRoute from "@/components/routes/PublicHomeRoute" +import { PublicHomeRoute } from "@/components/routes/PublicHomeRoute" +import { CommandPalette } from "@/components/ui/CommandPalette" +import { JazzClerkAuth, JazzProvider } from "@/lib/providers/jazz-provider" +import { currentUser } from "@clerk/nextjs/server" -export default async function RootLayout({ children }: { children: React.ReactNode }) { - // TODO: get it from jazz/clerk - const loggedIn = true +export default async function PageLayout({ children }: { children: React.ReactNode }) { + const user = await currentUser() - if (loggedIn) { - return ( -
- - -
-
- {children} -
-
-
- ) + if (!user) { + return } - return + + return ( + + + +
+ + + +
+
+ {children} +
+
+
+
+
+
+ ) } diff --git a/web/app/(pages)/profile/_components/wrapper.tsx b/web/app/(pages)/profile/_components/wrapper.tsx index 829d83bb..a8433c32 100644 --- a/web/app/(pages)/profile/_components/wrapper.tsx +++ b/web/app/(pages)/profile/_components/wrapper.tsx @@ -68,7 +68,7 @@ export const ProfileWrapper = () => {

- Oops! This account doesn't exist. + Oops! This account doesn't exist.

Try searching for another.

@@ -91,7 +91,7 @@ export const ProfileWrapper = () => { onClick={clickEdit} className="shadow-outer ml-auto flex h-[34px] cursor-pointer flex-row space-x-2 rounded-lg bg-white px-3 text-black shadow-[1px_1px_1px_1px_rgba(0,0,0,0.3)] hover:bg-black/10 dark:bg-[#222222] dark:text-white dark:hover:opacity-60" > - + Edit Profile

diff --git a/web/app/globals.css b/web/app/globals.css index 29d3758a..623eca9c 100644 --- a/web/app/globals.css +++ b/web/app/globals.css @@ -21,8 +21,8 @@ --destructive: 0 84.2% 60.2%; --destructive-foreground: 0 0% 98%; --border: 240 5.9% 90%; - --input: 240 5.9% 90%; - --result: 240 5.9% 96%; + --input: 240 5.9% 96%; + --result: 240 5.9% 96%; --ring: 240 5.9% 10%; --radius: 0.5rem; --chart-1: 12 76% 61%; @@ -51,8 +51,8 @@ --destructive: 0 62.8% 30.6%; --destructive-foreground: 0 0% 98%; --border: 240 3.7% 15.9%; - --input: 220 9% 10%; - --result: 0 0% 7%; + --input: 220 9% 10%; + --result: 0 0% 7%; --ring: 240 4.9% 83.9%; --chart-1: 220 70% 50%; --chart-2: 160 60% 45%; diff --git a/web/app/layout.tsx b/web/app/layout.tsx index 065719cf..ddcb409a 100644 --- a/web/app/layout.tsx +++ b/web/app/layout.tsx @@ -3,7 +3,8 @@ import { Inter as FontSans } from "next/font/google" import { cn } from "@/lib/utils" import { ThemeProvider } from "@/lib/providers/theme-provider" import "./globals.css" -import { JazzProvider } from "@/lib/providers/jazz-provider" + +import { ClerkProviderClient } from "@/components/custom/clerk/clerk-provider-client" import { JotaiProvider } from "@/lib/providers/jotai-provider" import { Toaster } from "@/components/ui/sonner" import { ConfirmProvider } from "@/lib/providers/confirm-provider" @@ -25,8 +26,8 @@ export default function RootLayout({ }>) { return ( - - + + @@ -35,8 +36,8 @@ export default function RootLayout({ - - + + ) } diff --git a/web/components/custom/ai-search.tsx b/web/components/custom/ai-search.tsx index d670334b..b7aa9802 100644 --- a/web/components/custom/ai-search.tsx +++ b/web/components/custom/ai-search.tsx @@ -22,7 +22,7 @@ const AiSearch: React.FC = (props: { searchQuery: string }) => { if (root_el.current) { root_el.current.appendChild(md_el) } - }, [root_el.current, md_el]) + }, [md_el]) useEffect(() => { let question = props.searchQuery diff --git a/web/components/custom/auth-ui.tsx b/web/components/custom/auth-ui.tsx deleted file mode 100644 index e2dd2686..00000000 --- a/web/components/custom/auth-ui.tsx +++ /dev/null @@ -1,45 +0,0 @@ -"use client" - -import { useState } from "react" -import { DemoAuth } from "jazz-react" -import { Input } from "../ui/input" -import { Button } from "../ui/button" - -export const AuthUI: DemoAuth.Component = ({ existingUsers, logInAs, signUp, appName, loading }) => { - const [username, setUsername] = useState("") - - if (loading) return
Loading...
- - return ( -
-
-

{appName}

-
{ - e.preventDefault() - signUp(username) - }} - > - setUsername(e.target.value)} - autoComplete="webauthn" - /> - -
- -
- {existingUsers.map(user => ( - - ))} -
-
-
- ) -} - -export default AuthUI diff --git a/web/components/custom/clerk/clerk-provider-client.tsx b/web/components/custom/clerk/clerk-provider-client.tsx new file mode 100644 index 00000000..6edee0ca --- /dev/null +++ b/web/components/custom/clerk/clerk-provider-client.tsx @@ -0,0 +1,7 @@ +"use client" + +import { ClerkProvider } from "@clerk/nextjs" + +export const ClerkProviderClient = ({ children }: { children: React.ReactNode }) => { + return {children} +} diff --git a/web/components/custom/clerk/sign-in-client.tsx b/web/components/custom/clerk/sign-in-client.tsx new file mode 100644 index 00000000..a789546a --- /dev/null +++ b/web/components/custom/clerk/sign-in-client.tsx @@ -0,0 +1,7 @@ +"use client" + +import { SignIn } from "@clerk/nextjs" + +export const SignInClient = () => { + return +} diff --git a/web/components/custom/clerk/sign-up-client.tsx b/web/components/custom/clerk/sign-up-client.tsx new file mode 100644 index 00000000..fdfbd3b5 --- /dev/null +++ b/web/components/custom/clerk/sign-up-client.tsx @@ -0,0 +1,7 @@ +"use client" + +import { SignUp } from "@clerk/nextjs" + +export const SignUpClient = () => { + return +} diff --git a/web/components/custom/clerk/signed-in-client.tsx b/web/components/custom/clerk/signed-in-client.tsx new file mode 100644 index 00000000..b2d70510 --- /dev/null +++ b/web/components/custom/clerk/signed-in-client.tsx @@ -0,0 +1,7 @@ +"use client" + +import { SignedIn } from "@clerk/nextjs" + +export const SignedInClient = ({ children }: { children: React.ReactNode }) => { + return {children} +} diff --git a/web/components/custom/delete-modal.tsx b/web/components/custom/delete-modal.tsx index be8e0551..207a9184 100644 --- a/web/components/custom/delete-modal.tsx +++ b/web/components/custom/delete-modal.tsx @@ -20,7 +20,7 @@ export default function DeletePageModal({ isOpen, onClose, onConfirm, title }: D - Delete "{title}"? + Delete "{title}"? This action cannot be undone. diff --git a/web/components/custom/sidebar/partial/page-section.tsx b/web/components/custom/sidebar/partial/page-section.tsx index 97dd1185..b5064c0f 100644 --- a/web/components/custom/sidebar/partial/page-section.tsx +++ b/web/components/custom/sidebar/partial/page-section.tsx @@ -72,7 +72,7 @@ const PageSectionHeader: React.FC = ({ pageCount }) => ( >

Pages - {pageCount && {pageCount}} + {pageCount > 0 && {pageCount}}

@@ -86,6 +86,8 @@ const NewPageButton: React.FC = () => { const { me } = useAccount() const router = useRouter() + if (!me) return null + const handleClick = () => { try { const newPersonalPage = PersonalPage.create( @@ -248,6 +250,4 @@ const ShowAllForm: React.FC = () => { ) -} - -export default PageSection +} \ No newline at end of file diff --git a/web/components/custom/sidebar/partial/profile-section.tsx b/web/components/custom/sidebar/partial/profile-section.tsx index c150ae75..53b965c1 100644 --- a/web/components/custom/sidebar/partial/profile-section.tsx +++ b/web/components/custom/sidebar/partial/profile-section.tsx @@ -11,6 +11,7 @@ import { } from "@/components/ui/dropdown-menu" import { useAccount } from "@/lib/providers/jazz-provider" import Link from "next/link" +import { useAuth } from "@clerk/nextjs" const MenuItem = ({ icon, @@ -48,9 +49,10 @@ const MenuItem = ({ ) } export const ProfileSection: React.FC = () => { - const { me, logOut } = useAccount({ + const { me } = useAccount({ profile: true }) + const { signOut } = useAuth() const [menuOpen, setMenuOpen] = useState(false) const closeMenu = () => setMenuOpen(false) @@ -86,7 +88,7 @@ export const ProfileSection: React.FC = () => { - + diff --git a/web/components/custom/sidebar/partial/topic-section.tsx b/web/components/custom/sidebar/partial/topic-section.tsx index b6bd04d1..e1aaeb9b 100644 --- a/web/components/custom/sidebar/partial/topic-section.tsx +++ b/web/components/custom/sidebar/partial/topic-section.tsx @@ -50,7 +50,7 @@ const TopicSectionHeader: React.FC = ({ topicCount }) = >

Topics - {topicCount && {topicCount}} + {topicCount > 0 && {topicCount}}

@@ -131,6 +131,4 @@ const ListItem: React.FC = ({ label, value, href, count, isActive
) -} - -export default TopicSection +} \ No newline at end of file diff --git a/web/components/routes/EditProfileRoute.tsx b/web/components/routes/EditProfileRoute.tsx index 69e232d3..3989a00a 100644 --- a/web/components/routes/EditProfileRoute.tsx +++ b/web/components/routes/EditProfileRoute.tsx @@ -1,40 +1,39 @@ "use client" - import { useAccount } from "@/lib/providers/jazz-provider" export default function EditProfileRoute() { const account = useAccount() return ( -
-

Profile

-
+
+

Edit Profile

+
- -
+

learn-anything.xyz/@