diff --git a/app/[lang]/layout.tsx b/app/[lang]/layout.tsx
index 12be2e7..f571517 100644
--- a/app/[lang]/layout.tsx
+++ b/app/[lang]/layout.tsx
@@ -1,9 +1,10 @@
-import './global.css';
-import { RootProvider } from 'fumadocs-ui/provider';
-import type { ReactNode } from 'react';
-import { I18nProvider } from 'fumadocs-ui/i18n';
+import "./global.css";
+import { RootProvider } from "fumadocs-ui/provider";
+import type { ReactNode } from "react";
+import { I18nProvider } from "fumadocs-ui/i18n";
+import Footer from "@/components/footer";
-export default async function Layout({
+export default async function Layout({
params,
children,
}: {
@@ -11,48 +12,53 @@ export default async function Layout({
children: ReactNode;
}) {
const { lang } = await params;
- const includeCzech = process.env.NEXT_PUBLIC_CZECH === 'true';
+ const includeCzech = process.env.NEXT_PUBLIC_CZECH === "true";
return (
-
-
-
+
+
+
-
- {children}
-
-
-
-
+ ...(includeCzech
+ ? [
+ {
+ name: "Česky",
+ locale: "cz",
+ },
+ ]
+ : []),
+ ]}
+ translations={
+ {
+ cz: {
+ toc: "Obsah",
+ search: "Hledat",
+ lastUpdate: "Poslední změna",
+ searchNoResult: "Žádný výsledek",
+ tocNoHeadings: "Bez nadpisů",
+ previousPage: "Předchozí",
+ nextPage: "Následující",
+ chooseLanguage: "Jazyk",
+ },
+ }[lang]
+ }
+ >
+
+ {children}
+
+
+
+
+
+ >
);
}
diff --git a/app/layout.config.tsx b/app/layout.config.tsx
index 00af3a0..6fa5be7 100644
--- a/app/layout.config.tsx
+++ b/app/layout.config.tsx
@@ -1,6 +1,7 @@
-import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared';
-import Image from 'next/image';
-import Logo from '@/public/img/e-infra/logo.svg';
+import type { BaseLayoutProps } from "fumadocs-ui/layouts/shared";
+import Image from "next/image";
+import Logo from "@/public/img/e-infra/logo.svg";
+import Footer from "@/components/footer";
/**
* Shared layout configurations
@@ -13,13 +14,12 @@ export const baseOptions: BaseLayoutProps = {
i18n: true,
nav: {
title: (
- <>
-
- Documentation
- >
+ <>
+
+ Documentation
+ >
),
},
- links: [
- ],
+ links: [],
disableThemeSwitch: true,
};
diff --git a/components/ai/engines/openai.ts b/components/ai/engines/openai.ts
index 97b4fde..be79387 100644
--- a/components/ai/engines/openai.ts
+++ b/components/ai/engines/openai.ts
@@ -120,7 +120,7 @@ export async function createOpenAIEngine(url: string, embed: boolean): Promise(
{...props} />
},
);
+CustomLink.displayName = "FunctionLink"
const typeButtonVariants = cva(
'inline-flex items-center justify-center rounded-lg px-2 py-1 text-sm font-medium transition-colors duration-100',
@@ -505,6 +506,8 @@ export function Trigger({
] as const;
const [type, setType] = useState(engines[0]?.value ?? 'local');
const [open, setOpen] = useState(false);
+
+ const closeDialog = useCallback(() => setOpen(false), [])
return (
diff --git a/components/footer.tsx b/components/footer.tsx
new file mode 100644
index 0000000..e4a7eae
--- /dev/null
+++ b/components/footer.tsx
@@ -0,0 +1,101 @@
+import React from "react";
+import Link from "next/link";
+import { Clock, Mail, Phone } from "lucide-react";
+import RedirectListItem from "./redirection/redirect-list-item";
+
+const Version = Date.now();
+
+const Footer: React.FC = () => {
+ return (
+
+ );
+};
+
+export default Footer;
diff --git a/components/redirection/redirect-list-item.tsx b/components/redirection/redirect-list-item.tsx
new file mode 100644
index 0000000..93a0893
--- /dev/null
+++ b/components/redirection/redirect-list-item.tsx
@@ -0,0 +1,21 @@
+import React from "react";
+import Link from "next/link";
+import { MoveRight } from "lucide-react";
+
+interface RedirectListItemProps {
+ href: string;
+ text: string;
+}
+
+const RedirectListItem: React.FC = ({ href, text }) => {
+ return (
+
+
+
+ {text}
+
+
+ );
+};
+
+export default RedirectListItem;
diff --git a/public/img/logos/footer-partner-logos.svg b/public/img/logos/footer-partner-logos.svg
new file mode 100644
index 0000000..747ff8a
--- /dev/null
+++ b/public/img/logos/footer-partner-logos.svg
@@ -0,0 +1 @@
+
\ No newline at end of file