mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-06-13 08:15:21 +02:00
* feat: add stt evals * add smart turn as provider * chore: remove deprecations * chore: format files * fix: remove deprecated UserIdleProcessor * fix: remove deprecated TranscriptProcessor * chore: update pipecat submodule * feat: add evals visualisation * fix: trigger llm generation on client connected and pipeline started * chore: update pipecat * chore: update pipecat submodule * Add tests * fix: slow loading of workflow page * chore: update pipecat submodule * Show version after release * Fixes #99 * fix: provider check for websocket connection * Fixes #107 * Fix #96 * chore: fix documentation * fix: cloudonix campaign call error --------- Co-authored-by: Sabiha Khan <sabihak89@gmail.com>
81 lines
2.4 KiB
TypeScript
81 lines
2.4 KiB
TypeScript
import "./globals.css";
|
|
|
|
import type { Metadata } from "next";
|
|
import { Geist, Geist_Mono } from "next/font/google";
|
|
import { Suspense } from "react";
|
|
|
|
import ChatwootWidget from "@/components/ChatwootWidget";
|
|
import AppLayout from "@/components/layout/AppLayout";
|
|
import PostHogIdentify from "@/components/PostHogIdentify";
|
|
import SpinLoader from "@/components/SpinLoader";
|
|
import { Toaster } from "@/components/ui/sonner";
|
|
import { AppConfigProvider } from "@/context/AppConfigContext";
|
|
import { OnboardingProvider } from "@/context/OnboardingContext";
|
|
import { UserConfigProvider } from "@/context/UserConfigContext";
|
|
import { AuthProvider } from "@/lib/auth";
|
|
|
|
|
|
const geistSans = Geist({
|
|
variable: "--font-geist-sans",
|
|
subsets: ["latin"],
|
|
});
|
|
|
|
const geistMono = Geist_Mono({
|
|
variable: "--font-geist-mono",
|
|
subsets: ["latin"],
|
|
});
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Dograh",
|
|
description: "Open Source Voice Assistant Workflow Builder",
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children
|
|
}: {
|
|
children: React.ReactNode
|
|
}) {
|
|
|
|
return (
|
|
<html lang="en" suppressHydrationWarning>
|
|
<head>
|
|
{/* Inline script to prevent flash of light theme - runs before React hydrates */}
|
|
<script
|
|
dangerouslySetInnerHTML={{
|
|
__html: `
|
|
(function() {
|
|
try {
|
|
var theme = localStorage.getItem('theme');
|
|
if (theme === 'dark' || (!theme && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
|
|
document.documentElement.classList.add('dark');
|
|
} else {
|
|
document.documentElement.classList.remove('dark');
|
|
}
|
|
} catch (e) {}
|
|
})();
|
|
`,
|
|
}}
|
|
/>
|
|
</head>
|
|
<body
|
|
className={`${geistSans.variable} ${geistMono.variable} antialiased`}>
|
|
<AuthProvider>
|
|
<AppConfigProvider>
|
|
<Suspense fallback={<SpinLoader />}>
|
|
<UserConfigProvider>
|
|
<OnboardingProvider>
|
|
<PostHogIdentify />
|
|
<AppLayout>
|
|
{children}
|
|
</AppLayout>
|
|
<Toaster />
|
|
<ChatwootWidget />
|
|
</OnboardingProvider>
|
|
</UserConfigProvider>
|
|
</Suspense>
|
|
</AppConfigProvider>
|
|
</AuthProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|