vocs 2.0.17 → 2.1.2

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 (306) hide show
  1. package/dist/config.d.ts +1 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +1 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/globals.d.ts +16 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/internal/config.d.ts +28 -0
  11. package/dist/internal/config.d.ts.map +1 -1
  12. package/dist/internal/config.js +10 -2
  13. package/dist/internal/config.js.map +1 -1
  14. package/dist/internal/llms.d.ts +21 -2
  15. package/dist/internal/llms.d.ts.map +1 -1
  16. package/dist/internal/llms.js +41 -1
  17. package/dist/internal/llms.js.map +1 -1
  18. package/dist/internal/markdown-negotiation.d.ts +36 -0
  19. package/dist/internal/markdown-negotiation.d.ts.map +1 -0
  20. package/dist/internal/markdown-negotiation.js +81 -0
  21. package/dist/internal/markdown-negotiation.js.map +1 -0
  22. package/dist/internal/markdown.d.ts.map +1 -1
  23. package/dist/internal/markdown.js +5 -0
  24. package/dist/internal/markdown.js.map +1 -1
  25. package/dist/internal/openapi/anchors.d.ts +25 -0
  26. package/dist/internal/openapi/anchors.d.ts.map +1 -0
  27. package/dist/internal/openapi/anchors.js +37 -0
  28. package/dist/internal/openapi/anchors.js.map +1 -0
  29. package/dist/internal/openapi/app.d.ts +89 -0
  30. package/dist/internal/openapi/app.d.ts.map +1 -0
  31. package/dist/internal/openapi/app.js +62 -0
  32. package/dist/internal/openapi/app.js.map +1 -0
  33. package/dist/internal/openapi/index.d.ts +8 -0
  34. package/dist/internal/openapi/index.d.ts.map +1 -0
  35. package/dist/internal/openapi/index.js +5 -0
  36. package/dist/internal/openapi/index.js.map +1 -0
  37. package/dist/internal/openapi/markdown.d.ts +42 -0
  38. package/dist/internal/openapi/markdown.d.ts.map +1 -0
  39. package/dist/internal/openapi/markdown.js +235 -0
  40. package/dist/internal/openapi/markdown.js.map +1 -0
  41. package/dist/internal/openapi/openapi.d.ts +187 -0
  42. package/dist/internal/openapi/openapi.d.ts.map +1 -0
  43. package/dist/internal/openapi/openapi.js +44 -0
  44. package/dist/internal/openapi/openapi.js.map +1 -0
  45. package/dist/internal/openapi/openrpc.d.ts +90 -0
  46. package/dist/internal/openapi/openrpc.d.ts.map +1 -0
  47. package/dist/internal/openapi/openrpc.js +213 -0
  48. package/dist/internal/openapi/openrpc.js.map +1 -0
  49. package/dist/internal/openapi/parser.d.ts +181 -0
  50. package/dist/internal/openapi/parser.d.ts.map +1 -0
  51. package/dist/internal/openapi/parser.js +329 -0
  52. package/dist/internal/openapi/parser.js.map +1 -0
  53. package/dist/internal/openapi/registry.d.ts +36 -0
  54. package/dist/internal/openapi/registry.d.ts.map +1 -0
  55. package/dist/internal/openapi/registry.js +79 -0
  56. package/dist/internal/openapi/registry.js.map +1 -0
  57. package/dist/internal/openapi/sample.d.ts +115 -0
  58. package/dist/internal/openapi/sample.d.ts.map +1 -0
  59. package/dist/internal/openapi/sample.js +434 -0
  60. package/dist/internal/openapi/sample.js.map +1 -0
  61. package/dist/internal/openapi/search.d.ts +19 -0
  62. package/dist/internal/openapi/search.d.ts.map +1 -0
  63. package/dist/internal/openapi/search.js +98 -0
  64. package/dist/internal/openapi/search.js.map +1 -0
  65. package/dist/internal/openapi/sidebar.d.ts +30 -0
  66. package/dist/internal/openapi/sidebar.d.ts.map +1 -0
  67. package/dist/internal/openapi/sidebar.js +67 -0
  68. package/dist/internal/openapi/sidebar.js.map +1 -0
  69. package/dist/internal/openapi/union.d.ts +36 -0
  70. package/dist/internal/openapi/union.d.ts.map +1 -0
  71. package/dist/internal/openapi/union.js +69 -0
  72. package/dist/internal/openapi/union.js.map +1 -0
  73. package/dist/internal/search.d.ts.map +1 -1
  74. package/dist/internal/search.js +20 -0
  75. package/dist/internal/search.js.map +1 -1
  76. package/dist/internal/vite-plugins.d.ts +12 -0
  77. package/dist/internal/vite-plugins.d.ts.map +1 -1
  78. package/dist/internal/vite-plugins.js +102 -11
  79. package/dist/internal/vite-plugins.js.map +1 -1
  80. package/dist/react/Badge.d.ts +2 -3
  81. package/dist/react/Badge.d.ts.map +1 -1
  82. package/dist/react/Layout.client.d.ts.map +1 -1
  83. package/dist/react/Layout.client.js +2 -2
  84. package/dist/react/Layout.client.js.map +1 -1
  85. package/dist/react/OpenApi.d.ts +6 -0
  86. package/dist/react/OpenApi.d.ts.map +1 -0
  87. package/dist/react/OpenApi.js +6 -0
  88. package/dist/react/OpenApi.js.map +1 -0
  89. package/dist/react/internal/CodeToHtml.client.d.ts +53 -2
  90. package/dist/react/internal/CodeToHtml.client.d.ts.map +1 -1
  91. package/dist/react/internal/CodeToHtml.client.js +154 -21
  92. package/dist/react/internal/CodeToHtml.client.js.map +1 -1
  93. package/dist/react/internal/Sidebar.d.ts.map +1 -1
  94. package/dist/react/internal/Sidebar.js +99 -2
  95. package/dist/react/internal/Sidebar.js.map +1 -1
  96. package/dist/react/internal/openapi/CodeSample.client.d.ts +21 -0
  97. package/dist/react/internal/openapi/CodeSample.client.d.ts.map +1 -0
  98. package/dist/react/internal/openapi/CodeSample.client.js +134 -0
  99. package/dist/react/internal/openapi/CodeSample.client.js.map +1 -0
  100. package/dist/react/internal/openapi/CollapsibleChildren.client.d.ts +17 -0
  101. package/dist/react/internal/openapi/CollapsibleChildren.client.d.ts.map +1 -0
  102. package/dist/react/internal/openapi/CollapsibleChildren.client.js +18 -0
  103. package/dist/react/internal/openapi/CollapsibleChildren.client.js.map +1 -0
  104. package/dist/react/internal/openapi/Disclosure.client.d.ts +28 -0
  105. package/dist/react/internal/openapi/Disclosure.client.d.ts.map +1 -0
  106. package/dist/react/internal/openapi/Disclosure.client.js +38 -0
  107. package/dist/react/internal/openapi/Disclosure.client.js.map +1 -0
  108. package/dist/react/internal/openapi/Endpoints.d.ts +26 -0
  109. package/dist/react/internal/openapi/Endpoints.d.ts.map +1 -0
  110. package/dist/react/internal/openapi/Endpoints.js +33 -0
  111. package/dist/react/internal/openapi/Endpoints.js.map +1 -0
  112. package/dist/react/internal/openapi/EndpointsView.d.ts +24 -0
  113. package/dist/react/internal/openapi/EndpointsView.d.ts.map +1 -0
  114. package/dist/react/internal/openapi/EndpointsView.js +26 -0
  115. package/dist/react/internal/openapi/EndpointsView.js.map +1 -0
  116. package/dist/react/internal/openapi/EnumValues.client.d.ts +14 -0
  117. package/dist/react/internal/openapi/EnumValues.client.d.ts.map +1 -0
  118. package/dist/react/internal/openapi/EnumValues.client.js +20 -0
  119. package/dist/react/internal/openapi/EnumValues.client.js.map +1 -0
  120. package/dist/react/internal/openapi/HeadingAnchor.d.ts +15 -0
  121. package/dist/react/internal/openapi/HeadingAnchor.d.ts.map +1 -0
  122. package/dist/react/internal/openapi/HeadingAnchor.js +12 -0
  123. package/dist/react/internal/openapi/HeadingAnchor.js.map +1 -0
  124. package/dist/react/internal/openapi/OpenApiPage.d.ts +79 -0
  125. package/dist/react/internal/openapi/OpenApiPage.d.ts.map +1 -0
  126. package/dist/react/internal/openapi/OpenApiPage.js +72 -0
  127. package/dist/react/internal/openapi/OpenApiPage.js.map +1 -0
  128. package/dist/react/internal/openapi/Operation.d.ts +25 -0
  129. package/dist/react/internal/openapi/Operation.d.ts.map +1 -0
  130. package/dist/react/internal/openapi/Operation.js +101 -0
  131. package/dist/react/internal/openapi/Operation.js.map +1 -0
  132. package/dist/react/internal/openapi/Playground.client.d.ts +33 -0
  133. package/dist/react/internal/openapi/Playground.client.d.ts.map +1 -0
  134. package/dist/react/internal/openapi/Playground.client.js +170 -0
  135. package/dist/react/internal/openapi/Playground.client.js.map +1 -0
  136. package/dist/react/internal/openapi/PropertyExample.client.d.ts +17 -0
  137. package/dist/react/internal/openapi/PropertyExample.client.d.ts.map +1 -0
  138. package/dist/react/internal/openapi/PropertyExample.client.js +21 -0
  139. package/dist/react/internal/openapi/PropertyExample.client.js.map +1 -0
  140. package/dist/react/internal/openapi/Reference.d.ts +55 -0
  141. package/dist/react/internal/openapi/Reference.d.ts.map +1 -0
  142. package/dist/react/internal/openapi/Reference.js +42 -0
  143. package/dist/react/internal/openapi/Reference.js.map +1 -0
  144. package/dist/react/internal/openapi/Schema.d.ts +110 -0
  145. package/dist/react/internal/openapi/Schema.d.ts.map +1 -0
  146. package/dist/react/internal/openapi/Schema.js +239 -0
  147. package/dist/react/internal/openapi/Schema.js.map +1 -0
  148. package/dist/react/internal/openapi/SchemaUnion.client.d.ts +25 -0
  149. package/dist/react/internal/openapi/SchemaUnion.client.d.ts.map +1 -0
  150. package/dist/react/internal/openapi/SchemaUnion.client.js +48 -0
  151. package/dist/react/internal/openapi/SchemaUnion.client.js.map +1 -0
  152. package/dist/react/internal/openapi/anchor-navigation.client.d.ts +47 -0
  153. package/dist/react/internal/openapi/anchor-navigation.client.d.ts.map +1 -0
  154. package/dist/react/internal/openapi/anchor-navigation.client.js +120 -0
  155. package/dist/react/internal/openapi/anchor-navigation.client.js.map +1 -0
  156. package/dist/react/internal/openapi/auth.d.ts +28 -0
  157. package/dist/react/internal/openapi/auth.d.ts.map +1 -0
  158. package/dist/react/internal/openapi/auth.js +75 -0
  159. package/dist/react/internal/openapi/auth.js.map +1 -0
  160. package/dist/react/useLayout.d.ts +2 -0
  161. package/dist/react/useLayout.d.ts.map +1 -1
  162. package/dist/react/useLayout.js +2 -0
  163. package/dist/react/useLayout.js.map +1 -1
  164. package/dist/server/handlers.d.ts +1 -1
  165. package/dist/server/handlers.d.ts.map +1 -1
  166. package/dist/server/handlers.js +26 -5
  167. package/dist/server/handlers.js.map +1 -1
  168. package/dist/server/og-assets.d.ts +5 -0
  169. package/dist/server/og-assets.d.ts.map +1 -0
  170. package/dist/server/og-assets.js +11 -0
  171. package/dist/server/og-assets.js.map +1 -0
  172. package/dist/server/openapi/assets.d.ts +33 -0
  173. package/dist/server/openapi/assets.d.ts.map +1 -0
  174. package/dist/server/openapi/assets.generated.d.ts +9 -0
  175. package/dist/server/openapi/assets.generated.d.ts.map +1 -0
  176. package/dist/server/openapi/assets.generated.js +1091 -0
  177. package/dist/server/openapi/assets.generated.js.map +1 -0
  178. package/dist/server/openapi/assets.js +32 -0
  179. package/dist/server/openapi/assets.js.map +1 -0
  180. package/dist/server/openapi/handler.d.ts +103 -0
  181. package/dist/server/openapi/handler.d.ts.map +1 -0
  182. package/dist/server/openapi/handler.js +198 -0
  183. package/dist/server/openapi/handler.js.map +1 -0
  184. package/dist/server/openapi/handler.test.d.ts +2 -0
  185. package/dist/server/openapi/handler.test.d.ts.map +1 -0
  186. package/dist/server/openapi/handler.test.js +203 -0
  187. package/dist/server/openapi/handler.test.js.map +1 -0
  188. package/dist/server/openapi/html.d.ts +16 -0
  189. package/dist/server/openapi/html.d.ts.map +1 -0
  190. package/dist/server/openapi/html.js +75 -0
  191. package/dist/server/openapi/html.js.map +1 -0
  192. package/dist/server/openapi/pages.d.ts +33 -0
  193. package/dist/server/openapi/pages.d.ts.map +1 -0
  194. package/dist/server/openapi/pages.js +130 -0
  195. package/dist/server/openapi/pages.js.map +1 -0
  196. package/dist/server/openapi/pages.test.d.ts +2 -0
  197. package/dist/server/openapi/pages.test.d.ts.map +1 -0
  198. package/dist/server/openapi/pages.test.js +94 -0
  199. package/dist/server/openapi/pages.test.js.map +1 -0
  200. package/dist/server/openapi/state.d.ts +42 -0
  201. package/dist/server/openapi/state.d.ts.map +1 -0
  202. package/dist/server/openapi/state.js +101 -0
  203. package/dist/server/openapi/state.js.map +1 -0
  204. package/dist/styles/index.css +16 -0
  205. package/dist/styles/markdown.css +9 -7
  206. package/dist/styles/openapi-playground.css +80 -0
  207. package/dist/styles/openapi.css +660 -0
  208. package/dist/vite.d.ts.map +1 -1
  209. package/dist/vite.js +1 -0
  210. package/dist/vite.js.map +1 -1
  211. package/dist/waku/internal/middleware/md-router.d.ts +0 -4
  212. package/dist/waku/internal/middleware/md-router.d.ts.map +1 -1
  213. package/dist/waku/internal/middleware/md-router.js +3 -48
  214. package/dist/waku/internal/middleware/md-router.js.map +1 -1
  215. package/dist/waku/internal/patches/adapters/vercel-build-enhancer.js +1 -1
  216. package/dist/waku/internal/patches/adapters/vercel-build-enhancer.js.map +1 -1
  217. package/dist/waku/internal/patches/router.d.ts.map +1 -1
  218. package/dist/waku/internal/patches/router.js +114 -1
  219. package/dist/waku/internal/patches/router.js.map +1 -1
  220. package/package.json +5 -1
  221. package/src/config.ts +1 -0
  222. package/src/globals.d.ts +16 -0
  223. package/src/index.ts +1 -0
  224. package/src/internal/config.ts +40 -1
  225. package/src/internal/llms.ts +51 -1
  226. package/src/internal/markdown-negotiation.test.ts +42 -0
  227. package/src/internal/markdown-negotiation.ts +95 -0
  228. package/src/internal/markdown.ts +5 -0
  229. package/src/internal/openapi/anchors.ts +44 -0
  230. package/src/internal/openapi/app.ts +127 -0
  231. package/src/internal/openapi/index.ts +24 -0
  232. package/src/internal/openapi/markdown.test.ts +115 -0
  233. package/src/internal/openapi/markdown.ts +275 -0
  234. package/src/internal/openapi/openapi.ts +212 -0
  235. package/src/internal/openapi/openrpc.test.ts +239 -0
  236. package/src/internal/openapi/openrpc.ts +295 -0
  237. package/src/internal/openapi/parser.test.ts +203 -0
  238. package/src/internal/openapi/parser.ts +613 -0
  239. package/src/internal/openapi/registry.test.ts +89 -0
  240. package/src/internal/openapi/registry.ts +89 -0
  241. package/src/internal/openapi/sample.test.ts +283 -0
  242. package/src/internal/openapi/sample.ts +562 -0
  243. package/src/internal/openapi/search.test.ts +62 -0
  244. package/src/internal/openapi/search.ts +108 -0
  245. package/src/internal/openapi/sidebar.test.ts +131 -0
  246. package/src/internal/openapi/sidebar.ts +94 -0
  247. package/src/internal/openapi/union.test.ts +51 -0
  248. package/src/internal/openapi/union.ts +74 -0
  249. package/src/internal/search.ts +20 -0
  250. package/src/internal/test/virtual-config.stub.ts +14 -0
  251. package/src/internal/vite-plugins.ts +106 -11
  252. package/src/openapi-app/App.tsx +64 -0
  253. package/src/openapi-app/blocks.tsx +33 -0
  254. package/src/openapi-app/client.tsx +25 -0
  255. package/src/openapi-app/links.test.ts +84 -0
  256. package/src/openapi-app/links.ts +66 -0
  257. package/src/openapi-app/payload.ts +20 -0
  258. package/src/openapi-app/virtual/config.ts +7 -0
  259. package/src/openapi-app/virtual/group-icons.ts +2 -0
  260. package/src/openapi-app/virtual/langs.ts +6 -0
  261. package/src/openapi-app/virtual/openapi.ts +10 -0
  262. package/src/openapi-app/virtual/search-index.ts +21 -0
  263. package/src/openapi-app/virtual/slots.ts +4 -0
  264. package/src/openapi-app/virtual/user-styles.ts +2 -0
  265. package/src/openapi-app/waku.tsx +154 -0
  266. package/src/react/Badge.tsx +2 -3
  267. package/src/react/Layout.client.tsx +17 -4
  268. package/src/react/OpenApi.tsx +5 -0
  269. package/src/react/internal/CodeToHtml.client.tsx +283 -22
  270. package/src/react/internal/Sidebar.tsx +126 -22
  271. package/src/react/internal/openapi/CodeSample.client.tsx +294 -0
  272. package/src/react/internal/openapi/CollapsibleChildren.client.tsx +41 -0
  273. package/src/react/internal/openapi/Disclosure.client.tsx +67 -0
  274. package/src/react/internal/openapi/Endpoints.tsx +58 -0
  275. package/src/react/internal/openapi/EndpointsView.tsx +76 -0
  276. package/src/react/internal/openapi/EnumValues.client.tsx +49 -0
  277. package/src/react/internal/openapi/HeadingAnchor.tsx +28 -0
  278. package/src/react/internal/openapi/OpenApiPage.tsx +173 -0
  279. package/src/react/internal/openapi/Operation.test.tsx +101 -0
  280. package/src/react/internal/openapi/Operation.tsx +335 -0
  281. package/src/react/internal/openapi/Playground.client.tsx +234 -0
  282. package/src/react/internal/openapi/PropertyExample.client.tsx +55 -0
  283. package/src/react/internal/openapi/Reference.tsx +120 -0
  284. package/src/react/internal/openapi/Schema.tsx +467 -0
  285. package/src/react/internal/openapi/SchemaUnion.client.tsx +123 -0
  286. package/src/react/internal/openapi/anchor-navigation.client.ts +154 -0
  287. package/src/react/internal/openapi/auth.ts +69 -0
  288. package/src/react/useLayout.ts +4 -0
  289. package/src/server/handlers.ts +31 -6
  290. package/src/server/og-assets.ts +14 -0
  291. package/src/server/openapi/assets.generated.ts +1093 -0
  292. package/src/server/openapi/assets.ts +57 -0
  293. package/src/server/openapi/handler.test.ts +244 -0
  294. package/src/server/openapi/handler.ts +277 -0
  295. package/src/server/openapi/html.ts +84 -0
  296. package/src/server/openapi/pages.test.ts +111 -0
  297. package/src/server/openapi/pages.ts +153 -0
  298. package/src/server/openapi/state.ts +136 -0
  299. package/src/styles/index.css +16 -0
  300. package/src/styles/markdown.css +9 -7
  301. package/src/styles/openapi-playground.css +80 -0
  302. package/src/styles/openapi.css +660 -0
  303. package/src/vite.ts +1 -0
  304. package/src/waku/internal/middleware/md-router.ts +8 -52
  305. package/src/waku/internal/patches/adapters/vercel-build-enhancer.ts +1 -1
  306. package/src/waku/internal/patches/router.ts +131 -1
@@ -0,0 +1,17 @@
1
+ /**
2
+ * A schema/parameter example value. When the sibling code sample renders a line
3
+ * for the same property — a response example line, or a request sample path/
4
+ * query parameter — the value becomes clickable and reveals (switching response
5
+ * tabs / expanding collapsed query params if needed) and flashes that right-hand
6
+ * line: the reverse of clicking a sample line to jump to this row.
7
+ */
8
+ export declare function PropertyExample(props: PropertyExample.Props): import("react/jsx-runtime").JSX.Element;
9
+ export declare namespace PropertyExample {
10
+ type Props = {
11
+ /** The property/parameter row's anchor id, matched against sample lines. */
12
+ id?: string | undefined;
13
+ /** Example value display string. */
14
+ value: string;
15
+ };
16
+ }
17
+ //# sourceMappingURL=PropertyExample.client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyExample.client.d.ts","sourceRoot":"","sources":["../../../../src/react/internal/openapi/PropertyExample.client.tsx"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,2CA6B3D;AAED,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,KAAK,KAAK,GAAG;QACX,4EAA4E;QAC5E,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACvB,oCAAoC;QACpC,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF"}
@@ -0,0 +1,21 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useSyncExternalStore } from 'react';
4
+ import { hasSampleLine, revealSampleLine, subscribeSampleAnchors, } from './anchor-navigation.client.js';
5
+ /**
6
+ * A schema/parameter example value. When the sibling code sample renders a line
7
+ * for the same property — a response example line, or a request sample path/
8
+ * query parameter — the value becomes clickable and reveals (switching response
9
+ * tabs / expanding collapsed query params if needed) and flashes that right-hand
10
+ * line: the reverse of clicking a sample line to jump to this row.
11
+ */
12
+ export function PropertyExample(props) {
13
+ const { id, value } = props;
14
+ // Re-evaluate once the sibling `CodeSample` mounts and registers its anchors,
15
+ // so the affordance appears even though both mount around the same time.
16
+ const clickable = useSyncExternalStore(subscribeSampleAnchors, () => Boolean(id) && hasSampleLine(id), () => false);
17
+ return (_jsxs("div", { "data-v-openapi-property-example": true, "data-clickable": clickable || undefined, children: [_jsx("span", { "data-v-openapi-property-example-label": true, children: "Example" }), clickable ? (_jsx("button", { type: "button", "data-v-openapi-property-example-value": true, onClick: () => {
18
+ void revealSampleLine(id);
19
+ }, children: value })) : (_jsx("span", { "data-v-openapi-property-example-value": true, children: value }))] }));
20
+ }
21
+ //# sourceMappingURL=PropertyExample.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyExample.client.js","sourceRoot":"","sources":["../../../../src/react/internal/openapi/PropertyExample.client.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,+BAA+B,CAAA;AAEtC;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAA4B;IAC1D,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAE3B,8EAA8E;IAC9E,yEAAyE;IACzE,MAAM,SAAS,GAAG,oBAAoB,CACpC,sBAAsB,EACtB,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,EAAY,CAAC,EAChD,GAAG,EAAE,CAAC,KAAK,CACZ,CAAA;IAED,OAAO,CACL,0EAAqD,SAAS,IAAI,SAAS,aACzE,oFAA0D,EACzD,SAAS,CAAC,CAAC,CAAC,CACX,iBACE,IAAI,EAAC,QAAQ,iDAEb,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,gBAAgB,CAAC,EAAY,CAAC,CAAA;gBACrC,CAAC,YAEA,KAAK,GACC,CACV,CAAC,CAAC,CAAC,CACF,wEAA6C,KAAK,GAAQ,CAC3D,IACG,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,55 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { Ir, IrGroup } from '../../../internal/openapi/parser.js';
3
+ /**
4
+ * Prop-driven OpenAPI renderers shared by the Vite/RSC site integration
5
+ * ({@link file://./OpenApiPage.tsx `OpenApiPage`}) and the standalone client
6
+ * app ({@link file://../../../standalone/openapi/App.client.tsx}).
7
+ *
8
+ * These render only the section content (the `data-v-openapi` tree). They have
9
+ * no dependency on the Waku `Layout`, the `virtual:vocs/openapi` module, or any
10
+ * router — the caller supplies the parsed {@link Ir} and wraps the tree in the
11
+ * appropriate layout/playground provider.
12
+ */
13
+ /**
14
+ * Renders trusted markdown from the spec (info/category descriptions) with the
15
+ * same typography as MDX content.
16
+ */
17
+ export declare function Prose(props: {
18
+ markdown: string;
19
+ attr?: string;
20
+ }): import("react/jsx-runtime").JSX.Element;
21
+ /**
22
+ * Overview / landing page body. Renders the consumer override (or the
23
+ * auto-generated spec header). The domain/endpoint list is opt-in via
24
+ * `<OpenApi.Endpoints />`.
25
+ */
26
+ export declare function ReferenceOverview(props: ReferenceOverview.Props): import("react/jsx-runtime").JSX.Element;
27
+ export declare namespace ReferenceOverview {
28
+ type Props = {
29
+ ir: Ir;
30
+ /** Consumer override rendered in place of the auto-generated header. */
31
+ intro?: ReactNode | undefined;
32
+ /**
33
+ * Domain/endpoint list rendered below the auto-generated header (ignored
34
+ * when `intro` is set — overrides control their own content). The caller
35
+ * supplies the framework-specific list; the standalone handler passes it so
36
+ * its Introduction lists every endpoint by default.
37
+ */
38
+ endpoints?: ReactNode | undefined;
39
+ };
40
+ }
41
+ /**
42
+ * Single category page body: category header (or consumer override) followed by
43
+ * its operations. Does not mount the playground provider — the caller wraps this
44
+ * with `PlaygroundProvider` so a single Scalar modal is shared across the page.
45
+ */
46
+ export declare function ReferenceGroup(props: ReferenceGroup.Props): import("react/jsx-runtime").JSX.Element;
47
+ export declare namespace ReferenceGroup {
48
+ type Props = {
49
+ ir: Ir;
50
+ group: IrGroup;
51
+ /** Consumer override rendered in place of the auto-generated category header. */
52
+ intro?: ReactNode | undefined;
53
+ };
54
+ }
55
+ //# sourceMappingURL=Reference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reference.d.ts","sourceRoot":"","sources":["../../../../src/react/internal/openapi/Reference.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAA;AAItE;;;;;;;;;GASG;AAEH;;;GAGG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,2CAS/D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,2CAqB/D;AAED,MAAM,CAAC,OAAO,WAAW,iBAAiB,CAAC;IACzC,KAAK,KAAK,GAAG;QACX,EAAE,EAAE,EAAE,CAAA;QACN,wEAAwE;QACxE,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;QAC7B;;;;;WAKG;QACH,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;KAClC,CAAA;CACF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,2CA8BzD;AAED,MAAM,CAAC,OAAO,WAAW,cAAc,CAAC;IACtC,KAAK,KAAK,GAAG;QACX,EAAE,EAAE,EAAE,CAAA;QACN,KAAK,EAAE,OAAO,CAAA;QACd,iFAAiF;QACjF,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;KAC9B,CAAA;CACF"}
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import * as Markdown from '../../../internal/markdown.js';
3
+ import { HeadingAnchor } from './HeadingAnchor.js';
4
+ import { Operation } from './Operation.js';
5
+ /**
6
+ * Prop-driven OpenAPI renderers shared by the Vite/RSC site integration
7
+ * ({@link file://./OpenApiPage.tsx `OpenApiPage`}) and the standalone client
8
+ * app ({@link file://../../../standalone/openapi/App.client.tsx}).
9
+ *
10
+ * These render only the section content (the `data-v-openapi` tree). They have
11
+ * no dependency on the Waku `Layout`, the `virtual:vocs/openapi` module, or any
12
+ * router — the caller supplies the parsed {@link Ir} and wraps the tree in the
13
+ * appropriate layout/playground provider.
14
+ */
15
+ /**
16
+ * Renders trusted markdown from the spec (info/category descriptions) with the
17
+ * same typography as MDX content.
18
+ */
19
+ export function Prose(props) {
20
+ return (_jsx("div", { "data-v-openapi-description": props.attr === 'description' ? '' : undefined, "data-v-content": true,
21
+ // biome-ignore lint/security/noDangerouslySetInnerHtml: server-rendered trusted spec content
22
+ dangerouslySetInnerHTML: { __html: Markdown.toHtml(props.markdown) } }));
23
+ }
24
+ /**
25
+ * Overview / landing page body. Renders the consumer override (or the
26
+ * auto-generated spec header). The domain/endpoint list is opt-in via
27
+ * `<OpenApi.Endpoints />`.
28
+ */
29
+ export function ReferenceOverview(props) {
30
+ const { ir, intro, endpoints } = props;
31
+ return (_jsx("div", { "data-v-openapi": true, "data-v-openapi-landing": true, children: intro ? (_jsx("div", { "data-v-openapi-intro": true, "data-v-content": true, children: intro })) : (_jsxs(_Fragment, { children: [_jsxs("header", { "data-v-openapi-header": true, children: [_jsx("h1", { "data-v": true, "data-v-openapi-info-title": true, children: ir.info.title }), ir.info.description && _jsx(Prose, { markdown: ir.info.description, attr: "description" })] }), endpoints] })) }));
32
+ }
33
+ /**
34
+ * Single category page body: category header (or consumer override) followed by
35
+ * its operations. Does not mount the playground provider — the caller wraps this
36
+ * with `PlaygroundProvider` so a single Scalar modal is shared across the page.
37
+ */
38
+ export function ReferenceGroup(props) {
39
+ const { ir, group, intro } = props;
40
+ return (_jsxs("div", { "data-v-openapi": true, children: [intro ? (_jsx("div", { "data-v-openapi-intro": true, "data-v-content": true, id: group.id, children: intro })) : (_jsxs("header", { "data-v-openapi-header": true, children: [_jsxs("h1", { "data-v": true, "data-v-openapi-h1": true, id: group.id, children: [group.name, _jsx(HeadingAnchor, { id: group.id })] }), group.description && _jsx(Prose, { markdown: group.description, attr: "description" })] })), group.operations.map((operation, index) => (_jsx(Operation, { operation: operation, server: ir.servers[0]?.url, headingLevel: 2, separator: index > 0 }, operation.id)))] }));
41
+ }
42
+ //# sourceMappingURL=Reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reference.js","sourceRoot":"","sources":["../../../../src/react/internal/openapi/Reference.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C;;;;;;;;;GASG;AAEH;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,KAA0C;IAC9D,OAAO,CACL,4CAC8B,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;QAEzE,6FAA6F;QAC7F,uBAAuB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,GACpE,CACH,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA8B;IAC9D,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IACtC,OAAO,CACL,gFACG,KAAK,CAAC,CAAC,CAAC,CACP,8EACG,KAAK,GACF,CACP,CAAC,CAAC,CAAC,CACF,8BACE,4DACE,0EACG,EAAE,CAAC,IAAI,CAAC,KAAK,GACX,EACJ,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,KAAC,KAAK,IAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAC,aAAa,GAAG,IAC5E,EACR,SAAS,IACT,CACJ,GACG,CACP,CAAA;AACH,CAAC;AAiBD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAA2B;IACxD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAClC,OAAO,CACL,kDACG,KAAK,CAAC,CAAC,CAAC,CAGP,oEAAyC,EAAE,EAAE,KAAK,CAAC,EAAE,YAClD,KAAK,GACF,CACP,CAAC,CAAC,CAAC,CACF,4DACE,yDAA6B,EAAE,EAAE,KAAK,CAAC,EAAE,aACtC,KAAK,CAAC,IAAI,EACX,KAAC,aAAa,IAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAI,IAC5B,EACJ,KAAK,CAAC,WAAW,IAAI,KAAC,KAAK,IAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAC,aAAa,GAAG,IACxE,CACV,EACA,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1C,KAAC,SAAS,IAER,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAC1B,YAAY,EAAE,CAAC,EACf,SAAS,EAAE,KAAK,GAAG,CAAC,IAJf,SAAS,CAAC,EAAE,CAKjB,CACH,CAAC,IACE,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { type SchemaPath } from '../../../internal/openapi/anchors.js';
2
+ type SchemaObject = Record<string, unknown>;
3
+ /**
4
+ * Renders a human-readable type label for a JSON Schema (post-dereference).
5
+ */
6
+ export declare function typeLabel(schema: SchemaObject | undefined): string;
7
+ /**
8
+ * Detects a `oneOf`/`anyOf` union (unwrapping array item schemas) worth showing
9
+ * as a {@link SchemaUnion} variant picker, returning its variants. Trivial
10
+ * `null` members are dropped, and plain scalar unions with no extra info (e.g.
11
+ * `string | number`) keep their inline type label instead — the picker is only
12
+ * used when at least one variant carries something to show (object properties,
13
+ * an enum, a `const`, a format, or a title).
14
+ */
15
+ export declare function unionVariants(schema: SchemaObject | undefined): unionVariants.Result | undefined;
16
+ export declare namespace unionVariants {
17
+ type Result = {
18
+ kind: string;
19
+ variants: {
20
+ name: string;
21
+ schema: SchemaObject;
22
+ }[];
23
+ };
24
+ }
25
+ /**
26
+ * Extracts a schema's enum literals as display strings (strings unquoted, other
27
+ * values JSON-stringified), unwrapping array item schemas. These are rendered
28
+ * as a separate "values" list rather than a wrapping inline union, matching the
29
+ * Scalar/Stripe reference UI.
30
+ */
31
+ export declare function enumValues(schema: SchemaObject | undefined): string[] | undefined;
32
+ /**
33
+ * Builds the constraint metadata shown beneath a property/parameter type as
34
+ * `{ label, value }` pairs (e.g. `min 0`, `max 100`, `default 10`), in the
35
+ * style of Scalar/Stripe references. The type itself is rendered separately
36
+ * (see {@link typeLabel}).
37
+ */
38
+ export declare function schemaMeta(schema: SchemaObject | undefined): schemaMeta.Entry[];
39
+ export declare namespace schemaMeta {
40
+ type Entry = {
41
+ label: string;
42
+ value: string;
43
+ };
44
+ }
45
+ /**
46
+ * Extracts a representative example value from a schema (`example` or the first
47
+ * entry of `examples`), returned as a display string.
48
+ */
49
+ export declare function schemaExample(schema: SchemaObject | undefined): string | undefined;
50
+ /**
51
+ * A single parameter/property row: name + inline metadata, an optional
52
+ * markdown description, and optional nested content (child schema). Rows are
53
+ * separated by a top border rather than wrapped in individual cards.
54
+ */
55
+ export declare function PropertyRow(props: PropertyRow.Props): import("react/jsx-runtime").JSX.Element;
56
+ export declare namespace PropertyRow {
57
+ type Props = {
58
+ /** Anchor id; when set, renders a copy-link heading anchor beside the name. */
59
+ id?: string | undefined;
60
+ name: string;
61
+ /** Muted ancestor path shown before the name (e.g. `error.details[].`). */
62
+ prefix?: string | undefined;
63
+ /** Human-readable type label rendered as an inline code block. */
64
+ type?: string | undefined;
65
+ /** Enum literals rendered as a vertical "values" list below the type. */
66
+ values?: string[] | undefined;
67
+ /** Constraint metadata (min/max/const/default) rendered below the type. */
68
+ meta: schemaMeta.Entry[];
69
+ /** Example value rendered below the description. */
70
+ example?: string | undefined;
71
+ required?: boolean | undefined;
72
+ deprecated?: boolean | undefined;
73
+ description?: string | undefined;
74
+ children?: React.ReactNode;
75
+ };
76
+ }
77
+ /**
78
+ * Recursively renders a schema's properties as a list of rows. Nested
79
+ * object/array properties are indented beneath their parent.
80
+ */
81
+ export declare function Schema(props: Schema.Props): import("react/jsx-runtime").JSX.Element | null;
82
+ export declare namespace Schema {
83
+ type Props = {
84
+ schema: Record<string, unknown> | undefined;
85
+ depth?: number | undefined;
86
+ /** Muted ancestor path prepended to each child row's name. */
87
+ prefix?: string | undefined;
88
+ /**
89
+ * When set, each property row gets an element id of
90
+ * `schemaPropertyId(idBase, path)` so response example lines can link to it.
91
+ */
92
+ idBase?: string | undefined;
93
+ /** Schema path (chain of property names) leading to this schema. */
94
+ path?: SchemaPath | undefined;
95
+ };
96
+ }
97
+ /**
98
+ * Renders a union's variant picker: each panel shows the variant's description
99
+ * followed by its schema. Panels are server-rendered; the client picker mounts
100
+ * only the selected one.
101
+ */
102
+ export declare function UnionView(props: {
103
+ union: unionVariants.Result;
104
+ depth: number;
105
+ prefix: string;
106
+ idBase?: string | undefined;
107
+ path?: SchemaPath | undefined;
108
+ }): import("react/jsx-runtime").JSX.Element;
109
+ export {};
110
+ //# sourceMappingURL=Schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../../src/react/internal/openapi/Schema.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,239 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Fragment } from 'react';
3
+ import * as Markdown from '../../../internal/markdown.js';
4
+ import { schemaPropertyId } from '../../../internal/openapi/anchors.js';
5
+ import { unionVariantSchemas, unionVariantSegment, unwrapSingleVariant, } from '../../../internal/openapi/union.js';
6
+ import { Badge } from '../../Badge.js';
7
+ import { CollapsibleChildren } from './CollapsibleChildren.client.js';
8
+ import { EnumValues } from './EnumValues.client.js';
9
+ import { HeadingAnchor } from './HeadingAnchor.js';
10
+ import { PropertyExample } from './PropertyExample.client.js';
11
+ import { SchemaUnion } from './SchemaUnion.client.js';
12
+ const maxDepth = 6;
13
+ /**
14
+ * Renders a human-readable type label for a JSON Schema (post-dereference).
15
+ */
16
+ export function typeLabel(schema) {
17
+ if (!schema)
18
+ return 'unknown';
19
+ if (Array.isArray(schema['type']))
20
+ return schema['type'].join(' | ');
21
+ const composite = (schema['oneOf'] ?? schema['anyOf']);
22
+ if (composite)
23
+ return composite.map(typeLabel).join(' | ');
24
+ if (Array.isArray(schema['allOf']))
25
+ return schema['allOf'].map(typeLabel).join(' & ');
26
+ if (schema['type'] === 'array')
27
+ return `${typeLabel(schema['items'])}[]`;
28
+ if (typeof schema['type'] === 'string') {
29
+ const format = schema['format'] ? ` <${schema['format']}>` : '';
30
+ return `${schema['type']}${format}`;
31
+ }
32
+ // Enum without an explicit `type`: the literal values are rendered separately
33
+ // as a values list (see {@link enumValues}), so just label it `enum`.
34
+ if (Array.isArray(schema['enum']))
35
+ return 'enum';
36
+ if (schema['properties'])
37
+ return 'object';
38
+ return 'unknown';
39
+ }
40
+ /**
41
+ * Detects a `oneOf`/`anyOf` union (unwrapping array item schemas) worth showing
42
+ * as a {@link SchemaUnion} variant picker, returning its variants. Trivial
43
+ * `null` members are dropped, and plain scalar unions with no extra info (e.g.
44
+ * `string | number`) keep their inline type label instead — the picker is only
45
+ * used when at least one variant carries something to show (object properties,
46
+ * an enum, a `const`, a format, or a title).
47
+ */
48
+ export function unionVariants(schema) {
49
+ const variants = unionVariantSchemas(schema);
50
+ if (!variants)
51
+ return undefined;
52
+ const target = schema?.['type'] === 'array' && schema['items'] ? schema['items'] : schema;
53
+ const oneOf = target?.['oneOf'];
54
+ return {
55
+ kind: oneOf ? 'One of' : 'Any of',
56
+ variants: variants.map((member, index) => ({
57
+ name: variantName(member, index),
58
+ schema: member,
59
+ })),
60
+ };
61
+ }
62
+ /** A human-readable label for a single union variant. */
63
+ function variantName(member, index) {
64
+ if (typeof member['title'] === 'string' && member['title'])
65
+ return member['title'];
66
+ if ('const' in member)
67
+ return stringify(member['const']);
68
+ const values = enumValues(member);
69
+ if (values && values.length > 0) {
70
+ const joined = values.join(' | ');
71
+ if (joined.length <= 32)
72
+ return joined;
73
+ return 'enum';
74
+ }
75
+ return typeLabel(member) || `Option ${index + 1}`;
76
+ }
77
+ /**
78
+ * Extracts a schema's enum literals as display strings (strings unquoted, other
79
+ * values JSON-stringified), unwrapping array item schemas. These are rendered
80
+ * as a separate "values" list rather than a wrapping inline union, matching the
81
+ * Scalar/Stripe reference UI.
82
+ */
83
+ export function enumValues(schema) {
84
+ if (!schema)
85
+ return undefined;
86
+ const target = schema['type'] === 'array' && schema['items'] ? schema['items'] : schema;
87
+ const values = target['enum'];
88
+ if (!Array.isArray(values) || values.length === 0)
89
+ return undefined;
90
+ return values.map((value) => (typeof value === 'string' ? value : JSON.stringify(value)));
91
+ }
92
+ /**
93
+ * Builds the constraint metadata shown beneath a property/parameter type as
94
+ * `{ label, value }` pairs (e.g. `min 0`, `max 100`, `default 10`), in the
95
+ * style of Scalar/Stripe references. The type itself is rendered separately
96
+ * (see {@link typeLabel}).
97
+ */
98
+ export function schemaMeta(schema) {
99
+ if (!schema)
100
+ return [];
101
+ const parts = [];
102
+ const num = (key) => typeof schema[key] === 'number' ? schema[key] : undefined;
103
+ const min = num('minimum') ?? num('minLength') ?? num('minItems');
104
+ const max = num('maximum') ?? num('maxLength') ?? num('maxItems');
105
+ if (min !== undefined)
106
+ parts.push({ label: 'min', value: String(min) });
107
+ if (max !== undefined)
108
+ parts.push({ label: 'max', value: String(max) });
109
+ if ('const' in schema)
110
+ parts.push({ label: 'const', value: stringify(schema['const']) });
111
+ if ('default' in schema)
112
+ parts.push({ label: 'default', value: stringify(schema['default']) });
113
+ return parts;
114
+ }
115
+ function stringify(value) {
116
+ if (typeof value === 'string')
117
+ return value;
118
+ return JSON.stringify(value);
119
+ }
120
+ /**
121
+ * Extracts a representative example value from a schema (`example` or the first
122
+ * entry of `examples`), returned as a display string.
123
+ */
124
+ export function schemaExample(schema) {
125
+ if (!schema)
126
+ return undefined;
127
+ if ('example' in schema)
128
+ return stringify(schema['example']);
129
+ const examples = schema['examples'];
130
+ if (Array.isArray(examples) && examples.length > 0)
131
+ return stringify(examples[0]);
132
+ return undefined;
133
+ }
134
+ /**
135
+ * A single parameter/property row: name + inline metadata, an optional
136
+ * markdown description, and optional nested content (child schema). Rows are
137
+ * separated by a top border rather than wrapped in individual cards.
138
+ */
139
+ export function PropertyRow(props) {
140
+ const { id, name, prefix, type, values, meta, example, required, deprecated, description, children, } = props;
141
+ const inline = [
142
+ ...(type
143
+ ? [
144
+ {
145
+ key: 'type',
146
+ node: (_jsx("code", { "data-v": true, "data-v-openapi-type": true, children: type })),
147
+ },
148
+ ]
149
+ : []),
150
+ ...meta.map((item) => ({
151
+ key: item.label,
152
+ node: (_jsxs("span", { children: [_jsxs("span", { "data-v-openapi-meta-label": true, children: [item.label, " "] }), _jsx("span", { "data-v-openapi-meta-value": true, children: item.value })] })),
153
+ })),
154
+ ];
155
+ return (_jsxs("div", { "data-v-openapi-property": true, id: id, children: [_jsxs("div", { "data-v-openapi-property-head": true, children: [_jsxs("span", { "data-v-openapi-property-name": true, children: [prefix && _jsx("span", { "data-v-openapi-property-prefix": true, children: prefix }), _jsx("span", { "data-v-openapi-property-label": true, children: name })] }), required && (_jsx(Badge, { variant: "warning", "data-v-openapi-property-required": true, children: "Required" })), deprecated && _jsx(Badge, { variant: "note", children: "Deprecated" }), id && _jsx(HeadingAnchor, { id: id })] }), inline.length > 0 && (_jsx("div", { "data-v-openapi-property-meta": true, children: inline.map((item, index) => (_jsxs(Fragment, { children: [index > 0 && _jsx("span", { "data-v-openapi-meta-sep": true, children: "\u00B7" }), item.node] }, item.key))) })), description && (_jsx("div", { "data-v-openapi-property-description": true, "data-v-content": true,
156
+ // biome-ignore lint/security/noDangerouslySetInnerHtml: server-rendered trusted spec content
157
+ dangerouslySetInnerHTML: { __html: Markdown.toHtml(description) } })), values && values.length > 0 && _jsx(EnumValues, { values: values }), example !== undefined && _jsx(PropertyExample, { id: id, value: example }), children] }));
158
+ }
159
+ /**
160
+ * Recursively renders a schema's properties as a list of rows. Nested
161
+ * object/array properties are indented beneath their parent.
162
+ */
163
+ export function Schema(props) {
164
+ const { schema: rawSchema, depth = 0, prefix = '', idBase, path = [] } = props;
165
+ if (!rawSchema || depth > maxDepth)
166
+ return null;
167
+ // Unwrap a nullable/optional single-variant union (e.g. `oneOf: [null, X]`) to
168
+ // its sole member so X's type and properties render instead of nothing.
169
+ const schema = unwrapSingleVariant(rawSchema) ?? rawSchema;
170
+ // Render oneOf/anyOf unions as a variant picker rather than a type string.
171
+ const union = unionVariants(schema);
172
+ if (union)
173
+ return _jsx(UnionView, { union: union, depth: depth, prefix: prefix, idBase: idBase, path: path });
174
+ // Unwrap arrays to show the item schema's properties (path is unchanged: array
175
+ // items share the array property's anchor path).
176
+ if (schema['type'] === 'array' && schema['items'])
177
+ return (_jsx(Schema, { schema: schema['items'], depth: depth, prefix: prefix, idBase: idBase, path: path }));
178
+ // Merge allOf members for display.
179
+ const allOf = schema['allOf'];
180
+ const properties = (schema['properties'] ??
181
+ allOf?.reduce((acc, member) => {
182
+ Object.assign(acc, member['properties'] ?? {});
183
+ return acc;
184
+ }, {}));
185
+ if (!properties || Object.keys(properties).length === 0)
186
+ return null;
187
+ const required = new Set(schema['required'] ?? []);
188
+ return (_jsx("div", { "data-v-openapi-schema": true, children: Object.entries(properties).map(([name, rawProperty]) => {
189
+ // Unwrap a nullable single-variant union so the member's type label and
190
+ // nested properties surface (e.g. an optional object's children).
191
+ const property = unwrapSingleVariant(rawProperty) ?? rawProperty;
192
+ const childPrefix = `${prefix}${name}${property['type'] === 'array' ? '[]' : ''}.`;
193
+ const childPath = [...path, name];
194
+ const id = idBase ? schemaPropertyId(idBase, childPath) : undefined;
195
+ const propertyUnion = unionVariants(property);
196
+ return (_jsx(PropertyRow, { id: id, name: name, prefix: prefix || undefined, type: propertyUnion ? undefined : typeLabel(property), values: propertyUnion ? undefined : enumValues(property), meta: propertyUnion ? [] : schemaMeta(property), example: propertyUnion ? undefined : schemaExample(property), required: required.has(name), deprecated: property['deprecated'] === true, description: typeof property['description'] === 'string'
197
+ ? property['description']
198
+ : undefined, children: propertyUnion
199
+ ? depth < maxDepth && (_jsx(UnionView, { union: propertyUnion, depth: depth + 1, prefix: childPrefix, idBase: idBase, path: childPath }))
200
+ : depth < maxDepth &&
201
+ hasChildren(property) && (_jsx(CollapsibleChildren, { children: _jsx("div", { "data-v-openapi-children": true, children: _jsx(Schema, { schema: property, depth: depth + 1, prefix: childPrefix, idBase: idBase, path: childPath }) }) })) }, name));
202
+ }) }));
203
+ }
204
+ /**
205
+ * Renders a union's variant picker: each panel shows the variant's description
206
+ * followed by its schema. Panels are server-rendered; the client picker mounts
207
+ * only the selected one.
208
+ */
209
+ export function UnionView(props) {
210
+ const { union, depth, prefix, idBase, path = [] } = props;
211
+ return (_jsx(SchemaUnion, { kind: union.kind, names: union.variants.map((variant) => variant.name), panels: union.variants.map((variant, index) => (_jsx(VariantPanel, { schema: variant.schema, depth: depth, prefix: prefix, idBase: idBase, path: [...path, unionVariantSegment(index)] }, variant.name))) }));
212
+ }
213
+ /**
214
+ * Renders the body of a single union variant: its description, plus either the
215
+ * nested object schema (for object-like variants) or an inline type/meta line
216
+ * and enum values (for scalar variants).
217
+ */
218
+ function VariantPanel(props) {
219
+ const { schema, depth, prefix, idBase, path = [] } = props;
220
+ const description = schema['description'];
221
+ const items = (schema['type'] === 'array' ? schema['items'] : undefined);
222
+ const objectish = Boolean(schema['properties'] || schema['allOf'] || items?.['properties'] || items?.['allOf']);
223
+ const meta = schemaMeta(schema);
224
+ const values = enumValues(schema);
225
+ return (_jsxs("div", { "data-v-openapi-variant": true, children: [!objectish && (_jsxs("div", { "data-v-openapi-property-meta": true, children: [_jsx("code", { "data-v": true, "data-v-openapi-type": true, children: typeLabel(schema) }), meta.map((item) => (_jsxs(Fragment, { children: [_jsx("span", { "data-v-openapi-meta-sep": true, children: "\u00B7" }), _jsxs("span", { children: [_jsxs("span", { "data-v-openapi-meta-label": true, children: [item.label, " "] }), _jsx("span", { "data-v-openapi-meta-value": true, children: item.value })] })] }, item.label)))] })), typeof description === 'string' && (_jsx("div", { "data-v-openapi-property-description": true, "data-v-content": true,
226
+ // biome-ignore lint/security/noDangerouslySetInnerHtml: server-rendered trusted spec content
227
+ dangerouslySetInnerHTML: { __html: Markdown.toHtml(description) } })), !objectish && values && values.length > 0 && _jsx(EnumValues, { values: values }), objectish && (_jsx(Schema, { schema: schema, depth: depth, prefix: prefix, idBase: idBase, path: path }))] }));
228
+ }
229
+ /** Whether a schema exposes nested properties worth rendering as child rows. */
230
+ function hasChildren(schema) {
231
+ if (schema['properties'])
232
+ return true;
233
+ if (schema['allOf'])
234
+ return true;
235
+ if (schema['type'] === 'array' && schema['items'])
236
+ return hasChildren(schema['items']);
237
+ return false;
238
+ }
239
+ //# sourceMappingURL=Schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../../../src/react/internal/openapi/Schema.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Renders a `oneOf`/`anyOf` schema union as a variant picker (in the style of
3
+ * Scalar's "Any of …" selector) instead of a long `a | b | c` type string.
4
+ * The dropdown switches which variant's schema is shown below it.
5
+ *
6
+ * All variant panels are kept mounted (only the selected one is visible) so a
7
+ * property inside an unselected variant is still present in the DOM. Each panel
8
+ * registers itself with the navigation registry so {@link revealAnchor} can
9
+ * select the variant containing a target before scrolling to it — letting a
10
+ * response example line expand the union as deep as needed.
11
+ *
12
+ * Styling lives in `openapi.css` keyed on the `data-v-openapi-union*` attributes.
13
+ */
14
+ export declare function SchemaUnion(props: SchemaUnion.Props): import("react/jsx-runtime").JSX.Element;
15
+ export declare namespace SchemaUnion {
16
+ type Props = {
17
+ /** Leading label, e.g. `Any of` or `One of`. */
18
+ kind: string;
19
+ /** Display name for each variant. */
20
+ names: string[];
21
+ /** Server-rendered schema panel for each variant. */
22
+ panels: React.ReactNode[];
23
+ };
24
+ }
25
+ //# sourceMappingURL=SchemaUnion.client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaUnion.client.d.ts","sourceRoot":"","sources":["../../../../src/react/internal/openapi/SchemaUnion.client.tsx"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,2CAgEnD;AA8BD,MAAM,CAAC,OAAO,WAAW,WAAW,CAAC;IACnC,KAAK,KAAK,GAAG;QACX,gDAAgD;QAChD,IAAI,EAAE,MAAM,CAAA;QACZ,qCAAqC;QACrC,KAAK,EAAE,MAAM,EAAE,CAAA;QACf,qDAAqD;QACrD,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;KAC1B,CAAA;CACF"}
@@ -0,0 +1,48 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useEffect, useRef, useState } from 'react';
4
+ import LucideChevronDown from '~icons/lucide/chevron-down';
5
+ import { registerDisclosure } from './anchor-navigation.client.js';
6
+ /**
7
+ * Renders a `oneOf`/`anyOf` schema union as a variant picker (in the style of
8
+ * Scalar's "Any of …" selector) instead of a long `a | b | c` type string.
9
+ * The dropdown switches which variant's schema is shown below it.
10
+ *
11
+ * All variant panels are kept mounted (only the selected one is visible) so a
12
+ * property inside an unselected variant is still present in the DOM. Each panel
13
+ * registers itself with the navigation registry so {@link revealAnchor} can
14
+ * select the variant containing a target before scrolling to it — letting a
15
+ * response example line expand the union as deep as needed.
16
+ *
17
+ * Styling lives in `openapi.css` keyed on the `data-v-openapi-union*` attributes.
18
+ */
19
+ export function SchemaUnion(props) {
20
+ const { kind, names, panels } = props;
21
+ const [open, setOpen] = useState(false);
22
+ const [selected, setSelected] = useState(null);
23
+ return (_jsxs("div", { "data-v-openapi-union": true, children: [_jsxs("div", { "data-v-openapi-union-head": true, children: [_jsxs("button", { type: "button", onClick: () => setOpen((value) => !value), "data-v-openapi-union-trigger": true, children: [_jsx("span", { "data-v-openapi-union-kind": true, children: kind }), selected === null ? (_jsx("span", { "data-v-openapi-union-value": true, children: "Select a value" })) : (_jsx("span", { "data-v-openapi-union-value": true, children: names[selected] })), _jsx(LucideChevronDown, { "data-v-openapi-union-chevron": true })] }), open && (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", "aria-label": "Close", tabIndex: -1, "data-v-openapi-dropdown-backdrop": true, onClick: () => setOpen(false) }), _jsx("ul", { "data-v-openapi-union-menu": true, children: names.map((name, index) => (_jsx("li", { children: _jsxs("button", { type: "button", onClick: () => {
24
+ setSelected(index);
25
+ setOpen(false);
26
+ }, "data-v-openapi-union-option": true, "data-selected": index === selected || undefined, children: [_jsx("span", { "data-v-openapi-union-radio": true, children: index === selected && _jsx("span", { "data-v-openapi-union-radio-dot": true }) }), _jsx("span", { "data-v-openapi-union-option-label": true, children: name })] }) }, name))) })] }))] }), panels.map((panel, index) => (_jsx(VariantPanelSlot
27
+ // biome-ignore lint/suspicious/noArrayIndexKey: panels are static and never reordered
28
+ , { visible: index === selected, onReveal: () => setSelected(index), children: panel }, index)))] }));
29
+ }
30
+ /**
31
+ * Wraps a single variant panel: always mounted (so its contents are navigable)
32
+ * but only laid out when selected. Registers the panel so navigating to an
33
+ * anchor inside it selects this variant.
34
+ */
35
+ function VariantPanelSlot(props) {
36
+ const { visible, onReveal, children } = props;
37
+ const ref = useRef(null);
38
+ const onRevealRef = useRef(onReveal);
39
+ onRevealRef.current = onReveal;
40
+ useEffect(() => {
41
+ const panel = ref.current;
42
+ if (!panel)
43
+ return;
44
+ return registerDisclosure(panel, () => onRevealRef.current());
45
+ }, []);
46
+ return (_jsx("div", { ref: ref, hidden: !visible, "data-v-openapi-union-panel": true, "data-visible": visible || undefined, children: children }));
47
+ }
48
+ //# sourceMappingURL=SchemaUnion.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaUnion.client.js","sourceRoot":"","sources":["../../../../src/react/internal/openapi/SchemaUnion.client.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,iBAAiB,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAElE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAC,KAAwB;IAClD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IACrC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAC7D,OAAO,CACL,wDACE,6DACE,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,mDAGzC,4DAAiC,IAAI,GAAQ,EAC5C,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CACnB,gFAAsD,CACvD,CAAC,CAAC,CAAC,CACF,6DAAkC,KAAK,CAAC,QAAQ,CAAC,GAAQ,CAC1D,EACD,KAAC,iBAAiB,2CAAgC,IAC3C,EACR,IAAI,IAAI,CACP,8BACE,iBACE,IAAI,EAAC,QAAQ,gBACF,OAAO,EAClB,QAAQ,EAAE,CAAC,CAAC,4CAEZ,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAC7B,EACF,0DACG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,uBACE,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE;4CACZ,WAAW,CAAC,KAAK,CAAC,CAAA;4CAClB,OAAO,CAAC,KAAK,CAAC,CAAA;wCAChB,CAAC,wDAEc,KAAK,KAAK,QAAQ,IAAI,SAAS,aAE9C,6DACG,KAAK,KAAK,QAAQ,IAAI,wDAAuC,GACzD,EACP,oEAAyC,IAAI,GAAQ,IAC9C,IAdF,IAAI,CAeR,CACN,CAAC,GACC,IACJ,CACJ,IACG,EACL,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5B,KAAC,gBAAgB;YACf,sFAAsF;gBAEtF,OAAO,EAAE,KAAK,KAAK,QAAQ,EAC3B,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,YAEjC,KAAK,IAJD,KAAK,CAKO,CACpB,CAAC,IACE,CACP,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAIzB;IACC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAC7C,MAAM,GAAG,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAA;IAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IACpC,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAA;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAA;QACzB,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,OAAO,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAA;IAC/D,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL,cAAK,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,OAAO,sDAA2C,OAAO,IAAI,SAAS,YAC3F,QAAQ,GACL,CACP,CAAA;AACH,CAAC"}