Skip to content

Commit 785241e

Browse files
authored
Address playground feedback (#74)
1 parent c63d61e commit 785241e

4 files changed

Lines changed: 42 additions & 10 deletions

File tree

src/components/playground/PlaygroundBeginnerBanner.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
1-
import React from "react";
1+
import { Icon } from "@iconify/react";
2+
import React, { useState } from "react";
23

34
export default function PlaygroundBeginnerBanner() {
5+
const [closed, setClosed] = useState(false);
6+
7+
if (closed) return null;
8+
49
return (
5-
<div className="bg-green-50 dark:bg-green-900/20 border border-green-200 dark:border-green-800 rounded-lg p-4">
10+
<div className="bg-green-50 dark:bg-green-900/20 border border-green-200 dark:border-green-800 rounded-lg p-4 relative">
11+
<button
12+
onClick={() => setClosed(true)}
13+
className="absolute top-2 right-2 text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300"
14+
>
15+
<Icon icon="iconamoon:close-fill" height={25} />
16+
</button>
17+
618
<div className="flex items-start space-x-3">
719
<div className="flex-shrink-0 mt-1">
820
<svg

src/components/playground/PlaygroundConfigEditor.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,12 +246,12 @@ export default function PlaygroundConfigEditor({
246246
className="rounded border-gray-300 text-blue-600 focus:ring-blue-500"
247247
/>
248248
<span className="ml-2 text-sm text-gray-700 dark:text-gray-300">
249-
Simulate False Positive
249+
Simulate high solving time
250250
</span>
251251
</label>
252252
<div className="text-xs text-gray-500 dark:text-gray-400 mt-1.5">
253253
{settings.simulateFalsePositive
254-
? "The widget will simulate that the user is suspicious and might be a bot"
254+
? "The widget will simulate that the user is suspicious which results in a high solving time"
255255
: "The widget will behave normally"}
256256
</div>
257257
</div>

src/components/playground/PlaygroundVersionInfoBanner.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,25 @@
1+
import { Icon } from "@iconify/react";
12
import { PlaygroundSettings } from "@site/src/lib/playground";
2-
import React from "react";
3+
import React, { useState } from "react";
34

45
export default function PlaygroundVersionInfoBanner({
56
settings,
67
}: {
78
settings: PlaygroundSettings;
89
}) {
10+
const [closed, setClosed] = useState(false);
11+
12+
if (closed) return null;
13+
914
return (
10-
<div className="mb-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
15+
<div className="mb-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg relative">
16+
<button
17+
onClick={() => setClosed(true)}
18+
className="absolute top-2 right-2 text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300"
19+
>
20+
<Icon icon="iconamoon:close-fill" height={25} />
21+
</button>
22+
1123
<div className="flex items-start space-x-3">
1224
<div className="flex-shrink-0 mt-1">
1325
<svg

src/components/playground/PlaygroundWidgetPreview.tsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ import {
44
WidgetEvent,
55
} from "@site/src/lib/playground";
66
import { WidgetInstance } from "friendly-challenge";
7-
import React, { useEffect, useRef, useState } from "react";
7+
import React, { useEffect, useMemo, useRef, useState } from "react";
88
import PlaygroundForm from "./PlaygroundForm";
99
import { FriendlyCaptchaSDK, WidgetHandle } from "@friendlycaptcha/sdk";
1010
import PlaygroundFormHeader from "./PlaygroundFormHeader";
11+
import { useColorMode } from "@docusaurus/theme-common";
1112

1213
const friendlyCaptchaSDK = new FriendlyCaptchaSDK({
1314
disableEvalPatching: true,
@@ -39,9 +40,16 @@ export default function PlaygroundWidgetPreview({
3940
const widgetInstanceRef = useRef<WidgetInstance | WidgetHandle>(null);
4041
const clenaupFunc = useRef<() => void>(null);
4142

43+
const { colorMode } = useColorMode();
44+
4245
const [isCreating, setIsCreating] = useState<boolean>(false);
4346
const [widgetState, setWidgetState] = useState<string>("none");
4447

48+
const resolvedTheme = useMemo(
49+
() => (settings.theme === "auto" ? colorMode : settings.theme),
50+
[colorMode, settings.theme]
51+
);
52+
4553
const getSitekey = () => {
4654
if (settings.version === "v1") {
4755
// v1 doesn't have widget modes, use any sitekey
@@ -142,7 +150,7 @@ export default function PlaygroundWidgetPreview({
142150
element: widgetRef.current,
143151
sitekey: getSitekey(),
144152
startMode: settings.startMode,
145-
theme: settings.theme,
153+
theme: resolvedTheme,
146154
language:
147155
settings.language !== "auto" ? settings.language : undefined,
148156
apiEndpoint:
@@ -270,11 +278,11 @@ export default function PlaygroundWidgetPreview({
270278
settings.version,
271279
settings.widgetMode,
272280
settings.startMode,
273-
settings.theme,
274281
settings.endpoint,
275282
settings.customEndpoint,
276283
settings.language,
277284
settings.simulateFalsePositive,
285+
resolvedTheme,
278286
]);
279287

280288
return (
@@ -292,7 +300,7 @@ export default function PlaygroundWidgetPreview({
292300
key={`widget-${settings.version}`}
293301
ref={widgetRef}
294302
className={
295-
"frc-captcha" + (settings.theme === "dark" ? " dark" : "")
303+
"frc-captcha" + (resolvedTheme === "dark" ? " dark" : "")
296304
}
297305
/>
298306
<button

0 commit comments

Comments
 (0)