diff --git a/packages/i18n/strings/en.json b/packages/i18n/strings/en.json
index e5c97dd6b..e77bb6e95 100644
--- a/packages/i18n/strings/en.json
+++ b/packages/i18n/strings/en.json
@@ -869,6 +869,13 @@
},
"tools": {
+ "internal": {
+ "name": "Internal",
+ "button": "Internal",
+ "description": "BlitzKit internal tools",
+ "seo_description": "BlitzKit internal tools"
+ },
+
"guess": {
"name": "Guess the tank",
"button": "Guess away",
diff --git a/packages/website-ue/public/assets/tool-backgrounds/internal.webp b/packages/website-ue/public/assets/tool-backgrounds/internal.webp
new file mode 100644
index 000000000..b163af8c9
Binary files /dev/null and b/packages/website-ue/public/assets/tool-backgrounds/internal.webp differ
diff --git a/packages/website-ue/src/components/DeniedInternal.astro b/packages/website-ue/src/components/DeniedInternal.astro
new file mode 100644
index 000000000..fd58f1d4f
--- /dev/null
+++ b/packages/website-ue/src/components/DeniedInternal.astro
@@ -0,0 +1 @@
+Permission denied
diff --git a/packages/website-ue/src/constants/tools.ts b/packages/website-ue/src/constants/tools.ts
index 1195eb807..54d0456e7 100644
--- a/packages/website-ue/src/constants/tools.ts
+++ b/packages/website-ue/src/constants/tools.ts
@@ -63,6 +63,12 @@ export const ratingTool: Tool = {
button: { color: 'orange' },
};
+export const internalTool: Tool = {
+ id: 'internal',
+ enabled: true,
+ button: { color: 'amber' },
+};
+
export const tools: Tool[] = [
tanksTool,
compareTool,
@@ -75,3 +81,5 @@ export const tools: Tool[] = [
embedTool,
ratingTool,
];
+
+if (import.meta.env.DEV) tools.push(internalTool);
diff --git a/packages/website-ue/src/layouts/InternalBaseLayout.astro b/packages/website-ue/src/layouts/InternalBaseLayout.astro
new file mode 100644
index 000000000..13ba1d5d1
--- /dev/null
+++ b/packages/website-ue/src/layouts/InternalBaseLayout.astro
@@ -0,0 +1,18 @@
+---
+import locales from '@blitzkit/i18n/locales.json';
+import DeniedInternal from '../components/DeniedInternal.astro';
+import BaseLayout from './BaseLayout.astro';
+
+const locale = locales.default;
+const isInternal = import.meta.env.DEV;
+---
+
+{
+ isInternal ? (
+
+
+
+ ) : (
+
+ )
+}
diff --git a/packages/website-ue/src/layouts/InternalToolLayout.astro b/packages/website-ue/src/layouts/InternalToolLayout.astro
new file mode 100644
index 000000000..ba75172f9
--- /dev/null
+++ b/packages/website-ue/src/layouts/InternalToolLayout.astro
@@ -0,0 +1,24 @@
+---
+import locales from '@blitzkit/i18n/locales.json';
+import DeniedInternal from '../components/DeniedInternal.astro';
+import type { Tool } from '../constants/tools';
+import ToolLayout from './ToolLayout.astro';
+
+interface Props {
+ tool: Tool;
+}
+
+const { tool } = Astro.props;
+const locale = locales.default;
+const isInternal = import.meta.env.DEV;
+---
+
+{
+ isInternal ? (
+
+
+
+ ) : (
+
+ )
+}
diff --git a/packages/website-ue/src/pages/[...locale]/index.astro b/packages/website-ue/src/pages/[...locale]/index.astro
index 47a35e884..bb90625e7 100644
--- a/packages/website-ue/src/pages/[...locale]/index.astro
+++ b/packages/website-ue/src/pages/[...locale]/index.astro
@@ -143,6 +143,7 @@ toolLoop: for (const tool of tools.filter((tool) => tool.enabled)) {
{row.map((tool) => (
))}
+ {row.length === 1 && !row[0].significant && }
))
}
diff --git a/packages/website-ue/src/pages/internal/_index.tsx b/packages/website-ue/src/pages/internal/_index.tsx
new file mode 100644
index 000000000..de16e041a
--- /dev/null
+++ b/packages/website-ue/src/pages/internal/_index.tsx
@@ -0,0 +1,38 @@
+import { Link, Table } from '@radix-ui/themes';
+import { PageWrapper } from '../../components/PageWrapper';
+
+export function Page() {
+ return (
+
+
+
+
+ Name
+ Memo
+
+
+
+
+
+
+ FFI
+
+
+ Status of BlitzKit's currently mounted foreign function interface
+
+
+
+
+
+ Bindings
+
+
+ Exhaustive list of all bindings and preference of currently
+ mounted client
+
+
+
+
+
+ );
+}
diff --git a/packages/website-ue/src/pages/internal/ffi/_index.tsx b/packages/website-ue/src/pages/internal/ffi/_index.tsx
new file mode 100644
index 000000000..b8672cf94
--- /dev/null
+++ b/packages/website-ue/src/pages/internal/ffi/_index.tsx
@@ -0,0 +1,9 @@
+import { PageWrapper } from 'packages/website-ue/src/components/PageWrapper';
+
+export function Page() {
+ return (
+
+ 🔴 Unmounted
+
+ );
+}
diff --git a/packages/website-ue/src/pages/internal/ffi/index.astro b/packages/website-ue/src/pages/internal/ffi/index.astro
new file mode 100644
index 000000000..dc56143d6
--- /dev/null
+++ b/packages/website-ue/src/pages/internal/ffi/index.astro
@@ -0,0 +1,8 @@
+---
+import InternalBaseLayout from 'packages/website-ue/src/layouts/InternalBaseLayout.astro';
+import { Page } from './_index';
+---
+
+
+
+
diff --git a/packages/website-ue/src/pages/internal/index.astro b/packages/website-ue/src/pages/internal/index.astro
new file mode 100644
index 000000000..6af626aaf
--- /dev/null
+++ b/packages/website-ue/src/pages/internal/index.astro
@@ -0,0 +1,9 @@
+---
+import { internalTool } from '../../constants/tools';
+import InternalToolLayout from '../../layouts/InternalToolLayout.astro';
+import { Page } from './_index';
+---
+
+
+
+