Skip to content

Commit bb8a9ed

Browse files
authored
feat: footer menu (langfuse#409)
1 parent 680d9a6 commit bb8a9ed

File tree

1 file changed

+144
-53
lines changed

1 file changed

+144
-53
lines changed

theme.config.tsx

Lines changed: 144 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
} from "nextra-theme-docs";
1111
import { Logo } from "@/components/logo";
1212
import { useRouter } from "next/router";
13-
import Link from "next/link";
1413
import { MainContentWrapper } from "./components/MainContentWrapper";
1514
import { Frame } from "./components/Frame";
1615
import { GithubMenuBadge } from "./components/GitHubBadge";
@@ -19,32 +18,134 @@ import { COOKBOOK_ROUTE_MAPPING } from "./lib/cookbook_route_mapping";
1918
import { GeistSans } from "geist/font/sans";
2019
import IconDiscord from "./components/icons/discord";
2120

22-
const footerNav = [
21+
const footerMenu = [
2322
{
24-
name: "Schedule Demo",
25-
href: "/schedule-demo",
23+
heading: "Platform",
24+
items: [
25+
{
26+
name: "LLM Tracing",
27+
href: "/docs/tracing/overview",
28+
},
29+
{
30+
name: "Prompt Management",
31+
href: "/docs/prompts/get-started",
32+
},
33+
{
34+
name: "Evaluation",
35+
href: "/docs/scores/overview",
36+
},
37+
{
38+
name: "Datasets",
39+
href: "/docs/datasets/overview",
40+
},
41+
{
42+
name: "Metrics",
43+
href: "/docs/analytics",
44+
},
45+
],
2646
},
27-
{ name: "Careers", href: "/careers" },
2847
{
29-
name: "Status",
30-
href: "https://status.langfuse.com",
48+
heading: "Integrations",
49+
items: [
50+
{
51+
name: "Python SDK",
52+
href: "/docs/sdk/python",
53+
},
54+
{
55+
name: "JS/TS SDK",
56+
href: "/docs/sdk/typescript",
57+
},
58+
{
59+
name: "OpenAI SDK",
60+
href: "/docs/integrations/openai/get-started",
61+
},
62+
{
63+
name: "Langchain",
64+
href: "/docs/integrations/langchain/tracing",
65+
},
66+
{
67+
name: "Llama-Index",
68+
href: "/docs/integrations/llama-index/get-started",
69+
},
70+
{
71+
name: "Litellm",
72+
href: "/docs/integrations/litellm",
73+
},
74+
{
75+
name: "Flowise",
76+
href: "/docs/integrations/flowise",
77+
},
78+
{
79+
name: "Langflow",
80+
href: "/docs/integrations/langflow",
81+
},
82+
{
83+
name: "API",
84+
href: "https://api.reference.langfuse.com/",
85+
},
86+
],
3187
},
3288
{
33-
name: "OSS Friends",
34-
href: "/oss-friends",
89+
heading: "Resources",
90+
items: [
91+
{ name: "Documentation", href: "/docs" },
92+
{
93+
name: "Changelog",
94+
href: "/changelog",
95+
},
96+
{
97+
name: "Interactive Demo",
98+
href: "/demo",
99+
},
100+
{
101+
name: "Pricing",
102+
href: "/pricing",
103+
},
104+
{
105+
name: "Status",
106+
href: "https://status.langfuse.com",
107+
},
108+
{
109+
name: "Self-hosting",
110+
href: "/docs/deployment/self-host",
111+
},
112+
{
113+
name: "Open Source",
114+
href: "/docs/open-source",
115+
},
116+
],
35117
},
36-
];
37-
38-
const footerLegalNav = [
39-
{ name: "Security", href: "/security" },
40-
{ name: "Imprint", href: "/imprint" },
41118
{
42-
name: "Terms",
43-
href: "/tos",
119+
heading: "About",
120+
items: [
121+
{ name: "Blog", href: "/blog" },
122+
{ name: "Careers", href: "/careers" },
123+
{ name: "Contact", href: "mailto:support@langfuse.com" },
124+
{
125+
name: "Schedule Demo",
126+
href: "/schedule-demo",
127+
},
128+
{
129+
name: "OSS Friends",
130+
href: "/oss-friends",
131+
},
132+
],
44133
},
134+
45135
{
46-
name: "Privacy",
47-
href: "/privacy",
136+
heading: "Legal",
137+
items: [
138+
{ name: "Security", href: "/security" },
139+
{ name: "Imprint", href: "/imprint" },
140+
{
141+
name: "Terms",
142+
href: "/tos",
143+
},
144+
{
145+
name: "Privacy",
146+
href: "/privacy",
147+
},
148+
],
48149
},
49150
];
50151

@@ -104,42 +205,32 @@ const config: DocsThemeConfig = {
104205
docsRepositoryBase: "https://github.com/langfuse/langfuse-docs/tree/main",
105206
footer: {
106207
text: (
107-
<div className="flex md:justify-between md:flex-row flex-col items-center flex-1 flex-wrap gap-2 text-sm">
108-
<div className="md:order-last flex flex-col lg:flex-row gap-y-1 gap-x-4">
109-
<div className="flex flex-wrap gap-x-4 gap-y-1 justify-center md:justify-end">
110-
{footerNav.map((nav) => (
111-
<Link
112-
key={nav.name}
113-
href={nav.href}
114-
className="inline rounded-none leading-6 text-primary/80 hover:text-primary whitespace-nowrap"
115-
>
116-
{nav.name}
117-
</Link>
118-
))}
119-
</div>
120-
<div className="flex flex-wrap gap-x-4 gap-y-1 justify-center md:justify-end">
121-
{footerLegalNav.map((nav) => (
122-
<Link
123-
key={nav.name}
124-
href={nav.href}
125-
className="inline rounded-none leading-6 text-primary/80 hover:text-primary whitespace-nowrap"
126-
>
127-
{nav.name}
128-
</Link>
129-
))}
130-
<a
131-
href="#"
132-
onClick={() => (window as any).displayPreferenceModal()}
133-
className="inline rounded-none leading-6 text-primary/80 hover:text-primary"
134-
id="termly-consent-preferences"
135-
>
136-
Cookie Preferences
137-
</a>
138-
</div>
208+
<div className="w-full">
209+
<div className="grid grid-cols-2 md:grid-cols-5 text-base gap-y-8 gap-x-2">
210+
{footerMenu.map((menu) => (
211+
<div key={menu.heading}>
212+
<p className="pb-2 font-mono font-bold text-primary">
213+
{menu.heading}
214+
</p>
215+
<ul className="flex flex-col gap-2">
216+
{menu.items.map((item) => (
217+
<li key={item.name}>
218+
<a
219+
href={item.href}
220+
className="text-sm leading-tight hover:text-primary/80"
221+
>
222+
{item.name}
223+
</a>
224+
</li>
225+
))}
226+
</ul>
227+
</div>
228+
))}
229+
<div />
230+
</div>
231+
<div className="my-8 font-mono text-sm">
232+
© 2022-{new Date().getFullYear()} Finto Technologies
139233
</div>
140-
<span className="text-primary/80">
141-
MIT {new Date().getFullYear()} © Finto Technologies GmbH
142-
</span>
143234
</div>
144235
),
145236
},

0 commit comments

Comments
 (0)