);
diff --git a/components/core/nav.tsx b/components/core/nav.tsx
index 1a69d98..b27e862 100644
--- a/components/core/nav.tsx
+++ b/components/core/nav.tsx
@@ -3,6 +3,8 @@
import Link from "next/link";
import { authClient } from "@/util/auth-client";
import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { TbMenu2, TbX } from "react-icons/tb";
interface ExtendedUser {
id: string;
@@ -18,6 +20,7 @@ interface ExtendedUser {
export function Nav() {
const { data: session, isPending } = authClient.useSession();
const router = useRouter();
+ const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
const handleSignOut = async () => {
try {
@@ -32,43 +35,162 @@ export function Nav() {
};
return (
-
-
-
- p0ntus
-
-
-
-
Home
-
About
-
Servers
-
Services
- {isPending ? (
-
Loading...
- ) : session ? (
-
- Dashboard
- Requests
- {(session.user as ExtendedUser).role === 'admin' && (
- Admin
- )}
- Hi, {session.user.name || session.user.email}
-
-
- ) : (
-
- Login
-
- Sign Up
-
-
- )}
+
+
+
+
+
+
setIsMobileMenuOpen(false)}
+ >
+ Home
+
+
setIsMobileMenuOpen(false)}
+ >
+ About
+
+
setIsMobileMenuOpen(false)}
+ >
+ Servers
+
+
setIsMobileMenuOpen(false)}
+ >
+ Services
+
+
+ {isPending ? (
+
Loading...
+ ) : session ? (
+
+
setIsMobileMenuOpen(false)}
+ >
+ Dashboard
+
+
setIsMobileMenuOpen(false)}
+ >
+ Requests
+
+ {(session.user as ExtendedUser).role === 'admin' && (
+
setIsMobileMenuOpen(false)}
+ >
+ Admin
+
+ )}
+
+
+ Hi, {session.user.name || session.user.email}
+
+
+
+
+ ) : (
+
+ setIsMobileMenuOpen(false)}
+ >
+ Login
+
+ setIsMobileMenuOpen(false)}
+ >
+ Sign Up
+
+
+ )}
+
+
+
+
);
}
\ No newline at end of file
diff --git a/config/services.ts b/config/services.ts
index eb8088b..1f543bb 100644
--- a/config/services.ts
+++ b/config/services.ts
@@ -6,7 +6,6 @@ import {
} from "react-icons/si"
import {
TbBrowser,
- TbBubbleText,
TbDeviceTv,
TbGitBranch,
TbKey,
@@ -101,10 +100,6 @@ export const services = [
icon: SiOllama,
priceStatus: "invite-only",
adminView: {
- "Your chats": {
- icon: TbBubbleText,
- description: "Your chats are visible to admins.",
- },
"Your email address": {
icon: TbMail,
description: "Your email address is visible to admins.",
@@ -200,6 +195,7 @@ export const services = [
description: "A private password manager. Powered by Vaultwarden.",
icon: SiVaultwarden,
priceStatus: "open",
+ joinLink: "https://pass.librecloud.cc",
adminView: {
"Your total entry count": {
icon: TbServer,
diff --git a/package.json b/package.json
index e2f9822..9680c42 100644
--- a/package.json
+++ b/package.json
@@ -11,27 +11,27 @@
},
"dependencies": {
"@types/react-world-flags": "^1.6.0",
- "altcha": "^2.0.5",
+ "altcha": "^2.1.0",
"altcha-lib": "^1.3.0",
- "better-auth": "^1.2.12",
- "drizzle-orm": "^0.44.2",
- "nanoid": "^5.0.0",
+ "better-auth": "^1.3.3",
+ "drizzle-orm": "^0.44.3",
+ "nanoid": "^5.1.5",
"next": "15.3.4",
"postgres": "^3.4.7",
"react": "^19.1.0",
"react-dom": "^19.1.0",
- "react-hook-form": "^7.60.0",
+ "react-hook-form": "^7.61.1",
"react-icons": "^5.5.0",
"react-world-flags": "^1.6.0"
},
"devDependencies": {
"@eslint/eslintrc": "^3.3.1",
"@tailwindcss/postcss": "^4.1.11",
- "@types/node": "^20.19.4",
+ "@types/node": "^20.19.9",
"@types/react": "^19.1.8",
"@types/react-dom": "^19.1.6",
"drizzle-kit": "^0.31.4",
- "eslint": "^9.30.1",
+ "eslint": "^9.31.0",
"eslint-config-next": "15.3.4",
"tailwindcss": "^4.1.11",
"tsx": "^4.20.3",
diff --git a/tools/seed-db.ts b/tools/seed-db.ts
index a6c1c9c..c371c1a 100644
--- a/tools/seed-db.ts
+++ b/tools/seed-db.ts
@@ -19,6 +19,7 @@ async function seedDatabase() {
console.log(`✓ Added service: ${service.name}`);
}
console.log("Database seeded!");
+ process.exit(0);
} catch (error) {
console.error("Error seeding database:", error);
process.exit(1);