Skip to content

Commit 11ea367

Browse files
Consolidate demo components for better maintainability
1 parent 7494f47 commit 11ea367

File tree

2 files changed

+83
-23
lines changed

2 files changed

+83
-23
lines changed

docs-v2/components/AccountConnectionDemo.jsx

Lines changed: 51 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,77 @@
11
"use client";
22

33
import { useGlobalConnect } from "./GlobalConnectProvider";
4-
import DemoAppSelector from "./DemoAppSelector";
5-
import DemoClientCode from "./DemoClientCode";
6-
import DemoConnectButton from "./DemoConnectButton";
7-
import DemoConnectionStatus from "./DemoConnectionStatus";
4+
import CodeBlock from "./CodeBlock";
85

96
export default function AccountConnectionDemo() {
7+
const {
8+
appSlug,
9+
setAppSlug,
10+
tokenData,
11+
getClientCodeSnippet,
12+
connectAccount,
13+
connectedAccount,
14+
error
15+
} = useGlobalConnect();
16+
1017
return (
11-
<div className="border rounded-md overflow-hidden">
18+
<div className="border rounded-md overflow-hidden mt-4">
1219
<div className="bg-gray-100 border-b px-4 py-2 font-medium text-sm">
13-
Step 2: Connect an Account (Client-side)
20+
Connect an account from your frontend
1421
</div>
1522
<div className="p-4">
1623
<div className="mb-4">
1724
<label className="flex items-center mb-4">
1825
<span className="font-medium text-sm">App to connect:</span>
19-
<span className="ml-2"><DemoAppSelector /></span>
26+
<select
27+
value={appSlug}
28+
onChange={(e) => setAppSlug(e.target.value)}
29+
className="ml-2 p-1 border rounded text-sm"
30+
disabled={!tokenData}
31+
>
32+
<option value="slack">Slack</option>
33+
<option value="github">GitHub</option>
34+
<option value="google_sheets">Google Sheets</option>
35+
</select>
2036
</label>
2137

2238
<div className="mb-4">
23-
<div className="text-sm mb-2 font-medium">Client-side code executed in the browser:</div>
2439
<div className="border border-blue-100 rounded-lg overflow-hidden">
25-
<DemoClientCode />
40+
<CodeBlock code={getClientCodeSnippet()} language="javascript" />
2641
</div>
2742
</div>
2843
</div>
2944

3045
<div className="mt-4 mb-2">
31-
<DemoConnectButton />
46+
<button
47+
onClick={connectAccount}
48+
disabled={!tokenData}
49+
className="px-4 py-2 bg-blue-500 text-white rounded-md hover:bg-blue-600 transition-colors disabled:opacity-50 font-medium text-sm"
50+
>
51+
Connect Account
52+
</button>
3253
</div>
3354

34-
<DemoConnectionStatus />
55+
{error && (
56+
<div className="mt-4 p-3 bg-red-50 border border-red-200 text-red-800 rounded-md">
57+
<div className="font-medium text-sm">Error</div>
58+
<div className="mt-1 text-sm">{error}</div>
59+
</div>
60+
)}
61+
62+
{connectedAccount && (
63+
<div className="mt-4 p-3 bg-green-50 border border-green-200 text-green-800 rounded-md">
64+
<div className="font-medium text-sm">Account successfully connected!</div>
65+
<div className="mt-1 text-sm">
66+
{connectedAccount.name && (
67+
<div>Account name: <span className="font-medium">{connectedAccount.name}</span></div>
68+
)}
69+
{connectedAccount.id && (
70+
<div>Account ID: <span className="font-mono text-xs">{connectedAccount.id}</span></div>
71+
)}
72+
</div>
73+
</div>
74+
)}
3575
</div>
3676
</div>
3777
);

docs-v2/components/TokenGenerationDemo.jsx

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,57 @@
11
"use client";
22

33
import { useGlobalConnect } from "./GlobalConnectProvider";
4-
import DemoExternalUserID from "./DemoExternalUserID";
5-
import DemoServerCode from "./DemoServerCode";
6-
import DemoGenerateTokenButton from "./DemoGenerateTokenButton";
7-
import DemoTokenResponse from "./DemoTokenResponse";
4+
import CodeBlock from "./CodeBlock";
85

96
export default function TokenGenerationDemo() {
7+
const {
8+
externalUserId,
9+
getServerCodeSnippet,
10+
generateToken,
11+
tokenLoading,
12+
tokenData
13+
} = useGlobalConnect();
14+
1015
return (
11-
<div className="border rounded-md overflow-hidden">
16+
<div className="border rounded-md overflow-hidden mt-4">
1217
<div className="bg-gray-100 border-b px-4 py-2 font-medium text-sm">
13-
Step 1: Generate a Connect Token (Server-side)
18+
Generate a Connect Token from your server
1419
</div>
1520
<div className="p-4">
1621
<div className="mb-3">
1722
<div className="flex items-center mb-4">
1823
<span className="font-medium text-sm">External User ID:</span>
19-
<span className="ml-2"><DemoExternalUserID /></span>
24+
<code className="ml-2 px-2 py-1 bg-gray-100 rounded text-sm">{externalUserId}</code>
2025
</div>
21-
2226
<div className="mb-4">
23-
<div className="text-sm mb-2 font-medium">Server-side code running in the API route:</div>
2427
<div className="border border-blue-100 rounded-lg overflow-hidden">
25-
<DemoServerCode />
28+
<CodeBlock code={getServerCodeSnippet()} language="javascript" />
2629
</div>
2730
</div>
2831
</div>
2932

3033
<div className="mt-4 mb-2">
31-
<DemoGenerateTokenButton />
34+
<button
35+
onClick={generateToken}
36+
disabled={tokenLoading}
37+
className="px-4 py-2 bg-blue-500 text-white rounded-md hover:bg-blue-600 transition-colors disabled:opacity-50 font-medium text-sm"
38+
>
39+
{tokenLoading ? "Generating..." : "Generate Token"}
40+
</button>
3241
</div>
3342

34-
<DemoTokenResponse />
43+
{tokenData && (
44+
<div className="mt-4">
45+
<div className="text-sm mb-2 font-medium">Server Response:</div>
46+
<div className="border border-green-200 rounded-lg overflow-hidden">
47+
<CodeBlock
48+
code={JSON.stringify(tokenData, null, 2)}
49+
language="json"
50+
className="max-h-48 overflow-auto"
51+
/>
52+
</div>
53+
</div>
54+
)}
3555
</div>
3656
</div>
3757
);

0 commit comments

Comments
 (0)