mirror of
https://github.com/formbricks/formbricks.git
synced 2025-12-30 02:10:12 -06:00
* add new landingpage for user research surveys * update Formbricks App to support custom surveys Co-authored-by: knugget <johannes@knugget.de>
64 lines
2.4 KiB
TypeScript
64 lines
2.4 KiB
TypeScript
import { Head, Html, Main, NextScript } from "next/document";
|
|
|
|
const themeScript = `
|
|
let isDarkMode = window.matchMedia('(prefers-color-scheme: dark)')
|
|
|
|
function updateTheme(theme) {
|
|
theme = theme ?? window.localStorage.theme ?? 'system'
|
|
|
|
if (theme === 'dark' || (theme === 'system' && isDarkMode.matches)) {
|
|
document.documentElement.classList.add('dark')
|
|
} else if (theme === 'light' || (theme === 'system' && !isDarkMode.matches)) {
|
|
document.documentElement.classList.remove('dark')
|
|
}
|
|
|
|
return theme
|
|
}
|
|
|
|
function updateThemeWithoutTransitions(theme) {
|
|
updateTheme(theme)
|
|
document.documentElement.classList.add('[&_*]:!transition-none')
|
|
window.setTimeout(() => {
|
|
document.documentElement.classList.remove('[&_*]:!transition-none')
|
|
}, 0)
|
|
}
|
|
|
|
document.documentElement.setAttribute('data-theme', updateTheme())
|
|
|
|
new MutationObserver(([{ oldValue }]) => {
|
|
let newValue = document.documentElement.getAttribute('data-theme')
|
|
if (newValue !== oldValue) {
|
|
try {
|
|
window.localStorage.setItem('theme', newValue)
|
|
} catch {}
|
|
updateThemeWithoutTransitions(newValue)
|
|
}
|
|
}).observe(document.documentElement, { attributeFilter: ['data-theme'], attributeOldValue: true })
|
|
|
|
isDarkMode.addEventListener('change', () => updateThemeWithoutTransitions())
|
|
`;
|
|
|
|
export default function Document() {
|
|
return (
|
|
<Html className="scroll-smooth antialiased [font-feature-settings:'ss01']" lang="en" dir="ltr">
|
|
<Head>
|
|
<script dangerouslySetInnerHTML={{ __html: themeScript }} />
|
|
|
|
<link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png" />
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png" />
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png" />
|
|
<link rel="manifest" href="/favicon/site.webmanifest" />
|
|
<link rel="mask-icon" href="/favicon/safari-pinned-tab.svg" color="#002941" />
|
|
<link rel="shortcut icon" href="/favicon/favicon.ico" />
|
|
<meta name="msapplication-TileColor" content="#002941" />
|
|
<meta name="msapplication-config" content="/favicon/browserconfig.xml" />
|
|
<meta name="theme-color" content="#ffffff" />
|
|
</Head>
|
|
<body className="bg-slate-50 dark:bg-slate-900">
|
|
<Main />
|
|
<NextScript />
|
|
</body>
|
|
</Html>
|
|
);
|
|
}
|