diff --git a/app/src/ui/Admin.tsx b/app/src/ui/Admin.tsx
index 766b56a8..c62eedce 100644
--- a/app/src/ui/Admin.tsx
+++ b/app/src/ui/Admin.tsx
@@ -16,6 +16,11 @@ export type BkndAdminConfig = {
* @default `/`
*/
basepath?: string;
+ /**
+ * Sub-path for the Admin UI within the base path
+ * @default ``
+ */
+ admin_basepath?: string;
/**
* Path to return to when clicking the logo
* @default `/`
diff --git a/app/src/ui/components/wouter/Link.tsx b/app/src/ui/components/wouter/Link.tsx
index 4c5238d6..d48aa8c2 100644
--- a/app/src/ui/components/wouter/Link.tsx
+++ b/app/src/ui/components/wouter/Link.tsx
@@ -1,5 +1,6 @@
import { type LinkProps, Link as WouterLink, useRouter } from "wouter";
import { useEvent } from "../../hooks/use-event";
+import { useBkndOptions } from "ui/client/BkndProvider";
/*
* Transforms `path` into its relative `base` version
@@ -70,11 +71,13 @@ export function Link({
return false;
}
-
+ const bkndOptions = useBkndOptions();
+ const adminBasePath = bkndOptions?.admin_basepath ?? "";
const _href = props.href ?? props.to;
+
const href = router
.hrefs(
- _href[0] === "~" ? _href.slice(1) : router.base + _href,
+ _href[0] === "~" ? adminBasePath + _href.slice(1) : router.base + _href,
router, // pass router as a second argument for convinience
)
.replace("//", "/");
@@ -82,8 +85,10 @@ export function Link({
const active =
href.replace(router.base, "").length <= 1 ? href === absPath : isActive(absPath, href);
+ // console.log({ adminBasePath, _href, href, bkndOptions })
if (native) {
- return ;
+ // @ts-expect-error update wouter breaks types for anchor tag
+ return ;
}
const wouterOnClick = (e: any) => {
@@ -99,10 +104,11 @@ export function Link({
};
return (
+ // @ts-expect-error className is not typed on WouterLink
);