-
-
- setKeyword(e.target.value)}
- className="pl-9 pr-9"
- />
- {keyword && (
-
- )}
-
- {!loading && (
-
+
{filterControls}
+
+ {!loading && (
+
+
{isFiltering ? (
<>
{filtered.length} of {keys.length} keys
@@ -81,9 +94,23 @@ export default function Keys() {
) : (
<>{keys.length} entitlement keys>
)}
-
- )}
-
+
+ {topTokens.length > 0 && !isFiltering && (
+
+ {topTokens.map(({ token }) => (
+
+ ))}
+
+ )}
+
diff --git a/src/app/page.tsx b/src/app/page.tsx
index f12793b..78ecc98 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -2,10 +2,8 @@ import OSList from "@/components/oslist";
export default async function Home() {
return (
-
-
-
-
+
+
);
}
diff --git a/src/components/header-portal.tsx b/src/components/header-portal.tsx
new file mode 100644
index 0000000..192b141
--- /dev/null
+++ b/src/components/header-portal.tsx
@@ -0,0 +1,21 @@
+"use client";
+
+import { createPortal } from "react-dom";
+import { useEffect, useState, type ReactNode } from "react";
+
+export const HEADER_PORTAL_ID = "header-controls-portal";
+
+export function HeaderPortal({ children }: { children: ReactNode }) {
+ const [mounted, setMounted] = useState(false);
+
+ useEffect(() => {
+ setMounted(true);
+ }, []);
+
+ if (!mounted) return null;
+
+ const target = document.getElementById(HEADER_PORTAL_ID);
+ if (!target) return null;
+
+ return createPortal(children, target);
+}
diff --git a/src/components/navtop.tsx b/src/components/navtop.tsx
index b6730bd..d02a97e 100644
--- a/src/components/navtop.tsx
+++ b/src/components/navtop.tsx
@@ -6,6 +6,7 @@ import { Moon, Sun, Key, Folder } from "lucide-react";
import { useEffect, useState } from "react";
import { usePathname, useSearchParams } from "next/navigation";
import { VersionSwitcher } from "./version-switcher";
+import { HEADER_PORTAL_ID } from "./header-portal";
function ThemeToggle() {
const { theme, setTheme } = useTheme();
@@ -44,31 +45,29 @@ function OSBreadcrumb({ os, currentPage }: { os: string; currentPage: string })
-
-
-
-
- Entitlement Keys
-
-
-
- Browse Files
-
-
+
+
+
+ Keys
+
+
+
+ Files
+
);
@@ -120,70 +119,31 @@ export function NavTop() {
? "find"
: "keys";
+ const showHeaderControls = isOSPage && (currentPage === "keys" || currentPage === "files" || currentPage === "find");
+
return (
-