Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,810 changes: 1,624 additions & 186 deletions frontend/bun.lock

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions frontend/components.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
},
"iconLibrary": "lucide",
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"components": "@/app/components",
"utils": "@/app/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
"lib": "@/app/lib",
"hooks": "@/app/hooks"
},
"registries": {}
}
890 changes: 306 additions & 584 deletions frontend/package-lock.json

Large diffs are not rendered by default.

16 changes: 6 additions & 10 deletions frontend/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "mike",
"version": "0.1.0",
"license": "AGPL-3.0-only",
"private": true,
"scripts": {
"dev": "next dev",
Expand All @@ -13,14 +14,11 @@
"cf-typegen": "wrangler types --env-interface CloudflareEnv cloudflare-env.d.ts"
},
"dependencies": {
"@aws-sdk/client-s3": "^3.1025.0",
"@aws-sdk/s3-request-presigner": "^3.1025.0",
"@opennextjs/cloudflare": "^1.19.9",
"@opennextjs/cloudflare": "^1.13.1",
"@openrouter/sdk": "^0.3.11",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-icons": "^1.3.2",
"@radix-ui/react-slot": "^1.2.4",
"@supabase/auth-helpers-nextjs": "^0.10.0",
"@supabase/auth-js": "^2.101.1",
"@supabase/supabase-js": "^2.81.1",
"@tiptap/pm": "^3.22.3",
Expand All @@ -37,7 +35,7 @@
"lucide-react": "^0.553.0",
"mammoth": "^1.11.0",
"marked": "^17.0.1",
"next": "^16.2.6",
"next": "16.0.3",
"nextjs-toploader": "^3.9.17",
"pdfjs-dist": "4.10.38",
"react": "19.2.0",
Expand All @@ -49,7 +47,6 @@
"remark-gfm": "^4.0.1",
"remark-gfm-configurable": "^1.0.0",
"remark-math": "^6.0.0",
"resend": "^6.8.0",
"tailwind-merge": "^3.4.0",
"tiptap-markdown": "^0.9.0"
},
Expand All @@ -63,11 +60,10 @@
"babel-plugin-react-compiler": "1.0.0",
"baseline-browser-mapping": "^2.9.11",
"eslint": "^9",
"eslint-config-next": "^16.2.6",
"eslint-config-next": "16.0.3",
"tailwindcss": "^4",
"tw-animate-css": "^1.4.0",
"typescript": "^5",
"wrangler": "^4.90.0"
},
"license": "AGPL-3.0-only"
"wrangler": "^4.51.0"
}
}
Binary file removed frontend/public/link-image.jpg
Binary file not shown.
68 changes: 24 additions & 44 deletions frontend/src/app/(pages)/account/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import { useEffect } from "react";
import { usePathname, useRouter } from "next/navigation";
import { Loader2 } from "lucide-react";
import { useAuth } from "@/contexts/AuthContext";
import { useAuth } from "@/app/contexts/AuthContext";

interface TabDef {
id: string;
Expand Down Expand Up @@ -44,58 +44,38 @@ export default function AccountLayout({
}

return (
<div className="flex h-full flex-col overflow-y-auto">
<header className="mx-auto flex h-16 w-full max-w-5xl shrink-0 items-end px-6 pb-2 md:h-24 md:pb-4">
<h1 className="text-4xl font-medium font-eb-garamond">
<div className="flex flex-col h-full md:overflow-y-auto px-6 py-6 md:py-10">
<div className="max-w-5xl w-full mx-auto">
<h1 className="text-4xl font-medium mb-8 font-eb-garamond">
Settings
</h1>
</header>

<main className="mx-auto w-full max-w-5xl flex-1 px-6 pb-10 pt-4 md:pt-6">
<div className="grid grid-cols-1 gap-y-6 md:grid-cols-[224px_minmax(0,1fr)] md:gap-x-10">
<div className="flex flex-col md:flex-row gap-6 md:gap-10">
<nav
aria-label="Settings"
className="z-10 -ml-3 min-w-0 self-start md:sticky md:top-4"
className="md:w-56 shrink-0 flex md:flex-col gap-1 overflow-x-auto"
>
<div className="-m-1 min-w-0 p-1">
<div className="-m-1 min-w-0 overflow-x-auto overflow-y-hidden p-1">
<ul className="mb-0 flex gap-1 md:flex-col">
{TABS.map((tab) => {
const active =
pathname === tab.href ||
(tab.href !== "/account" &&
pathname.startsWith(tab.href));
return (
<li key={tab.id}>
<button
type="button"
aria-current={
active
? "page"
: undefined
}
onClick={() =>
router.push(tab.href)
}
className={`flex h-9 w-full items-center rounded-lg px-3 text-left text-sm font-medium whitespace-nowrap transition-colors ${
active
? "bg-gray-100 text-gray-900"
: "text-gray-500 hover:bg-gray-50 hover:text-gray-900"
}`}
>
{tab.label}
</button>
</li>
);
})}
</ul>
</div>
</div>
{TABS.map((tab) => {
const active = pathname === tab.href;
return (
<button
key={tab.id}
onClick={() => router.push(tab.href)}
className={`text-left whitespace-nowrap px-3 py-2 rounded-md text-sm font-medium transition-colors ${
active
? "bg-gray-100 text-gray-900"
: "text-gray-500 hover:text-gray-900 hover:bg-gray-50"
}`}
>
{tab.label}
</button>
);
})}
</nav>

<div className="min-w-0 outline-none">{children}</div>
<div className="flex-1 min-w-0">{children}</div>
</div>
</main>
</div>
</div>
);
}
Loading