zudoku 0.4.2-dev.0 → 0.4.2-dev.10

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.
Files changed (75) hide show
  1. package/dist/cli/dev/handler.js +1 -0
  2. package/dist/cli/dev/handler.js.map +1 -1
  3. package/dist/lib/components/DeveloperHint.js +1 -3
  4. package/dist/lib/components/DeveloperHint.js.map +1 -1
  5. package/dist/lib/components/Header.js +1 -3
  6. package/dist/lib/components/Header.js.map +1 -1
  7. package/dist/lib/components/Layout.js +3 -1
  8. package/dist/lib/components/Layout.js.map +1 -1
  9. package/dist/lib/components/navigation/SidebarCategory.js +3 -1
  10. package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
  11. package/dist/lib/components/navigation/SidebarWrapper.js +1 -1
  12. package/dist/lib/components/navigation/SidebarWrapper.js.map +1 -1
  13. package/dist/lib/plugins/api-keys/SettingsApiKeys.js +8 -2
  14. package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
  15. package/dist/lib/plugins/markdown/Toc.js +1 -1
  16. package/dist/lib/plugins/markdown/Toc.js.map +1 -1
  17. package/dist/lib/plugins/openapi/index.js +1 -1
  18. package/dist/lib/plugins/openapi/index.js.map +1 -1
  19. package/dist/lib/plugins/openapi/playground/Playground.js +9 -3
  20. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  21. package/dist/lib/plugins/openapi/playground/ResponseTab.js +3 -1
  22. package/dist/lib/plugins/openapi/playground/ResponseTab.js.map +1 -1
  23. package/lib/{CategoryHeading-DrdbisK9.js → CategoryHeading-BoT0DVI-.js} +2 -2
  24. package/lib/{CategoryHeading-DrdbisK9.js.map → CategoryHeading-BoT0DVI-.js.map} +1 -1
  25. package/lib/{Combination-BPSuncey.js → Combination-C1wKWZ28.js} +2 -2
  26. package/lib/{Combination-BPSuncey.js.map → Combination-C1wKWZ28.js.map} +1 -1
  27. package/lib/DeveloperHint-Bv958_pY.js +16 -0
  28. package/lib/DeveloperHint-Bv958_pY.js.map +1 -0
  29. package/lib/{ErrorPage-CxovZyrp.js → ErrorPage-CcBjrY_g.js} +3 -3
  30. package/lib/{ErrorPage-CxovZyrp.js.map → ErrorPage-CcBjrY_g.js.map} +1 -1
  31. package/lib/{Input-mYAlPgNO.js → Input-BqnnTL7-.js} +3 -3
  32. package/lib/{Input-mYAlPgNO.js.map → Input-BqnnTL7-.js.map} +1 -1
  33. package/lib/{Markdown-D9dQG0k9.js → Markdown-C3hatKS5.js} +1011 -1087
  34. package/lib/Markdown-C3hatKS5.js.map +1 -0
  35. package/lib/{MdxPage-mbEyh43a.js → MdxPage-BEG8cDoF.js} +4 -4
  36. package/lib/MdxPage-BEG8cDoF.js.map +1 -0
  37. package/lib/{OperationList-DzCDNF6G.js → OperationList-BEiJFfFr.js} +9 -9
  38. package/lib/{OperationList-DzCDNF6G.js.map → OperationList-BEiJFfFr.js.map} +1 -1
  39. package/lib/{Route-Dz_g9UaG.js → Route-BvREOAN6.js} +2 -2
  40. package/lib/{Route-Dz_g9UaG.js.map → Route-BvREOAN6.js.map} +1 -1
  41. package/lib/{SidebarBadge-CfSY7FWN.js → SidebarBadge-C6wpM9X3.js} +3 -3
  42. package/lib/{SidebarBadge-CfSY7FWN.js.map → SidebarBadge-C6wpM9X3.js.map} +1 -1
  43. package/lib/{SlotletProvider-DwjrZITv.js → SlotletProvider-Bdzag6MN.js} +4 -4
  44. package/lib/{SlotletProvider-DwjrZITv.js.map → SlotletProvider-Bdzag6MN.js.map} +1 -1
  45. package/lib/{Spinner-BUm2J8So.js → Spinner-DiA314T5.js} +2 -2
  46. package/lib/{Spinner-BUm2J8So.js.map → Spinner-DiA314T5.js.map} +1 -1
  47. package/lib/{index-D4AiMx6N.js → index-ClDFRC39.js} +601 -595
  48. package/lib/index-ClDFRC39.js.map +1 -0
  49. package/lib/{index-DYZLSGmo.js → index-LWNs2niD.js} +3 -3
  50. package/lib/{index-DYZLSGmo.js.map → index-LWNs2niD.js.map} +1 -1
  51. package/lib/zudoku.auth-openid.js +4 -4
  52. package/lib/zudoku.components.js +152 -154
  53. package/lib/zudoku.components.js.map +1 -1
  54. package/lib/zudoku.plugin-api-keys.js +60 -47
  55. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  56. package/lib/zudoku.plugin-custom-page.js +1 -1
  57. package/lib/zudoku.plugin-markdown.js +1 -1
  58. package/lib/zudoku.plugin-openapi.js +4 -4
  59. package/package.json +3 -3
  60. package/src/app/main.css +17 -5
  61. package/src/lib/components/DeveloperHint.tsx +1 -3
  62. package/src/lib/components/Header.tsx +1 -2
  63. package/src/lib/components/Layout.tsx +5 -4
  64. package/src/lib/components/navigation/SidebarCategory.tsx +5 -2
  65. package/src/lib/components/navigation/SidebarWrapper.tsx +1 -1
  66. package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +21 -1
  67. package/src/lib/plugins/markdown/Toc.tsx +1 -1
  68. package/src/lib/plugins/openapi/index.tsx +1 -1
  69. package/src/lib/plugins/openapi/playground/Playground.tsx +11 -5
  70. package/src/lib/plugins/openapi/playground/ResponseTab.tsx +2 -1
  71. package/lib/DeveloperHint-BQSFXH01.js +0 -10
  72. package/lib/DeveloperHint-BQSFXH01.js.map +0 -1
  73. package/lib/Markdown-D9dQG0k9.js.map +0 -1
  74. package/lib/MdxPage-mbEyh43a.js.map +0 -1
  75. package/lib/index-D4AiMx6N.js.map +0 -1
@@ -3,7 +3,14 @@ import {
3
3
  useQueryClient,
4
4
  useSuspenseQuery,
5
5
  } from "@tanstack/react-query";
6
- import { EyeIcon, EyeOffIcon, RotateCwIcon, TrashIcon } from "lucide-react";
6
+ import {
7
+ CheckIcon,
8
+ CopyIcon,
9
+ EyeIcon,
10
+ EyeOffIcon,
11
+ RotateCwIcon,
12
+ TrashIcon,
13
+ } from "lucide-react";
7
14
  import { useState } from "react";
8
15
  import { Link } from "react-router-dom";
9
16
  import { useZudoku } from "../../components/context/ZudokuContext.js";
@@ -147,6 +154,7 @@ export const SettingsApiKeys = ({ service }: { service: ApiKeyService }) => {
147
154
 
148
155
  const RevealApiKey = ({ apiKey }: { apiKey: string }) => {
149
156
  const [revealed, setRevealed] = useState(false);
157
+ const [copied, setCopied] = useState(false);
150
158
 
151
159
  return (
152
160
  <div className="flex gap-2 items-center text-sm">
@@ -160,6 +168,18 @@ const RevealApiKey = ({ apiKey }: { apiKey: string }) => {
160
168
  >
161
169
  {revealed ? <EyeOffIcon size={16} /> : <EyeIcon size={16} />}
162
170
  </Button>
171
+ <Button
172
+ variant="outline"
173
+ onClick={() => {
174
+ navigator.clipboard.writeText(apiKey).then(() => {
175
+ setCopied(true);
176
+ setTimeout(() => setCopied(false), 2000);
177
+ });
178
+ }}
179
+ size="icon"
180
+ >
181
+ {copied ? <CheckIcon size={16} /> : <CopyIcon size={16} />}
182
+ </Button>
163
183
  </div>
164
184
  );
165
185
  };
@@ -89,7 +89,7 @@ export const Toc = ({ entries }: { entries: TocEntry[] }) => {
89
89
  }, [activeAnchor]);
90
90
 
91
91
  return (
92
- <aside className="sticky top-[--header-height] h-[calc(100vh-var(--header-height))] pt-[--padding-content-top] pb-[--padding-content-bottom] overflow-y-auto ps-1 text-sm">
92
+ <aside className="sticky scrollbar top-[--header-height] h-[calc(100vh-var(--header-height))] pt-[--padding-content-top] pb-[--padding-content-bottom] overflow-y-auto ps-1 text-sm">
93
93
  <div className="flex items-center gap-2 font-medium mb-2">
94
94
  <ListTreeIcon size={16} />
95
95
  On this page
@@ -163,7 +163,7 @@ export const openApiPlugin = (
163
163
  .filter((tag) => tag.operations.length > 0)
164
164
  .map<SidebarItem>((tag) => ({
165
165
  type: "category",
166
- label: tag.name ?? "",
166
+ label: tag.name || "Other endpoints",
167
167
  collapsible: true,
168
168
  collapsed: false,
169
169
  items: tag.operations.map((operation) => ({
@@ -223,9 +223,13 @@ export const Playground = ({
223
223
  </Button>
224
224
  </div>
225
225
  <Tabs
226
- defaultValue={pathParams.length > 0 ? "parameters" : "headers"}
226
+ defaultValue={
227
+ queryParams.length + pathParams.length > 0
228
+ ? "parameters"
229
+ : "headers"
230
+ }
227
231
  >
228
- <div className="flex justify-between">
232
+ <div className="flex flex-wrap gap-1 justify-between">
229
233
  <TabsList>
230
234
  {queryParams.length + pathParams.length > 0 && (
231
235
  <TabsTrigger value="parameters">Parameters</TabsTrigger>
@@ -292,7 +296,7 @@ export const Playground = ({
292
296
  </TabsContent>
293
297
  </Tabs>
294
298
  </div>
295
- <div className="flex flex-col gap-4 p-8 bg-muted/70">
299
+ <div className="p-8 bg-muted/70">
296
300
  {queryMutation.error ? (
297
301
  <div className="flex flex-col gap-2">
298
302
  {formState.pathParams.some((p) => p.value === "") && (
@@ -325,7 +329,6 @@ export const Playground = ({
325
329
  <div>Size: {queryMutation.data.size} B</div>
326
330
  </div>
327
331
  </div>
328
- {/*<UrlDisplay host={host} path={url} />*/}
329
332
  <Tabs defaultValue="response">
330
333
  <TabsList>
331
334
  <TabsTrigger value="response">Response</TabsTrigger>
@@ -343,7 +346,10 @@ export const Playground = ({
343
346
  />
344
347
  </TabsContent>
345
348
  <TabsContent value="headers">
346
- <Card className="grid grid-cols-2 w-full gap-2.5 font-mono text-xs shadow-none p-4">
349
+ <Card
350
+ // playground dialog has h-5/6 ≈ 83.333vh
351
+ className="max-h-[calc(83.333vh-140px)] overflow-y-auto grid grid-cols-2 w-full gap-2.5 font-mono text-xs shadow-none p-4"
352
+ >
347
353
  <div className="font-semibold">Key</div>
348
354
  <div className="font-semibold">Value</div>
349
355
  {headerEntries.map(([key, value]) => (
@@ -55,7 +55,8 @@ export const ResponseTab = ({
55
55
  }
56
56
  noBackground
57
57
  showLanguageIndicator
58
- className="overflow-x-auto p-4 text-xs max-h-[480px]"
58
+ // playground dialog has h-5/6 ≈ 83.333vh
59
+ className="overflow-x-auto p-4 text-xs max-h-[calc(83.333vh-180px)]"
59
60
  code={view === "raw" ? body : beautifiedBody}
60
61
  />
61
62
  </Card>
@@ -1,10 +0,0 @@
1
- import "./jsx-runtime-B6kdoens.js";
2
- const n = ({
3
- children: e,
4
- className: r
5
- }) => {
6
- };
7
- export {
8
- n as D
9
- };
10
- //# sourceMappingURL=DeveloperHint-BQSFXH01.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeveloperHint-BQSFXH01.js","sources":["../src/lib/components/DeveloperHint.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Callout } from \"../ui/Callout.js\";\n\nexport const DeveloperHint = ({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) => {\n // TODO: figure out a way to do that in consumer dev mode not \"internal\"\n // so this doesn't get stripped out in the build\n if (!import.meta.env.DEV) return;\n\n return (\n <Callout type=\"caution\" title=\"Developer hint\" className={className}>\n <div className=\"flex flex-col gap-2\">\n <div>{children}</div>\n <small className=\"italic\">\n Note: This hint is only shown in development mode.\n </small>\n </div>\n </Callout>\n );\n};\n"],"names":["DeveloperHint","children","className"],"mappings":";AAGO,MAAMA,IAAgB,CAAC;AAAA,EAC5B,UAAAC;AAAA,EACA,WAAAC;AACF,MAGM;AAeN;"}