diff --git a/apps/hub/src/app.tsx b/apps/hub/src/app.tsx
index 8d41ed3a..dfcd9709 100644
--- a/apps/hub/src/app.tsx
+++ b/apps/hub/src/app.tsx
@@ -34,6 +34,7 @@ export const router = createRouter({
},
// Since we're using React Query, we don't want loader calls to ever be stale
// This will ensure that the loader is always called when the route is preloaded or visited
+ defaultPreload: "intent",
defaultPreloadStaleTime: 0,
defaultOnCatch: (error) => {
Sentry.captureException(error);
diff --git a/apps/hub/src/components/featured-modules-grid.tsx b/apps/hub/src/components/featured-modules-grid.tsx
index 1503eada..7f444c9e 100644
--- a/apps/hub/src/components/featured-modules-grid.tsx
+++ b/apps/hub/src/components/featured-modules-grid.tsx
@@ -34,7 +34,7 @@ export function FeaturesModulesGrid({ footer }: FeaturesModulesGridProps) {
))}
- {footer}
+ {footer ?
{footer}
: null}
);
}
diff --git a/apps/hub/src/components/module-card.tsx b/apps/hub/src/components/module-card.tsx
index 3f25bb71..a6fb5f59 100644
--- a/apps/hub/src/components/module-card.tsx
+++ b/apps/hub/src/components/module-card.tsx
@@ -4,19 +4,21 @@ import {
library,
} from "@fortawesome/fontawesome-svg-core";
import { fab } from "@fortawesome/free-brands-svg-icons";
-import { fas } from "@fortawesome/pro-solid-svg-icons";
+import { faExternalLink, fas } from "@fortawesome/pro-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import {
Card,
CardDescription,
CardHeader,
CardTitle,
+ Link,
Sheet,
SheetContent,
SheetDescription,
SheetHeader,
SheetTitle,
SheetTrigger,
+ Text,
} from "@rivet-gg/components";
import { motion } from "framer-motion";
@@ -82,13 +84,24 @@ export function ModuleCard({
- {name} in OpenGB Docs
-
-
+ {name}
+
+
+ Open in New Tab
+
+
+
+
- Add features to your game with modules.
+ Build your game's backend with open-source modules.
@@ -52,19 +58,9 @@ function GameIdModules() {
className="text-muted-foreground mr-2"
/>
{
- if (e.target.value.length === 0) {
- return navigate({ search: {} });
- }
- if (search.length === 0) {
- navigate({ search: { search: e.target.value } });
- } else {
- navigate({
- search: { search: e.target.value },
- replace: true,
- });
- }
+ setQuery(e.target.value);
}}
placeholder="Search..."
className="bg-transparent border-transparent h-full w-full placeholder:text-muted-foreground focus-visible:outline-none"
@@ -89,13 +85,27 @@ function GameIdModules() {
{category.name}
))}
+
+ }
+ >
+
+ Build Your Own
+
+
}
>
{categories.length === 0 ? (
-
+
- Don't worry, OpenGB is created with extensibility in mind.
- If you can't find a module that fits your needs, you can
- request a new module or create your own.
+ If you can't find a module that fits your needs, you
+ can request a module to be created or build your own module.