zudoku 0.0.0-z63644134 → 0.0.0-z6b1ecd2d

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 (124) hide show
  1. package/dist/config/validators/InputNavigationSchema.d.ts +51 -1
  2. package/dist/config/validators/InputNavigationSchema.js +17 -0
  3. package/dist/config/validators/InputNavigationSchema.js.map +1 -1
  4. package/dist/config/validators/NavigationSchema.d.ts +10 -2
  5. package/dist/config/validators/NavigationSchema.js +7 -0
  6. package/dist/config/validators/NavigationSchema.js.map +1 -1
  7. package/dist/flat-config.d.ts +11 -0
  8. package/dist/lib/components/MobileTopNavigation.js +2 -1
  9. package/dist/lib/components/MobileTopNavigation.js.map +1 -1
  10. package/dist/lib/components/TopNavigation.d.ts +7 -1
  11. package/dist/lib/components/TopNavigation.js +7 -2
  12. package/dist/lib/components/TopNavigation.js.map +1 -1
  13. package/dist/lib/components/context/ZudokuContext.d.ts +8 -1
  14. package/dist/lib/components/context/ZudokuContext.js +2 -0
  15. package/dist/lib/components/context/ZudokuContext.js.map +1 -1
  16. package/dist/lib/components/navigation/Navigation.js +4 -3
  17. package/dist/lib/components/navigation/Navigation.js.map +1 -1
  18. package/dist/lib/components/navigation/NavigationCategory.js +8 -0
  19. package/dist/lib/components/navigation/NavigationCategory.js.map +1 -1
  20. package/dist/lib/components/navigation/NavigationFilterContext.d.ts +8 -0
  21. package/dist/lib/components/navigation/NavigationFilterContext.js +12 -0
  22. package/dist/lib/components/navigation/NavigationFilterContext.js.map +1 -0
  23. package/dist/lib/components/navigation/NavigationFilterInput.d.ts +3 -0
  24. package/dist/lib/components/navigation/NavigationFilterInput.js +9 -0
  25. package/dist/lib/components/navigation/NavigationFilterInput.js.map +1 -0
  26. package/dist/lib/components/navigation/NavigationItem.js +11 -1
  27. package/dist/lib/components/navigation/NavigationItem.js.map +1 -1
  28. package/dist/lib/components/navigation/utils.d.ts +2 -1
  29. package/dist/lib/components/navigation/utils.js +22 -1
  30. package/dist/lib/components/navigation/utils.js.map +1 -1
  31. package/dist/lib/plugins/openapi/playground/fileUtils.d.ts +1 -0
  32. package/dist/lib/plugins/openapi/playground/fileUtils.js +3 -0
  33. package/dist/lib/plugins/openapi/playground/fileUtils.js.map +1 -1
  34. package/dist/lib/plugins/openapi/playground/result-panel/AudioPlayer.d.ts +6 -0
  35. package/dist/lib/plugins/openapi/playground/result-panel/AudioPlayer.js +20 -0
  36. package/dist/lib/plugins/openapi/playground/result-panel/AudioPlayer.js.map +1 -0
  37. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +7 -2
  38. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
  39. package/dist/lib/ui/InputGroup.d.ts +16 -0
  40. package/dist/lib/ui/InputGroup.js +65 -0
  41. package/dist/lib/ui/InputGroup.js.map +1 -0
  42. package/lib/{ClaudeLogo-C6q-Xn_l.js → ClaudeLogo-OpUSMQJe.js} +3 -3
  43. package/lib/{ClaudeLogo-C6q-Xn_l.js.map → ClaudeLogo-OpUSMQJe.js.map} +1 -1
  44. package/lib/{MdxPage-B1G4W1TK.js → MdxPage-dzCPGdvD.js} +6 -6
  45. package/lib/{MdxPage-B1G4W1TK.js.map → MdxPage-dzCPGdvD.js.map} +1 -1
  46. package/lib/{Mermaid-B1xNo-pf.js → Mermaid-JEnWyK0s.js} +2 -2
  47. package/lib/{Mermaid-B1xNo-pf.js.map → Mermaid-JEnWyK0s.js.map} +1 -1
  48. package/lib/{OAuthErrorPage-01Ke086W.js → OAuthErrorPage-D7n-_cqN.js} +5 -5
  49. package/lib/{OAuthErrorPage-01Ke086W.js.map → OAuthErrorPage-D7n-_cqN.js.map} +1 -1
  50. package/lib/{OasProvider-oHPiMJZg.js → OasProvider-DPPdikt_.js} +3 -3
  51. package/lib/{OasProvider-oHPiMJZg.js.map → OasProvider-DPPdikt_.js.map} +1 -1
  52. package/lib/{OperationList-CZ4OK8Pm.js → OperationList-cEveQ_l5.js} +12 -13
  53. package/lib/{OperationList-CZ4OK8Pm.js.map → OperationList-cEveQ_l5.js.map} +1 -1
  54. package/lib/{RouteGuard-B1lCR0C_.js → RouteGuard-BMbu_Yb7.js} +3 -3
  55. package/lib/{RouteGuard-B1lCR0C_.js.map → RouteGuard-BMbu_Yb7.js.map} +1 -1
  56. package/lib/{SchemaList-DoQFkJgM.js → SchemaList-CRC8n5co.js} +6 -6
  57. package/lib/{SchemaList-DoQFkJgM.js.map → SchemaList-CRC8n5co.js.map} +1 -1
  58. package/lib/{SchemaView-D2k6ZJck.js → SchemaView-BR6dtnPg.js} +3 -3
  59. package/lib/{SchemaView-D2k6ZJck.js.map → SchemaView-BR6dtnPg.js.map} +1 -1
  60. package/lib/{SignUp-8kDBaLbO.js → SignUp-ChqXj9vd.js} +4 -4
  61. package/lib/{SignUp-8kDBaLbO.js.map → SignUp-ChqXj9vd.js.map} +1 -1
  62. package/lib/{SyntaxHighlight-hZOFnYl0.js → SyntaxHighlight-O-IZOPLg.js} +2 -2
  63. package/lib/{SyntaxHighlight-hZOFnYl0.js.map → SyntaxHighlight-O-IZOPLg.js.map} +1 -1
  64. package/lib/{Toc-qEIii_-W.js → Toc-DQF7trHT.js} +2 -2
  65. package/lib/{Toc-qEIii_-W.js.map → Toc-DQF7trHT.js.map} +1 -1
  66. package/lib/{Zudoku-DUsdmPME.js → Zudoku-DA1yA-te.js} +2719 -2544
  67. package/lib/Zudoku-DA1yA-te.js.map +1 -0
  68. package/lib/{ZudokuContext-BBI06sOx.js → ZudokuContext-C6wlLMUH.js} +136 -134
  69. package/lib/{ZudokuContext-BBI06sOx.js.map → ZudokuContext-C6wlLMUH.js.map} +1 -1
  70. package/lib/{circular-D9tSKG2c.js → circular-C4l1Kj1N.js} +2 -2
  71. package/lib/{circular-D9tSKG2c.js.map → circular-C4l1Kj1N.js.map} +1 -1
  72. package/lib/{createServer-BprC4n85.js → createServer-DoRZ6tMa.js} +4 -4
  73. package/lib/{createServer-BprC4n85.js.map → createServer-DoRZ6tMa.js.map} +1 -1
  74. package/lib/{errors-7hgPDs1h.js → errors-CYLN8SNc.js} +2 -2
  75. package/lib/{errors-7hgPDs1h.js.map → errors-CYLN8SNc.js.map} +1 -1
  76. package/lib/{firebase-Dwn-2ju-.js → firebase-DF-VVKB7.js} +13 -13
  77. package/lib/{firebase-Dwn-2ju-.js.map → firebase-DF-VVKB7.js.map} +1 -1
  78. package/lib/{hook-ZEd1Es7D.js → hook-C35h0YhF.js} +2 -2
  79. package/lib/{hook-ZEd1Es7D.js.map → hook-C35h0YhF.js.map} +1 -1
  80. package/lib/{index-CyIW9rHv.js → index-Ck4TmzTO.js} +653 -619
  81. package/lib/index-Ck4TmzTO.js.map +1 -0
  82. package/lib/{index-Dxdhrp-I.js → index-DrAVvbXa.js} +2 -2
  83. package/lib/{index-Dxdhrp-I.js.map → index-DrAVvbXa.js.map} +1 -1
  84. package/lib/{index.esm-DG4KaDKR.js → index.esm-B2cLXwjS.js} +2 -2
  85. package/lib/index.esm-B2cLXwjS.js.map +1 -0
  86. package/lib/ui/InputGroup.js +155 -0
  87. package/lib/ui/InputGroup.js.map +1 -0
  88. package/lib/ui/SyntaxHighlight.js +2 -2
  89. package/lib/zudoku.__internal.js +368 -368
  90. package/lib/zudoku.__internal.js.map +1 -1
  91. package/lib/zudoku.auth-auth0.js +1 -1
  92. package/lib/zudoku.auth-azureb2c.js +4 -4
  93. package/lib/zudoku.auth-clerk.js +2 -2
  94. package/lib/zudoku.auth-firebase.js +4 -4
  95. package/lib/zudoku.auth-openid.js +4 -4
  96. package/lib/zudoku.auth-supabase.js +4 -4
  97. package/lib/zudoku.components.js +3 -3
  98. package/lib/zudoku.hooks.js +3 -3
  99. package/lib/zudoku.mermaid.js +2 -2
  100. package/lib/zudoku.plugin-api-catalog.js +3 -3
  101. package/lib/zudoku.plugin-api-keys.js +4 -4
  102. package/lib/zudoku.plugin-custom-pages.js +1 -1
  103. package/lib/zudoku.plugin-markdown.js +1 -1
  104. package/lib/zudoku.plugin-openapi.js +2 -2
  105. package/lib/zudoku.plugin-search-pagefind.js +2 -2
  106. package/package.json +1 -1
  107. package/src/lib/components/MobileTopNavigation.tsx +13 -8
  108. package/src/lib/components/TopNavigation.tsx +25 -7
  109. package/src/lib/components/context/ZudokuContext.ts +1 -0
  110. package/src/lib/components/navigation/Navigation.tsx +4 -3
  111. package/src/lib/components/navigation/NavigationCategory.tsx +9 -0
  112. package/src/lib/components/navigation/NavigationFilterContext.tsx +28 -0
  113. package/src/lib/components/navigation/NavigationFilterInput.tsx +35 -0
  114. package/src/lib/components/navigation/NavigationItem.tsx +17 -1
  115. package/src/lib/components/navigation/utils.ts +32 -1
  116. package/src/lib/plugins/openapi/playground/fileUtils.ts +4 -0
  117. package/src/lib/plugins/openapi/playground/result-panel/AudioPlayer.tsx +50 -0
  118. package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +33 -17
  119. package/src/lib/ui/InputGroup.tsx +168 -0
  120. package/lib/Separator-BXt1LYnm.js +0 -27
  121. package/lib/Separator-BXt1LYnm.js.map +0 -1
  122. package/lib/Zudoku-DUsdmPME.js.map +0 -1
  123. package/lib/index-CyIW9rHv.js.map +0 -1
  124. package/lib/index.esm-DG4KaDKR.js.map +0 -1
@@ -32,6 +32,8 @@ import {
32
32
  CollapsibleHeader,
33
33
  CollapsibleHeaderTrigger,
34
34
  } from "../CollapsibleHeader.js";
35
+ import { isAudioContentType } from "../fileUtils.js";
36
+ import { AudioPlayer } from "./AudioPlayer.js";
35
37
  import { convertToTypes } from "./convertToTypes.js";
36
38
 
37
39
  const mimeTypeToLanguage = (mimeType: string) => {
@@ -50,9 +52,14 @@ const mimeTypeToLanguage = (mimeType: string) => {
50
52
  )?.[1];
51
53
  };
52
54
 
55
+ const getContentType = (headers: Array<[string, string]>) => {
56
+ return (
57
+ headers.find(([key]) => key.toLowerCase() === "content-type")?.[1] || ""
58
+ );
59
+ };
60
+
53
61
  const detectLanguage = (headers: Array<[string, string]>) => {
54
- const contentType =
55
- headers.find(([key]) => key.toLowerCase() === "content-type")?.[1] || "";
62
+ const contentType = getContentType(headers);
56
63
  return mimeTypeToLanguage(contentType);
57
64
  };
58
65
 
@@ -293,23 +300,32 @@ export const ResponseTab = ({
293
300
  </div>
294
301
  <div className="flex-1">
295
302
  {isBinary ? (
296
- <div className="p-4 text-center">
297
- <div className="flex flex-col items-center gap-4">
298
- <div className="text-lg font-semibold">Binary Content</div>
299
- <div className="text-sm text-muted-foreground">
300
- This response contains binary data that cannot be displayed as
301
- text.
303
+ blob && isAudioContentType(getContentType(headers)) ? (
304
+ <AudioPlayer
305
+ blob={blob}
306
+ fileName={fileName ?? "audio"}
307
+ size={size}
308
+ onDownload={handleDownload}
309
+ />
310
+ ) : (
311
+ <div className="p-4 text-center">
312
+ <div className="flex flex-col items-center gap-4">
313
+ <div className="text-lg font-semibold">Binary Content</div>
314
+ <div className="text-sm text-muted-foreground">
315
+ This response contains binary data that cannot be displayed as
316
+ text.
317
+ </div>
318
+ <Button
319
+ onClick={handleDownload}
320
+ className="flex items-center gap-2"
321
+ disabled={!blob}
322
+ >
323
+ <DownloadIcon className="h-4 w-4" />
324
+ Download {fileName || "file"} ({humanFileSize(size)})
325
+ </Button>
302
326
  </div>
303
- <Button
304
- onClick={handleDownload}
305
- className="flex items-center gap-2"
306
- disabled={!blob}
307
- >
308
- <DownloadIcon className="h-4 w-4" />
309
- Download {fileName || "file"} ({humanFileSize(size)})
310
- </Button>
311
327
  </div>
312
- </div>
328
+ )
313
329
  ) : (
314
330
  <SyntaxHighlight
315
331
  className="text-xs flex-1"
@@ -0,0 +1,168 @@
1
+ import { cva, type VariantProps } from "class-variance-authority";
2
+ import type * as React from "react";
3
+ import { cn } from "../util/cn.js";
4
+ import { Button } from "./Button.js";
5
+ import { Input } from "./Input.js";
6
+ import { Textarea } from "./Textarea.js";
7
+
8
+ function InputGroup({ className, ...props }: React.ComponentProps<"div">) {
9
+ return (
10
+ <div
11
+ data-slot="input-group"
12
+ role="group"
13
+ className={cn(
14
+ "group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none",
15
+ "h-9 min-w-0 has-[>textarea]:h-auto",
16
+
17
+ // Variants based on alignment.
18
+ "has-[>[data-align=inline-start]]:[&>input]:pl-2",
19
+ "has-[>[data-align=inline-end]]:[&>input]:pr-2",
20
+ "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3",
21
+ "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3",
22
+
23
+ // Focus state.
24
+ "has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]",
25
+
26
+ // Error state.
27
+ "has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",
28
+
29
+ className,
30
+ )}
31
+ {...props}
32
+ />
33
+ );
34
+ }
35
+
36
+ const inputGroupAddonVariants = cva(
37
+ "text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50",
38
+ {
39
+ variants: {
40
+ align: {
41
+ "inline-start":
42
+ "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
43
+ "inline-end":
44
+ "order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]",
45
+ "block-start":
46
+ "order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5",
47
+ "block-end":
48
+ "order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5",
49
+ },
50
+ },
51
+ defaultVariants: {
52
+ align: "inline-start",
53
+ },
54
+ },
55
+ );
56
+
57
+ function InputGroupAddon({
58
+ className,
59
+ align = "inline-start",
60
+ ...props
61
+ }: React.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>) {
62
+ return (
63
+ // biome-ignore lint/a11y/useKeyWithClickEvents: Focus management
64
+ <div
65
+ role="group"
66
+ data-slot="input-group-addon"
67
+ data-align={align}
68
+ className={cn(inputGroupAddonVariants({ align }), className)}
69
+ onClick={(e) => {
70
+ if ((e.target as HTMLElement).closest("button")) {
71
+ return;
72
+ }
73
+ e.currentTarget.parentElement?.querySelector("input")?.focus();
74
+ }}
75
+ {...props}
76
+ />
77
+ );
78
+ }
79
+
80
+ const inputGroupButtonVariants = cva(
81
+ "text-sm shadow-none flex gap-2 items-center",
82
+ {
83
+ variants: {
84
+ size: {
85
+ xs: "h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2",
86
+ sm: "h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5",
87
+ "icon-xs":
88
+ "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
89
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0",
90
+ },
91
+ },
92
+ defaultVariants: {
93
+ size: "xs",
94
+ },
95
+ },
96
+ );
97
+
98
+ function InputGroupButton({
99
+ className,
100
+ type = "button",
101
+ variant = "ghost",
102
+ size = "xs",
103
+ ...props
104
+ }: Omit<React.ComponentProps<typeof Button>, "size"> &
105
+ VariantProps<typeof inputGroupButtonVariants>) {
106
+ return (
107
+ <Button
108
+ type={type}
109
+ data-size={size}
110
+ variant={variant}
111
+ className={cn(inputGroupButtonVariants({ size }), className)}
112
+ {...props}
113
+ />
114
+ );
115
+ }
116
+
117
+ function InputGroupText({ className, ...props }: React.ComponentProps<"span">) {
118
+ return (
119
+ <span
120
+ className={cn(
121
+ "text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
122
+ className,
123
+ )}
124
+ {...props}
125
+ />
126
+ );
127
+ }
128
+
129
+ function InputGroupInput({
130
+ className,
131
+ ...props
132
+ }: React.ComponentProps<"input">) {
133
+ return (
134
+ <Input
135
+ data-slot="input-group-control"
136
+ className={cn(
137
+ "flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent",
138
+ className,
139
+ )}
140
+ {...props}
141
+ />
142
+ );
143
+ }
144
+
145
+ function InputGroupTextarea({
146
+ className,
147
+ ...props
148
+ }: React.ComponentProps<"textarea">) {
149
+ return (
150
+ <Textarea
151
+ data-slot="input-group-control"
152
+ className={cn(
153
+ "flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent",
154
+ className,
155
+ )}
156
+ {...props}
157
+ />
158
+ );
159
+ }
160
+
161
+ export {
162
+ InputGroup,
163
+ InputGroupAddon,
164
+ InputGroupButton,
165
+ InputGroupText,
166
+ InputGroupInput,
167
+ InputGroupTextarea,
168
+ };
@@ -1,27 +0,0 @@
1
- import { j as i } from "./jsx-runtime-BzflLqGi.js";
2
- import * as n from "@radix-ui/react-separator";
3
- import { c as e } from "./cn-5-Gd1Dss.js";
4
- function p({
5
- className: t,
6
- orientation: a = "horizontal",
7
- decorative: o = !0,
8
- ...r
9
- }) {
10
- return /* @__PURE__ */ i.jsx(
11
- n.Root,
12
- {
13
- "data-slot": "separator",
14
- decorative: o,
15
- orientation: a,
16
- className: e(
17
- "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
18
- t
19
- ),
20
- ...r
21
- }
22
- );
23
- }
24
- export {
25
- p as S
26
- };
27
- //# sourceMappingURL=Separator-BXt1LYnm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Separator-BXt1LYnm.js","sources":["../src/lib/ui/Separator.tsx"],"sourcesContent":["import * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport type * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n"],"names":["Separator","className","orientation","decorative","props","jsx","SeparatorPrimitive","cn"],"mappings":";;;AAIA,SAASA,EAAU;AAAA,EACjB,WAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,YAAAC,IAAa;AAAA,EACb,GAAGC;AACL,GAAyD;AACvD,SACEC,gBAAAA,EAAAA;AAAAA,IAACC,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,YAAAH;AAAA,MACA,aAAAD;AAAA,MACA,WAAWK;AAAA,QACT;AAAA,QACAN;AAAA,MAAA;AAAA,MAED,GAAGG;AAAA,IAAA;AAAA,EAAA;AAGV;"}