diff --git a/frontend/package.json b/frontend/package.json
index e903838..5d9e442 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -16,7 +16,6 @@
"@microsoft/microsoft-graph-client": "^3.0.5",
"accept-language": "^3.0.18",
"gapi-script": "^1.2.0",
- "goober": "^2.1.13",
"hue-map": "^1.0.0",
"i18next": "^22.5.0",
"i18next-browser-languagedetector": "^7.0.1",
diff --git a/frontend/src/app/create/Redirect.tsx b/frontend/src/app/create/Redirect.tsx
new file mode 100644
index 0000000..a8c2a7c
--- /dev/null
+++ b/frontend/src/app/create/Redirect.tsx
@@ -0,0 +1,19 @@
+'use client'
+
+import { useEffect } from 'react'
+import { useRouter } from 'next/navigation'
+
+/** Check if the current page is running in an iframe, otherwise redirect home */
+const Redirect = () => {
+ const router = useRouter()
+
+ useEffect(() => {
+ if (window.self === window.top) {
+ router.replace('/')
+ }
+ }, [])
+
+ return null
+}
+
+export default Redirect
diff --git a/frontend/src/app/create/page.tsx b/frontend/src/app/create/page.tsx
new file mode 100644
index 0000000..aff8856
--- /dev/null
+++ b/frontend/src/app/create/page.tsx
@@ -0,0 +1,29 @@
+import { Metadata } from 'next'
+
+import Content from '/src/components/Content/Content'
+import CreateForm from '/src/components/CreateForm/CreateForm'
+import Header from '/src/components/Header/Header'
+
+import Redirect from './Redirect'
+
+export const metadata: Metadata = {
+ title: 'Create a Crab Fit',
+}
+
+/**
+ * Used in the Crab Fit browser extension, to be rendered only in an iframe
+ */
+const Page = async () => <>
+
+ {/* @ts-expect-error Async Server Component */}
+
+
+
+
+
+
+
+
+>
+
+export default Page
diff --git a/frontend/src/app/how-to/page.tsx b/frontend/src/app/how-to/page.tsx
index 2f36355..1f502dd 100644
--- a/frontend/src/app/how-to/page.tsx
+++ b/frontend/src/app/how-to/page.tsx
@@ -6,6 +6,7 @@ import { range, rotateArray } from '@giraugh/tools'
import AvailabilityViewer from '/src/components/AvailabilityViewer/AvailabilityViewer'
import Button from '/src/components/Button/Button'
import Content from '/src/components/Content/Content'
+import Footer from '/src/components/Footer/Footer'
import Header from '/src/components/Header/Header'
import { P } from '/src/components/Paragraph/Text'
import Section from '/src/components/Section/Section'
@@ -80,6 +81,9 @@ const Page = async () => {
+
+ {/* @ts-expect-error Async Server Component */}
+
>
}
diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx
index 95760f6..d045f04 100644
--- a/frontend/src/app/layout.tsx
+++ b/frontend/src/app/layout.tsx
@@ -1,7 +1,6 @@
import { Metadata } from 'next'
import Egg from '/src/components/Egg/Egg'
-import Footer from '/src/components/Footer/Footer'
import Settings from '/src/components/Settings/Settings'
import TranslateDialog from '/src/components/TranslateDialog/TranslateDialog'
import { fallbackLng } from '/src/i18n/options'
@@ -40,9 +39,6 @@ const RootLayout = async ({ children }: { children: React.ReactNode }) => {
{children}
-
- {/* @ts-expect-error Async Server Component */}
-