zudoku 0.52.1 → 0.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/demo.js +2 -2
- package/dist/app/demo.js.map +1 -1
- package/dist/app/main.js +4 -4
- package/dist/app/standalone.js +3 -3
- package/dist/app/standalone.js.map +1 -1
- package/dist/config/validators/validate.d.ts +2 -2
- package/dist/config/validators/validate.js +3 -3
- package/dist/config/validators/validate.js.map +1 -1
- package/dist/flat-config.d.ts +325 -0
- package/dist/lib/components/Autocomplete.js +1 -1
- package/dist/lib/components/Autocomplete.js.map +1 -1
- package/dist/lib/components/Banner.js +1 -1
- package/dist/lib/components/Banner.js.map +1 -1
- package/dist/lib/components/Footer.js +1 -1
- package/dist/lib/components/Footer.js.map +1 -1
- package/dist/lib/components/Header.js +10 -10
- package/dist/lib/components/Header.js.map +1 -1
- package/dist/lib/components/Main.js +1 -1
- package/dist/lib/components/MobileTopNavigation.js +1 -1
- package/dist/lib/components/navigation/NavigationWrapper.js +1 -1
- package/dist/lib/core/ZudokuContext.d.ts +4 -4
- package/dist/lib/core/ZudokuContext.js +2 -2
- package/dist/lib/plugins/openapi/playground/BodyPanel.d.ts +2 -2
- package/dist/lib/plugins/openapi/playground/BodyPanel.js +4 -3
- package/dist/lib/plugins/openapi/playground/BodyPanel.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/Headers.js +1 -1
- package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/PathParams.js +1 -1
- package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/Playground.js +8 -13
- package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/QueryParams.js +2 -2
- package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.d.ts +3 -1
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.js +5 -2
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +6 -4
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.d.ts +3 -1
- package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js +2 -2
- package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js.map +1 -1
- package/dist/lib/ui/Dialog.js +1 -1
- package/dist/lib/ui/Dialog.js.map +1 -1
- package/dist/vite/build.js +1 -1
- package/dist/vite/dev-server.js +1 -1
- package/lib/{Command-CPtGTZAL.js → Command-xsbs2uhf.js} +2 -2
- package/lib/{Command-CPtGTZAL.js.map → Command-xsbs2uhf.js.map} +1 -1
- package/lib/{Dialog-DGlrUTCS.js → Dialog-CiIdyz6a.js} +3 -3
- package/lib/Dialog-CiIdyz6a.js.map +1 -0
- package/lib/{MdxPage-D-QSUlMf.js → MdxPage-swXPJ0gf.js} +3 -3
- package/lib/{MdxPage-D-QSUlMf.js.map → MdxPage-swXPJ0gf.js.map} +1 -1
- package/lib/{OasProvider-DKB2uJU-.js → OasProvider-CDAM3TB1.js} +2 -2
- package/lib/{OasProvider-DKB2uJU-.js.map → OasProvider-CDAM3TB1.js.map} +1 -1
- package/lib/{OperationList-CccIt45w.js → OperationList-C9Hb9ql8.js} +6 -6
- package/lib/{OperationList-CccIt45w.js.map → OperationList-C9Hb9ql8.js.map} +1 -1
- package/lib/{Pagination-ClHXydm9.js → Pagination-VGlgeCmS.js} +2 -2
- package/lib/{Pagination-ClHXydm9.js.map → Pagination-VGlgeCmS.js.map} +1 -1
- package/lib/{RouteGuard-Bd-ppFbi.js → RouteGuard-CbKd7_9h.js} +2 -2
- package/lib/{RouteGuard-Bd-ppFbi.js.map → RouteGuard-CbKd7_9h.js.map} +1 -1
- package/lib/{SchemaList-DY3FBF2U.js → SchemaList-BAbh1BXO.js} +4 -4
- package/lib/{SchemaList-DY3FBF2U.js.map → SchemaList-BAbh1BXO.js.map} +1 -1
- package/lib/{SchemaView-matL2maR.js → SchemaView-C2Io712T.js} +3 -3
- package/lib/{SchemaView-matL2maR.js.map → SchemaView-C2Io712T.js.map} +1 -1
- package/lib/{SignUp-CfojO4Pb.js → SignUp-5RUdVhnq.js} +2 -2
- package/lib/{SignUp-CfojO4Pb.js.map → SignUp-5RUdVhnq.js.map} +1 -1
- package/lib/{circular-CqHpo7-e.js → circular-B42RaanD.js} +2 -2
- package/lib/{circular-CqHpo7-e.js.map → circular-B42RaanD.js.map} +1 -1
- package/lib/{createServer-ByKo3XCG.js → createServer-BKFsRuuk.js} +3 -3
- package/lib/{createServer-ByKo3XCG.js.map → createServer-BKFsRuuk.js.map} +1 -1
- package/lib/{errors-BsabiSKg.js → errors-CF2X_x5o.js} +3 -3
- package/lib/{errors-BsabiSKg.js.map → errors-CF2X_x5o.js.map} +1 -1
- package/lib/{index-CEfpz8vY.js → index-B6Re5_cx.js} +843 -832
- package/lib/index-B6Re5_cx.js.map +1 -0
- package/lib/{index-BIbCx5Fh.js → index-CLy1XyH0.js} +14 -14
- package/lib/{index-BIbCx5Fh.js.map → index-CLy1XyH0.js.map} +1 -1
- package/lib/ui/Command.js +1 -1
- package/lib/ui/Dialog.js +23 -23
- package/lib/ui/Dialog.js.map +1 -1
- package/lib/zudoku.auth-azureb2c.js +1 -1
- package/lib/zudoku.auth-clerk.js +1 -1
- package/lib/zudoku.auth-openid.js +1 -1
- package/lib/zudoku.components.js +2 -2
- package/lib/zudoku.plugin-api-catalog.js +2 -2
- package/lib/zudoku.plugin-api-keys.js +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-openapi.js +1 -1
- package/lib/zudoku.plugin-search-pagefind.js +3 -3
- package/package.json +1 -1
- package/src/app/demo.tsx +2 -2
- package/src/app/main.tsx +4 -4
- package/src/app/standalone.tsx +3 -3
- package/src/lib/components/Autocomplete.tsx +1 -1
- package/src/lib/components/Banner.tsx +1 -1
- package/src/lib/components/Footer.tsx +1 -1
- package/src/lib/components/Header.tsx +15 -17
- package/src/lib/components/Main.tsx +1 -1
- package/src/lib/components/MobileTopNavigation.tsx +2 -2
- package/src/lib/components/navigation/NavigationWrapper.tsx +1 -1
- package/src/lib/core/ZudokuContext.ts +5 -5
- package/src/lib/plugins/openapi/playground/BodyPanel.tsx +6 -5
- package/src/lib/plugins/openapi/playground/Headers.tsx +1 -1
- package/src/lib/plugins/openapi/playground/PathParams.tsx +1 -1
- package/src/lib/plugins/openapi/playground/Playground.tsx +73 -84
- package/src/lib/plugins/openapi/playground/QueryParams.tsx +3 -1
- package/src/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.tsx +13 -2
- package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +22 -17
- package/src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx +6 -0
- package/src/lib/ui/Dialog.tsx +2 -2
- package/lib/Dialog-DGlrUTCS.js.map +0 -1
- package/lib/index-CEfpz8vY.js.map +0 -1
|
@@ -397,101 +397,88 @@ export const Playground = ({
|
|
|
397
397
|
/>
|
|
398
398
|
|
|
399
399
|
<div className="grid grid-cols-[1fr_1px_1fr] text-sm">
|
|
400
|
-
<div className="col-span-3 p-4 border-b">
|
|
401
|
-
<div className="flex
|
|
402
|
-
<div className="
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
<div className="
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
<UrlQueryParams />
|
|
411
|
-
</div>
|
|
412
|
-
<div
|
|
413
|
-
className="h-full bg-primary/25 absolute left-0 -bottom-0 z-10 transition-all duration-300 ease-in-out"
|
|
414
|
-
style={{
|
|
415
|
-
opacity: isFinished ? 0 : 1,
|
|
416
|
-
width: isFinished ? 0 : `${progress * 100}%`,
|
|
417
|
-
}}
|
|
418
|
-
/>
|
|
419
|
-
</div>
|
|
420
|
-
<div className="px-1">
|
|
421
|
-
<Button
|
|
422
|
-
type="button"
|
|
423
|
-
onClick={() => {
|
|
424
|
-
copyToClipboard(
|
|
425
|
-
createUrl(
|
|
426
|
-
server ?? selectedServer,
|
|
427
|
-
url,
|
|
428
|
-
form.getValues(),
|
|
429
|
-
).toString(),
|
|
430
|
-
);
|
|
431
|
-
}}
|
|
432
|
-
variant="ghost"
|
|
433
|
-
size="icon-xs"
|
|
434
|
-
className={cn(
|
|
435
|
-
"hover:opacity-100 transition",
|
|
436
|
-
isCopied
|
|
437
|
-
? "text-emerald-600 opacity-100"
|
|
438
|
-
: "opacity-50",
|
|
439
|
-
)}
|
|
440
|
-
>
|
|
441
|
-
{isCopied ? (
|
|
442
|
-
<CheckIcon className="text-green-500" size={14} />
|
|
443
|
-
) : (
|
|
444
|
-
<CopyIcon size={14} />
|
|
445
|
-
)}
|
|
446
|
-
</Button>
|
|
400
|
+
<div className="col-span-3 p-4 border-b flex gap-2 items-stretch">
|
|
401
|
+
<div className="flex flex-1 items-center w-full border rounded-md relative overflow-hidden">
|
|
402
|
+
<div className="border-r p-2 bg-muted rounded-l-md self-stretch font-semibold font-mono flex items-center">
|
|
403
|
+
{method.toUpperCase()}
|
|
404
|
+
</div>
|
|
405
|
+
<div className="items-center px-2 font-mono text-xs break-all leading-6 relative h-full w-full">
|
|
406
|
+
<div className="h-full py-1.5">
|
|
407
|
+
{serverSelect}
|
|
408
|
+
<UrlPath url={url} />
|
|
409
|
+
<UrlQueryParams />
|
|
447
410
|
</div>
|
|
448
411
|
</div>
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
412
|
+
<div className="px-1">
|
|
413
|
+
<Button
|
|
414
|
+
type="button"
|
|
415
|
+
onClick={() => {
|
|
416
|
+
copyToClipboard(
|
|
417
|
+
createUrl(
|
|
418
|
+
server ?? selectedServer,
|
|
419
|
+
url,
|
|
420
|
+
form.getValues(),
|
|
421
|
+
).toString(),
|
|
457
422
|
);
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
423
|
+
}}
|
|
424
|
+
variant="ghost"
|
|
425
|
+
size="icon-xs"
|
|
426
|
+
className={cn(
|
|
427
|
+
"hover:opacity-100 transition",
|
|
428
|
+
isCopied ? "text-emerald-600 opacity-100" : "opacity-50",
|
|
429
|
+
)}
|
|
430
|
+
>
|
|
431
|
+
{isCopied ? (
|
|
432
|
+
<CheckIcon className="text-green-500" size={14} />
|
|
433
|
+
) : (
|
|
434
|
+
<CopyIcon size={14} />
|
|
435
|
+
)}
|
|
436
|
+
</Button>
|
|
437
|
+
</div>
|
|
465
438
|
</div>
|
|
439
|
+
|
|
440
|
+
<Button
|
|
441
|
+
type="submit"
|
|
442
|
+
variant={queryMutation.isPending ? "destructive" : "default"}
|
|
443
|
+
onClick={(e) => {
|
|
444
|
+
if (queryMutation.isPending) {
|
|
445
|
+
abortControllerRef.current?.abort(
|
|
446
|
+
"Request cancelled by user",
|
|
447
|
+
);
|
|
448
|
+
e.preventDefault();
|
|
449
|
+
}
|
|
450
|
+
}}
|
|
451
|
+
className="w-18"
|
|
452
|
+
>
|
|
453
|
+
{queryMutation.isPending ? "Cancel" : "Send"}
|
|
454
|
+
</Button>
|
|
466
455
|
</div>
|
|
467
456
|
<div className="relative overflow-y-auto h-[80vh]">
|
|
468
457
|
{identities.data?.length !== 0 && (
|
|
469
|
-
<
|
|
470
|
-
<
|
|
471
|
-
<
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
</CollapsibleContent>
|
|
485
|
-
</Collapsible>
|
|
486
|
-
</div>
|
|
487
|
-
</div>
|
|
458
|
+
<Collapsible defaultOpen>
|
|
459
|
+
<CollapsibleHeaderTrigger>
|
|
460
|
+
<IdCardLanyardIcon size={16} />
|
|
461
|
+
<CollapsibleHeader className="col-span-2">
|
|
462
|
+
Authentication
|
|
463
|
+
</CollapsibleHeader>
|
|
464
|
+
</CollapsibleHeaderTrigger>
|
|
465
|
+
<CollapsibleContent className="CollapsibleContent">
|
|
466
|
+
<IdentitySelector
|
|
467
|
+
value={identity}
|
|
468
|
+
identities={identities.data ?? []}
|
|
469
|
+
setValue={(value) => setValue("identity", value)}
|
|
470
|
+
/>
|
|
471
|
+
</CollapsibleContent>
|
|
472
|
+
</Collapsible>
|
|
488
473
|
)}
|
|
489
474
|
|
|
490
475
|
{pathParams.length > 0 && (
|
|
491
476
|
<Collapsible defaultOpen>
|
|
492
|
-
<CollapsibleHeaderTrigger
|
|
477
|
+
<CollapsibleHeaderTrigger>
|
|
493
478
|
<ShapesIcon size={16} />
|
|
494
|
-
<CollapsibleHeader
|
|
479
|
+
<CollapsibleHeader className="col-span-2">
|
|
480
|
+
Path Parameters
|
|
481
|
+
</CollapsibleHeader>
|
|
495
482
|
</CollapsibleHeaderTrigger>
|
|
496
483
|
<CollapsibleContent className="CollapsibleContent">
|
|
497
484
|
<PathParams url={url} control={control} />
|
|
@@ -506,12 +493,14 @@ export const Playground = ({
|
|
|
506
493
|
schemaHeaders={headers}
|
|
507
494
|
lockedHeaders={authorizationFields?.headers}
|
|
508
495
|
/>
|
|
509
|
-
{isBodySupported && <BodyPanel
|
|
496
|
+
{isBodySupported && <BodyPanel content={examples} />}
|
|
510
497
|
</div>
|
|
511
498
|
<div className="w-full bg-muted-foreground/20" />
|
|
512
499
|
<ResultPanel
|
|
513
500
|
queryMutation={queryMutation}
|
|
514
501
|
showLongRunningWarning={showLongRunningWarning}
|
|
502
|
+
isFinished={isFinished}
|
|
503
|
+
progress={progress}
|
|
515
504
|
tip={
|
|
516
505
|
<div className="text-xs w-full">
|
|
517
506
|
<span className="text-muted-foreground">
|
|
@@ -90,6 +90,7 @@ export const QueryParams = ({
|
|
|
90
90
|
render={({ field }) =>
|
|
91
91
|
!requiredFields[i] ? (
|
|
92
92
|
<Autocomplete
|
|
93
|
+
placeholder="Name"
|
|
93
94
|
value={field.value}
|
|
94
95
|
options={schemaQueryParams.map((param) => param.name)}
|
|
95
96
|
onChange={(e) => {
|
|
@@ -131,7 +132,8 @@ export const QueryParams = ({
|
|
|
131
132
|
setValue(`queryParams.${i}.active`, true);
|
|
132
133
|
}
|
|
133
134
|
}}
|
|
134
|
-
placeholder="
|
|
135
|
+
placeholder="Value"
|
|
136
|
+
aria-label="Query parameter value"
|
|
135
137
|
className="w-full border-0 p-0 m-0 shadow-none focus-visible:ring-0 text-xs font-mono"
|
|
136
138
|
/>
|
|
137
139
|
);
|
|
@@ -59,10 +59,14 @@ export const ResponseStatusBar = ({
|
|
|
59
59
|
status,
|
|
60
60
|
time,
|
|
61
61
|
size,
|
|
62
|
+
isFinished,
|
|
63
|
+
progress,
|
|
62
64
|
}: {
|
|
63
65
|
status?: number;
|
|
64
66
|
time?: number;
|
|
65
67
|
size?: number;
|
|
68
|
+
isFinished: boolean;
|
|
69
|
+
progress: number;
|
|
66
70
|
}) => {
|
|
67
71
|
const statusCodeMap: Record<number, string> = {
|
|
68
72
|
200: "OK",
|
|
@@ -78,7 +82,7 @@ export const ResponseStatusBar = ({
|
|
|
78
82
|
};
|
|
79
83
|
|
|
80
84
|
return (
|
|
81
|
-
<div className="flex h-10 text-xs gap-4 px-4 items-center justify-between font-mono border-b">
|
|
85
|
+
<div className="relative flex h-10 text-xs gap-4 px-4 items-center justify-between font-mono border-b">
|
|
82
86
|
<div className="flex items-center gap-2">
|
|
83
87
|
<ResponseCodeCircle status={status} /> {status ?? "Sending Request..."}
|
|
84
88
|
{status ? ` ${statusCodeMap[status]}` : ""}
|
|
@@ -86,7 +90,7 @@ export const ResponseStatusBar = ({
|
|
|
86
90
|
<div className="flex gap-2">
|
|
87
91
|
<div>
|
|
88
92
|
<span className="text-muted-foreground">Size</span>{" "}
|
|
89
|
-
<span className="inline-block text-end w-[5ch]">
|
|
93
|
+
<span className="inline-block text-end min-w-[5ch]">
|
|
90
94
|
{size ? humanFileSize(size) : "- B"}
|
|
91
95
|
</span>
|
|
92
96
|
</div>
|
|
@@ -97,6 +101,13 @@ export const ResponseStatusBar = ({
|
|
|
97
101
|
ms
|
|
98
102
|
</div>
|
|
99
103
|
</div>
|
|
104
|
+
<div
|
|
105
|
+
className="h-full bg-neutral-500/10 absolute left-0 -bottom-0 z-10 transition-all duration-200 ease-in-out"
|
|
106
|
+
style={{
|
|
107
|
+
opacity: isFinished ? 0 : 1,
|
|
108
|
+
width: isFinished ? 0 : `${progress * 100}%`,
|
|
109
|
+
}}
|
|
110
|
+
/>
|
|
100
111
|
</div>
|
|
101
112
|
);
|
|
102
113
|
};
|
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
SelectTrigger,
|
|
20
20
|
SelectValue,
|
|
21
21
|
} from "zudoku/ui/Select.js";
|
|
22
|
+
import createVariantComponent from "../../../../util/createVariantComponent.js";
|
|
22
23
|
import { humanFileSize } from "../../../../util/humanFileSize.js";
|
|
23
24
|
import {
|
|
24
25
|
CollapsibleHeader,
|
|
@@ -82,6 +83,13 @@ const sortHeadersByRelevance = (
|
|
|
82
83
|
|
|
83
84
|
const MAX_HEADERS_TO_SHOW = 3;
|
|
84
85
|
|
|
86
|
+
const Row = createVariantComponent(
|
|
87
|
+
"div",
|
|
88
|
+
"grid-cols-subgrid grid border-b col-span-full px-4 py-1.5 font-mono text-xs",
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
const RowContent = createVariantComponent("div", "py-1 break-all");
|
|
92
|
+
|
|
85
93
|
export const ResponseTab = ({
|
|
86
94
|
body = "",
|
|
87
95
|
headers,
|
|
@@ -134,14 +142,11 @@ export const ResponseTab = ({
|
|
|
134
142
|
|
|
135
143
|
const sortedHeaders = sortHeadersByRelevance([...headers]);
|
|
136
144
|
|
|
137
|
-
const headerStyle =
|
|
138
|
-
"grid-cols-subgrid grid border-b col-span-full px-4 py-1.5 font-mono text-xs";
|
|
139
|
-
|
|
140
145
|
return (
|
|
141
146
|
<>
|
|
142
147
|
<Collapsible defaultOpen>
|
|
143
148
|
<CollapsibleHeaderTrigger>
|
|
144
|
-
<
|
|
149
|
+
<CornerDownRightIcon size={16} />
|
|
145
150
|
<CollapsibleHeader className="col-span-2">
|
|
146
151
|
Header Request
|
|
147
152
|
</CollapsibleHeader>
|
|
@@ -151,10 +156,10 @@ export const ResponseTab = ({
|
|
|
151
156
|
{request.headers
|
|
152
157
|
.slice(0, MAX_HEADERS_TO_SHOW)
|
|
153
158
|
.map(([key, value]) => (
|
|
154
|
-
<
|
|
155
|
-
<
|
|
156
|
-
<
|
|
157
|
-
</
|
|
159
|
+
<Row key={key}>
|
|
160
|
+
<RowContent>{key}</RowContent>
|
|
161
|
+
<RowContent>{value}</RowContent>
|
|
162
|
+
</Row>
|
|
158
163
|
))}
|
|
159
164
|
</div>
|
|
160
165
|
</CollapsibleContent>
|
|
@@ -162,7 +167,7 @@ export const ResponseTab = ({
|
|
|
162
167
|
|
|
163
168
|
<Collapsible defaultOpen>
|
|
164
169
|
<CollapsibleHeaderTrigger>
|
|
165
|
-
<
|
|
170
|
+
<CornerDownLeftIcon size={16} />
|
|
166
171
|
<CollapsibleHeader className="col-span-2">
|
|
167
172
|
Header Response
|
|
168
173
|
</CollapsibleHeader>
|
|
@@ -170,10 +175,10 @@ export const ResponseTab = ({
|
|
|
170
175
|
<CollapsibleContent>
|
|
171
176
|
<div className="grid grid-cols-2 gap-x-6 text-sm">
|
|
172
177
|
{sortedHeaders.slice(0, MAX_HEADERS_TO_SHOW).map(([key, value]) => (
|
|
173
|
-
<
|
|
174
|
-
<
|
|
175
|
-
<
|
|
176
|
-
</
|
|
178
|
+
<Row key={key}>
|
|
179
|
+
<RowContent>{key}</RowContent>
|
|
180
|
+
<RowContent>{value}</RowContent>
|
|
181
|
+
</Row>
|
|
177
182
|
))}
|
|
178
183
|
{sortedHeaders.length > MAX_HEADERS_TO_SHOW && (
|
|
179
184
|
<Collapsible className="col-span-full grid-cols-subgrid grid group">
|
|
@@ -188,10 +193,10 @@ export const ResponseTab = ({
|
|
|
188
193
|
{sortedHeaders
|
|
189
194
|
.slice(MAX_HEADERS_TO_SHOW)
|
|
190
195
|
.map(([key, value]) => (
|
|
191
|
-
<
|
|
192
|
-
<
|
|
193
|
-
<
|
|
194
|
-
</
|
|
196
|
+
<Row key={key}>
|
|
197
|
+
<RowContent>{key}</RowContent>
|
|
198
|
+
<RowContent>{value}</RowContent>
|
|
199
|
+
</Row>
|
|
195
200
|
))}
|
|
196
201
|
</CollapsibleContent>
|
|
197
202
|
</Collapsible>
|
|
@@ -13,11 +13,15 @@ export const ResultPanel = ({
|
|
|
13
13
|
showLongRunningWarning,
|
|
14
14
|
onCancel,
|
|
15
15
|
tip,
|
|
16
|
+
isFinished,
|
|
17
|
+
progress,
|
|
16
18
|
}: {
|
|
17
19
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
20
|
queryMutation: UseMutationResult<PlaygroundResult, Error, any>;
|
|
19
21
|
showLongRunningWarning?: boolean;
|
|
20
22
|
onCancel?: () => void;
|
|
23
|
+
isFinished: boolean;
|
|
24
|
+
progress: number;
|
|
21
25
|
tip?: React.ReactNode;
|
|
22
26
|
}) => {
|
|
23
27
|
return (
|
|
@@ -27,6 +31,8 @@ export const ResultPanel = ({
|
|
|
27
31
|
status={queryMutation.data?.status}
|
|
28
32
|
time={queryMutation.data?.time}
|
|
29
33
|
size={queryMutation.data?.size}
|
|
34
|
+
isFinished={isFinished}
|
|
35
|
+
progress={progress}
|
|
30
36
|
/>
|
|
31
37
|
)}
|
|
32
38
|
{queryMutation.error ? (
|
package/src/lib/ui/Dialog.tsx
CHANGED
|
@@ -45,8 +45,8 @@ const DialogContent = React.forwardRef<
|
|
|
45
45
|
>
|
|
46
46
|
{children}
|
|
47
47
|
{showCloseButton && (
|
|
48
|
-
<DialogPrimitive.Close className="absolute -
|
|
49
|
-
<XIcon className="h-
|
|
48
|
+
<DialogPrimitive.Close className="absolute left-1 top-1 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground">
|
|
49
|
+
<XIcon className="h-3 w-3" strokeWidth={2} />
|
|
50
50
|
<span className="sr-only">Close</span>
|
|
51
51
|
</DialogPrimitive.Close>
|
|
52
52
|
)}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog-DGlrUTCS.js","sources":["../src/lib/ui/Dialog.tsx"],"sourcesContent":["import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport * as React from \"react\";\n\nimport { XIcon } from \"lucide-react\";\nimport { cn } from \"../util/cn.js\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n }\n>(({ className, children, showCloseButton = true, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close className=\"absolute -right-2 -top-2 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <XIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"],"names":["Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","React","className","props","ref","jsx","cn","DialogContent","children","showCloseButton","jsxs","XIcon","DialogHeader","DialogFooter","DialogTitle","DialogDescription"],"mappings":";;;;;AAMA,MAAMA,IAASC,EAAgB,MAEzBC,IAAgBD,EAAgB,SAEhCE,IAAeF,EAAgB,QAE/BG,IAAcH,EAAgB,OAE9BI,IAAgBC,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1BC,gBAAAA,EAAA;AAAA,EAACT,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAQ;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAc,cAAcJ,EAAgB,QAAQ;AAEpD,MAAMW,IAAgBN,EAAM,WAK1B,CAAC,EAAE,WAAAC,GAAW,UAAAM,GAAU,iBAAAC,IAAkB,IAAM,GAAGN,EAAS,GAAAC,6BAC3DN,GACC,EAAA,UAAA;AAAA,EAAAO,gBAAAA,EAAA,IAACL,GAAc,EAAA;AAAA,EACfU,gBAAAA,EAAA;AAAA,IAACd,EAAgB;AAAA,IAAhB;AAAA,MACC,KAAAQ;AAAA,MACA,WAAWE;AAAA,QACT;AAAA,QACAJ;AAAA,MACF;AAAA,MACC,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAK;AAAA,QACAC,KACEC,gBAAAA,EAAA,KAAAd,EAAgB,OAAhB,EAAsB,WAAU,qRAC/B,UAAA;AAAA,UAACS,gBAAAA,EAAAA,IAAAM,GAAA,EAAM,WAAU,UAAU,CAAA;AAAA,UAC1BN,gBAAAA,EAAA,IAAA,QAAA,EAAK,WAAU,WAAU,UAAK,QAAA,CAAA;AAAA,QAAA,EACjC,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAEJ,GACF,CACD;AACDE,EAAc,cAAcX,EAAgB,QAAQ;AAEpD,MAAMgB,IAAe,CAAC;AAAA,EACpB,WAAAV;AAAA,EACA,GAAGC;AACL,MACEE,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAJ;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN;AAEFS,EAAa,cAAc;AAE3B,MAAMC,IAAe,CAAC;AAAA,EACpB,WAAAX;AAAA,EACA,GAAGC;AACL,MACEE,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAJ;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN;AAEFU,EAAa,cAAc;AAErB,MAAAC,IAAcb,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1BC,gBAAAA,EAAA;AAAA,EAACT,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAQ;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN,CACD;AACDW,EAAY,cAAclB,EAAgB,MAAM;AAE1C,MAAAmB,IAAoBd,EAAM,WAG9B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1BC,gBAAAA,EAAA;AAAA,EAACT,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAQ;AAAA,IACA,WAAWE,EAAG,iCAAiCJ,CAAS;AAAA,IACvD,GAAGC;AAAA,EAAA;AACN,CACD;AACDY,EAAkB,cAAcnB,EAAgB,YAAY;"}
|