diff --git a/next.config.js b/next.config.js index e3d2dd6a..4797fde3 100644 --- a/next.config.js +++ b/next.config.js @@ -1,3 +1,5 @@ +import { isServer } from "@tanstack/react-query"; + /** * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially useful * for Docker builds. @@ -29,6 +31,16 @@ const config = { asyncWebAssembly: true, layers: true, }; + // For server builds, place the WASM files one level up + config.output.webassemblyModuleFilename = isServer + ? "../static/wasm/[modulehash].wasm" + : "static/wasm/[modulehash].wasm"; + + // Optional: add a rule to ensure WASM files are treated as assets + config.module.rules.push({ + test: /\.wasm$/, + type: "asset/resource", + }); return config; }, }; diff --git a/package-lock.json b/package-lock.json index ef092988..3461b398 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "hasInstallScript": true, "dependencies": { "@auth/prisma-adapter": "^1.6.0", + "@emurgo/cardano-serialization-lib-browser": "^14.1.1", "@hookform/resolvers": "^3.9.0", "@jinglescode/nostr-chat-plugin": "^0.0.11", "@meshsdk/core": "^1.9.0-beta.18", @@ -43,6 +44,7 @@ "@trpc/react-query": "^11.0.0-rc.446", "@trpc/server": "^11.0.0-rc.446", "@vercel/blob": "^0.23.4", + "blakejs": "^1.2.1", "busboy": "^1.6.0", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", @@ -714,6 +716,12 @@ "node": ">=14.0" } }, + "node_modules/@emurgo/cardano-serialization-lib-browser": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-14.1.1.tgz", + "integrity": "sha512-/zGHQoXJCQw0yyEdoVQMDlSsyvaCap2lNVKEu+GTi1pwYopn6K3/SntrDFW5/gIMireDwY4+kZcPvXwIBZnMZA==", + "license": "MIT" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.0", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", diff --git a/package.json b/package.json index ed1782e0..8ad45829 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ }, "dependencies": { "@auth/prisma-adapter": "^1.6.0", + "@emurgo/cardano-serialization-lib-browser": "^14.1.1", "@hookform/resolvers": "^3.9.0", "@jinglescode/nostr-chat-plugin": "^0.0.11", "@meshsdk/core": "^1.9.0-beta.18", @@ -51,6 +52,7 @@ "@trpc/react-query": "^11.0.0-rc.446", "@trpc/server": "^11.0.0-rc.446", "@vercel/blob": "^0.23.4", + "blakejs": "^1.2.1", "busboy": "^1.6.0", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", diff --git a/src/components/common/overall-layout/layout.tsx b/src/components/common/overall-layout/layout.tsx index d4eb02c3..d7615246 100644 --- a/src/components/common/overall-layout/layout.tsx +++ b/src/components/common/overall-layout/layout.tsx @@ -1,4 +1,4 @@ -import React, { useEffect } from "react"; +import React, { useEffect, useState } from "react"; import Link from "next/link"; import { api } from "@/utils/api"; import ConnectWallet from "../cardano-objects/connect-wallet"; @@ -25,6 +25,7 @@ import { publicRoutes } from "@/data/public-routes"; import Loading from "./loading"; import DialogReport from "./dialog-report"; import { useRouter } from "next/router"; +import { Menu as MenuIcon } from "lucide-react"; export default function RootLayout({ children, @@ -36,6 +37,7 @@ export default function RootLayout({ const router = useRouter(); const { appWallet } = useAppWallet(); const { generateNsec } = useNostrChat(); + const [mobileMenuOpen, setMobileMenuOpen] = useState(false); const userAddress = useUserStore((state) => state.userAddress); const setUserAddress = useUserStore((state) => state.setUserAddress); @@ -88,6 +90,16 @@ export default function RootLayout({ return (
{isLoading && } + {mobileMenuOpen && ( +
+
+ + + {router.pathname.includes("/wallets/[wallet]") && } +
+
setMobileMenuOpen(false)}>
+
+ )} {/* Sidebar for larger screens */}