Skip to content

Commit d7faed0

Browse files
committed
docs: Add ViewOptions to docs to ask AI
1 parent 437acec commit d7faed0

File tree

17 files changed

+144
-28
lines changed

17 files changed

+144
-28
lines changed

apps/docs/content/docs/dev/sso.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ VitNodeAPI({
333333
plugins: [],
334334
authorization: {
335335
// [!code ++]
336-
ssoProviders: [
336+
ssoAdapters: [
337337
// [!code ++]
338338
DiscordSSOApiPlugin({
339339
// [!code ++]

apps/docs/content/docs/guides/sso/discord.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ VitNodeAPI({
6868
// [!code ++]
6969
authorization: {
7070
// [!code ++]
71-
ssoProviders: [
71+
ssoAdapters: [
7272
// [!code ++]
7373
new DiscordSSOApiPlugin({
7474
// [!code ++]

apps/docs/content/docs/guides/sso/facebook.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ VitNodeAPI({
6262
// [!code ++]
6363
authorization
6464
// [!code ++]
65-
ssoProviders: [
65+
ssoAdapters: [
6666
// [!code ++]
6767
new FacebookSSOApiPlugin({
6868
// [!code ++]

apps/docs/content/docs/guides/sso/google.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ VitNodeAPI({
123123
// [!code ++]
124124
authorization: {
125125
// [!code ++]
126-
ssoProviders: [
126+
ssoAdapters: [
127127
// [!code ++]
128128
new GoogleSSOApiPlugin({
129129
// [!code ++]

apps/docs/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"@types/node": "^24",
2727
"@types/react": "^19.1",
2828
"@types/react-dom": "^19.1",
29+
"class-variance-authority": "^0.7.1",
2930
"postcss": "^8.5.6",
3031
"shiki": "^3.7.0",
3132
"tailwindcss": "^4.1.11",
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
'use client';
2+
3+
// Source: https://github.com/fuma-nama/fumadocs/blob/dev/apps/docs/app/docs/%5B...slug%5D/page.client.tsx
4+
5+
import { ChevronDown } from 'fumadocs-ui/internal/icons';
6+
import { ExternalLinkIcon, MessageCircleIcon } from 'lucide-react';
7+
import { cva } from 'class-variance-authority';
8+
import {
9+
Popover,
10+
PopoverContent,
11+
PopoverTrigger,
12+
} from 'fumadocs-ui/components/ui/popover';
13+
import { cn } from 'fumadocs-ui/utils/cn';
14+
import { buttonVariants } from 'fumadocs-ui/components/ui/button';
15+
import React from 'react';
16+
17+
const optionVariants = cva(
18+
'text-sm p-2 rounded-lg inline-flex items-center gap-2 hover:text-fd-accent-foreground hover:bg-fd-accent [&_svg]:size-4',
19+
);
20+
21+
export function ViewOptions(props: { markdownUrl: string; githubUrl: string }) {
22+
const markdownUrl = new URL(props.markdownUrl, 'https://vitnode.com/');
23+
const q = `Read ${markdownUrl}, I want to ask questions about it.`;
24+
25+
const claude = `https://claude.ai/new?${new URLSearchParams({
26+
q,
27+
})}`;
28+
const gpt = `https://chatgpt.com/?${new URLSearchParams({
29+
hints: 'search',
30+
q,
31+
})}`;
32+
const t3 = `https://t3.chat/new?${new URLSearchParams({
33+
q,
34+
})}`;
35+
36+
return (
37+
<Popover>
38+
<PopoverTrigger
39+
className={cn(
40+
buttonVariants({
41+
color: 'secondary',
42+
size: 'sm',
43+
className: 'gap-2',
44+
}),
45+
)}
46+
>
47+
Open in
48+
<ChevronDown className="text-fd-muted-foreground size-3.5" />
49+
</PopoverTrigger>
50+
<PopoverContent className="flex flex-col overflow-auto">
51+
{[
52+
{
53+
title: 'Open in GitHub',
54+
href: props.githubUrl,
55+
icon: (
56+
<svg fill="currentColor" role="img" viewBox="0 0 24 24">
57+
<title>GitHub</title>
58+
<path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" />
59+
</svg>
60+
),
61+
},
62+
{
63+
title: 'Open in ChatGPT',
64+
href: gpt,
65+
icon: (
66+
<svg
67+
role="img"
68+
viewBox="0 0 24 24"
69+
fill="currentColor"
70+
xmlns="http://www.w3.org/2000/svg"
71+
>
72+
<title>OpenAI</title>
73+
<path d="M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z" />
74+
</svg>
75+
),
76+
},
77+
{
78+
title: 'Open in Claude',
79+
href: claude,
80+
icon: (
81+
<svg
82+
fill="currentColor"
83+
role="img"
84+
viewBox="0 0 24 24"
85+
xmlns="http://www.w3.org/2000/svg"
86+
>
87+
<title>Anthropic</title>
88+
<path d="M17.3041 3.541h-3.6718l6.696 16.918H24Zm-10.6082 0L0 20.459h3.7442l1.3693-3.5527h7.0052l1.3693 3.5528h3.7442L10.5363 3.5409Zm-.3712 10.2232 2.2914-5.9456 2.2914 5.9456Z" />
89+
</svg>
90+
),
91+
},
92+
{
93+
title: 'Open in T3 Chat',
94+
href: t3,
95+
icon: <MessageCircleIcon />,
96+
},
97+
].map(item => (
98+
<a
99+
key={item.href}
100+
href={item.href}
101+
rel="noreferrer noopener"
102+
target="_blank"
103+
className={cn(optionVariants())}
104+
>
105+
{item.icon}
106+
{item.title}
107+
<ExternalLinkIcon className="text-fd-muted-foreground ms-auto size-3.5" />
108+
</a>
109+
))}
110+
</PopoverContent>
111+
</Popover>
112+
);
113+
}

apps/docs/src/app/docs/[[...slug]]/page.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { source } from '@/lib/source';
22
import { DocsPage, DocsBody } from 'fumadocs-ui/page';
33
import { notFound, redirect } from 'next/navigation';
44
import defaultMdxComponents from 'fumadocs-ui/mdx';
5+
import { ViewOptions } from './page.client';
56

67
export default async function Page(props: {
78
params: Promise<{ slug?: string[] }>;
@@ -10,20 +11,12 @@ export default async function Page(props: {
1011
if (!params.slug) {
1112
redirect('/docs/dev');
1213
}
13-
1414
const page = source.getPage(params.slug);
1515
if (!page) notFound();
16-
const path = `docs/${page.file.path}`;
1716
const MDX = page.data.body;
1817

1918
return (
2019
<DocsPage
21-
editOnGithub={{
22-
repo: 'vitnode',
23-
owner: 'vitnode',
24-
sha: 'canary',
25-
path,
26-
}}
2720
tableOfContent={{
2821
style: 'clerk',
2922
single: false,
@@ -36,6 +29,13 @@ export default async function Page(props: {
3629
{page.data.title}
3730
</h1>
3831
<p className="text-muted-foreground text-lg">{page.data.description}</p>
32+
33+
<div className="flex flex-row items-center gap-2 border-b pb-6 pt-2">
34+
<ViewOptions
35+
markdownUrl={page.url}
36+
githubUrl={`https://github.com/aXenDeveloper/vitnode/blob/canary/apps/docs/content/docs/${page.path}`}
37+
/>
38+
</div>
3939
</div>
4040

4141
<DocsBody>

apps/docs/src/app/docs/layout.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,17 @@ export default function Layout({ children }: { children: ReactNode }) {
1414
const meta = source.getNodeMeta(node);
1515
if (!meta || !node.icon) return option;
1616

17-
const color = `var(--${meta.file.dirname}-color, var(--color-fd-foreground))`;
17+
const color = `var(--${meta.path.split('/')[0]}-color, var(--color-fd-foreground))`;
1818

1919
return {
2020
...option,
2121
icon: (
2222
<div
23-
className="[&_svg]:size-6.5 rounded-md p-1 shadow-lg ring-2 md:[&_svg]:size-5"
23+
className="max-md:bg-(--tab-color)/10 size-full rounded-lg max-md:border max-md:p-1.5 [&_svg]:size-full"
2424
style={
2525
{
2626
color,
27-
border: `1px solid color-mix(in oklab, ${color} 50%, transparent)`,
28-
'--tw-ring-color': `color-mix(in oklab, ${color} 20%, transparent)`,
27+
'--tab-color': color,
2928
} as object
3029
}
3130
>

apps/docs/src/content/docs/guides/sso/discord.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ VitNodeAPI({
6868
// [!code ++]
6969
authorization: {
7070
// [!code ++]
71-
ssoProviders: [
71+
ssoAdapters: [
7272
// [!code ++]
7373
new DiscordSSOApiPlugin({
7474
// [!code ++]

apps/docs/src/content/docs/guides/sso/facebook.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ VitNodeAPI({
6262
// [!code ++]
6363
authorization
6464
// [!code ++]
65-
ssoProviders: [
65+
ssoAdapters: [
6666
// [!code ++]
6767
new FacebookSSOApiPlugin({
6868
// [!code ++]

0 commit comments

Comments
 (0)