@apiboost/omnispec 1.0.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/LICENSE.md +202 -0
- package/README.md +166 -0
- package/core/package.json +5 -0
- package/dist/cjs/asyncapi/index.js +17 -0
- package/dist/cjs/asyncapi/index.js.map +1 -0
- package/dist/cjs/chunks/AsyncApiSpec-TBlyRxTP.js +819 -0
- package/dist/cjs/chunks/AsyncApiSpec-TBlyRxTP.js.map +1 -0
- package/dist/cjs/chunks/Collapsible-BHAHk_Ep.js +7527 -0
- package/dist/cjs/chunks/Collapsible-BHAHk_Ep.js.map +1 -0
- package/dist/cjs/chunks/ErrorBoundary-c1piU8da.js +36 -0
- package/dist/cjs/chunks/ErrorBoundary-c1piU8da.js.map +1 -0
- package/dist/cjs/chunks/OmniSpecRenderer-CE4wxVTL.js +104 -0
- package/dist/cjs/chunks/OmniSpecRenderer-CE4wxVTL.js.map +1 -0
- package/dist/cjs/chunks/OpenApiSpec-D0JtmOVQ.js +3157 -0
- package/dist/cjs/chunks/OpenApiSpec-D0JtmOVQ.js.map +1 -0
- package/dist/cjs/chunks/OpenIdConnectManual-oEnN0QJ-.js +2416 -0
- package/dist/cjs/chunks/OpenIdConnectManual-oEnN0QJ-.js.map +1 -0
- package/dist/cjs/chunks/RendererRegistry-DQ7JBLMT.js +24 -0
- package/dist/cjs/chunks/RendererRegistry-DQ7JBLMT.js.map +1 -0
- package/dist/cjs/chunks/binary-response-CSrPCI-1.js +77 -0
- package/dist/cjs/chunks/binary-response-CSrPCI-1.js.map +1 -0
- package/dist/cjs/chunks/ref-resolver-DWu6Q6E5.js +7108 -0
- package/dist/cjs/chunks/ref-resolver-DWu6Q6E5.js.map +1 -0
- package/dist/cjs/chunks/ssrf-guard-B6T2A7Ho.js +25 -0
- package/dist/cjs/chunks/ssrf-guard-B6T2A7Ho.js.map +1 -0
- package/dist/cjs/chunks/useSpecDetector-A4OwYrmY.js +252 -0
- package/dist/cjs/chunks/useSpecDetector-A4OwYrmY.js.map +1 -0
- package/dist/cjs/chunks/useSpecFetcher-BKz1jHTV.js +13669 -0
- package/dist/cjs/chunks/useSpecFetcher-BKz1jHTV.js.map +1 -0
- package/dist/cjs/core/public.js +198 -0
- package/dist/cjs/core/public.js.map +1 -0
- package/dist/cjs/index.js +36 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/openapi/index.js +19 -0
- package/dist/cjs/openapi/index.js.map +1 -0
- package/dist/cjs/server/index.js +154 -0
- package/dist/cjs/server/index.js.map +1 -0
- package/dist/cjs/wc/index.js +428 -0
- package/dist/cjs/wc/index.js.map +1 -0
- package/dist/esm/asyncapi/index.js +11 -0
- package/dist/esm/asyncapi/index.js.map +1 -0
- package/dist/esm/chunks/AsyncApiSpec-C3lsUpZk.js +817 -0
- package/dist/esm/chunks/AsyncApiSpec-C3lsUpZk.js.map +1 -0
- package/dist/esm/chunks/Collapsible-DA6-nS46.js +7482 -0
- package/dist/esm/chunks/Collapsible-DA6-nS46.js.map +1 -0
- package/dist/esm/chunks/ErrorBoundary-posRNrbt.js +34 -0
- package/dist/esm/chunks/ErrorBoundary-posRNrbt.js.map +1 -0
- package/dist/esm/chunks/OmniSpecRenderer-MqsQFXro.js +102 -0
- package/dist/esm/chunks/OmniSpecRenderer-MqsQFXro.js.map +1 -0
- package/dist/esm/chunks/OpenApiSpec-Cy-oW6jA.js +3153 -0
- package/dist/esm/chunks/OpenApiSpec-Cy-oW6jA.js.map +1 -0
- package/dist/esm/chunks/OpenIdConnectManual-COfITasf.js +2393 -0
- package/dist/esm/chunks/OpenIdConnectManual-COfITasf.js.map +1 -0
- package/dist/esm/chunks/RendererRegistry-zlh-WYbU.js +21 -0
- package/dist/esm/chunks/RendererRegistry-zlh-WYbU.js.map +1 -0
- package/dist/esm/chunks/binary-response-Cre_H-Rt.js +72 -0
- package/dist/esm/chunks/binary-response-Cre_H-Rt.js.map +1 -0
- package/dist/esm/chunks/ref-resolver-BIrHJOjz.js +7105 -0
- package/dist/esm/chunks/ref-resolver-BIrHJOjz.js.map +1 -0
- package/dist/esm/chunks/ssrf-guard-CsZoYdEq.js +23 -0
- package/dist/esm/chunks/ssrf-guard-CsZoYdEq.js.map +1 -0
- package/dist/esm/chunks/useSpecDetector-5SGcKnJx.js +248 -0
- package/dist/esm/chunks/useSpecDetector-5SGcKnJx.js.map +1 -0
- package/dist/esm/chunks/useSpecFetcher-CZvAnU7Z.js +13625 -0
- package/dist/esm/chunks/useSpecFetcher-CZvAnU7Z.js.map +1 -0
- package/dist/esm/core/public.js +102 -0
- package/dist/esm/core/public.js.map +1 -0
- package/dist/esm/index.js +17 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/openapi/index.js +13 -0
- package/dist/esm/openapi/index.js.map +1 -0
- package/dist/esm/server/index.js +152 -0
- package/dist/esm/server/index.js.map +1 -0
- package/dist/esm/wc/index.js +403 -0
- package/dist/esm/wc/index.js.map +1 -0
- package/dist/types/asyncapi/AsyncApiSpec.d.ts +12 -0
- package/dist/types/asyncapi/AsyncApiSpec.d.ts.map +1 -0
- package/dist/types/asyncapi/components/AsyncOverview.d.ts +16 -0
- package/dist/types/asyncapi/components/AsyncOverview.d.ts.map +1 -0
- package/dist/types/asyncapi/components/ChannelDetail.d.ts +19 -0
- package/dist/types/asyncapi/components/ChannelDetail.d.ts.map +1 -0
- package/dist/types/asyncapi/components/ComponentsSection.d.ts +16 -0
- package/dist/types/asyncapi/components/ComponentsSection.d.ts.map +1 -0
- package/dist/types/asyncapi/components/ProtocolBadge.d.ts +16 -0
- package/dist/types/asyncapi/components/ProtocolBadge.d.ts.map +1 -0
- package/dist/types/asyncapi/components/ServerList.d.ts +16 -0
- package/dist/types/asyncapi/components/ServerList.d.ts.map +1 -0
- package/dist/types/asyncapi/hooks/useAsyncApiSpec.d.ts +12 -0
- package/dist/types/asyncapi/hooks/useAsyncApiSpec.d.ts.map +1 -0
- package/dist/types/asyncapi/index.d.ts +11 -0
- package/dist/types/asyncapi/index.d.ts.map +1 -0
- package/dist/types/asyncapi/parser/asyncapi-parser.d.ts +12 -0
- package/dist/types/asyncapi/parser/asyncapi-parser.d.ts.map +1 -0
- package/dist/types/asyncapi/types/asyncapi.types.d.ts +125 -0
- package/dist/types/asyncapi/types/asyncapi.types.d.ts.map +1 -0
- package/dist/types/core/components/Auth/ApiKeyAuth.d.ts +30 -0
- package/dist/types/core/components/Auth/ApiKeyAuth.d.ts.map +1 -0
- package/dist/types/core/components/Auth/AuthPanel.d.ts +18 -0
- package/dist/types/core/components/Auth/AuthPanel.d.ts.map +1 -0
- package/dist/types/core/components/Auth/AuthPanelModal.d.ts +24 -0
- package/dist/types/core/components/Auth/AuthPanelModal.d.ts.map +1 -0
- package/dist/types/core/components/Auth/BasicAuth.d.ts +20 -0
- package/dist/types/core/components/Auth/BasicAuth.d.ts.map +1 -0
- package/dist/types/core/components/Auth/BearerAuth.d.ts +20 -0
- package/dist/types/core/components/Auth/BearerAuth.d.ts.map +1 -0
- package/dist/types/core/components/Auth/OAuth2AuthManual.d.ts +37 -0
- package/dist/types/core/components/Auth/OAuth2AuthManual.d.ts.map +1 -0
- package/dist/types/core/components/Auth/OpenIdConnectManual.d.ts +33 -0
- package/dist/types/core/components/Auth/OpenIdConnectManual.d.ts.map +1 -0
- package/dist/types/core/components/Auth/SecretInput.d.ts +27 -0
- package/dist/types/core/components/Auth/SecretInput.d.ts.map +1 -0
- package/dist/types/core/components/Auth/index.d.ts +16 -0
- package/dist/types/core/components/Auth/index.d.ts.map +1 -0
- package/dist/types/core/components/CodeBlock/CodeBlock.d.ts +32 -0
- package/dist/types/core/components/CodeBlock/CodeBlock.d.ts.map +1 -0
- package/dist/types/core/components/CodeBlock/index.d.ts +12 -0
- package/dist/types/core/components/CodeBlock/index.d.ts.map +1 -0
- package/dist/types/core/components/Layout/DocLayout.d.ts +24 -0
- package/dist/types/core/components/Layout/DocLayout.d.ts.map +1 -0
- package/dist/types/core/components/Layout/MobileDrawerDismissContext.d.ts +20 -0
- package/dist/types/core/components/Layout/MobileDrawerDismissContext.d.ts.map +1 -0
- package/dist/types/core/components/Layout/SpecStatusScreen.d.ts +38 -0
- package/dist/types/core/components/Layout/SpecStatusScreen.d.ts.map +1 -0
- package/dist/types/core/components/Layout/index.d.ts +11 -0
- package/dist/types/core/components/Layout/index.d.ts.map +1 -0
- package/dist/types/core/components/MarkdownRenderer/MarkdownRenderer.d.ts +16 -0
- package/dist/types/core/components/MarkdownRenderer/MarkdownRenderer.d.ts.map +1 -0
- package/dist/types/core/components/MarkdownRenderer/index.d.ts +11 -0
- package/dist/types/core/components/MarkdownRenderer/index.d.ts.map +1 -0
- package/dist/types/core/components/Navigation/CustomNavSection.d.ts +16 -0
- package/dist/types/core/components/Navigation/CustomNavSection.d.ts.map +1 -0
- package/dist/types/core/components/Navigation/NavTree.d.ts +32 -0
- package/dist/types/core/components/Navigation/NavTree.d.ts.map +1 -0
- package/dist/types/core/components/Navigation/SearchBar.d.ts +16 -0
- package/dist/types/core/components/Navigation/SearchBar.d.ts.map +1 -0
- package/dist/types/core/components/Navigation/buildSidebar.d.ts +13 -0
- package/dist/types/core/components/Navigation/buildSidebar.d.ts.map +1 -0
- package/dist/types/core/components/Navigation/index.d.ts +13 -0
- package/dist/types/core/components/Navigation/index.d.ts.map +1 -0
- package/dist/types/core/components/Reference/ReferenceLayout.d.ts +19 -0
- package/dist/types/core/components/Reference/ReferenceLayout.d.ts.map +1 -0
- package/dist/types/core/components/Reference/ReferenceOperationDetail.d.ts +42 -0
- package/dist/types/core/components/Reference/ReferenceOperationDetail.d.ts.map +1 -0
- package/dist/types/core/components/Reference/SamplesPanel.d.ts +33 -0
- package/dist/types/core/components/Reference/SamplesPanel.d.ts.map +1 -0
- package/dist/types/core/components/SchemaViewer/SchemaPresentation.d.ts +147 -0
- package/dist/types/core/components/SchemaViewer/SchemaPresentation.d.ts.map +1 -0
- package/dist/types/core/components/SchemaViewer/SchemaPrimitives.d.ts +66 -0
- package/dist/types/core/components/SchemaViewer/SchemaPrimitives.d.ts.map +1 -0
- package/dist/types/core/components/SchemaViewer/SchemaTable.d.ts +16 -0
- package/dist/types/core/components/SchemaViewer/SchemaTable.d.ts.map +1 -0
- package/dist/types/core/components/SchemaViewer/SchemaTree.d.ts +26 -0
- package/dist/types/core/components/SchemaViewer/SchemaTree.d.ts.map +1 -0
- package/dist/types/core/components/SchemaViewer/index.d.ts +16 -0
- package/dist/types/core/components/SchemaViewer/index.d.ts.map +1 -0
- package/dist/types/core/components/SchemaViewer/schema-style.d.ts +45 -0
- package/dist/types/core/components/SchemaViewer/schema-style.d.ts.map +1 -0
- package/dist/types/core/components/SchemaViewer/schema-utils.d.ts +83 -0
- package/dist/types/core/components/SchemaViewer/schema-utils.d.ts.map +1 -0
- package/dist/types/core/components/TryIt/CodeSamples.d.ts +26 -0
- package/dist/types/core/components/TryIt/CodeSamples.d.ts.map +1 -0
- package/dist/types/core/components/TryIt/CustomHeaders.d.ts +24 -0
- package/dist/types/core/components/TryIt/CustomHeaders.d.ts.map +1 -0
- package/dist/types/core/components/TryIt/InlineTryIt.d.ts +26 -0
- package/dist/types/core/components/TryIt/InlineTryIt.d.ts.map +1 -0
- package/dist/types/core/components/TryIt/ParameterForm.d.ts +34 -0
- package/dist/types/core/components/TryIt/ParameterForm.d.ts.map +1 -0
- package/dist/types/core/components/TryIt/RequestBodyEditor.d.ts +34 -0
- package/dist/types/core/components/TryIt/RequestBodyEditor.d.ts.map +1 -0
- package/dist/types/core/components/TryIt/ResponseViewer.d.ts +18 -0
- package/dist/types/core/components/TryIt/ResponseViewer.d.ts.map +1 -0
- package/dist/types/core/components/TryIt/TryItPanel.d.ts +38 -0
- package/dist/types/core/components/TryIt/TryItPanel.d.ts.map +1 -0
- package/dist/types/core/components/TryIt/code-generators.d.ts +23 -0
- package/dist/types/core/components/TryIt/code-generators.d.ts.map +1 -0
- package/dist/types/core/components/TryIt/curl-generator.d.ts +12 -0
- package/dist/types/core/components/TryIt/curl-generator.d.ts.map +1 -0
- package/dist/types/core/components/TryIt/index.d.ts +16 -0
- package/dist/types/core/components/TryIt/index.d.ts.map +1 -0
- package/dist/types/core/components/common/Badge.d.ts +19 -0
- package/dist/types/core/components/common/Badge.d.ts.map +1 -0
- package/dist/types/core/components/common/Button.d.ts +44 -0
- package/dist/types/core/components/common/Button.d.ts.map +1 -0
- package/dist/types/core/components/common/Collapsible.d.ts +23 -0
- package/dist/types/core/components/common/Collapsible.d.ts.map +1 -0
- package/dist/types/core/components/common/CopyButton.d.ts +16 -0
- package/dist/types/core/components/common/CopyButton.d.ts.map +1 -0
- package/dist/types/core/components/common/ErrorBoundary.d.ts +40 -0
- package/dist/types/core/components/common/ErrorBoundary.d.ts.map +1 -0
- package/dist/types/core/components/common/ErrorMessage.d.ts +16 -0
- package/dist/types/core/components/common/ErrorMessage.d.ts.map +1 -0
- package/dist/types/core/components/common/ExampleSelector.d.ts +29 -0
- package/dist/types/core/components/common/ExampleSelector.d.ts.map +1 -0
- package/dist/types/core/components/common/ExpandableCard.d.ts +27 -0
- package/dist/types/core/components/common/ExpandableCard.d.ts.map +1 -0
- package/dist/types/core/components/common/Icon.d.ts +53 -0
- package/dist/types/core/components/common/Icon.d.ts.map +1 -0
- package/dist/types/core/components/common/LinkableHeading.d.ts +19 -0
- package/dist/types/core/components/common/LinkableHeading.d.ts.map +1 -0
- package/dist/types/core/components/common/LoadingScreen.d.ts +13 -0
- package/dist/types/core/components/common/LoadingScreen.d.ts.map +1 -0
- package/dist/types/core/components/common/MethodBar.d.ts +18 -0
- package/dist/types/core/components/common/MethodBar.d.ts.map +1 -0
- package/dist/types/core/components/common/Modal.d.ts +19 -0
- package/dist/types/core/components/common/Modal.d.ts.map +1 -0
- package/dist/types/core/components/common/ResponsiveColumns.d.ts +17 -0
- package/dist/types/core/components/common/ResponsiveColumns.d.ts.map +1 -0
- package/dist/types/core/components/common/SpecToolbar.d.ts +27 -0
- package/dist/types/core/components/common/SpecToolbar.d.ts.map +1 -0
- package/dist/types/core/components/common/Tabs.d.ts +29 -0
- package/dist/types/core/components/common/Tabs.d.ts.map +1 -0
- package/dist/types/core/components/common/Tooltip.d.ts +17 -0
- package/dist/types/core/components/common/Tooltip.d.ts.map +1 -0
- package/dist/types/core/components/common/UpgradePrompt.d.ts +18 -0
- package/dist/types/core/components/common/UpgradePrompt.d.ts.map +1 -0
- package/dist/types/core/components/common/index.d.ts +18 -0
- package/dist/types/core/components/common/index.d.ts.map +1 -0
- package/dist/types/core/context/AuthContext.d.ts +35 -0
- package/dist/types/core/context/AuthContext.d.ts.map +1 -0
- package/dist/types/core/context/ConfigContext.d.ts +55 -0
- package/dist/types/core/context/ConfigContext.d.ts.map +1 -0
- package/dist/types/core/context/ExpandContext.d.ts +33 -0
- package/dist/types/core/context/ExpandContext.d.ts.map +1 -0
- package/dist/types/core/context/RendererRegistry.d.ts +24 -0
- package/dist/types/core/context/RendererRegistry.d.ts.map +1 -0
- package/dist/types/core/context/index.d.ts +14 -0
- package/dist/types/core/context/index.d.ts.map +1 -0
- package/dist/types/core/hooks/index.d.ts +12 -0
- package/dist/types/core/hooks/index.d.ts.map +1 -0
- package/dist/types/core/hooks/useHashScroll.d.ts +15 -0
- package/dist/types/core/hooks/useHashScroll.d.ts.map +1 -0
- package/dist/types/core/hooks/useScrollSpy.d.ts +33 -0
- package/dist/types/core/hooks/useScrollSpy.d.ts.map +1 -0
- package/dist/types/core/hooks/useSegmentedRouter.d.ts +19 -0
- package/dist/types/core/hooks/useSegmentedRouter.d.ts.map +1 -0
- package/dist/types/core/hooks/useSpecDetector.d.ts +13 -0
- package/dist/types/core/hooks/useSpecDetector.d.ts.map +1 -0
- package/dist/types/core/hooks/useSpecFetcher.d.ts +17 -0
- package/dist/types/core/hooks/useSpecFetcher.d.ts.map +1 -0
- package/dist/types/core/public.d.ts +86 -0
- package/dist/types/core/public.d.ts.map +1 -0
- package/dist/types/core/styles/breakpoints.d.ts +33 -0
- package/dist/types/core/styles/breakpoints.d.ts.map +1 -0
- package/dist/types/core/styles/css.d.ts +17 -0
- package/dist/types/core/styles/css.d.ts.map +1 -0
- package/dist/types/core/styles/styled.d.ts +25 -0
- package/dist/types/core/styles/styled.d.ts.map +1 -0
- package/dist/types/core/themes/ThemeProvider.d.ts +25 -0
- package/dist/types/core/themes/ThemeProvider.d.ts.map +1 -0
- package/dist/types/core/themes/index.d.ts +12 -0
- package/dist/types/core/themes/index.d.ts.map +1 -0
- package/dist/types/core/themes/tokens.d.ts +13 -0
- package/dist/types/core/themes/tokens.d.ts.map +1 -0
- package/dist/types/core/types/auth.types.d.ts +83 -0
- package/dist/types/core/types/auth.types.d.ts.map +1 -0
- package/dist/types/core/types/common.types.d.ts +141 -0
- package/dist/types/core/types/common.types.d.ts.map +1 -0
- package/dist/types/core/types/index.d.ts +16 -0
- package/dist/types/core/types/index.d.ts.map +1 -0
- package/dist/types/core/types/interactive-auth.types.d.ts +37 -0
- package/dist/types/core/types/interactive-auth.types.d.ts.map +1 -0
- package/dist/types/core/types/sidebar-nav.types.d.ts +41 -0
- package/dist/types/core/types/sidebar-nav.types.d.ts.map +1 -0
- package/dist/types/core/types/spec-detection.types.d.ts +26 -0
- package/dist/types/core/types/spec-detection.types.d.ts.map +1 -0
- package/dist/types/core/types/theme.types.d.ts +119 -0
- package/dist/types/core/types/theme.types.d.ts.map +1 -0
- package/dist/types/core/types/try-it.types.d.ts +50 -0
- package/dist/types/core/types/try-it.types.d.ts.map +1 -0
- package/dist/types/core/utils/binary-response.d.ts +24 -0
- package/dist/types/core/utils/binary-response.d.ts.map +1 -0
- package/dist/types/core/utils/detect-spec.d.ts +12 -0
- package/dist/types/core/utils/detect-spec.d.ts.map +1 -0
- package/dist/types/core/utils/direct-client.d.ts +20 -0
- package/dist/types/core/utils/direct-client.d.ts.map +1 -0
- package/dist/types/core/utils/fetch-spec.d.ts +15 -0
- package/dist/types/core/utils/fetch-spec.d.ts.map +1 -0
- package/dist/types/core/utils/index.d.ts +14 -0
- package/dist/types/core/utils/index.d.ts.map +1 -0
- package/dist/types/core/utils/proxy-client.d.ts +19 -0
- package/dist/types/core/utils/proxy-client.d.ts.map +1 -0
- package/dist/types/core/utils/ref-security.d.ts +78 -0
- package/dist/types/core/utils/ref-security.d.ts.map +1 -0
- package/dist/types/core/utils/resolve-download-link.d.ts +23 -0
- package/dist/types/core/utils/resolve-download-link.d.ts.map +1 -0
- package/dist/types/core/utils/sanitize-html.d.ts +16 -0
- package/dist/types/core/utils/sanitize-html.d.ts.map +1 -0
- package/dist/types/core/utils/tryit-storage.d.ts +45 -0
- package/dist/types/core/utils/tryit-storage.d.ts.map +1 -0
- package/dist/types/index.d.ts +29 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/openapi/OpenApiSpec.d.ts +12 -0
- package/dist/types/openapi/OpenApiSpec.d.ts.map +1 -0
- package/dist/types/openapi/components/ApiOverview.d.ts +19 -0
- package/dist/types/openapi/components/ApiOverview.d.ts.map +1 -0
- package/dist/types/openapi/components/CallbacksSection.d.ts +19 -0
- package/dist/types/openapi/components/CallbacksSection.d.ts.map +1 -0
- package/dist/types/openapi/components/ComponentsSection.d.ts +19 -0
- package/dist/types/openapi/components/ComponentsSection.d.ts.map +1 -0
- package/dist/types/openapi/components/EndpointCard.d.ts +20 -0
- package/dist/types/openapi/components/EndpointCard.d.ts.map +1 -0
- package/dist/types/openapi/components/OperationDetail.d.ts +28 -0
- package/dist/types/openapi/components/OperationDetail.d.ts.map +1 -0
- package/dist/types/openapi/components/OperationView.d.ts +19 -0
- package/dist/types/openapi/components/OperationView.d.ts.map +1 -0
- package/dist/types/openapi/components/SegmentedContent.d.ts +22 -0
- package/dist/types/openapi/components/SegmentedContent.d.ts.map +1 -0
- package/dist/types/openapi/components/ServerSelector.d.ts +18 -0
- package/dist/types/openapi/components/ServerSelector.d.ts.map +1 -0
- package/dist/types/openapi/components/TagGroup.d.ts +19 -0
- package/dist/types/openapi/components/TagGroup.d.ts.map +1 -0
- package/dist/types/openapi/hooks/useOpenApiSpec.d.ts +13 -0
- package/dist/types/openapi/hooks/useOpenApiSpec.d.ts.map +1 -0
- package/dist/types/openapi/index.d.ts +11 -0
- package/dist/types/openapi/index.d.ts.map +1 -0
- package/dist/types/openapi/parser/openapi-parser.d.ts +13 -0
- package/dist/types/openapi/parser/openapi-parser.d.ts.map +1 -0
- package/dist/types/openapi/parser/ref-resolver.d.ts +18 -0
- package/dist/types/openapi/parser/ref-resolver.d.ts.map +1 -0
- package/dist/types/openapi/search.d.ts +16 -0
- package/dist/types/openapi/search.d.ts.map +1 -0
- package/dist/types/openapi/types/openapi.types.d.ts +139 -0
- package/dist/types/openapi/types/openapi.types.d.ts.map +1 -0
- package/dist/types/server/index.d.ts +12 -0
- package/dist/types/server/index.d.ts.map +1 -0
- package/dist/types/server/proxy-router.d.ts +44 -0
- package/dist/types/server/proxy-router.d.ts.map +1 -0
- package/dist/types/server/ssrf-guard.d.ts +20 -0
- package/dist/types/server/ssrf-guard.d.ts.map +1 -0
- package/dist/types/test-setup.d.ts +11 -0
- package/dist/types/test-setup.d.ts.map +1 -0
- package/dist/types/unified/OmniSpecRenderer.d.ts +18 -0
- package/dist/types/unified/OmniSpecRenderer.d.ts.map +1 -0
- package/dist/types/unified/index.d.ts +12 -0
- package/dist/types/unified/index.d.ts.map +1 -0
- package/dist/types/wc/OmniSpecRendererElement.d.ts +48 -0
- package/dist/types/wc/OmniSpecRendererElement.d.ts.map +1 -0
- package/dist/types/wc/attribute-bridge.d.ts +96 -0
- package/dist/types/wc/attribute-bridge.d.ts.map +1 -0
- package/dist/types/wc/index.d.ts +42 -0
- package/dist/types/wc/index.d.ts.map +1 -0
- package/dist/types/wc/style-injection.d.ts +24 -0
- package/dist/types/wc/style-injection.d.ts.map +1 -0
- package/dist/wc/standalone.js +3 -0
- package/dist/wc/standalone.js.LICENSE.txt +65 -0
- package/dist/wc/standalone.js.map +1 -0
- package/package.json +167 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenApiSpec-Cy-oW6jA.js","sources":["../../../src/core/types/auth.types.ts","../../../src/core/components/Auth/BearerAuth.tsx","../../../src/core/components/Auth/BasicAuth.tsx","../../../src/core/components/Auth/AuthPanel.tsx","../../../src/core/components/Auth/AuthPanelModal.tsx","../../../src/openapi/parser/openapi-parser.ts","../../../src/openapi/hooks/useOpenApiSpec.ts","../../../src/openapi/components/ApiOverview.tsx","../../../src/openapi/components/ServerSelector.tsx","../../../src/core/components/TryIt/ParameterForm.tsx","../../../src/core/components/TryIt/RequestBodyEditor.tsx","../../../src/core/components/TryIt/CustomHeaders.tsx","../../../src/core/components/TryIt/TryItPanel.tsx","../../../src/core/components/TryIt/InlineTryIt.tsx","../../../src/openapi/components/CallbacksSection.tsx","../../../src/openapi/components/OperationDetail.tsx","../../../src/openapi/components/EndpointCard.tsx","../../../src/openapi/components/TagGroup.tsx","../../../src/openapi/components/ComponentsSection.tsx","../../../src/core/hooks/useSegmentedRouter.ts","../../../src/openapi/components/OperationView.tsx","../../../src/openapi/components/SegmentedContent.tsx","../../../src/openapi/search.ts","../../../src/openapi/OpenApiSpec.tsx"],"sourcesContent":["/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nexport type AuthSchemeType = 'apiKey' | 'http-basic' | 'http-bearer' | 'oauth2' | 'openIdConnect'\n\n/**\n * Canonical, human-facing labels for each auth-scheme type. The Authorize tab\n * uses these instead of the raw spec value so casing stays consistent\n * (`oauth2`/`oAuth2` in a spec both render as \"OAuth2\"). See ABOSPEC-215.\n */\nconst AUTH_SCHEME_LABELS: Record<AuthSchemeType, string> = {\n apiKey: 'API Key',\n 'http-basic': 'Basic Auth',\n 'http-bearer': 'Bearer Token',\n oauth2: 'OAuth2',\n openIdConnect: 'OpenID Connect',\n}\n\n/**\n * The canonical display label for an auth-scheme type. Use this for the\n * human-facing tab/label rather than the per-scheme `id` (which stays for\n * disambiguating multiple schemes of the same type).\n */\nexport function authSchemeLabel(type: AuthSchemeType): string {\n return AUTH_SCHEME_LABELS[type]\n}\n\nexport interface AuthScheme {\n id: string\n type: AuthSchemeType\n displayName: string\n description?: string\n in?: 'header' | 'query' | 'cookie'\n name?: string\n scheme?: 'basic' | 'bearer'\n flows?: OAuth2Flows\n /**\n * OpenID Connect discovery document URL (the `openIdConnectUrl` of an\n * `openIdConnect` security scheme). At Try-It time the OpenID configuration is\n * fetched from here and its `authorization_endpoint` / `token_endpoint` /\n * `scopes_supported` are mapped into {@link flows} so the Authorize panel\n * renders identically to a declared `oauth2` scheme. See ABOSPEC-215.\n */\n openIdConnectUrl?: string\n /**\n * Raw scheme-level vendor extensions (any `x-*` key from the security scheme),\n * carried verbatim. The free core does not interpret these; Pro reads them\n * (e.g. `x-tokenEndpointAuthMethod`) for the interactive OAuth flow.\n */\n extensions?: Record<string, unknown>\n}\n\nexport interface OAuth2Flows {\n authorizationCode?: OAuth2Flow\n implicit?: OAuth2Flow\n clientCredentials?: OAuth2Flow\n password?: OAuth2Flow\n}\n\nexport interface OAuth2Flow {\n authorizationUrl?: string\n tokenUrl?: string\n refreshUrl?: string\n scopes: Record<string, string>\n /**\n * Raw flow-level vendor extensions (any `x-*` key on the flow), carried\n * verbatim. The free core does not interpret these; Pro reads them (e.g.\n * `x-flowVariables`) for the interactive OAuth flow. Kept at the flow level\n * because `x-flowVariables` is per-flow.\n */\n extensions?: Record<string, unknown>\n}\n\n/** Configuration for the interactive OAuth 2.0 Try-It flow. */\nexport interface OAuthConfig {\n /**\n * Redirect URI registered with the identity provider. Relative paths\n * resolve against the current origin. Defaults to\n * `{origin}/oauth2-redirect.html`. The callback page must be served from\n * the same origin as the documentation page.\n */\n redirectUri?: string\n /** Send PKCE parameters with the authorization-code flow. Defaults to true. */\n usePkce?: boolean\n}\n\nexport interface AppliedAuthValue {\n schemeId: string\n headerName: string\n headerValue: string\n /**\n * The raw values the user typed (e.g. `{ token }`, `{ username, password }`),\n * kept so the Authorize form can be prefilled when credentials are restored\n * from persistence. Never shown unmasked until the user reveals it.\n */\n input?: Record<string, string>\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport type { AuthScheme, AppliedAuthValue } from '../../types/auth.types'\nimport { authStyles } from './ApiKeyAuth'\nimport { SecretInput } from './SecretInput'\nimport { MarkdownRenderer } from '@core/components/MarkdownRenderer/MarkdownRenderer'\n\ninterface BearerAuthProps {\n scheme: AuthScheme\n onApply: (value: AppliedAuthValue) => void\n onRemove: (schemeId: string) => void\n applied?: boolean\n appliedValue?: AppliedAuthValue\n}\n\nexport function BearerAuth({ scheme, onApply, onRemove, applied, appliedValue }: BearerAuthProps) {\n const [token, setToken] = useState(appliedValue?.input?.token ?? '')\n\n const handleApply = () => {\n if (!token.trim()) return\n onApply({\n schemeId: scheme.id,\n headerName: 'Authorization',\n headerValue: `Bearer ${token}`,\n input: { token },\n })\n }\n\n const handleRemove = () => {\n // Clearing the input on remove keeps the field in sync with the removed auth.\n setToken('')\n onRemove(scheme.id)\n }\n\n return (\n <div className={authStyles.section}>\n <div className={authStyles.label}>\n {scheme.displayName}\n <span className={authStyles.hint}>(Bearer Token)</span>\n </div>\n {scheme.description && (\n <MarkdownRenderer content={scheme.description} className={authStyles.description} />\n )}\n <div className={authStyles.inputRow}>\n <SecretInput\n value={token}\n onChange={setToken}\n placeholder=\"Enter bearer token\"\n className={authStyles.input}\n aria-label={`${scheme.displayName} bearer token`}\n />\n {applied ? (\n <button type=\"button\" onClick={handleRemove} className={authStyles.removeBtn}>\n Remove\n </button>\n ) : (\n <button type=\"button\" onClick={handleApply} className={authStyles.applyBtn}>\n Apply\n </button>\n )}\n </div>\n </div>\n )\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport { css } from '../../styles/css'\nimport type { AuthScheme, AppliedAuthValue } from '../../types/auth.types'\nimport { authStyles } from './ApiKeyAuth'\nimport { SecretInput } from './SecretInput'\nimport { MarkdownRenderer } from '@core/components/MarkdownRenderer/MarkdownRenderer'\n\ninterface BasicAuthProps {\n scheme: AuthScheme\n onApply: (value: AppliedAuthValue) => void\n onRemove: (schemeId: string) => void\n applied?: boolean\n appliedValue?: AppliedAuthValue\n}\n\nconst fieldColumnStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n})\n\nexport function BasicAuth({ scheme, onApply, onRemove, applied, appliedValue }: BasicAuthProps) {\n const [username, setUsername] = useState(appliedValue?.input?.username ?? '')\n const [password, setPassword] = useState(appliedValue?.input?.password ?? '')\n\n const handleApply = () => {\n if (!username.trim()) return\n const encoded = btoa(`${username}:${password}`)\n onApply({\n schemeId: scheme.id,\n headerName: 'Authorization',\n headerValue: `Basic ${encoded}`,\n input: { username, password },\n })\n }\n\n const handleRemove = () => {\n // Clearing the inputs on remove keeps the fields in sync with the removed auth.\n setUsername('')\n setPassword('')\n onRemove(scheme.id)\n }\n\n return (\n <div className={authStyles.section}>\n <div className={authStyles.label}>\n {scheme.displayName}\n <span className={authStyles.hint}>(HTTP Basic)</span>\n </div>\n {scheme.description && (\n <MarkdownRenderer content={scheme.description} className={authStyles.description} />\n )}\n <div className={fieldColumnStyle}>\n <input\n type=\"text\"\n value={username}\n onChange={(e) => setUsername(e.target.value)}\n placeholder=\"Username\"\n className={authStyles.input}\n autoComplete=\"username\"\n />\n <SecretInput\n value={password}\n onChange={setPassword}\n placeholder=\"Password\"\n className={authStyles.input}\n autoComplete=\"current-password\"\n aria-label={`${scheme.displayName} password`}\n />\n <div className={authStyles.inputRow}>\n {applied ? (\n <button type=\"button\" onClick={handleRemove} className={authStyles.removeBtn}>\n Remove\n </button>\n ) : (\n <button type=\"button\" onClick={handleApply} className={authStyles.applyBtn}>\n Apply\n </button>\n )}\n </div>\n </div>\n </div>\n )\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport type { ReactElement } from 'react'\nimport { css } from '../../styles/css'\nimport type { AuthScheme, AppliedAuthValue } from '../../types/auth.types'\nimport { authSchemeLabel } from '../../types/auth.types'\nimport { useAuth } from '../../context/AuthContext'\nimport { useConfig } from '../../context/ConfigContext'\nimport type { InteractiveAuthComponent } from '../../types/interactive-auth.types'\nimport { Tabs } from '../common/Tabs'\nimport type { TabItem } from '../common/Tabs'\nimport { Icon } from '../common/Icon'\nimport { ApiKeyAuth } from './ApiKeyAuth'\nimport { BearerAuth } from './BearerAuth'\nimport { BasicAuth } from './BasicAuth'\nimport { OAuth2AuthManual } from './OAuth2AuthManual'\nimport { OpenIdConnectManual } from './OpenIdConnectManual'\n\ninterface AuthPanelProps {\n schemes: AuthScheme[]\n /** Selected server URL — forwarded so OAuth2 relative flow URLs resolve. */\n serverUrl?: string\n}\n\ninterface SchemeFormProps {\n scheme: AuthScheme\n onApply: (value: AppliedAuthValue) => void\n onRemove: (schemeId: string) => void\n applied: boolean\n appliedValue?: AppliedAuthValue\n serverUrl?: string\n}\n\n/**\n * Renders the form for a single scheme, or null for a type we can't render.\n * The `oauth2`/`openIdConnect` components are resolved by the caller: the free\n * manual shell by default, or a Pro-supplied interactive component when present\n * and not opted out.\n */\nfunction renderSchemeForm(\n props: SchemeFormProps,\n Oauth2Component: InteractiveAuthComponent,\n OpenIdConnectComponent: InteractiveAuthComponent,\n): ReactElement | null {\n // Key every form by scheme id: AuthPanel/Tabs render one form at a single tree\n // position, so without a distinct key React reuses the component instance when\n // switching scheme tabs — bleeding per-scheme state (e.g. OAuth `activeFlow`,\n // client id/secret, pasted token) from one scheme into the next. Keying forces\n // a remount per scheme so each starts from its own props/applied value.\n const key = props.scheme.id\n switch (props.scheme.type) {\n case 'apiKey':\n return <ApiKeyAuth key={key} {...props} />\n case 'http-bearer':\n return <BearerAuth key={key} {...props} />\n case 'http-basic':\n return <BasicAuth key={key} {...props} />\n case 'oauth2':\n return <Oauth2Component key={key} {...props} />\n case 'openIdConnect':\n return <OpenIdConnectComponent key={key} {...props} />\n default:\n return null\n }\n}\n\nexport function AuthPanel({ schemes, serverUrl }: AuthPanelProps) {\n const { appliedAuth, applyAuth, removeAuth } = useAuth()\n const { interactiveAuth, interactiveOAuth } = useConfig()\n\n if (schemes.length === 0) return null\n\n // Interactive OAuth/OIDC is a Pro feature supplied via `interactiveAuth`. Use\n // it when present and the consumer hasn't opted out (`interactiveOAuth={false}`);\n // otherwise fall back to the free manual (token-paste) shell.\n const useInteractive = interactiveOAuth !== false\n const Oauth2Component: InteractiveAuthComponent =\n (useInteractive && interactiveAuth?.oauth2) || OAuth2AuthManual\n const OpenIdConnectComponent: InteractiveAuthComponent =\n (useInteractive && interactiveAuth?.openIdConnect) || OpenIdConnectManual\n\n const buildProps = (scheme: AuthScheme): SchemeFormProps => ({\n scheme,\n onApply: applyAuth,\n onRemove: removeAuth,\n applied: appliedAuth.has(scheme.id),\n // Restored credential (if any) so the input can be prefilled.\n appliedValue: appliedAuth.get(scheme.id),\n serverUrl,\n })\n\n // Only schemes we can actually render become forms; unknown types are dropped\n // so they never surface as an empty tab.\n const renderable = schemes\n .map((scheme) => ({ scheme, form: renderSchemeForm(buildProps(scheme), Oauth2Component, OpenIdConnectComponent) }))\n .filter((entry): entry is { scheme: AuthScheme; form: ReactElement } => entry.form !== null)\n\n if (renderable.length === 0) return null\n\n // A single scheme renders directly — no tab chrome (unchanged behavior).\n if (renderable.length === 1) {\n return (\n <div className={`omnispec-auth-panel ${panelContainerStyle}`}>\n {renderable[0].form}\n </div>\n )\n }\n\n // The type label comes from the canonical map so casing is consistent\n // (ABOSPEC-215). When more than one scheme shares a type, the per-scheme id\n // disambiguates them; a lone scheme of its type shows just the type label.\n const typeCounts = renderable.reduce<Record<string, number>>((acc, { scheme }) => {\n acc[scheme.type] = (acc[scheme.type] ?? 0) + 1\n return acc\n }, {})\n const tabLabel = (scheme: AuthScheme): string => {\n const label = authSchemeLabel(scheme.type)\n return typeCounts[scheme.type] > 1 ? `${label} (${scheme.id})` : label\n }\n\n // Multiple schemes: one tab each. The applied indicator lives on the tab so\n // the authorized state of schemes you're NOT currently viewing stays visible\n // — important when an operation requires more than one scheme (AND).\n const tabs: TabItem[] = renderable.map(({ scheme, form }) => ({\n id: scheme.id,\n label: (\n <span className={tabLabelStyle}>\n {tabLabel(scheme)}\n {appliedAuth.has(scheme.id) && (\n <span className={appliedIconStyle} title=\"Authorized\" role=\"img\" aria-label=\"Authorized\">\n <Icon name=\"shield-check\" size=\"0.875rem\" />\n </span>\n )}\n </span>\n ),\n content: form,\n }))\n\n // Land on an already-authorized scheme if there is one, else the first.\n const defaultTab = renderable.find(({ scheme }) => appliedAuth.has(scheme.id))?.scheme.id\n ?? renderable[0].scheme.id\n\n return (\n <div className={`omnispec-auth-panel ${panelContainerStyle}`}>\n <Tabs tabs={tabs} defaultTab={defaultTab} flush />\n </div>\n )\n}\n\nconst panelContainerStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n})\n\nconst tabLabelStyle = css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.375rem',\n})\n\nconst appliedIconStyle = css({\n display: 'inline-flex',\n alignItems: 'center',\n color: 'var(--omnispec-color-success)',\n flexShrink: 0,\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useAuth } from '@core/context/AuthContext'\nimport { Modal } from '@core/components/common/Modal'\nimport { AuthPanel } from '@core/components/Auth/AuthPanel'\n\n/**\n * Renders the Authorization panel inside a modal, driven by AuthContext.\n *\n * The Authorize trigger lives in each Try-It panel header; it calls\n * `openAuthPanel()` from AuthContext, and this single host (rendered once\n * inside AuthProvider) shows the shared modal. Applied credentials are global\n * (AuthContext), so authorizing from any operation's panel affects them all.\n */\ninterface AuthPanelModalProps {\n /** Selected server URL, forwarded so OAuth2 relative flow URLs resolve. */\n serverUrl?: string\n}\n\nexport function AuthPanelModal({ serverUrl }: AuthPanelModalProps = {}) {\n const { schemes, authPanelOpen, closeAuthPanel } = useAuth()\n\n if (schemes.length === 0) return null\n\n return (\n <Modal open={authPanelOpen} onClose={closeAuthPanel} title=\"Authorization\">\n <AuthPanel schemes={schemes} serverUrl={serverUrl} />\n </Modal>\n )\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { parse as parseYaml } from 'yaml'\nimport { resolveRefs } from './ref-resolver'\nimport type { ResolveRefsOptions } from './ref-resolver'\nimport type {\n ParsedOpenApiSpec,\n OpenApiServer,\n OpenApiTag,\n OpenApiOperation,\n OpenApiParameter,\n OpenApiRequestBody,\n OpenApiResponse,\n OpenApiComponents,\n} from '../types/openapi.types'\nimport type { AuthScheme } from '../../core/types/auth.types'\n\ninterface OpenAPIDocument {\n openapi?: string\n swagger?: string\n info: { title: string; description?: string; version: string; contact?: Record<string, string>; license?: Record<string, string>; termsOfService?: string }\n servers?: Array<{ url: string; description?: string; variables?: Record<string, { default: string; description?: string; enum?: string[] }> }>\n host?: string\n basePath?: string\n schemes?: string[]\n paths: Record<string, Record<string, OperationObject>>\n // OpenAPI 3.1 top-level webhooks (path-item shaped, keyed by webhook name).\n webhooks?: Record<string, Record<string, OperationObject>>\n tags?: Array<{ name: string; description?: string }>\n components?: { schemas?: Record<string, unknown>; securitySchemes?: Record<string, SecuritySchemeObject>; responses?: Record<string, unknown>; parameters?: Record<string, unknown>; requestBodies?: Record<string, unknown> }\n securityDefinitions?: Record<string, SecuritySchemeObject>\n // Root-level security requirements (apply to all operations unless overridden).\n security?: Array<Record<string, string[]>>\n externalDocs?: { description?: string; url: string }\n}\n\ninterface OperationObject {\n operationId?: string\n summary?: string\n description?: string\n tags?: string[]\n deprecated?: boolean\n parameters?: ParameterObject[]\n requestBody?: RequestBodyObject\n responses?: Record<string, ResponseObject>\n security?: Array<Record<string, string[]>>\n callbacks?: Record<string, unknown>\n externalDocs?: { description?: string; url: string }\n}\n\ninterface ParameterObject {\n name: string\n in: string\n required?: boolean\n description?: string\n deprecated?: boolean\n schema?: Record<string, unknown>\n type?: string\n format?: string\n enum?: unknown[]\n example?: unknown\n examples?: Record<string, { summary?: string; value: unknown }>\n style?: string\n explode?: boolean\n}\n\ninterface RequestBodyObject {\n description?: string\n required?: boolean\n content: Record<string, { schema?: Record<string, unknown>; example?: unknown; examples?: Record<string, { summary?: string; value: unknown }> }>\n}\n\ninterface ResponseObject {\n description?: string\n content?: Record<string, { schema?: Record<string, unknown>; example?: unknown; examples?: Record<string, { summary?: string; value: unknown }> }>\n headers?: Record<string, { description?: string; schema?: Record<string, unknown> }>\n}\n\ninterface SecuritySchemeObject {\n type: string\n description?: string\n name?: string\n in?: string\n scheme?: string\n flows?: Record<string, {\n authorizationUrl?: string\n tokenUrl?: string\n refreshUrl?: string\n scopes?: Record<string, string>\n /** OmniSpec `x-flowVariables` — URL templating variables for this flow (ABOSPEC-221). */\n 'x-flowVariables'?: Record<string, { default: string; enum?: string[]; description?: string }>\n }>\n /** Preselects the token-endpoint client-authentication method for confidential clients. */\n 'x-tokenEndpointAuthMethod'?: string\n /** OpenID Connect discovery document URL (an `openIdConnect` security scheme). */\n openIdConnectUrl?: string\n // Swagger 2.0 fields\n flow?: string\n authorizationUrl?: string\n tokenUrl?: string\n scopes?: Record<string, string>\n}\n\nexport async function parseOpenApiSpec(\n specInput: string | Record<string, unknown>,\n refOptions?: ResolveRefsOptions,\n): Promise<ParsedOpenApiSpec> {\n // Parse and resolve $refs using our lightweight browser-compatible resolver\n const raw = typeof specInput === 'string' ? parseSpecString(specInput) : specInput\n const api = await resolveRefs(raw as Record<string, unknown>, refOptions) as unknown as OpenAPIDocument\n\n const isSwagger2 = !!api.swagger\n const specVersion = api.openapi ?? api.swagger ?? 'unknown'\n\n // Extract servers\n const servers = extractServers(api, isSwagger2)\n\n // Extract security schemes\n const securitySchemes = extractSecuritySchemes(api, isSwagger2)\n\n // Extract operations grouped by tags\n const tags = extractTaggedOperations(api, isSwagger2)\n\n // Extract components/schemas\n const components = extractComponents(api, isSwagger2)\n\n // Extract OpenAPI 3.1 top-level webhooks (normalized to operations)\n const webhooks = extractWebhooks(api, isSwagger2)\n\n const root = api as unknown as Record<string, unknown>\n\n return {\n title: api.info.title,\n description: api.info.description,\n version: api.info.version,\n specVersion,\n servers,\n tags,\n tagGroups: root['x-tagGroups'] as ParsedOpenApiSpec['tagGroups'],\n securitySchemes,\n components,\n externalDocs: api.externalDocs,\n contact: api.info.contact as ParsedOpenApiSpec['contact'],\n license: api.info.license as ParsedOpenApiSpec['license'],\n termsOfService: api.info.termsOfService,\n logo: (api.info as Record<string, unknown>)['x-logo'] as ParsedOpenApiSpec['logo'],\n webhooks,\n }\n}\n\n/**\n * Extracts OpenAPI 3.1 top-level `webhooks` into normalized operations. Each\n * webhook is a path-item keyed by name; its methods become operations whose\n * `path` is the webhook name. Returns undefined when there are no webhooks.\n */\nfunction extractWebhooks(api: OpenAPIDocument, isSwagger2: boolean): OpenApiOperation[] | undefined {\n if (!api.webhooks) return undefined\n const methods = ['get', 'post', 'put', 'delete', 'patch', 'options', 'head'] as const\n const operations: OpenApiOperation[] = []\n\n for (const [name, pathItem] of Object.entries(api.webhooks)) {\n const pathLevelParams = (pathItem as Record<string, unknown>).parameters as ParameterObject[] | undefined\n for (const method of methods) {\n const operation = pathItem[method] as OperationObject | undefined\n if (!operation) continue\n const op = convertOperation(method, name, operation, isSwagger2, pathLevelParams)\n if (op.xInternal) continue\n operations.push(op)\n }\n }\n\n return operations.length > 0 ? operations : undefined\n}\n\nfunction extractServers(api: OpenAPIDocument, isSwagger2: boolean): OpenApiServer[] {\n if (!isSwagger2 && api.servers) {\n return api.servers.map((s) => ({\n url: s.url,\n description: s.description,\n variables: s.variables,\n }))\n }\n\n // Swagger 2.0: construct from host + basePath + schemes\n if (isSwagger2 && api.host) {\n const schemes = api.schemes ?? ['https']\n return schemes.map((scheme) => ({\n url: `${scheme}://${api.host}${api.basePath ?? ''}`,\n }))\n }\n\n return [{ url: '/' }]\n}\n\n/**\n * Ids of Postman \"No Auth\" schemes (type: http, scheme: noauth). A security\n * requirement referencing only these means \"no authentication required\".\n */\nfunction collectNoAuthSchemeIds(api: OpenAPIDocument, isSwagger2: boolean): Set<string> {\n const defs = isSwagger2 ? api.securityDefinitions : api.components?.securitySchemes\n const ids = new Set<string>()\n if (defs) {\n for (const [id, def] of Object.entries(defs)) {\n if (def.type === 'http' && (def as { scheme?: string }).scheme === 'noauth') ids.add(id)\n }\n }\n return ids\n}\n\nfunction extractSecuritySchemes(api: OpenAPIDocument, isSwagger2: boolean): AuthScheme[] {\n const schemes: AuthScheme[] = []\n const defs = isSwagger2\n ? api.securityDefinitions\n : api.components?.securitySchemes\n\n if (!defs) return schemes\n\n for (const [id, def] of Object.entries(defs)) {\n const scheme = convertSecurityScheme(id, def)\n if (scheme) schemes.push(scheme)\n }\n\n return schemes\n}\n\n/**\n * Collects every `x-*` vendor-extension key from a raw object, verbatim. Returns\n * undefined when there are none so the model field stays absent. The free core\n * does not interpret these; Pro reads them for the interactive OAuth flow.\n */\nfunction pickXExtensions(obj: Record<string, unknown>): Record<string, unknown> | undefined {\n const out: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(obj)) {\n if (key.startsWith('x-')) out[key] = value\n }\n return Object.keys(out).length ? out : undefined\n}\n\nfunction convertSecurityScheme(id: string, def: SecuritySchemeObject): AuthScheme | null {\n // Postman exports \"No Auth\" as a scheme with type `http` / scheme `noauth`.\n // It represents no credential, so don't surface it as an auth form.\n if (def.type === 'http' && (def as { scheme?: string }).scheme === 'noauth') {\n return null\n }\n switch (def.type) {\n case 'apiKey':\n return {\n id,\n type: 'apiKey',\n displayName: id,\n description: def.description,\n in: def.in as 'header' | 'query' | 'cookie',\n name: def.name,\n }\n case 'http':\n return {\n id,\n type: def.scheme === 'basic' ? 'http-basic' : 'http-bearer',\n displayName: id,\n description: def.description,\n scheme: def.scheme as 'basic' | 'bearer',\n }\n case 'oauth2':\n return {\n id,\n type: 'oauth2',\n displayName: id,\n description: def.description,\n // Raw scheme-level x-* passthrough (Pro interprets; free core does not).\n extensions: pickXExtensions(def as unknown as Record<string, unknown>),\n flows: def.flows ? Object.fromEntries(\n Object.entries(def.flows).map(([flowType, flow]) => [\n flowType,\n {\n authorizationUrl: flow.authorizationUrl,\n tokenUrl: flow.tokenUrl,\n refreshUrl: flow.refreshUrl,\n scopes: flow.scopes ?? {},\n // Raw flow-level x-* passthrough (Pro interprets; free core does not).\n extensions: pickXExtensions(flow as unknown as Record<string, unknown>),\n },\n ]),\n ) : undefined,\n }\n case 'openIdConnect':\n // The flows are not known statically — they come from the OpenID\n // configuration fetched at Try-It time from `openIdConnectUrl`. The\n // Authorize panel discovers and maps them into the OAuth2 flow model.\n return {\n id,\n type: 'openIdConnect',\n displayName: id,\n description: def.description,\n openIdConnectUrl: def.openIdConnectUrl,\n }\n case 'basic':\n // Swagger 2.0\n return {\n id,\n type: 'http-basic',\n displayName: id,\n description: def.description,\n scheme: 'basic',\n }\n default:\n return null\n }\n}\n\nfunction extractTaggedOperations(api: OpenAPIDocument, isSwagger2: boolean): OpenApiTag[] {\n const tagMap = new Map<string, OpenApiOperation[]>()\n const definedTags = new Map<string, { description?: string; displayName?: string; externalDocs?: { description?: string; url: string }; xInternal?: boolean }>()\n\n // Register defined tags\n if (api.tags) {\n for (const tag of api.tags) {\n const raw = tag as Record<string, unknown>\n definedTags.set(tag.name, {\n description: tag.description,\n displayName: raw['x-displayName'] as string | undefined,\n externalDocs: raw.externalDocs as OpenApiTag['externalDocs'],\n xInternal: raw['x-internal'] as boolean | undefined,\n })\n tagMap.set(tag.name, [])\n }\n }\n\n // Root-level security applies to every operation unless the operation\n // declares its own `security` (including an explicit empty array).\n const noAuthSchemeIds = collectNoAuthSchemeIds(api, isSwagger2)\n const globalSecurity = api.security?.map((s) =>\n Object.keys(s).filter((name) => !noAuthSchemeIds.has(name)),\n )\n\n // Process all paths and operations\n for (const [path, pathItem] of Object.entries(api.paths)) {\n // Path-level parameters are inherited by all operations on this path\n const pathLevelParams = (pathItem as Record<string, unknown>).parameters as ParameterObject[] | undefined\n const methods = ['get', 'post', 'put', 'delete', 'patch', 'options', 'head'] as const\n for (const method of methods) {\n const operation = pathItem[method] as OperationObject | undefined\n if (!operation) continue\n\n const op = convertOperation(method, path, operation, isSwagger2, pathLevelParams, globalSecurity, noAuthSchemeIds)\n if (op.xInternal) continue\n const opTags = op.tags.length > 0 ? op.tags : ['default']\n\n for (const tagName of opTags) {\n if (!tagMap.has(tagName)) {\n tagMap.set(tagName, [])\n }\n tagMap.get(tagName)!.push(op)\n }\n }\n }\n\n return Array.from(tagMap.entries())\n .filter(([name, ops]) => ops.length > 0 && !definedTags.get(name)?.xInternal)\n .map(([name, operations]) => ({\n name,\n displayName: definedTags.get(name)?.displayName,\n description: definedTags.get(name)?.description,\n externalDocs: definedTags.get(name)?.externalDocs,\n operations,\n }))\n}\n\nfunction convertOperation(\n method: string,\n path: string,\n op: OperationObject,\n isSwagger2: boolean,\n pathLevelParams?: ParameterObject[],\n globalSecurity?: string[][],\n noAuthSchemeIds?: Set<string>,\n): OpenApiOperation {\n // Merge path-level params with operation params; operation-level overrides by name+in\n const mergedRawParams = mergeParameters(pathLevelParams, op.parameters)\n const parameters: OpenApiParameter[] = mergedRawParams.map((p) => ({\n name: p.name,\n in: p.in as OpenApiParameter['in'],\n required: p.required ?? p.in === 'path',\n description: p.description,\n deprecated: p.deprecated,\n schema: p.schema ?? (isSwagger2 ? { type: p.type, format: p.format, enum: p.enum } : undefined),\n example: p.example,\n examples: p.examples,\n style: p.style,\n explode: p.explode,\n }))\n\n let requestBody: OpenApiRequestBody | undefined\n if (op.requestBody) {\n requestBody = {\n description: op.requestBody.description,\n required: op.requestBody.required,\n content: op.requestBody.content,\n }\n }\n\n const responses: OpenApiResponse[] = op.responses\n ? Object.entries(op.responses).map(([code, resp]) => ({\n statusCode: code,\n description: resp.description ?? '',\n content: resp.content,\n headers: resp.headers,\n }))\n : []\n\n // Operation-level security overrides global (an explicit [] disables auth).\n // Drop Postman \"No Auth\" schemes (type: http, scheme: noauth) from each\n // requirement group: they represent no authentication, so leaving them in\n // would make Try-It block Send on a credential that can never be applied.\n const rawSecurity = op.security\n ? op.security.map((s) => Object.keys(s))\n : globalSecurity\n const security = noAuthSchemeIds\n ? rawSecurity?.map((group) => group.filter((name) => !noAuthSchemeIds.has(name)))\n : rawSecurity\n\n return {\n operationId: op.operationId,\n summary: op.summary,\n description: op.description,\n method,\n path,\n tags: op.tags ?? [],\n deprecated: op.deprecated,\n parameters,\n requestBody,\n responses,\n security: security?.flat() ? security.map((s) => s) : undefined,\n callbacks: op.callbacks,\n externalDocs: op.externalDocs,\n xCodeSamples: ((op as Record<string, unknown>)['x-codeSamples']\n ?? (op as Record<string, unknown>)['x-code-samples']) as OpenApiOperation['xCodeSamples'],\n xBadges: (op as Record<string, unknown>)['x-badges'] as OpenApiOperation['xBadges'],\n xInternal: (op as Record<string, unknown>)['x-internal'] as boolean | undefined,\n }\n}\n\nfunction extractComponents(api: OpenAPIDocument, isSwagger2: boolean): OpenApiComponents {\n if (!isSwagger2 && api.components) {\n return {\n schemas: (api.components.schemas ?? {}) as Record<string, Record<string, unknown>>,\n responses: api.components.responses,\n parameters: api.components.parameters,\n requestBodies: api.components.requestBodies,\n }\n }\n\n // Swagger 2.0: definitions -> schemas\n const rawApi = api as unknown as Record<string, unknown>\n return {\n schemas: (rawApi.definitions ?? {}) as Record<string, Record<string, unknown>>,\n }\n}\n\nfunction mergeParameters(\n pathLevel?: ParameterObject[],\n operationLevel?: ParameterObject[],\n): ParameterObject[] {\n if (!pathLevel?.length) return operationLevel ?? []\n if (!operationLevel?.length) return pathLevel\n\n // Operation-level params override path-level params with same name+in\n const opKeys = new Set(operationLevel.map((p) => `${p.in}:${p.name}`))\n const inherited = pathLevel.filter((p) => !opKeys.has(`${p.in}:${p.name}`))\n return [...operationLevel, ...inherited]\n}\n\nfunction parseSpecString(input: string): Record<string, unknown> {\n const trimmed = input.trim()\n // Try JSON first\n if (trimmed.startsWith('{')) {\n try {\n return JSON.parse(trimmed)\n } catch {\n // Fall through to YAML\n }\n }\n // Parse as YAML (also handles JSON)\n return parseYaml(trimmed) as Record<string, unknown>\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useCallback } from 'react'\nimport { useSpecFetcher } from '../../core/hooks/useSpecFetcher'\nimport { parseOpenApiSpec } from '../parser/openapi-parser'\nimport type { ParsedOpenApiSpec } from '../types/openapi.types'\nimport type { ResolveRefsOptions } from '../parser/ref-resolver'\n\nexport function useOpenApiSpec(\n spec: string | Record<string, unknown>,\n refOptions?: ResolveRefsOptions,\n) {\n const parser = useCallback(async (raw: string) => {\n return parseOpenApiSpec(raw, refOptions)\n }, [refOptions])\n\n return useSpecFetcher<ParsedOpenApiSpec>(spec, parser)\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { css } from '../../core/styles/css'\nimport { mq } from '@core/styles/breakpoints'\nimport type { ParsedOpenApiSpec } from '../types/openapi.types'\nimport { MarkdownRenderer } from '../../core/components/MarkdownRenderer'\n\ninterface ApiOverviewProps {\n spec: ParsedOpenApiSpec\n}\n\nexport function ApiVersionBadge({ version }: { version: string }) {\n return <span className={versionBadgeMobileStyle}>v{version}</span>\n}\n\nexport function ApiOverview({ spec }: ApiOverviewProps) {\n return (\n <div className={`omnispec-api-overview ${containerStyle}`}>\n <div className={titleRowStyle}>\n <h1 className={titleStyle}>{spec.title}</h1>\n <span className={versionBadgeStyle}>v{spec.version}</span>\n </div>\n\n {spec.description && (\n <div className={descriptionStyle}>\n <MarkdownRenderer content={spec.description} />\n </div>\n )}\n\n {(spec.contact || spec.license || spec.termsOfService || spec.externalDocs) && (\n <div className={metaRowStyle}>\n {spec.contact?.name && (\n <span className={metaItemStyle}>\n {spec.contact.email\n ? <a href={`mailto:${spec.contact.email}`} className={linkStyle}>{spec.contact.name}</a>\n : spec.contact.name\n }\n {spec.contact.url && (\n <>\n {' · '}\n <a href={spec.contact.url} target=\"_blank\" rel=\"noopener noreferrer\" className={linkStyle}>\n {spec.contact.url}\n </a>\n </>\n )}\n </span>\n )}\n {spec.license && (\n <span className={metaItemStyle}>\n {spec.license.url\n ? <a href={spec.license.url} target=\"_blank\" rel=\"noopener noreferrer\" className={linkStyle}>{spec.license.name}</a>\n : spec.license.name\n }\n </span>\n )}\n {spec.termsOfService && (\n <span className={metaItemStyle}>\n <a href={spec.termsOfService} target=\"_blank\" rel=\"noopener noreferrer\" className={linkStyle}>Terms of Service</a>\n </span>\n )}\n {spec.externalDocs && (\n <span className={metaItemStyle}>\n <a href={spec.externalDocs.url} target=\"_blank\" rel=\"noopener noreferrer\" className={linkStyle}>\n {spec.externalDocs.description ?? 'Docs'}\n </a>\n </span>\n )}\n </div>\n )}\n </div>\n )\n}\n\nconst containerStyle = css({\n marginBottom: 0,\n minWidth: 0,\n overflow: 'hidden',\n})\n\nconst titleRowStyle = css({\n display: 'flex',\n gap: '0.75rem',\n marginBottom: '0.25rem',\n flexWrap: 'wrap',\n flexDirection: 'column',\n})\n\nconst titleStyle = css({\n margin: 0,\n fontSize: 'var(--omnispec-h1-font-size)',\n color: 'var(--omnispec-h1-color)',\n fontWeight: 'var(--omnispec-h1-font-weight)',\n letterSpacing: '-0.02em',\n lineHeight: 1.2,\n wordBreak: 'break-word',\n})\n\nconst versionBadgeStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-muted)',\n fontFamily: 'var(--omnispec-font-mono)',\n backgroundColor: 'var(--omnispec-bg-tertiary)',\n padding: '0.125rem 0.5rem',\n borderRadius: '0.25rem',\n alignSelf: 'baseline',\n fontWeight: 500,\n [mq.mobile]: {\n display: 'none',\n },\n})\n\nconst descriptionStyle = css({\n marginTop: '0.75rem',\n})\n\nconst metaRowStyle = css({\n display: 'flex',\n gap: '1rem',\n marginTop: '0.75rem',\n flexWrap: 'wrap',\n})\n\nconst metaItemStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-muted)',\n})\n\nconst versionBadgeMobileStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-muted)',\n fontFamily: 'var(--omnispec-font-mono)',\n backgroundColor: 'var(--omnispec-bg-tertiary)',\n padding: '0.125rem 0.5rem',\n borderRadius: '0.25rem',\n fontWeight: 500,\n})\n\nconst linkStyle = css({\n color: 'var(--omnispec-fg-link)',\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline',\n },\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport { css } from '../../core/styles/css'\nimport type { OpenApiServer } from '../types/openapi.types'\n\ninterface ServerSelectorProps {\n servers: OpenApiServer[]\n selectedUrl: string\n onSelect: (url: string) => void\n}\n\nexport function ServerSelector({ servers, selectedUrl, onSelect }: ServerSelectorProps) {\n const [variables, setVariables] = useState<Record<string, string>>({})\n\n const hasUsableServers = servers.length > 0 && servers.some(\n (s) => s.url && s.url !== '/',\n )\n if (!hasUsableServers) return null\n\n const resolveUrl = (server: OpenApiServer, vars: Record<string, string>): string => {\n let resolved = server.url\n if (server.variables) {\n for (const [key, variable] of Object.entries(server.variables)) {\n resolved = resolved.replace(`{${key}}`, vars[key] ?? variable.default ?? '')\n }\n }\n return resolved\n }\n\n const serverIndex = servers.findIndex((s) => selectedUrl.startsWith(s.url.split('{')[0]))\n const currentIndex = serverIndex >= 0 ? serverIndex : 0\n const currentServer = servers[currentIndex]\n\n const resolvedUrl = resolveUrl(currentServer, variables)\n\n const handleServerChange = (newIndex: number) => {\n setVariables({})\n onSelect(resolveUrl(servers[newIndex], {}))\n }\n\n const handleVariableChange = (name: string, value: string) => {\n const newVars = { ...variables, [name]: value }\n setVariables(newVars)\n onSelect(resolveUrl(currentServer, newVars))\n }\n\n return (\n <div className={`omnispec-server-selector ${serverContainerStyle}`}>\n <label className={serverLabelStyle}>Server</label>\n <div className={serverRowStyle}>\n {servers.length === 1 ? (\n <code className={serverUrlStyle}>{resolvedUrl}</code>\n ) : (\n <select\n value={currentIndex}\n onChange={(e) => handleServerChange(Number(e.target.value))}\n className={serverSelectStyle}\n >\n {servers.map((server, idx) => (\n <option key={idx} value={idx}>\n {server.url}{server.description ? ` - ${server.description}` : ''}\n </option>\n ))}\n </select>\n )}\n </div>\n\n {currentServer?.variables && Object.entries(currentServer.variables).length > 0 && (\n <div className={serverVariablesStyle}>\n {Object.entries(currentServer.variables).map(([name, variable]) => (\n <div key={name} className={serverVarRowStyle}>\n <label className={serverVarLabelStyle}>{name}</label>\n {variable.enum ? (\n <select\n value={variables[name] ?? variable.default}\n onChange={(e) => handleVariableChange(name, e.target.value)}\n className={serverVarInputStyle}\n >\n {variable.enum.map((val) => (\n <option key={val} value={val}>{val}</option>\n ))}\n </select>\n ) : (\n <input\n type=\"text\"\n value={variables[name] ?? variable.default}\n onChange={(e) => handleVariableChange(name, e.target.value)}\n className={serverVarInputStyle}\n />\n )}\n {variable.description && <span className={serverVarDescStyle}>{variable.description}</span>}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n\nconst serverContainerStyle = css({\n marginBottom: '1rem',\n padding: '0.75rem',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n borderRadius: 'var(--omnispec-border-radius)',\n border: '1px solid var(--omnispec-border-color)',\n overflow: 'hidden',\n})\n\nconst serverLabelStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 600,\n color: 'var(--omnispec-fg-muted)',\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n marginBottom: '6px',\n display: 'block',\n})\n\nconst serverRowStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n})\n\nconst serverUrlStyle = css({\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-code)',\n overflowX: 'auto',\n whiteSpace: 'nowrap',\n minWidth: 0,\n maxWidth: '100%',\n display: 'block',\n scrollbarWidth: 'thin',\n})\n\nconst serverSelectStyle = css({\n flex: 1,\n minWidth: 0,\n maxWidth: '100%',\n padding: '0.375rem 0.625rem',\n border: '1px solid var(--omnispec-input-border)',\n borderRadius: 'var(--omnispec-border-radius)',\n backgroundColor: 'var(--omnispec-input-bg)',\n color: 'var(--omnispec-fg-primary)',\n fontSize: 'var(--omnispec-font-size-sm)',\n fontFamily: 'var(--omnispec-font-mono)',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n})\n\nconst serverVariablesStyle = css({\n marginTop: '8px',\n display: 'flex',\n flexDirection: 'column',\n gap: '6px',\n})\n\nconst serverVarRowStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n flexWrap: 'wrap',\n})\n\nconst serverVarLabelStyle = css({\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-secondary)',\n fontWeight: 600,\n minWidth: '80px',\n})\n\nconst serverVarInputStyle = css({\n flex: 1,\n minWidth: 0,\n padding: '0.25rem 0.5rem',\n border: '1px solid var(--omnispec-input-border)',\n borderRadius: 'var(--omnispec-border-radius)',\n backgroundColor: 'var(--omnispec-input-bg)',\n color: 'var(--omnispec-fg-primary)',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontFamily: 'var(--omnispec-font-mono)',\n})\n\nconst serverVarDescStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-muted)',\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useCallback } from 'react'\nimport { css } from '../../styles/css'\n\nexport interface ParameterDef {\n name: string\n in: 'path' | 'query' | 'header' | 'cookie'\n required: boolean\n description?: string\n type?: string\n format?: string\n enum?: string[]\n /** Enum of the array items when the parameter is `type: array` — renders a multi-select. */\n itemsEnum?: string[]\n /** OAS `explode`. For query params the form-style default is true (repeated key=value pairs). */\n explode?: boolean\n default?: string\n example?: string\n}\n\n/** Delimiter used to store multi-select values inside the single string value model. */\nexport const MULTI_VALUE_DELIMITER = ','\n\ninterface ParameterFormProps {\n parameters: ParameterDef[]\n values: Record<string, string>\n onChange: (name: string, value: string) => void\n}\n\nconst sectionStyle = css({\n marginBottom: '16px',\n})\n\nconst sectionTitleStyle = css({\n margin: '0 0 8px',\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-muted)',\n fontWeight: 600,\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n})\n\nconst fieldStyle = css({\n marginBottom: '14px',\n})\n\nconst labelStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '2px',\n marginBottom: '6px',\n})\n\nconst nameStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n fontWeight: 600,\n color: 'var(--omnispec-fg-primary)',\n})\n\nconst requiredStyle = css({\n color: 'var(--omnispec-color-error)',\n fontWeight: 600,\n})\n\nconst descriptionStyle = css({\n margin: '4px 0 0',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-muted)',\n})\n\nconst inputStyle = css({\n width: '100%',\n padding: '8px 12px',\n border: '1px solid var(--omnispec-input-border)',\n borderRadius: 'var(--omnispec-border-radius)',\n backgroundColor: 'var(--omnispec-input-bg)',\n color: 'var(--omnispec-fg-primary)',\n fontSize: 'var(--omnispec-font-size-sm)',\n boxSizing: 'border-box',\n '&:focus': {\n borderColor: 'var(--omnispec-color-primary)',\n outline: 'none',\n },\n})\n\nexport function ParameterForm({ parameters, values, onChange }: ParameterFormProps) {\n const grouped = groupByLocation(parameters)\n\n return (\n <div className=\"adr-parameter-form\">\n {(['path', 'query', 'header', 'cookie'] as const).map((location) => {\n const params = grouped[location]\n if (!params || params.length === 0) return null\n\n return (\n <div key={location} className={sectionStyle}>\n <h4 className={sectionTitleStyle}>\n {locationLabels[location]}\n </h4>\n {params.map((param) => (\n <ParameterInput\n key={param.name}\n param={param}\n value={values[param.name] ?? ''}\n onChange={onChange}\n />\n ))}\n </div>\n )\n })}\n </div>\n )\n}\n\nconst locationLabels: Record<string, string> = {\n path: 'Path Parameters',\n query: 'Query Parameters',\n header: 'Header Parameters',\n cookie: 'Cookie Parameters',\n}\n\nfunction ParameterInput({ param, value, onChange }: { param: ParameterDef; value: string; onChange: (name: string, value: string) => void }) {\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>) => {\n onChange(param.name, e.target.value)\n }, [param.name, onChange])\n\n const placeholder = param.example ?? param.default ?? `Filter by ${param.name}`\n\n return (\n <div className={fieldStyle}>\n <label className={labelStyle} htmlFor={`tryit-param-${param.name}`}>\n <span className={nameStyle}>{param.name}</span>\n {param.required && <span className={requiredStyle}>*</span>}\n </label>\n {param.itemsEnum ? (\n <MultiEnumSelect\n param={param}\n value={value}\n onChange={onChange}\n />\n ) : param.enum ? (\n <select id={`tryit-param-${param.name}`} value={value} onChange={handleChange} className={inputStyle}>\n <option value=\"\">Select...</option>\n {param.enum.map((opt) => (\n <option key={opt} value={opt}>{opt}</option>\n ))}\n </select>\n ) : (\n <input\n id={`tryit-param-${param.name}`}\n type=\"text\"\n value={value}\n onChange={handleChange}\n placeholder={placeholder}\n className={inputStyle}\n />\n )}\n {param.description && <p className={descriptionStyle}>{param.description}</p>}\n </div>\n )\n}\n\n/**\n * Checkbox multi-select for `type: array` parameters whose items have an enum.\n * Selected values are stored comma-joined in the string value model and split\n * again at request-build time.\n */\nfunction MultiEnumSelect({\n param,\n value,\n onChange,\n}: {\n param: ParameterDef\n value: string\n onChange: (name: string, value: string) => void\n}) {\n const selected = new Set(value ? value.split(MULTI_VALUE_DELIMITER) : [])\n\n const toggle = (option: string) => {\n const next = new Set(selected)\n if (next.has(option)) {\n next.delete(option)\n } else {\n next.add(option)\n }\n onChange(param.name, Array.from(next).join(MULTI_VALUE_DELIMITER))\n }\n\n return (\n <div className={multiSelectStyle} role=\"group\" aria-label={`${param.name} values`}>\n {(param.itemsEnum ?? []).map((option) => (\n <label key={option} className={multiOptionStyle}>\n <input\n type=\"checkbox\"\n checked={selected.has(option)}\n onChange={() => toggle(option)}\n />\n <span className={multiOptionLabelStyle}>{option}</span>\n </label>\n ))}\n </div>\n )\n}\n\nconst multiSelectStyle = css({\n display: 'flex',\n flexWrap: 'wrap',\n gap: '0.375rem',\n})\n\nconst multiOptionStyle = css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.25rem',\n padding: '0.25rem 0.5rem',\n border: '1px solid var(--omnispec-input-border)',\n borderRadius: '1rem',\n backgroundColor: 'var(--omnispec-input-bg)',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-xs)',\n '&:hover': {\n backgroundColor: 'var(--omnispec-bg-secondary)',\n },\n})\n\nconst multiOptionLabelStyle = css({\n color: 'var(--omnispec-fg-primary)',\n fontFamily: 'var(--omnispec-font-mono)',\n})\n\nfunction groupByLocation(params: ParameterDef[]): Record<string, ParameterDef[]> {\n const grouped: Record<string, ParameterDef[]> = {}\n for (const param of params) {\n if (!grouped[param.in]) grouped[param.in] = []\n grouped[param.in].push(param)\n }\n return grouped\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useCallback, useEffect, useRef } from 'react'\nimport { css } from '../../styles/css'\n\nexport type MultipartFieldValue = string | File | null\n\ninterface RequestBodyEditorProps {\n value: string\n onChange: (value: string) => void\n contentType: string\n onContentTypeChange?: (contentType: string) => void\n availableContentTypes?: string[]\n /** JSON schema of the selected content type — drives the multipart form fields. */\n schema?: Record<string, unknown>\n /** Field values for multipart/form-data mode, keyed by property name. */\n multipartFields?: Record<string, MultipartFieldValue>\n /** Called when a multipart field changes. */\n onMultipartFieldChange?: (name: string, value: MultipartFieldValue) => void\n}\n\ninterface MultipartProp {\n name: string\n isFile: boolean\n required: boolean\n description?: string\n}\n\n/** Derives the multipart form fields from a schema's properties. */\nexport function getMultipartProps(schema?: Record<string, unknown>): MultipartProp[] {\n const properties = schema?.properties as Record<string, Record<string, unknown>> | undefined\n if (!properties) return []\n const required = (schema?.required as string[] | undefined) ?? []\n return Object.entries(properties).map(([name, prop]) => ({\n name,\n // `type: string, format: binary` (OAS 3.0) or `contentEncoding` (3.1)\n // marks a file part; arrays of binary items also count.\n isFile:\n prop.format === 'binary' ||\n prop.contentEncoding !== undefined ||\n (prop.items as Record<string, unknown> | undefined)?.format === 'binary',\n required: required.includes(name),\n description: prop.description as string | undefined,\n }))\n}\n\nconst containerStyle = css({\n marginBottom: '12px',\n display: 'flex',\n flexDirection: 'column',\n})\n\nconst headerStyle = css({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '8px',\n})\n\nconst labelStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n fontWeight: 600,\n color: 'var(--omnispec-fg-secondary)',\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n})\n\nconst contentTypeSelectStyle = css({\n padding: '4px 8px',\n borderRadius: 'var(--omnispec-border-radius)',\n backgroundColor: 'var(--omnispec-input-bg)',\n color: 'var(--omnispec-fg-primary)',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontFamily: 'var(--omnispec-font-mono)',\n})\n\nconst textareaStyle = css({\n width: '100%',\n minHeight: '120px',\n padding: '10px',\n borderRadius: 'var(--omnispec-border-radius)',\n backgroundColor: 'var(--omnispec-bg-code)',\n color: 'var(--omnispec-fg-code)',\n fontSize: 'var(--omnispec-font-size-sm)',\n fontFamily: 'var(--omnispec-font-mono)',\n resize: 'vertical',\n boxSizing: 'border-box',\n lineHeight: 1.5,\n})\n\nexport function RequestBodyEditor({\n value,\n onChange,\n contentType,\n onContentTypeChange,\n availableContentTypes = ['application/json'],\n schema,\n multipartFields = {},\n onMultipartFieldChange,\n}: RequestBodyEditorProps) {\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n\n const autoResize = useCallback(() => {\n const el = textareaRef.current\n if (!el) return\n el.style.height = 'auto'\n el.style.height = `${el.scrollHeight}px`\n }, [])\n\n useEffect(() => {\n autoResize()\n }, [value, autoResize])\n\n // Form-field mode covers both multipart (file pickers + text) and\n // x-www-form-urlencoded (text only) bodies.\n const isMultipart = contentType.includes('multipart/form-data')\n const isUrlEncoded = contentType.includes('application/x-www-form-urlencoded')\n const multipartProps = (isMultipart || isUrlEncoded) ? getMultipartProps(schema) : []\n const showMultipartForm = (isMultipart || isUrlEncoded) && multipartProps.length > 0 && onMultipartFieldChange\n\n return (\n <div className={`adr-request-body ${containerStyle}`}>\n <div className={headerStyle}>\n <span className={labelStyle}>Request Body</span>\n {availableContentTypes.length > 1 && onContentTypeChange && (\n <select\n value={contentType}\n onChange={(e) => onContentTypeChange(e.target.value)}\n className={contentTypeSelectStyle}\n >\n {availableContentTypes.map((ct) => (\n <option key={ct} value={ct}>{ct}</option>\n ))}\n </select>\n )}\n </div>\n {showMultipartForm ? (\n <div className={multipartListStyle}>\n {multipartProps.map((prop) => {\n const fieldValue = multipartFields[prop.name]\n return (\n <div key={prop.name} className={multipartFieldStyle}>\n <label className={multipartLabelStyle}>\n <span className={multipartNameStyle}>{prop.name}</span>\n {prop.required && <span className={multipartRequiredStyle}>*</span>}\n </label>\n {prop.isFile && isMultipart ? (\n <input\n type=\"file\"\n onChange={(e) => onMultipartFieldChange(prop.name, e.target.files?.[0] ?? null)}\n className={multipartFileInputStyle}\n />\n ) : (\n <input\n type=\"text\"\n value={typeof fieldValue === 'string' ? fieldValue : ''}\n onChange={(e) => onMultipartFieldChange(prop.name, e.target.value)}\n placeholder={prop.description ?? prop.name}\n className={multipartTextInputStyle}\n />\n )}\n </div>\n )\n })}\n </div>\n ) : (\n <textarea\n ref={textareaRef}\n name=\"request-body\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={getPlaceholder(contentType)}\n className={textareaStyle}\n spellCheck={false}\n />\n )}\n </div>\n )\n}\n\nconst multipartListStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.625rem',\n})\n\nconst multipartFieldStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.25rem',\n})\n\nconst multipartLabelStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.125rem',\n})\n\nconst multipartNameStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n fontWeight: 600,\n color: 'var(--omnispec-fg-primary)',\n fontFamily: 'var(--omnispec-font-mono)',\n})\n\nconst multipartRequiredStyle = css({\n color: 'var(--omnispec-color-error)',\n fontWeight: 600,\n})\n\nconst multipartTextInputStyle = css({\n width: '100%',\n padding: '0.5rem 0.625rem',\n borderRadius: 'var(--omnispec-border-radius)',\n border: '1px solid var(--omnispec-input-border)',\n backgroundColor: 'var(--omnispec-input-bg)',\n color: 'var(--omnispec-fg-primary)',\n fontSize: 'var(--omnispec-font-size-sm)',\n fontFamily: 'var(--omnispec-font-mono)',\n boxSizing: 'border-box',\n})\n\nconst multipartFileInputStyle = css({\n width: '100%',\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-secondary)',\n '&::file-selector-button': {\n padding: '0.375rem 0.75rem',\n marginRight: '0.5rem',\n borderRadius: 'var(--omnispec-border-radius)',\n border: '1px solid var(--omnispec-input-border)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n color: 'var(--omnispec-fg-primary)',\n fontSize: 'var(--omnispec-font-size-xs)',\n cursor: 'pointer',\n },\n})\n\nfunction getPlaceholder(contentType: string): string {\n if (contentType.includes('json')) return '{\\n \"key\": \"value\"\\n}'\n if (contentType.includes('xml')) return '<root>\\n <element>value</element>\\n</root>'\n return 'Enter request body...'\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { css } from '@core/styles/css'\nimport { Icon } from '@core/components/common/Icon'\n\nexport interface CustomHeader {\n name: string\n value: string\n}\n\ninterface CustomHeadersProps {\n headers: CustomHeader[]\n onChange: (headers: CustomHeader[]) => void\n}\n\n/**\n * User-added arbitrary request headers for the Try-It panel (\"+ Add header\").\n * Included in sent requests and generated code samples.\n */\nexport function CustomHeaders({ headers, onChange }: CustomHeadersProps) {\n const updateRow = (index: number, patch: Partial<CustomHeader>) => {\n onChange(headers.map((h, i) => (i === index ? { ...h, ...patch } : h)))\n }\n\n const removeRow = (index: number) => {\n onChange(headers.filter((_, i) => i !== index))\n }\n\n return (\n <div className={`omnispec-custom-headers ${sectionStyle}`}>\n {headers.length > 0 && <span className={sectionTitleStyle}>Custom Headers</span>}\n {headers.map((header, idx) => (\n <div key={idx} className={rowStyle}>\n <input\n type=\"text\"\n value={header.name}\n onChange={(e) => updateRow(idx, { name: e.target.value })}\n placeholder=\"Header name\"\n aria-label={`Custom header ${idx + 1} name`}\n className={nameInputStyle}\n />\n <input\n type=\"text\"\n value={header.value}\n onChange={(e) => updateRow(idx, { value: e.target.value })}\n placeholder=\"Value\"\n aria-label={`Custom header ${idx + 1} value`}\n className={valueInputStyle}\n />\n <button\n type=\"button\"\n onClick={() => removeRow(idx)}\n aria-label={`Remove custom header ${idx + 1}`}\n className={removeBtnStyle}\n >\n <Icon name=\"xmark\" size=\"0.875rem\" />\n </button>\n </div>\n ))}\n <button\n type=\"button\"\n onClick={() => onChange([...headers, { name: '', value: '' }])}\n className={addBtnStyle}\n >\n + Add header\n </button>\n </div>\n )\n}\n\nconst sectionStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5rem',\n marginBottom: '0.75rem',\n})\n\nconst sectionTitleStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n fontWeight: 600,\n color: 'var(--omnispec-fg-muted)',\n textTransform: 'uppercase',\n letterSpacing: '0.5px',\n})\n\nconst rowStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.375rem',\n})\n\nconst inputBase = {\n padding: '0.375rem 0.5rem',\n borderRadius: 'var(--omnispec-border-radius)',\n border: '1px solid var(--omnispec-input-border)',\n backgroundColor: 'var(--omnispec-input-bg)',\n color: 'var(--omnispec-fg-primary)',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontFamily: 'var(--omnispec-font-mono)',\n minWidth: 0,\n} as const\n\nconst nameInputStyle = css({\n ...inputBase,\n flex: 1,\n})\n\nconst valueInputStyle = css({\n ...inputBase,\n flex: 1.4,\n})\n\nconst removeBtnStyle = css({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '0.25rem',\n backgroundColor: 'transparent',\n border: 'none',\n color: 'var(--omnispec-fg-muted)',\n cursor: 'pointer',\n '&:hover': {\n color: 'var(--omnispec-color-error)',\n },\n})\n\nconst addBtnStyle = css({\n alignSelf: 'flex-start',\n padding: '0.25rem 0.625rem',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontFamily: 'var(--omnispec-font-sans)',\n fontWeight: 500,\n color: 'var(--omnispec-fg-link)',\n backgroundColor: 'transparent',\n border: '1px solid var(--omnispec-border-color)',\n borderRadius: '1rem',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: 'var(--omnispec-bg-secondary)',\n },\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { css, cx } from '@core/styles/css'\nimport { mq } from '@core/styles/breakpoints'\nimport type { TryItRequest, TryItResponse } from '@core/types/try-it.types'\nimport { useAuth } from '@core/context/AuthContext'\nimport { useConfig } from '@core/context/ConfigContext'\nimport { sendProxiedRequest } from '@core/utils/proxy-client'\nimport { sendDirectRequest } from '@core/utils/direct-client'\nimport type { ParameterDef } from './ParameterForm'\nimport { ParameterForm, MULTI_VALUE_DELIMITER } from './ParameterForm'\nimport { RequestBodyEditor } from './RequestBodyEditor'\nimport type { MultipartFieldValue } from './RequestBodyEditor'\nimport { ResponseViewer } from './ResponseViewer'\nimport { CodeSamples } from './CodeSamples'\nimport type { XCodeSample } from './CodeSamples'\nimport { generateExample } from '@core/components/SchemaViewer/schema-utils'\nimport { Button } from '@core/components/common/Button'\nimport { Icon } from '@core/components/common/Icon'\nimport type { CodeLanguageId } from './code-generators'\nimport { loadTryItState, saveTryItState, clearTryItState } from '@core/utils/tryit-storage'\nimport { CustomHeaders } from './CustomHeaders'\nimport type { CustomHeader } from './CustomHeaders'\n\ninterface TryItPanelProps {\n method: string\n path: string\n serverUrl: string\n parameters?: ParameterDef[]\n requestBodyContentTypes?: string[]\n defaultRequestBody?: string\n requestBodySchema?: Record<string, unknown>\n /** Schemas keyed by content type — used to drive per-content-type editors (e.g. multipart form fields). */\n requestBodySchemas?: Record<string, Record<string, unknown> | undefined>\n /** Security requirement groups (scheme-name lists) — used to block Send until a required scheme is applied. */\n security?: string[][]\n xCodeSamples?: XCodeSample[]\n /**\n * Whether the panel is docked in a side column (`tryItLayout: 'panel'`, the\n * default). Docked panels stick to the viewport and cap their own height. In\n * the inline layout the panel flows full-width below the operation, so pass\n * `docked={false}` to disable the sticky/maxHeight/overflow behavior.\n */\n docked?: boolean\n onRequest?: (request: TryItRequest) => void\n onResponse?: (response: TryItResponse) => void\n}\n\nexport function TryItPanel({\n method,\n path,\n serverUrl,\n parameters = [],\n requestBodyContentTypes,\n defaultRequestBody,\n requestBodySchema,\n requestBodySchemas,\n security,\n xCodeSamples,\n docked = true,\n onRequest,\n onResponse,\n}: TryItPanelProps) {\n const { allowTryIt, proxyUrl, proxyHeaders, specKey, tryItPersistTtl } = useConfig()\n const { getAuthHeaders, appliedAuth, openAuthPanel, hasAuth, clearAuth } = useAuth()\n\n // Reflect whether any credential has been applied so the header button\n // toggles between its \"Authorize\" (open lock) and \"Authorized\" (closed lock) states.\n const authorized = appliedAuth.size > 0\n\n // Persisted (non-sensitive) form state, namespaced per spec + operation.\n // A TTL of 0 disables persistence entirely (no restore, no save).\n const persistenceDisabled = tryItPersistTtl === 0\n const operationKey = `${method.toUpperCase()} ${path}`\n const persisted = useMemo(\n () => loadTryItState(specKey, operationKey, tryItPersistTtl),\n [specKey, operationKey, tryItPersistTtl],\n )\n\n const defaultParamValues = (): Record<string, string> => {\n const initial: Record<string, string> = {}\n for (const param of parameters) {\n const val = param.example ?? param.default\n if (val !== undefined) initial[param.name] = val\n }\n return initial\n }\n\n const [paramValues, setParamValues] = useState<Record<string, string>>(() => ({\n ...defaultParamValues(),\n ...persisted?.paramValues,\n }))\n const [body, setBody] = useState(persisted?.body ?? defaultRequestBody ?? '')\n const [contentType, setContentType] = useState(\n persisted?.contentType ?? requestBodyContentTypes?.[0] ?? 'application/json',\n )\n const [multipartFields, setMultipartFields] = useState<Record<string, MultipartFieldValue>>(\n () => ({ ...persisted?.formFields }),\n )\n const [customHeaders, setCustomHeaders] = useState<CustomHeader[]>(\n () => persisted?.customHeaders ?? [],\n )\n const [response, setResponse] = useState<TryItResponse | null>(null)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | undefined>()\n const [codeLang, setCodeLang] = useState<CodeLanguageId>('curl')\n\n // Track which params the user manually edited so example-selection changes\n // (which arrive as new `example` prop values) don't clobber user input.\n // Params restored from persistence count as touched.\n const touchedParams = useRef<Set<string>>(new Set(Object.keys(persisted?.paramValues ?? {})))\n\n // Persist non-sensitive form state (best-effort, per spec + operation).\n useEffect(() => {\n if (!specKey || persistenceDisabled) return\n const formFields: Record<string, string> = {}\n for (const [name, value] of Object.entries(multipartFields)) {\n if (typeof value === 'string' && value !== '') formFields[name] = value\n }\n saveTryItState(specKey, operationKey, {\n paramValues,\n body,\n contentType,\n formFields,\n customHeaders,\n })\n }, [specKey, operationKey, persistenceDisabled, paramValues, body, contentType, multipartFields, customHeaders])\n\n // Required-input enforcement: Send is blocked while required path/query\n // params are empty or a required security scheme has no applied credential.\n const missingRequiredParams = useMemo(() => {\n const missing: string[] = []\n for (const param of parameters) {\n if (!param.required) continue\n if (param.in !== 'path' && param.in !== 'query') continue\n if (!paramValues[param.name]?.trim()) missing.push(`${param.name} (${param.in})`)\n }\n return missing\n }, [parameters, paramValues])\n\n const authSatisfied = useMemo(() => {\n if (!security || security.length === 0) return true\n // Requirement groups are OR'd; schemes within a group are AND'd.\n // An empty group means \"auth optional\".\n return security.some((group) => group.length === 0 || group.every((name) => appliedAuth.has(name)))\n }, [security, appliedAuth])\n\n // getAuthHeaders attaches every applied credential regardless of scheme, so\n // credentials applied under a different scheme name must not hard-block Send\n // — the request will carry them. Only block when nothing is applied at all.\n const authMismatch = !authSatisfied && appliedAuth.size > 0\n const authBlocked = !authSatisfied && appliedAuth.size === 0\n const declaredSchemes = useMemo(\n () => Array.from(new Set((security ?? []).flat())),\n [security],\n )\n\n const sendBlocked = missingRequiredParams.length > 0 || authBlocked\n\n const handleReset = () => {\n clearTryItState(specKey, operationKey)\n touchedParams.current = new Set()\n setParamValues(defaultParamValues())\n setBody(defaultRequestBody ?? '')\n setContentType(requestBodyContentTypes?.[0] ?? 'application/json')\n setMultipartFields({})\n setCustomHeaders([])\n // Also return the Authorization panel to its pristine state — clear every\n // applied credential (and its persisted copy). Auth is global, so this\n // resets authorization across the whole spec, not just this operation.\n clearAuth()\n }\n\n const handleParamChange = useCallback((name: string, value: string) => {\n touchedParams.current.add(name)\n setParamValues((prev) => ({ ...prev, [name]: value }))\n }, [])\n\n // When the effective example for a parameter changes (e.g. a named example is\n // selected in the docs), prefill the corresponding Try-It input — unless the\n // user has already edited it.\n const exampleSignature = parameters.map((p) => `${p.name}=${p.example ?? ''}`).join('|')\n useEffect(() => {\n setParamValues((prev) => {\n let changed = false\n const next = { ...prev }\n for (const param of parameters) {\n if (param.example === undefined) continue\n if (touchedParams.current.has(param.name)) continue\n if (next[param.name] !== param.example) {\n next[param.name] = param.example\n changed = true\n }\n }\n return changed ? next : prev\n })\n // exampleSignature encodes the relevant `parameters[].example` values;\n // `parameters` itself is intentionally omitted to avoid re-running on every\n // render (it is a new array each time).\n }, [exampleSignature])\n\n const buildRequest = useCallback((): TryItRequest => {\n const authHeaders = getAuthHeaders()\n const headers: Record<string, string> = { ...authHeaders }\n\n // Add header parameters\n for (const param of parameters) {\n if (param.in === 'header' && paramValues[param.name]) {\n headers[param.name] = paramValues[param.name]\n }\n }\n\n // User-added custom headers override spec-defined ones by name.\n for (const header of customHeaders) {\n const name = header.name.trim()\n if (name) headers[name] = header.value\n }\n\n const bodyCapable = ['post', 'put', 'patch'].includes(method.toLowerCase())\n const isMultipart = contentType.includes('multipart/form-data')\n const isUrlEncoded = contentType.includes('application/x-www-form-urlencoded')\n const hasFormFieldValues = Object.values(multipartFields).some((v) => v !== null && v !== '')\n\n const pathParams: Record<string, string> = {}\n const queryParams: Record<string, string | string[]> = {}\n\n for (const param of parameters) {\n const val = paramValues[param.name]\n if (!val) continue\n if (param.in === 'path') pathParams[param.name] = val\n if (param.in === 'query') {\n if (param.itemsEnum) {\n const values = val.split(MULTI_VALUE_DELIMITER).filter(Boolean)\n // OAS form-style default: explode=true → repeated key=value pairs;\n // explode=false → single comma-joined value.\n queryParams[param.name] = param.explode === false ? values.join(',') : values\n } else {\n queryParams[param.name] = val\n }\n }\n }\n\n let encodedBody: string | FormData | undefined\n\n if (bodyCapable && isMultipart) {\n // Build real FormData from the multipart form fields. Do NOT set the\n // Content-Type header manually — fetch adds it with the boundary in\n // direct mode, and the proxy client sets it during serialization.\n const formData = new FormData()\n let hasEntries = false\n for (const [name, value] of Object.entries(multipartFields)) {\n if (value === null || value === '') continue\n formData.append(name, value)\n hasEntries = true\n }\n if (hasEntries) encodedBody = formData\n } else if (bodyCapable && isUrlEncoded && hasFormFieldValues) {\n // Form-field UI for x-www-form-urlencoded — serialize the labeled\n // inputs directly to URL-encoded pairs.\n headers['Content-Type'] = contentType\n const params = new URLSearchParams()\n for (const [name, value] of Object.entries(multipartFields)) {\n if (value === null || value === '' || typeof value !== 'string') continue\n params.set(name, value)\n }\n encodedBody = params.toString()\n } else if (bodyCapable && body) {\n headers['Content-Type'] = contentType\n encodedBody = body\n if (isUrlEncoded) {\n // Legacy fallback: no schema-driven fields — accept JSON in the\n // textarea and convert it to URL-encoded pairs.\n try {\n const parsed = JSON.parse(body)\n const params = new URLSearchParams()\n for (const [key, value] of Object.entries(parsed)) {\n params.set(key, String(value))\n }\n encodedBody = params.toString()\n } catch {\n encodedBody = body\n }\n }\n }\n\n return {\n url: path,\n method: method.toUpperCase(),\n headers,\n pathParams,\n queryParams,\n body: encodedBody,\n bodyType: contentType,\n }\n }, [parameters, paramValues, body, contentType, multipartFields, customHeaders, method, path, getAuthHeaders])\n\n const handleSend = useCallback(async () => {\n setLoading(true)\n setError(undefined)\n setResponse(null)\n\n const request = buildRequest()\n onRequest?.(request)\n\n const fullRequest: TryItRequest = {\n ...request,\n url: serverUrl + request.url,\n }\n\n try {\n // Use proxy if configured, otherwise send directly from the browser\n const res = proxyUrl\n ? await sendProxiedRequest(proxyUrl, fullRequest, proxyHeaders)\n : await sendDirectRequest(fullRequest)\n\n setResponse(res)\n onResponse?.(res)\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Request failed'\n if (!proxyUrl && message.includes('Failed to fetch')) {\n // A browser fetch that fails without a response is opaque — it could be\n // CORS, mixed content, or a plain-http server URL. Give the most likely\n // cause: a stale `http://` server URL (blocked from https pages, and\n // often un-followable to https because the redirect lacks CORS headers)\n // is a common culprit and has a concrete fix.\n const isHttpTarget = /^http:\\/\\//i.test(fullRequest.url)\n const hint = isHttpTarget\n ? \"The spec's server URL uses http://, which browsers block from an https page and often can't follow to https (the redirect carries no CORS headers). Use an https:// server URL, or route requests through a proxyUrl.\"\n : 'This is usually a CORS restriction — the API does not allow browser cross-origin requests. Configure a proxyUrl to route requests through your backend.'\n setError(`${message}. ${hint}`)\n } else {\n setError(message)\n }\n } finally {\n setLoading(false)\n }\n }, [proxyUrl, proxyHeaders, buildRequest, serverUrl, onRequest, onResponse])\n\n // Generate a fallback body from schema required fields for curl display\n const schemaBody = useMemo(() => {\n if (!requestBodySchema) return undefined\n return JSON.stringify(generateExample(requestBodySchema), null, 2)\n }, [requestBodySchema])\n\n if (!allowTryIt) return null\n\n const request = buildRequest()\n const hasBodyMethods = ['post', 'put', 'patch'].includes(method.toLowerCase())\n const codeSampleRequest = useMemo(() => {\n const r = { ...request }\n if (hasBodyMethods && !r.body && schemaBody) {\n r.body = schemaBody\n if (!r.headers['Content-Type']) {\n r.headers = { ...r.headers, 'Content-Type': contentType }\n }\n }\n return r\n }, [request, hasBodyMethods, schemaBody, contentType])\n\n return (\n <div className={cx('omnispec-tryit', docked && dockedContainerStyle)}>\n <div className={titleRowStyle}>\n <h4 className={titleStyle}>Try it</h4>\n <div className={statusRowStyle}>\n <div className={headerActionsStyle}>\n {hasAuth && (\n <button\n type=\"button\"\n onClick={openAuthPanel}\n className={headerBtnStyle}\n title={authorized ? 'Update authorization credentials' : 'Set authorization credentials'}\n >\n <Icon\n name={authorized ? 'lock-keyhole' : 'lock-keyhole-open'}\n size=\"0.875rem\"\n color={authorized ? 'var(--omnispec-color-success)' : undefined}\n />\n {authorized ? 'Authorized' : 'Authorize'}\n </button>\n )}\n <button\n type=\"button\"\n onClick={handleReset}\n className={headerBtnStyle}\n title=\"Reset Try-It inputs for this operation and clear all applied authorization\"\n >\n <Icon name=\"rotate-ccw\" size=\"0.875rem\" />\n Reset\n </button>\n </div>\n </div>\n </div>\n\n {parameters.length > 0 && (\n <ParameterForm\n parameters={parameters}\n values={paramValues}\n onChange={handleParamChange}\n />\n )}\n\n <CustomHeaders headers={customHeaders} onChange={setCustomHeaders} />\n\n {hasBodyMethods && requestBodyContentTypes && (\n <RequestBodyEditor\n value={body}\n onChange={setBody}\n contentType={contentType}\n onContentTypeChange={setContentType}\n availableContentTypes={requestBodyContentTypes}\n schema={requestBodySchemas?.[contentType] ?? requestBodySchema}\n multipartFields={multipartFields}\n onMultipartFieldChange={(name, value) =>\n setMultipartFields((prev) => ({ ...prev, [name]: value }))\n }\n />\n )}\n\n <div className={actionsStyle}>\n <Button\n variant=\"primary\"\n onClick={handleSend}\n disabled={loading || sendBlocked}\n className={fullWidthBtnStyle}\n >\n {loading ? 'Sending...' : 'Send'}\n </Button>\n </div>\n\n {(sendBlocked || authMismatch) && (\n <div className={validationMsgStyle} role=\"status\">\n {missingRequiredParams.length > 0 && (\n <span>\n Required: {missingRequiredParams.join(', ')}\n </span>\n )}\n {authBlocked && (\n <span>Authorization required — apply credentials in the Authorization panel.</span>\n )}\n {authMismatch && (\n <span>\n This operation declares {declaredSchemes.join(', ')} — your applied credentials\n will be sent with the request.\n </span>\n )}\n </div>\n )}\n\n <CodeSamples\n request={codeSampleRequest}\n serverUrl={serverUrl}\n selectedLanguage={codeLang}\n onLanguageChange={setCodeLang}\n xCodeSamples={xCodeSamples}\n />\n\n <ResponseViewer response={response} loading={loading} error={error} />\n </div>\n )\n}\n\n// Docked (side-column) placement only. In the inline layout the panel flows\n// full-width below the operation, so this sticky/maxHeight/overflow block is\n// gated behind `docked` (see TryItPanel's `docked` prop).\nconst dockedContainerStyle = css({\n position: 'sticky',\n top: 'calc(var(--omnispec-offset-top, 0px) + 1.25rem)',\n [mq.desktop]: {\n // When the panel is taller than the viewport, a sticky element would pin\n // its top and push its bottom off-screen with no way to reach it (the page\n // scroll tracks the taller left column). Cap it to the viewport and let the\n // panel scroll its own overflow so every control stays reachable.\n maxHeight: 'calc(100vh - var(--omnispec-offset-top, 0px) - 2.5rem)',\n overflowY: 'auto',\n // Keep the internal scrollbar off the content edge.\n paddingRight: '0.25rem',\n },\n})\n\nconst titleRowStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n marginBottom: '12px',\n})\n\nconst titleStyle = css({\n margin: 0,\n fontSize: 'var(--omnispec-font-size-base)',\n fontWeight: 600,\n color: 'var(--omnispec-fg-primary)',\n})\n\nconst actionsStyle = css({\n display: 'flex',\n gap: '8px',\n marginBottom: '12px',\n})\n\nconst fullWidthBtnStyle = css({\n width: '100%',\n})\n\nconst statusRowStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n fontSize: 'var(--omnispec-font-size-xs)',\n flex: 1,\n})\n\nconst validationMsgStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.25rem',\n marginBottom: '0.75rem',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-color-warning)',\n lineHeight: 1.4,\n})\n\nconst headerActionsStyle = css({\n marginLeft: 'auto',\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n})\n\n// Shared style for the Reset + Authorize header buttons. Sized ~25% larger\n// than the previous Reset button (padding + font-size bumped in step).\nconst headerBtnStyle = css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.375rem',\n padding: '0.25rem 0.625rem',\n fontSize: 'var(--omnispec-font-size-sm)',\n fontFamily: 'var(--omnispec-font-sans)',\n color: 'var(--omnispec-fg-muted)',\n backgroundColor: 'transparent',\n border: '1px solid var(--omnispec-border-color)',\n borderRadius: 'var(--omnispec-border-radius)',\n cursor: 'pointer',\n '&:hover': {\n color: 'var(--omnispec-fg-primary)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n },\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useEffect, useId, useRef, useState } from 'react'\nimport { css, cx } from '@core/styles/css'\nimport { Icon } from '@core/components/common/Icon'\nimport { TryItPanel } from '@core/components/TryIt/TryItPanel'\nimport type { ComponentProps } from 'react'\n\ntype TryItPanelProps = ComponentProps<typeof TryItPanel>\n\n/**\n * `tryItLayout: 'inline'` (compact mode only) presentation of the Try-It\n * console: a full-width disclosure rendered BELOW the operation detail, closed\n * by default and revealed by a full-width \"Try it\" trigger.\n *\n * The wrapped `TryItPanel` stays MOUNTED across collapse/expand — the region is\n * hidden with the `hidden` attribute (display:none), never unmounted — so any\n * entered params, auth, request body, and response survive being hidden. This\n * is deliberately NOT built on `Collapsible`, whose viewport-gated\n * `shouldRender` unmounts its children when closed.\n */\nexport function InlineTryIt(props: TryItPanelProps) {\n const [open, setOpen] = useState(false)\n const regionId = useId()\n const regionRef = useRef<HTMLDivElement>(null)\n\n // On open, bring the newly revealed console into view without a jarring jump.\n useEffect(() => {\n if (open) {\n regionRef.current?.scrollIntoView({ block: 'nearest' })\n }\n }, [open])\n\n return (\n <div className={wrapperStyle}>\n <button\n type=\"button\"\n className={triggerStyle}\n onClick={() => setOpen((prev) => !prev)}\n aria-expanded={open}\n aria-controls={regionId}\n >\n <Icon name=\"chevron-right\" size=\"0.875rem\" className={cx(chevronStyle, open && chevronOpenStyle)} />\n <span>{open ? 'Hide Try it' : 'Try it'}</span>\n </button>\n {/* Kept mounted; `hidden` (display:none) preserves the panel's state. */}\n <div id={regionId} ref={regionRef} hidden={!open} className={regionStyle}>\n <TryItPanel {...props} docked={false} />\n </div>\n </div>\n )\n}\n\nconst wrapperStyle = css({\n marginTop: '1rem',\n})\n\nconst triggerStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n width: '100%',\n padding: '0.625rem 1rem',\n background: 'var(--omnispec-bg-secondary)',\n color: 'var(--omnispec-fg-primary)',\n border: 'none',\n borderRadius: 'var(--omnispec-border-radius)',\n boxShadow: 'var(--omnispec-btn-secondary-shadow)',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-base)',\n fontWeight: 600,\n textAlign: 'left',\n '&:hover': {\n background: 'var(--omnispec-btn-secondary-bg-hover)',\n },\n})\n\nconst chevronStyle = css({\n display: 'inline-flex',\n flexShrink: 0,\n transition: 'transform 0.2s ease',\n})\n\nconst chevronOpenStyle = css({\n transform: 'rotate(90deg)',\n})\n\nconst regionStyle = css({\n paddingTop: '0.75rem',\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport { css, cx } from '@core/styles/css'\nimport { mq } from '@core/styles/breakpoints'\nimport { Icon } from '@core/components/common/Icon'\nimport { SchemaTree } from '@core/components/SchemaViewer/SchemaTree'\nimport { schemaToNodes } from '@core/components/SchemaViewer/schema-utils'\nimport { MethodBar } from '@core/components/common/MethodBar'\n\ninterface CallbacksSectionProps {\n callbacks: Record<string, unknown>\n}\n\ninterface ParsedCallback {\n name: string\n urlExpression: string\n method: string\n summary?: string\n description?: string\n requestBodySchema?: Record<string, unknown>\n responseStatuses: Array<{ code: string; description: string }>\n}\n\ntype HttpMethod = 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head'\n\nconst HTTP_METHODS: HttpMethod[] = ['get', 'post', 'put', 'delete', 'patch', 'options', 'head']\n\n/**\n * Walks the OAS 3.0 callbacks nested structure and extracts a flat list\n * of ParsedCallback objects for rendering.\n *\n * OAS shape:\n * callbacks: {\n * callbackName: {\n * \"{$request.body#/callbackUrl}\": {\n * post: { summary, description, requestBody, responses }\n * }\n * }\n * }\n */\nfunction parseCallbacks(callbacks: Record<string, unknown>): ParsedCallback[] {\n const result: ParsedCallback[] = []\n\n for (const [name, callbackValue] of Object.entries(callbacks)) {\n if (!callbackValue || typeof callbackValue !== 'object') continue\n\n const pathItemMap = callbackValue as Record<string, unknown>\n\n for (const [urlExpression, pathItem] of Object.entries(pathItemMap)) {\n if (!pathItem || typeof pathItem !== 'object') continue\n\n const pathItemObj = pathItem as Record<string, unknown>\n\n for (const method of HTTP_METHODS) {\n const operation = pathItemObj[method]\n if (!operation || typeof operation !== 'object') continue\n\n const op = operation as Record<string, unknown>\n\n // Extract request body schema (first content type found)\n let requestBodySchema: Record<string, unknown> | undefined\n const requestBody = op.requestBody as Record<string, unknown> | undefined\n if (requestBody?.content && typeof requestBody.content === 'object') {\n const content = requestBody.content as Record<string, unknown>\n const firstMedia = Object.values(content)[0] as Record<string, unknown> | undefined\n if (firstMedia?.schema && typeof firstMedia.schema === 'object') {\n requestBodySchema = firstMedia.schema as Record<string, unknown>\n }\n }\n\n // Extract response statuses\n const responseStatuses: ParsedCallback['responseStatuses'] = []\n const responses = op.responses as Record<string, unknown> | undefined\n if (responses && typeof responses === 'object') {\n for (const [code, responseValue] of Object.entries(responses)) {\n const response = responseValue as Record<string, unknown> | undefined\n responseStatuses.push({\n code,\n description: typeof response?.description === 'string' ? response.description : '',\n })\n }\n }\n\n result.push({\n name,\n urlExpression,\n method,\n summary: typeof op.summary === 'string' ? op.summary : undefined,\n description: typeof op.description === 'string' ? op.description : undefined,\n requestBodySchema,\n responseStatuses,\n })\n }\n }\n }\n\n return result\n}\n\n/**\n * Renders an individual callback as an expandable card with a dashed border.\n * Shows the method, URL expression, and when expanded: summary, description,\n * request body schema, and response statuses.\n */\nfunction CallbackCard({ callback }: { callback: ParsedCallback }) {\n const [expanded, setExpanded] = useState(false)\n\n const method = callback.method as HttpMethod\n\n return (\n <div className={cardStyle}>\n <button\n type=\"button\"\n className={cardHeaderStyle}\n onClick={() => setExpanded((prev) => !prev)}\n aria-expanded={expanded}\n >\n <span className={cx(chevronStyle, expanded && chevronExpandedStyle)}>\n <Icon name=\"chevron-right\" size=\"0.75rem\" />\n </span>\n <span className={callbackNameStyle}>{callback.name}</span>\n <code className={urlExpressionStyle}>{callback.urlExpression}</code>\n </button>\n\n {expanded && (\n <div className={cardBodyStyle}>\n <MethodBar\n label={callback.method.toUpperCase()}\n path={callback.urlExpression}\n method={method}\n />\n\n {callback.summary && (\n <p className={summaryStyle}>{callback.summary}</p>\n )}\n\n {callback.description && (\n <p className={descriptionStyle}>{callback.description}</p>\n )}\n\n {callback.requestBodySchema && (\n <div className={sectionStyle}>\n <span className={sectionLabelStyle}>Request Body</span>\n <SchemaTree nodes={schemaToNodes(callback.requestBodySchema)} context=\"request\" />\n </div>\n )}\n\n {callback.responseStatuses.length > 0 && (\n <div className={sectionStyle}>\n <span className={sectionLabelStyle}>Responses</span>\n <div className={responseListStyle}>\n {callback.responseStatuses.map(({ code, description }) => (\n <div key={code} className={responseRowStyle}>\n <span className={cx(statusBadgeStyle, css({\n backgroundColor: getStatusBg(code),\n color: getStatusColor(code),\n }))}>\n {code}\n </span>\n {description && (\n <span className={responseDescStyle}>{description}</span>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Renders the \"Callbacks\" section for an OAS 3.0 operation.\n * Each callback name maps to one or more CallbackCard components.\n */\nexport function CallbacksSection({ callbacks }: CallbacksSectionProps) {\n const parsed = parseCallbacks(callbacks)\n if (parsed.length === 0) return null\n\n return (\n <div className={containerStyle}>\n <h4 className={titleStyle}>Callbacks</h4>\n <div className={cardListStyle}>\n {parsed.map((cb, idx) => (\n <CallbackCard key={`${cb.name}-${cb.method}-${idx}`} callback={cb} />\n ))}\n </div>\n </div>\n )\n}\n\n// ─── Status helpers ────────────────────────────────────────────────────────────\n\nfunction getStatusColor(code: string): string {\n const num = parseInt(code, 10)\n if (num >= 200 && num < 300) return 'var(--omnispec-color-success)'\n if (num >= 300 && num < 400) return 'var(--omnispec-color-info)'\n if (num >= 400 && num < 500) return 'var(--omnispec-color-warning)'\n if (num >= 500) return 'var(--omnispec-color-error)'\n return 'var(--omnispec-fg-primary)'\n}\n\nfunction getStatusBg(code: string): string {\n const num = parseInt(code, 10)\n if (num >= 200 && num < 300) return 'rgba(26, 127, 55, 0.1)'\n if (num >= 300 && num < 400) return 'rgba(5, 80, 174, 0.1)'\n if (num >= 400 && num < 500) return 'rgba(191, 135, 0, 0.1)'\n if (num >= 500) return 'rgba(207, 34, 46, 0.1)'\n return 'var(--omnispec-bg-tertiary)'\n}\n\n// ─── Styles ───────────────────────────────────────────────────────────────────\n\nconst containerStyle = css({\n marginBottom: '1.5rem',\n})\n\nconst titleStyle = css({\n margin: '0 0 0.75rem',\n fontSize: 'var(--omnispec-font-size-md)',\n fontWeight: 700,\n color: 'var(--omnispec-fg-primary)',\n letterSpacing: '0.02em',\n})\n\nconst cardListStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5rem',\n})\n\nconst cardStyle = css({\n borderRadius: '0.375rem',\n border: '1px dashed var(--omnispec-border-color)',\n overflow: 'hidden',\n})\n\nconst cardHeaderStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.625rem',\n width: '100%',\n padding: '0.625rem 0.75rem',\n background: 'var(--omnispec-bg-secondary)',\n border: 'none',\n cursor: 'pointer',\n textAlign: 'left',\n flexWrap: 'wrap',\n [mq.desktop]: {\n flexWrap: 'nowrap',\n gap: '0.75rem',\n padding: '0.625rem 1rem',\n },\n})\n\nconst chevronStyle = css({\n color: 'var(--omnispec-fg-muted)',\n flexShrink: 0,\n transition: 'transform 0.2s ease',\n})\n\nconst chevronExpandedStyle = css({\n transform: 'rotate(90deg)',\n})\n\nconst callbackNameStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n fontWeight: 600,\n color: 'var(--omnispec-fg-primary)',\n flexShrink: 0,\n})\n\nconst urlExpressionStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n fontFamily: 'var(--omnispec-font-mono)',\n color: 'var(--omnispec-fg-muted)',\n backgroundColor: 'var(--omnispec-bg-tertiary)',\n padding: '0.125rem 0.375rem',\n borderRadius: '0.25rem',\n minWidth: 0,\n wordBreak: 'break-all',\n [mq.desktop]: {\n wordBreak: 'normal',\n },\n})\n\nconst cardBodyStyle = css({\n padding: '0',\n borderTop: '1px solid var(--omnispec-border-color)',\n})\n\nconst summaryStyle = css({\n margin: '0.75rem 1rem 0',\n fontSize: 'var(--omnispec-font-size-base)',\n color: 'var(--omnispec-fg-secondary)',\n lineHeight: 1.5,\n})\n\nconst descriptionStyle = css({\n margin: '0.5rem 1rem 0',\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-secondary)',\n lineHeight: 1.5,\n})\n\nconst sectionStyle = css({\n padding: '0.75rem 1rem',\n borderTop: '1px solid color-mix(in srgb, var(--omnispec-border-color) 60%, transparent)',\n})\n\nconst sectionLabelStyle = css({\n display: 'block',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 600,\n color: 'var(--omnispec-fg-muted)',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n marginBottom: '0.5rem',\n})\n\nconst responseListStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.375rem',\n})\n\nconst responseRowStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '0.625rem',\n})\n\nconst statusBadgeStyle = css({\n fontFamily: 'var(--omnispec-font-mono)',\n fontWeight: 700,\n fontSize: 'var(--omnispec-font-size-sm)',\n padding: '0.125rem 0.5rem',\n borderRadius: '0.25rem',\n flexShrink: 0,\n})\n\nconst responseDescStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-secondary)',\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport { css, cx } from '@core/styles/css'\nimport { mq } from '@core/styles/breakpoints'\nimport type { OpenApiOperation, OpenApiMediaType } from '../types/openapi.types'\nimport { MarkdownRenderer } from '@core/components/MarkdownRenderer'\nimport { SchemaTree } from '@core/components/SchemaViewer/SchemaTree'\nimport { schemaToNodes, generateExample, buildConstraints } from '@core/components/SchemaViewer/schema-utils'\nimport { CodeBlock } from '@core/components/CodeBlock/CodeBlock'\nimport { Tabs } from '@core/components/common/Tabs'\nimport { Icon } from '@core/components/common/Icon'\nimport { LinkableHeading } from '@core/components/common/LinkableHeading'\nimport { ExampleSelector, getNamedExamples } from '@core/components/common/ExampleSelector'\nimport { CallbacksSection } from './CallbacksSection'\n\ninterface OperationDetailProps {\n operation: OpenApiOperation\n /** Selected named-example per parameter, keyed by `${in}-${name}`. */\n paramExampleSelections?: Record<string, string>\n /** Called when a parameter's named example is selected. */\n onParamExampleSelect?: (key: string, exampleName: string) => void\n}\n\nfunction ExampleBlock({ media }: { media: OpenApiMediaType }) {\n const namedExamples = getNamedExamples(media)\n const [selectedExample, setSelectedExample] = useState(namedExamples[0]?.name ?? '')\n\n const activeExample = namedExamples.find((ex) => ex.name === selectedExample)\n const exampleValue = activeExample?.value\n\n const displayCode = exampleValue !== undefined\n ? (typeof exampleValue === 'string' ? exampleValue : JSON.stringify(exampleValue, null, 2))\n : media.schema\n ? JSON.stringify(generateExample(media.schema as Record<string, unknown>), null, 2)\n : '{}'\n\n return (\n <>\n <ExampleSelector\n examples={namedExamples}\n selectedName={selectedExample}\n onSelect={setSelectedExample}\n />\n <CodeBlock code={displayCode} language=\"json\" />\n </>\n )\n}\n\n/**\n * Renders only the documentation content for an OpenAPI operation:\n * summary, externalDocs, description, security, parameters,\n * request body, and responses.\n *\n * Layout and TryIt rendering are handled by the parent EndpointCard\n * via ExpandableCard + ResponsiveColumns.\n */\nexport function OperationDetail({\n operation,\n paramExampleSelections,\n onParamExampleSelect,\n}: OperationDetailProps) {\n const opId = operation.operationId ?? `${operation.method}-${operation.path}`\n\n return (\n <>\n {operation.deprecated && (\n <div className={deprecatedBannerStyle} role=\"alert\">\n <Icon name=\"warning\" size=\"1rem\" />\n <span>\n This operation is deprecated and may be removed in a future release. Avoid using it in new integrations.\n </span>\n </div>\n )}\n\n {operation.summary && (\n <p className={summaryStyle}>{operation.summary}</p>\n )}\n\n {operation.externalDocs && (\n <a\n href={operation.externalDocs.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={externalDocsLinkStyle}\n >\n {operation.externalDocs.description ?? 'External docs'}\n <span className={externalDocsArrowStyle}>↗</span>\n </a>\n )}\n\n {operation.description && (\n <div className={sectionStyle}>\n <MarkdownRenderer content={operation.description} />\n </div>\n )}\n\n {/* Per-operation security */}\n {operation.security && operation.security.length > 0 && (\n <div className={sectionStyle}>\n <LinkableHeading id={`${opId}-security`} as=\"h4\" className={sectionTitleStyle}>Security</LinkableHeading>\n <div className={securitySchemesList}>\n {operation.security.map((schemes, idx) => (\n <div key={idx} className={securitySchemesRow}>\n {schemes.map((scheme) => (\n <span key={scheme} className={securitySchemeBadge}>\n <Icon name=\"lock\" size=\"0.625rem\" strokeWidth={2.5} />\n {scheme}\n </span>\n ))}\n {idx < operation.security!.length - 1 && (\n <span className={securityOrLabel}>or</span>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Parameters — modern inline layout */}\n {operation.parameters.length > 0 && (\n <div className={sectionStyle}>\n <LinkableHeading id={`${opId}-parameters`} as=\"h4\" className={sectionTitleStyle}>Parameters</LinkableHeading>\n <div className={paramListStyle}>\n {operation.parameters.map((param) => {\n const paramKey = `${param.in}-${param.name}`\n const paramSchema = (param.schema ?? {}) as Record<string, unknown>\n const constraintBadges = buildConstraints(paramSchema)\n const paramFormat = paramSchema.format as string | undefined\n const paramEnum = paramSchema.enum as unknown[] | undefined\n const namedExamples = param.examples\n ? Object.entries(param.examples).map(([name, ex]) => ({\n name,\n summary: ex.summary,\n value: ex.value,\n }))\n : []\n const selectedName = paramExampleSelections?.[paramKey] ?? namedExamples[0]?.name ?? ''\n const activeExample = namedExamples.find((ex) => ex.name === selectedName)\n return (\n <div key={paramKey} className={paramRowStyle}>\n <div className={paramHeaderStyle}>\n <span className={paramNameStyle}>{param.name}</span>\n <pre className={typeBadgeStyle}>\n {(param.schema as Record<string, unknown>)?.type as string ?? 'any'}\n </pre>\n {param.required && <span className={requiredBadgeStyle}>Required</span>}\n <span className={inBadgeStyle}>{param.in}</span>\n </div>\n {(paramFormat || constraintBadges.length > 0 || (paramEnum && paramEnum.length > 0)) && (\n <div className={paramConstraintsStyle}>\n {paramFormat && (\n <span className={paramConstraintBadgeStyle}>{paramFormat}</span>\n )}\n {constraintBadges.map((c) => (\n <span key={c} className={paramConstraintBadgeStyle}>{c}</span>\n ))}\n {paramEnum && paramEnum.length > 0 && (\n <span className={paramEnumBadgeStyle}>\n enum: {paramEnum.map(String).join(' | ')}\n </span>\n )}\n </div>\n )}\n {param.description && (\n <p className={paramDescStyle}>{param.description}</p>\n )}\n {namedExamples.length > 1 && (\n <ExampleSelector\n examples={namedExamples}\n selectedName={selectedName}\n onSelect={(name) => onParamExampleSelect?.(paramKey, name)}\n />\n )}\n {activeExample?.value !== undefined && (\n <code className={paramExampleValueStyle}>\n {typeof activeExample.value === 'string'\n ? activeExample.value\n : JSON.stringify(activeExample.value)}\n </code>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )}\n\n {/* Request Body */}\n {operation.requestBody && (\n <div className={sectionStyle}>\n <LinkableHeading id={`${opId}-request-body`} as=\"h4\" className={sectionTitleStyle}>\n Request Body\n {operation.requestBody.required && <span className={requiredBadgeStyle}> Required</span>}\n </LinkableHeading>\n {operation.requestBody.description && (\n <p className={paramDescStyle}>{operation.requestBody.description}</p>\n )}\n {Object.entries(operation.requestBody.content).map(([contentType, media]) => (\n <div key={contentType} className={mediaTypeStyle}>\n <code className={contentTypeBadgeStyle}>{contentType}</code>\n {media.schema && (\n <Tabs\n tabs={[\n {\n id: 'schema',\n label: 'Schema',\n content: <SchemaTree nodes={schemaToNodes(media.schema as Record<string, unknown>)} context=\"request\" />,\n },\n {\n id: 'example',\n label: 'Example',\n content: <ExampleBlock media={media} />,\n },\n ]}\n />\n )}\n </div>\n ))}\n </div>\n )}\n\n {/* Responses */}\n {operation.responses.length > 0 && (\n <div className={sectionStyle}>\n <LinkableHeading id={`${opId}-responses`} as=\"h4\" className={sectionTitleStyle}>Responses</LinkableHeading>\n <div className={responseListStyle}>\n {operation.responses.map((response) => (\n <div key={response.statusCode} className={responseCardStyle}>\n <div className={responseHeaderStyle}>\n <span className={cx(statusBadgeStyle, css({\n backgroundColor: getStatusBg(response.statusCode),\n color: getStatusColor(response.statusCode),\n }))}>\n {response.statusCode}\n </span>\n <span className={responseDescStyle}>{response.description}</span>\n </div>\n {response.headers && Object.keys(response.headers).length > 0 && (\n <div className={responseHeadersSection}>\n <span className={responseHeadersLabel}>Headers</span>\n <div className={responseHeadersList}>\n {Object.entries(response.headers).map(([headerName, header]) => (\n <div key={headerName} className={responseHeaderWrapper}>\n <div className={responseHeaderRow}>\n <span className={responseHeaderName}>{headerName}</span>\n {header.schema && (\n <pre className={typeBadgeStyle}>\n {(header.schema as Record<string, unknown>).type as string ?? 'string'}\n </pre>\n )}\n </div>\n {header.description && (\n <div className={responseHeaderDesc}>{header.description}</div>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n {response.content && Object.entries(response.content).map(([contentType, media]) => {\n const hasNamedExamples = getNamedExamples(media).length > 0\n const hasSchema = !!media.schema\n const hasExample = hasNamedExamples\n\n if (!hasSchema && !hasExample) return null\n\n const tabs = []\n if (hasSchema) {\n tabs.push({\n id: `schema-${response.statusCode}-${contentType}`,\n label: 'Schema',\n content: <SchemaTree nodes={schemaToNodes(media.schema as Record<string, unknown>)} context=\"response\" />,\n })\n }\n if (hasExample || hasSchema) {\n tabs.push({\n id: `example-${response.statusCode}-${contentType}`,\n label: 'Example',\n content: <ExampleBlock media={media} />,\n })\n }\n\n return (\n <div key={contentType} className={mediaTypeStyle}>\n <code className={contentTypeLabel}>{contentType}</code>\n <Tabs tabs={tabs} defaultTab={hasExample && !hasSchema ? tabs[0]?.id : undefined} />\n </div>\n )\n })}\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Callbacks */}\n {operation.callbacks && Object.keys(operation.callbacks).length > 0 && (\n <div className={sectionStyle}>\n <CallbacksSection callbacks={operation.callbacks} />\n </div>\n )}\n </>\n )\n}\n\nfunction getStatusColor(code: string): string {\n const num = parseInt(code, 10)\n if (num >= 200 && num < 300) return 'var(--omnispec-color-success)'\n if (num >= 300 && num < 400) return 'var(--omnispec-color-info)'\n if (num >= 400 && num < 500) return 'var(--omnispec-color-warning)'\n if (num >= 500) return 'var(--omnispec-color-error)'\n return 'var(--omnispec-fg-primary)'\n}\n\nfunction getStatusBg(code: string): string {\n const num = parseInt(code, 10)\n if (num >= 200 && num < 300) return 'rgba(26, 127, 55, 0.1)'\n if (num >= 300 && num < 400) return 'rgba(5, 80, 174, 0.1)'\n if (num >= 400 && num < 500) return 'rgba(191, 135, 0, 0.1)'\n if (num >= 500) return 'rgba(207, 34, 46, 0.1)'\n return 'var(--omnispec-bg-tertiary)'\n}\n\nconst summaryStyle = css({\n margin: '0 0 16px',\n fontSize: 'var(--omnispec-font-size-base)',\n color: 'var(--omnispec-fg-secondary)',\n lineHeight: 1.5,\n})\n\nconst sectionStyle = css({\n marginBottom: '24px',\n})\n\nconst sectionTitleStyle = css({\n margin: '0 0 12px',\n fontSize: 'var(--omnispec-font-size-md)',\n fontWeight: 700,\n color: 'var(--omnispec-fg-primary)',\n letterSpacing: '0.02em',\n})\n\nconst paramListStyle = css({\n display: 'flex',\n flexDirection: 'column',\n})\n\nconst paramRowStyle = css({\n padding: '12px 0',\n})\n\nconst paramHeaderStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n flexWrap: 'wrap',\n})\n\nconst paramNameStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n fontWeight: 700,\n backgroundColor: 'transparent',\n padding: 0,\n})\n\nconst typeBadgeStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 400,\n})\n\nconst requiredBadgeStyle = css({\n fontSize: 'var(--omnispec-font-size-xxs)',\n fontWeight: 600,\n color: 'var(--omnispec-color-error)',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n})\n\nconst inBadgeStyle = css({\n fontSize: 'var(--omnispec-font-size-xxs)',\n color: 'var(--omnispec-fg-muted)',\n backgroundColor: 'var(--omnispec-bg-tertiary)',\n padding: '1px 6px',\n borderRadius: '3px',\n fontFamily: 'var(--omnispec-font-mono)',\n})\n\nconst paramDescStyle = css({\n margin: '4px 0 0',\n fontSize: 'var(--omnispec-font-size-base)',\n color: 'var(--omnispec-fg-secondary)',\n lineHeight: 1.5,\n})\n\nconst deprecatedBannerStyle = css({\n display: 'flex',\n alignItems: 'flex-start',\n gap: '0.5rem',\n padding: '0.625rem 0.75rem',\n marginBottom: '1rem',\n borderRadius: 'var(--omnispec-border-radius)',\n backgroundColor: 'color-mix(in srgb, var(--omnispec-color-warning) 12%, transparent)',\n color: 'var(--omnispec-color-warning)',\n fontSize: 'var(--omnispec-font-size-sm)',\n lineHeight: 1.4,\n})\n\nconst paramConstraintsStyle = css({\n display: 'flex',\n flexWrap: 'wrap',\n gap: '0.375rem',\n marginTop: '0.375rem',\n})\n\nconst paramConstraintBadgeStyle = css({\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-muted)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n padding: '0.0625rem 0.375rem',\n borderRadius: 'var(--omnispec-border-radius)',\n})\n\nconst paramEnumBadgeStyle = css({\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-color-info)',\n backgroundColor: 'var(--omnispec-bg-secondary)',\n padding: '0.0625rem 0.375rem',\n borderRadius: 'var(--omnispec-border-radius)',\n wordBreak: 'break-word',\n})\n\nconst paramExampleValueStyle = css({\n display: 'block',\n marginTop: '0.375rem',\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-code)',\n wordBreak: 'break-all',\n})\n\nconst mediaTypeStyle = css({\n marginTop: '1rem',\n overflow: 'hidden',\n minWidth: 0,\n})\n\nconst contentTypeLabel = css({\n display: 'inline-block',\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-muted)',\n marginBottom: '4px',\n})\n\nconst contentTypeBadgeStyle = css({\n marginBottom: '8px',\n fontSize: 'var(--omnispec-font-size-sm)',\n})\n\nconst responseListStyle = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n})\n\nconst responseCardStyle = css({\n minWidth: 0,\n [mq.desktop]: {\n padding: '0.625rem 1rem',\n borderRadius: 'var(--omnispec-border-radius)',\n border: '1px solid color-mix(in srgb, var(--omnispec-border-color) 80%, transparent)',\n },\n})\n\nconst responseHeaderStyle = css({\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n})\n\nconst statusBadgeStyle = css({\n fontFamily: 'var(--omnispec-font-mono)',\n fontWeight: 700,\n fontSize: 'var(--omnispec-font-size-sm)',\n padding: '2px 8px',\n borderRadius: '4px',\n})\n\nconst responseDescStyle = css({\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-secondary)',\n})\n\nconst securitySchemesList = css({\n display: 'flex',\n gap: '8px',\n})\n\nconst securitySchemesRow = css({\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n flexWrap: 'wrap',\n})\n\nconst securitySchemeBadge = css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '5px',\n fontSize: 'var(--omnispec-font-size-xs)',\n fontFamily: 'var(--omnispec-font-mono)',\n color: 'var(--omnispec-fg-primary)',\n backgroundColor: 'var(--omnispec-bg-tertiary)',\n padding: '3px 10px',\n borderRadius: '4px',\n fontWeight: 500,\n})\n\nconst securityOrLabel = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-muted)',\n fontStyle: 'italic',\n})\n\nconst externalDocsLinkStyle = css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '4px',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-link)',\n textDecoration: 'none',\n backgroundColor: 'var(--omnispec-bg-tertiary)',\n padding: '3px 10px',\n borderRadius: '12px',\n fontWeight: 500,\n marginBottom: '12px',\n '&:hover': {\n textDecoration: 'underline',\n },\n})\n\nconst externalDocsArrowStyle = css({\n fontSize: '11px',\n})\n\nconst responseHeadersSection = css({\n marginTop: '8px',\n paddingTop: '8px',\n borderTop: '1px dashed var(--omnispec-border-color)',\n})\n\nconst responseHeadersLabel = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 600,\n color: 'var(--omnispec-fg-muted)',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n display: 'block',\n marginBottom: '10px',\n})\n\nconst responseHeadersList = css({\n display: 'flex',\n flexDirection: 'column',\n gap: '10px',\n})\n\nconst responseHeaderWrapper = css({\n display: 'flex',\n flexDirection: 'column',\n})\n\nconst responseHeaderRow = css({\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '4px 0',\n})\n\nconst responseHeaderName = css({\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-sm)',\n fontWeight: 600,\n color: 'var(--omnispec-fg-primary)',\n backgroundColor: 'transparent',\n padding: 0,\n})\n\nconst responseHeaderDesc = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-secondary)',\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useState } from 'react'\nimport { css } from '@core/styles/css'\nimport { mq } from '@core/styles/breakpoints'\nimport type { OpenApiOperation } from '@openapi/types/openapi.types'\nimport { ExpandableCard } from '@core/components/common/ExpandableCard'\nimport { MethodBar } from '@core/components/common/MethodBar'\nimport { ResponsiveColumns } from '@core/components/common/ResponsiveColumns'\nimport { TryItPanel } from '@core/components/TryIt/TryItPanel'\nimport { InlineTryIt } from '@core/components/TryIt/InlineTryIt'\nimport { generateExample } from '@core/components/SchemaViewer/schema-utils'\nimport { OperationDetail } from '@openapi/components/OperationDetail'\nimport { useConfig } from '@core/context/ConfigContext'\nimport type { ParameterDef } from '@core/components/TryIt/ParameterForm'\nimport { ReferenceLayout } from '@core/components/Reference/ReferenceLayout'\nimport { ReferenceOperationDetail } from '@core/components/Reference/ReferenceOperationDetail'\nimport { SamplesPanel } from '@core/components/Reference/SamplesPanel'\n\ninterface EndpointCardProps {\n operation: OpenApiOperation\n serverUrl: string\n id?: string\n expandAll?: boolean\n expandGeneration?: number\n}\n\nexport function EndpointCard({ operation, serverUrl, id, expandAll, expandGeneration }: EndpointCardProps) {\n const { allowTryIt, displayMode, tryItLayout } = useConfig()\n const title = operation.summary || operation.operationId || operation.path\n\n const paramCount = operation.parameters.length + (operation.requestBody ? 1 : 0)\n const rightLabel = paramCount > 0 ? `${paramCount} param${paramCount !== 1 ? 's' : ''}` : undefined\n\n // Per-parameter selected named example (keyed by `${in}-${name}`). The\n // selected example prefills the corresponding Try-It input.\n const [paramExampleSelections, setParamExampleSelections] = useState<Record<string, string>>({})\n\n const tryItParams: ParameterDef[] = operation.parameters.map((p) => {\n const schema = p.schema as Record<string, unknown> | undefined\n const items = schema?.items as Record<string, unknown> | undefined\n const itemsEnum = schema?.type === 'array' && Array.isArray(items?.enum)\n ? (items.enum as unknown[]).map(String)\n : undefined\n const exampleValue = resolveParamExampleValue(p, paramExampleSelections[`${p.in}-${p.name}`])\n return {\n name: p.name,\n in: p.in,\n required: p.required,\n description: p.description,\n type: schema?.type as string | undefined,\n format: schema?.format as string | undefined,\n enum: schema?.enum as string[] | undefined,\n itemsEnum,\n explode: p.explode,\n example: exampleValue !== null && exampleValue !== undefined ? String(exampleValue) : undefined,\n default: schema?.default !== null && schema?.default !== undefined ? String(schema.default) : undefined,\n }\n })\n\n const requestBodyContentTypes = operation.requestBody?.content\n ? Object.keys(operation.requestBody.content)\n : undefined\n\n const defaultContentType = requestBodyContentTypes?.[0]\n const defaultBodySchema = defaultContentType\n ? operation.requestBody?.content[defaultContentType]?.schema\n : undefined\n\n // Schemas per content type so the Try-It body editor can adapt (e.g. render\n // multipart/form-data file pickers) when the user switches content type.\n const requestBodySchemas = operation.requestBody?.content\n ? Object.fromEntries(\n Object.entries(operation.requestBody.content).map(([ct, media]) => [\n ct,\n media.schema as Record<string, unknown> | undefined,\n ]),\n )\n : undefined\n const defaultBodyExample = defaultBodySchema\n ? JSON.stringify(generateExample(defaultBodySchema as Record<string, unknown>), null, 2)\n : undefined\n\n // Shared Try-It props — identical whether the panel docks in the side column\n // (`tryItLayout: 'panel'`) or expands inline below the operation\n // (`tryItLayout: 'inline'`).\n const tryItPanelProps = {\n method: operation.method,\n path: operation.path,\n serverUrl,\n parameters: tryItParams,\n requestBodyContentTypes,\n defaultRequestBody: defaultBodyExample,\n requestBodySchema: defaultBodySchema as Record<string, unknown> | undefined,\n requestBodySchemas,\n security: operation.security,\n xCodeSamples: operation.xCodeSamples,\n }\n\n return (\n <ExpandableCard\n id={id}\n title={title}\n rightLabel={rightLabel}\n deprecated={operation.deprecated}\n badges={operation.xBadges}\n expandAll={expandAll}\n expandGeneration={expandGeneration}\n >\n <MethodBar\n label={operation.method}\n path={operation.path}\n method={operation.method as 'get' | 'post' | 'put' | 'delete' | 'patch'}\n />\n {displayMode === 'reference' ? (\n <ReferenceLayout\n operationId={id ?? `${operation.method}-${operation.path}`}\n schema={\n <ReferenceOperationDetail\n operationId={id ?? `${operation.method}-${operation.path}`}\n description={operation.description}\n parameters={operation.parameters}\n requestBody={operation.requestBody}\n responses={operation.responses}\n security={operation.security}\n />\n }\n samples={\n <SamplesPanel\n method={operation.method}\n path={operation.path}\n serverUrl={serverUrl}\n operationId={id ?? `${operation.method}-${operation.path}`}\n requestBodySchema={defaultBodySchema as Record<string, unknown> | undefined}\n requestBodyContentType={defaultContentType}\n responses={operation.responses}\n />\n }\n tryIt={allowTryIt ? <TryItPanel {...tryItPanelProps} /> : <div />}\n />\n ) : tryItLayout === 'inline' ? (\n // Inline (compact only): operation detail spans full width, with the\n // Try-It console in a collapsed-by-default disclosure below it.\n <div className={inlineWrapperStyle}>\n <OperationDetail\n operation={operation}\n paramExampleSelections={paramExampleSelections}\n onParamExampleSelect={(key, name) =>\n setParamExampleSelections((prev) => ({ ...prev, [key]: name }))\n }\n />\n {allowTryIt && <InlineTryIt {...tryItPanelProps} />}\n </div>\n ) : (\n <ResponsiveColumns\n left={\n <OperationDetail\n operation={operation}\n paramExampleSelections={paramExampleSelections}\n onParamExampleSelect={(key, name) =>\n setParamExampleSelections((prev) => ({ ...prev, [key]: name }))\n }\n />\n }\n right={allowTryIt ? <TryItPanel {...tryItPanelProps} /> : undefined}\n rightLabel=\"Try It\"\n />\n )}\n </ExpandableCard>\n )\n}\n\n// Full-width inline layout: mirrors ResponsiveColumns' single-column padding so\n// the operation detail lines up whether the Try-It docks or expands inline.\nconst inlineWrapperStyle = css({\n padding: '0.75rem 0',\n minWidth: 0,\n [mq.desktop]: {\n padding: '1rem 1.25rem',\n },\n})\n\n/**\n * Resolves the effective example value for a parameter given a selected named\n * example. Falls back to the selected example, then the first named example,\n * then the singular `example`.\n */\nfunction resolveParamExampleValue(\n param: OpenApiOperation['parameters'][number],\n selectedName?: string,\n): unknown {\n if (param.examples && Object.keys(param.examples).length > 0) {\n if (selectedName && param.examples[selectedName]) {\n return param.examples[selectedName].value\n }\n const first = Object.values(param.examples)[0]\n return first?.value\n }\n return param.example\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { memo } from 'react'\nimport { css } from '@core/styles/css'\nimport type { OpenApiTag } from '../types/openapi.types'\nimport { Collapsible } from '@core/components/common/Collapsible'\nimport { MarkdownRenderer } from '@core/components/MarkdownRenderer'\nimport { EndpointCard } from './EndpointCard'\n\ninterface TagGroupProps {\n tag: OpenApiTag\n serverUrl: string\n expandAll?: boolean\n expandGeneration?: number\n}\n\nexport const TagGroup = memo(function TagGroup({ tag, serverUrl, expandAll, expandGeneration }: TagGroupProps) {\n const title = (\n <span className={tagTitleStyle}>\n {tag.displayName ?? tag.name}\n <span className={tagCountStyle}>{tag.operations.length}</span>\n </span>\n )\n\n return (\n <div className={`omnispec-tag-group ${tagContainerStyle}`} id={`tag-${tag.name}`}>\n <Collapsible title={title} defaultOpen={true} headerStyle={tagHeaderStyleObj}>\n {tag.description && (\n <div className={tagDescriptionStyle}>\n <MarkdownRenderer content={tag.description} />\n </div>\n )}\n {tag.externalDocs && (\n <a\n href={tag.externalDocs.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={externalDocsStyle}\n >\n {tag.externalDocs.description ?? 'External docs'}\n <span className={externalDocsArrowStyle}>↗</span>\n </a>\n )}\n <div className={tagOperationsStyle}>\n {tag.operations.map((op, idx) => (\n <EndpointCard\n key={op.operationId ?? `${op.method}-${op.path}-${idx}`}\n id={op.operationId ?? `${op.method}-${op.path}`}\n operation={op}\n serverUrl={serverUrl}\n expandAll={expandAll}\n expandGeneration={expandGeneration}\n />\n ))}\n </div>\n </Collapsible>\n </div>\n )\n})\n\nconst tagContainerStyle = css({\n marginBottom: '32px',\n})\n\nconst tagHeaderStyleObj = {\n paddingBottom: '8px',\n borderBottom: '2px solid var(--omnispec-border-color)',\n marginBottom: '12px',\n}\n\nconst tagTitleStyle = css({\n fontSize: '18px',\n fontWeight: 800,\n color: 'var(--omnispec-fg-primary)',\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n letterSpacing: '-0.01em',\n})\n\nconst tagCountStyle = css({\n fontSize: '11px',\n fontWeight: 500,\n color: 'var(--omnispec-fg-muted)',\n backgroundColor: 'var(--omnispec-bg-tertiary)',\n padding: '2px 8px',\n borderRadius: '10px',\n fontFamily: 'var(--omnispec-font-mono)',\n})\n\nconst tagDescriptionStyle = css({\n marginBottom: '16px',\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-secondary)',\n lineHeight: 1.6,\n})\n\nconst externalDocsStyle = css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.25rem',\n fontSize: 'var(--omnispec-font-size-xs)',\n color: 'var(--omnispec-fg-link)',\n textDecoration: 'none',\n marginBottom: '1rem',\n '&:hover': {\n textDecoration: 'underline',\n },\n})\n\nconst externalDocsArrowStyle = css({\n fontSize: '0.75em',\n})\n\nconst tagOperationsStyle = css({\n display: 'flex',\n flexDirection: 'column',\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { css } from '@core/styles/css'\nimport { mq } from '@core/styles/breakpoints'\nimport type { OpenApiComponents } from '../types/openapi.types'\nimport { Collapsible } from '@core/components/common/Collapsible'\nimport { SchemaTree } from '@core/components/SchemaViewer/SchemaTree'\nimport { schemaToNodes } from '@core/components/SchemaViewer/schema-utils'\nimport { LinkableHeading } from '@core/components/common/LinkableHeading'\n\ninterface ComponentsSectionProps {\n components: OpenApiComponents\n /** Mirrors the toolbar \"expand all\" toggle so schemas open/close with it. */\n expandAll?: boolean\n expandGeneration?: number\n}\n\nexport function ComponentsSection({ components, expandAll, expandGeneration }: ComponentsSectionProps) {\n const schemas = Object.entries(components.schemas)\n if (schemas.length === 0) return null\n\n return (\n <div className={`omnispec-components ${containerStyle}`}>\n <LinkableHeading id=\"schemas\" as=\"h2\" className={titleStyle}>Schemas</LinkableHeading>\n <div className={schemaWrapperStyle}>\n {schemas.map(([name, schema]) => (\n <div key={name} className={schemaStyle} id={`schema-${name}`}>\n <Collapsible\n title={<span className={schemaNameStyle}>{name}</span>}\n defaultOpen={false}\n expandAll={expandAll}\n expandGeneration={expandGeneration}\n >\n <SchemaTree nodes={schemaToNodes(schema)} />\n </Collapsible>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nconst containerStyle = css({\n marginTop: '2rem',\n paddingTop: '1.5rem',\n borderTop: '1px solid var(--omnispec-border-color)',\n [mq.mobile]: {\n borderTop: 'none',\n marginTop: '1.5rem',\n paddingTop: '1rem',\n },\n})\n\nconst titleStyle = css({\n margin: '0 0 16px',\n fontSize: 'var(--omnispec-h2-font-size)',\n color: 'var(--omnispec-h2-color)',\n fontWeight: 700,\n})\n\nconst schemaWrapperStyle = css({\n border: '1px solid var(--omnispec-border-color)',\n borderRadius: '0.5rem',\n padding: '1.5rem 1rem',\n minWidth: 0,\n})\n\nconst schemaStyle = css({\n marginBottom: '8px',\n})\n\nconst schemaNameStyle = css({\n fontFamily: 'var(--omnispec-font-mono)',\n fontSize: 'var(--omnispec-font-size-base)',\n fontWeight: 600,\n color: 'var(--omnispec-color-primary)',\n overflowWrap: 'break-word',\n wordBreak: 'break-all',\n '&:hover': {\n textDecoration: 'none',\n },\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useCallback, useEffect, useState } from 'react'\n\nexport interface SegmentedRoute {\n view: 'overview' | 'operation'\n operationId: string | null\n}\n\nfunction parseHash(): SegmentedRoute {\n const hash = window.location.hash.slice(1)\n if (!hash || hash === '/') {\n return { view: 'overview', operationId: null }\n }\n return { view: 'operation', operationId: hash }\n}\n\nexport function useSegmentedRouter() {\n const [route, setRoute] = useState<SegmentedRoute>(parseHash)\n\n useEffect(() => {\n const onHashChange = () => setRoute(parseHash())\n window.addEventListener('hashchange', onHashChange)\n return () => window.removeEventListener('hashchange', onHashChange)\n }, [])\n\n const navigateToOperation = useCallback((operationId: string) => {\n window.location.hash = operationId\n }, [])\n\n const navigateToOverview = useCallback(() => {\n window.history.replaceState(null, '', window.location.pathname)\n setRoute({ view: 'overview', operationId: null })\n }, [])\n\n return { route, navigateToOperation, navigateToOverview }\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { css } from '@core/styles/css'\nimport type { OpenApiOperation } from '@openapi/types/openapi.types'\nimport { MethodBar } from '@core/components/common/MethodBar'\nimport { ResponsiveColumns } from '@core/components/common/ResponsiveColumns'\nimport { TryItPanel } from '@core/components/TryIt/TryItPanel'\nimport { InlineTryIt } from '@core/components/TryIt/InlineTryIt'\nimport { generateExample } from '@core/components/SchemaViewer/schema-utils'\nimport { OperationDetail } from '@openapi/components/OperationDetail'\nimport { useConfig } from '@core/context/ConfigContext'\nimport type { ParameterDef } from '@core/components/TryIt/ParameterForm'\nimport { ReferenceLayout } from '@core/components/Reference/ReferenceLayout'\nimport { ReferenceOperationDetail } from '@core/components/Reference/ReferenceOperationDetail'\nimport { SamplesPanel } from '@core/components/Reference/SamplesPanel'\n\ninterface OperationViewProps {\n operation: OpenApiOperation\n serverUrl: string\n onBack: () => void\n tagName?: string\n}\n\nexport function OperationView({ operation, serverUrl, onBack, tagName }: OperationViewProps) {\n const { allowTryIt, displayMode, tryItLayout } = useConfig()\n const title = operation.summary || operation.operationId || operation.path\n\n const tryItParams: ParameterDef[] = operation.parameters.map((p) => {\n const schema = p.schema as Record<string, unknown> | undefined\n return {\n name: p.name,\n in: p.in,\n required: p.required,\n description: p.description,\n type: schema?.type as string | undefined,\n format: schema?.format as string | undefined,\n enum: schema?.enum as string[] | undefined,\n example: p.example !== null && p.example !== undefined ? String(p.example) : undefined,\n default: schema?.default !== null && schema?.default !== undefined ? String(schema.default) : undefined,\n }\n })\n\n const requestBodyContentTypes = operation.requestBody?.content\n ? Object.keys(operation.requestBody.content)\n : undefined\n\n const defaultContentType = requestBodyContentTypes?.[0]\n const defaultBodySchema = defaultContentType\n ? operation.requestBody?.content[defaultContentType]?.schema\n : undefined\n const defaultBodyExample = defaultBodySchema\n ? JSON.stringify(generateExample(defaultBodySchema as Record<string, unknown>), null, 2)\n : undefined\n\n // Shared Try-It props — identical whether docked in the side column\n // (`tryItLayout: 'panel'`) or expanded inline below the operation.\n const tryItPanelProps = {\n method: operation.method,\n path: operation.path,\n serverUrl,\n parameters: tryItParams,\n requestBodyContentTypes,\n defaultRequestBody: defaultBodyExample,\n requestBodySchema: defaultBodySchema as Record<string, unknown> | undefined,\n xCodeSamples: operation.xCodeSamples,\n }\n\n return (\n <div className={containerStyle}>\n <button type=\"button\" onClick={onBack} className={backBtnStyle}>\n ← {tagName ?? 'All Operations'}\n </button>\n <h2 className={titleStyle}>{title}</h2>\n <MethodBar\n label={operation.method}\n path={operation.path}\n method={operation.method as 'get' | 'post' | 'put' | 'delete' | 'patch'}\n />\n <div className={contentStyle}>\n {displayMode === 'reference' ? (\n <ReferenceLayout\n operationId={operation.operationId ?? `${operation.method}-${operation.path}`}\n schema={\n <ReferenceOperationDetail\n operationId={operation.operationId ?? `${operation.method}-${operation.path}`}\n description={operation.description}\n parameters={operation.parameters}\n requestBody={operation.requestBody}\n responses={operation.responses}\n security={operation.security}\n />\n }\n samples={\n <SamplesPanel\n method={operation.method}\n path={operation.path}\n serverUrl={serverUrl}\n operationId={operation.operationId ?? `${operation.method}-${operation.path}`}\n requestBodySchema={defaultBodySchema as Record<string, unknown> | undefined}\n requestBodyContentType={defaultContentType}\n responses={operation.responses}\n />\n }\n tryIt={allowTryIt ? <TryItPanel {...tryItPanelProps} /> : <div />}\n />\n ) : tryItLayout === 'inline' ? (\n // Inline (compact only): operation detail full-width, Try-It console in\n // a collapsed-by-default disclosure below it.\n <>\n <OperationDetail operation={operation} />\n {allowTryIt && <InlineTryIt {...tryItPanelProps} />}\n </>\n ) : (\n <ResponsiveColumns\n left={<OperationDetail operation={operation} />}\n right={allowTryIt ? <TryItPanel {...tryItPanelProps} /> : undefined}\n rightLabel=\"Try It\"\n />\n )}\n </div>\n </div>\n )\n}\n\nconst containerStyle = css({\n padding: 0,\n})\n\nconst backBtnStyle = css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.25rem',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: 'var(--omnispec-font-size-sm)',\n color: 'var(--omnispec-fg-link)',\n padding: '0 0 0.75rem',\n fontWeight: 500,\n '&:hover': {\n textDecoration: 'underline',\n },\n})\n\nconst titleStyle = css({\n fontSize: 'var(--omnispec-h2-font-size)',\n fontWeight: 'var(--omnispec-h2-font-weight)',\n color: 'var(--omnispec-h2-color)',\n margin: '0 0 0.75rem',\n})\n\nconst contentStyle = css({\n marginTop: '1rem',\n})\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport type { ReactNode } from 'react'\nimport type { SegmentedRoute } from '@core/hooks/useSegmentedRouter'\nimport type { ParsedOpenApiSpec } from '../types/openapi.types'\nimport { OperationView } from './OperationView'\n\ninterface SegmentedContentProps {\n route: SegmentedRoute\n parsedSpec: ParsedOpenApiSpec\n serverUrl: string\n onBack: () => void\n overviewContent: ReactNode\n}\n\nexport function SegmentedContent({\n route,\n parsedSpec,\n serverUrl,\n onBack,\n overviewContent,\n}: SegmentedContentProps) {\n if (route.view === 'overview' || !route.operationId) {\n return <>{overviewContent}</>\n }\n\n for (const tag of parsedSpec.tags) {\n for (const op of tag.operations) {\n const opId = op.operationId ?? `${op.method}-${op.path}`\n if (opId === route.operationId) {\n return (\n <OperationView\n operation={op}\n serverUrl={serverUrl}\n onBack={onBack}\n tagName={tag.displayName ?? tag.name}\n />\n )\n }\n }\n }\n\n return <>{overviewContent}</>\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport type { OpenApiOperation } from './types/openapi.types'\n\n/**\n * Returns true when an operation matches a lowercased sidebar search query.\n * Matches against path, summary, description, operationId, and HTTP method.\n */\nexport function operationMatchesSearch(op: OpenApiOperation, lowercasedQuery: string): boolean {\n return (\n op.path.toLowerCase().includes(lowercasedQuery) ||\n (op.summary?.toLowerCase().includes(lowercasedQuery) ?? false) ||\n (op.description?.toLowerCase().includes(lowercasedQuery) ?? false) ||\n (op.operationId?.toLowerCase().includes(lowercasedQuery) ?? false) ||\n op.method.toLowerCase().includes(lowercasedQuery)\n )\n}\n","/**\n * This source file is part of the Apiboost(R) OmniSpec Core.\n *\n * Copyright (c) Apiboost, Inc.\n *\n * SPDX-License-Identifier: Apache-2.0\n *\n * See LICENSE.md and LICENSING.md in the project root for license information.\n */\n\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { css, cx } from '@core/styles/css'\nimport type { BaseSpecProps } from '@core/types/common.types'\nimport { SpecType } from '@core/types/spec-detection.types'\nimport { ThemeProvider } from '@core/themes/ThemeProvider'\nimport { ConfigProvider } from '@core/context/ConfigContext'\nimport { ExpandProvider } from '@core/context/ExpandContext'\nimport { resolveSchemaStyle } from '@core/components/SchemaViewer/schema-style'\nimport { AuthProvider } from '@core/context/AuthContext'\nimport { DocLayout } from '@core/components/Layout/DocLayout'\nimport { NavTree } from '@core/components/Navigation/NavTree'\nimport type { NavItem } from '@core/components/Navigation/NavTree'\nimport { Icon } from '@core/components/common/Icon'\nimport { SearchBar } from '@core/components/Navigation/SearchBar'\nimport { buildSidebar } from '@core/components/Navigation/buildSidebar'\nimport { AuthPanelModal } from '@core/components/Auth/AuthPanelModal'\nimport { LoadingScreen } from '@core/components/common/LoadingScreen'\nimport { ErrorMessage } from '@core/components/common/ErrorMessage'\nimport { SpecToolbar } from '@core/components/common/SpecToolbar'\nimport { useOpenApiSpec } from './hooks/useOpenApiSpec'\nimport { ApiOverview, ApiVersionBadge } from './components/ApiOverview'\nimport { ServerSelector } from './components/ServerSelector'\nimport { TagGroup } from './components/TagGroup'\nimport { ComponentsSection } from './components/ComponentsSection'\nimport { resolveDownloadLink } from '@core/utils/resolve-download-link'\nimport { useHashScroll } from '@core/hooks/useHashScroll'\nimport { useScrollSpy, flattenNavItemIds } from '@core/hooks/useScrollSpy'\nimport { useSegmentedRouter } from '@core/hooks/useSegmentedRouter'\nimport { SegmentedContent } from './components/SegmentedContent'\nimport { operationMatchesSearch } from './search'\nimport type { OpenApiServer, OpenApiTag } from './types/openapi.types'\nimport { ErrorBoundary } from '@core/components/common/ErrorBoundary'\nimport { SpecStatusScreen } from '@core/components/Layout/SpecStatusScreen'\n\n// Sentinel id for the synthetic \"Overview\" sidebar entry shown in segmented\n// mode, giving users a way back to the top-level route (title/servers/schemas).\nconst OVERVIEW_NAV_ID = '__apidoc_overview__'\n\n// One-time guard so the reference-mode `tryItLayout` warning fires at most once\n// per session instead of on every render/instance.\nlet warnedTryItLayoutIgnored = false\n\nexport function OpenApiSpec({\n spec,\n theme,\n proxyUrl,\n proxyHeaders,\n oauth,\n interactiveOAuth = true,\n allowTryIt = true,\n downloadLink,\n layout = 'sidebar',\n sidebarPosition = 'left',\n // Default `panel` (docked side column). Non-breaking: the prop was dead until\n // inline was implemented, so `panel` matches every consumer's current Try-It.\n tryItLayout = 'panel',\n defaultExpandOperations = false,\n displayMode,\n schemaStyle,\n externalRefOrigins,\n serverUrl: serverUrlOverride,\n servers: serversOverride,\n tryItPersistTtl,\n navigationMode,\n pro,\n sidebarNav,\n slots = {},\n onSpecLoaded,\n onTryItRequest: _onTryItRequest,\n onTryItResponse: _onTryItResponse,\n className,\n}: BaseSpecProps) {\n const refOptions = useMemo(() => ({\n specUrl: typeof spec === 'string' ? spec : undefined,\n externalRefOrigins,\n }), [spec, externalRefOrigins])\n\n const { data: parsedSpec, state } = useOpenApiSpec(spec, refOptions)\n const [selectedServer, setSelectedServer] = useState<string>('')\n const [searchQuery, setSearchQuery] = useState('')\n const [allExpanded, setAllExpanded] = useState(defaultExpandOperations)\n const [expandGeneration, setExpandGeneration] = useState(0)\n\n const handleToggleExpand = useCallback(() => {\n setAllExpanded((prev) => !prev)\n setExpandGeneration((prev) => prev + 1)\n }, [])\n\n useMemo(() => {\n if (parsedSpec && onSpecLoaded) {\n onSpecLoaded({\n title: parsedSpec.title,\n version: parsedSpec.version,\n type: parsedSpec.specVersion.startsWith('2') ? SpecType.OPENAPI_2 : SpecType.OPENAPI_3,\n })\n }\n }, [parsedSpec, onSpecLoaded])\n\n const specOrigin = useMemo(() => {\n if (typeof spec !== 'string') return ''\n try {\n const parsed = new URL(spec, window.location.origin)\n return parsed.origin\n } catch {\n return ''\n }\n }, [spec])\n\n const resolveServerUrl = useCallback((url: string) => {\n if (url.startsWith('/') && specOrigin) {\n return specOrigin + url\n }\n return url\n }, [specOrigin])\n\n // Effective server list: `servers` prop override replaces the spec's servers.\n // `serverUrl` (single-URL override) takes precedence over everything.\n const effectiveServers = useMemo<OpenApiServer[]>(() => {\n if (serverUrlOverride) return [{ url: serverUrlOverride }]\n if (serversOverride?.length) {\n return serversOverride.map((s) => ({ url: s.url, description: s.description }))\n }\n return parsedSpec?.servers ?? []\n }, [serverUrlOverride, serversOverride, parsedSpec])\n\n const serverUrl = useMemo(() => {\n // A forced single-URL override wins over any selection.\n if (serverUrlOverride) return resolveServerUrl(serverUrlOverride)\n if (selectedServer) return resolveServerUrl(selectedServer)\n const first = effectiveServers[0]\n if (!first) return specOrigin || (typeof window !== 'undefined' ? window.location.origin : '')\n let url = first.url\n if (first.variables) {\n for (const [key, variable] of Object.entries(first.variables)) {\n if (variable.default) {\n url = url.replace(`{${key}}`, variable.default)\n }\n }\n }\n return resolveServerUrl(url)\n }, [serverUrlOverride, selectedServer, effectiveServers, specOrigin, resolveServerUrl])\n\n const navItems: NavItem[] = useMemo(() => {\n if (!parsedSpec) return []\n\n const tagItemMap = new Map<string, NavItem>()\n for (const tag of parsedSpec.tags) {\n tagItemMap.set(tag.name, {\n id: `tag-${tag.name}`,\n label: tag.displayName ?? tag.name,\n children: tag.operations.map((op) => ({\n id: op.operationId ?? `${op.method}-${op.path}`,\n label: op.summary ?? `${op.method.toUpperCase()} ${op.path}`,\n badge: op.method.toUpperCase(),\n badgeColor: `var(--omnispec-color-${op.method})`,\n })),\n })\n }\n\n let items: NavItem[]\n if (parsedSpec.tagGroups?.length) {\n items = parsedSpec.tagGroups.map((group) => ({\n id: `group-${group.name}`,\n label: group.name,\n children: group.tags\n .map((tagName) => tagItemMap.get(tagName))\n .filter(Boolean) as NavItem[],\n }))\n } else {\n items = Array.from(tagItemMap.values())\n }\n\n if (parsedSpec.webhooks?.length) {\n items.push({\n id: 'tag-Webhooks',\n label: 'Webhooks',\n children: parsedSpec.webhooks.map((op) => ({\n id: op.operationId ?? `${op.method}-${op.path}`,\n label: op.summary ?? `${op.method.toUpperCase()} ${op.path}`,\n badge: op.method.toUpperCase(),\n badgeColor: `var(--omnispec-color-${op.method})`,\n })),\n })\n }\n\n if (parsedSpec.components && Object.keys(parsedSpec.components.schemas).length > 0) {\n items.push({\n id: 'schemas',\n label: 'Schemas',\n children: Object.keys(parsedSpec.components.schemas).map((name) => ({\n id: `schema-${name}`,\n label: name,\n })),\n })\n }\n\n return items\n }, [parsedSpec])\n\n const filteredTags = useMemo(() => {\n if (!parsedSpec || !searchQuery.trim()) return parsedSpec?.tags ?? []\n\n const q = searchQuery.toLowerCase()\n return parsedSpec.tags\n .map((tag) => ({\n ...tag,\n operations: tag.operations.filter((op) => operationMatchesSearch(op, q)),\n }))\n .filter((tag) => tag.operations.length > 0)\n }, [parsedSpec, searchQuery])\n\n // OpenAPI 3.1 webhooks rendered as a synthetic \"Webhooks\" tag group, filtered\n // by the same sidebar search predicate as regular operations.\n const webhooksTag = useMemo<OpenApiTag | null>(() => {\n if (!parsedSpec?.webhooks?.length) return null\n const q = searchQuery.trim().toLowerCase()\n const operations = q\n ? parsedSpec.webhooks.filter((op) => operationMatchesSearch(op, q))\n : parsedSpec.webhooks\n if (operations.length === 0) return null\n return {\n name: 'Webhooks',\n description: 'Webhooks the API sends to registered subscribers.',\n operations,\n }\n }, [parsedSpec, searchQuery])\n\n const operationCount = useMemo(\n () => parsedSpec?.tags.reduce((sum, tag) => sum + tag.operations.length, 0) ?? 0,\n [parsedSpec],\n )\n\n const SEGMENTED_THRESHOLD = 50\n\n const resolvedMode = useMemo(() => {\n if (navigationMode) return navigationMode\n return operationCount > SEGMENTED_THRESHOLD ? 'segmented' : 'grouped'\n }, [navigationMode, operationCount])\n\n const isSegmented = resolvedMode === 'segmented'\n\n const resolvedDisplayMode = displayMode ?? 'compact'\n const resolvedSchemaStyle = resolveSchemaStyle(schemaStyle, pro?.advancedSchemaStyles ?? false)\n\n // `tryItLayout` only affects compact mode; reference mode owns its own Try-It\n // placement. Warn once (dev only) if a consumer set `inline` in reference\n // mode so the no-op is discoverable without spamming the console in prod.\n useEffect(() => {\n if (\n process.env.NODE_ENV !== 'production' &&\n resolvedDisplayMode === 'reference' &&\n tryItLayout === 'inline' &&\n !warnedTryItLayoutIgnored\n ) {\n warnedTryItLayoutIgnored = true\n // eslint-disable-next-line no-console\n console.warn(\n \"[omnispec] `tryItLayout: 'inline'` is ignored in reference display mode — \" +\n 'reference mode renders Try-It as its own right-column tab.',\n )\n }\n }, [resolvedDisplayMode, tryItLayout])\n\n const { route, navigateToOperation, navigateToOverview } = useSegmentedRouter()\n\n const { navigateTo } = useHashScroll(operationCount)\n\n const handleNavSelect = navigateTo\n\n // In segmented mode the sidebar navigates by hash. Route the synthetic\n // Overview entry back to the top-level view; everything else is an operation.\n const handleSegmentedSelect = useCallback(\n (id: string) => {\n if (id === OVERVIEW_NAV_ID) {\n navigateToOverview()\n } else {\n navigateToOperation(id)\n }\n },\n [navigateToOverview, navigateToOperation],\n )\n\n // Prepend an \"Overview\" entry so segmented users can return to the top-level\n // route (spec title, servers, schemas) from any operation.\n const segmentedNavItems = useMemo<NavItem[]>(() => {\n if (!isSegmented) return navItems\n return [\n { id: OVERVIEW_NAV_ID, label: 'Overview', icon: <Icon name=\"home\" size=\"1rem\" /> },\n ...navItems,\n ]\n }, [isSegmented, navItems])\n\n // Grouped (single-page) mode highlights the sidebar entry for the operation\n // currently in view; segmented mode already tracks the active route.\n const navSectionIds = useMemo(() => flattenNavItemIds(navItems), [navItems])\n const activeSection = useScrollSpy(navSectionIds)\n\n if (state.status === 'loading') {\n return (\n <ThemeProvider theme={theme}>\n <div className={cx('omnispec-openapi', className)}>\n <LoadingScreen />\n </div>\n </ThemeProvider>\n )\n }\n\n if (state.status === 'error') {\n return (\n <SpecStatusScreen\n theme={theme}\n layout={layout}\n sidebarPosition={sidebarPosition}\n slots={slots}\n sidebarNav={sidebarNav}\n premiumThemingEnabled={pro?.premiumThemingEnabled ?? false}\n className={cx('omnispec-openapi', className)}\n >\n <ErrorMessage title=\"Failed to load specification\" message={state.error} />\n </SpecStatusScreen>\n )\n }\n\n if (!parsedSpec) return null\n\n const specNav = (\n <>\n <div className={headingStyle}>Operations</div>\n <SearchBar\n placeholder=\"Filter endpoints...\"\n onSearch={setSearchQuery}\n />\n <NavTree\n items={segmentedNavItems}\n activeId={isSegmented ? (route.operationId ?? OVERVIEW_NAV_ID) : activeSection}\n onSelect={isSegmented ? handleSegmentedSelect : handleNavSelect}\n parentToggleOnly={isSegmented}\n />\n </>\n )\n\n const sidebar = buildSidebar(sidebarNav, specNav)\n\n const resolvedDownloadLink = resolveDownloadLink(downloadLink, spec)\n\n return (\n <ConfigProvider config={{ proxyUrl, proxyHeaders, oauth, allowTryIt, layout, sidebarPosition, tryItLayout, defaultExpandOperations, displayMode: resolvedDisplayMode, schemaStyle: resolvedSchemaStyle, slots, proRenderers: pro?.renderers ?? new Map(), premiumThemingEnabled: pro?.premiumThemingEnabled ?? false, interactiveAuth: pro?.interactiveAuth, interactiveOAuth, specKey: `${parsedSpec.title}@${parsedSpec.version}`, tryItPersistTtl }}>\n <ExpandProvider expandAll={allExpanded} expandGeneration={expandGeneration}>\n <ThemeProvider theme={theme}>\n <AuthProvider schemes={parsedSpec.securitySchemes}>\n <div className={`omnispec-openapi ${className ?? ''}`}>\n <AuthPanelModal serverUrl={serverUrl} />\n <ErrorBoundary title=\"Failed to render this API reference\">\n <DocLayout\n layout={layout}\n sidebarPosition={sidebarPosition}\n sidebar={sidebar}\n sidebarHeader={slots.sidebarHeader ?? (parsedSpec.logo ? (\n <a href={parsedSpec.logo.href ?? '#'} className={logoLinkStyle}>\n <img\n src={parsedSpec.logo.url}\n alt={parsedSpec.logo.altText ?? 'Logo'}\n className={logoImgStyle}\n style={parsedSpec.logo.backgroundColor ? { backgroundColor: parsedSpec.logo.backgroundColor } : undefined}\n />\n </a>\n ) : undefined)}\n sidebarFooter={slots.sidebarFooter}\n header={slots.header}\n contentHeader={slots.contentHeader}\n footer={slots.footer}\n >\n {isSegmented ? (\n <SegmentedContent\n route={route}\n parsedSpec={parsedSpec}\n serverUrl={serverUrl}\n onBack={navigateToOverview}\n overviewContent={\n <>\n <SpecToolbar\n overview={<ApiOverview spec={parsedSpec} />}\n versionBadge={<ApiVersionBadge version={parsedSpec.version} />}\n expandLabel=\"schemas\"\n allExpanded={allExpanded}\n onToggleExpand={handleToggleExpand}\n downloadLink={resolvedDownloadLink}\n />\n <ServerSelector\n servers={effectiveServers}\n selectedUrl={serverUrl}\n onSelect={setSelectedServer}\n />\n <ComponentsSection\n components={parsedSpec.components}\n expandAll={allExpanded}\n expandGeneration={expandGeneration}\n />\n </>\n }\n />\n ) : (\n <>\n <SpecToolbar\n overview={<ApiOverview spec={parsedSpec} />}\n versionBadge={<ApiVersionBadge version={parsedSpec.version} />}\n expandLabel=\"operations\"\n allExpanded={allExpanded}\n onToggleExpand={handleToggleExpand}\n downloadLink={resolvedDownloadLink}\n />\n <ServerSelector\n servers={effectiveServers}\n selectedUrl={serverUrl}\n onSelect={setSelectedServer}\n />\n {filteredTags.map((tag) => (\n <TagGroup\n key={tag.name}\n tag={tag}\n serverUrl={serverUrl}\n expandAll={allExpanded}\n expandGeneration={expandGeneration}\n />\n ))}\n {webhooksTag && (\n <TagGroup\n key=\"__webhooks__\"\n tag={webhooksTag}\n serverUrl={serverUrl}\n expandAll={allExpanded}\n expandGeneration={expandGeneration}\n />\n )}\n <ComponentsSection\n components={parsedSpec.components}\n expandAll={allExpanded}\n expandGeneration={expandGeneration}\n />\n </>\n )}\n </DocLayout>\n </ErrorBoundary>\n </div>\n </AuthProvider>\n </ThemeProvider>\n </ExpandProvider>\n </ConfigProvider>\n )\n}\n\nconst headingStyle = css({\n fontSize: 'var(--omnispec-font-size-xs)',\n fontWeight: 700,\n textTransform: 'uppercase',\n letterSpacing: '0.08em',\n color: 'var(--omnispec-nav-heading-color)',\n padding: '1rem 0.75rem 0.25rem',\n})\n\nconst logoLinkStyle = css({\n display: 'block',\n padding: '0.75rem',\n textDecoration: 'none',\n})\n\nconst logoImgStyle = css({\n maxWidth: '100%',\n maxHeight: '4rem',\n objectFit: 'contain',\n})\n"],"names":["parseYaml","containerStyle","titleRowStyle","titleStyle","descriptionStyle","sectionStyle","sectionTitleStyle","labelStyle","request","chevronStyle","summaryStyle","responseListStyle","statusBadgeStyle","getStatusBg","getStatusColor","responseDescStyle","externalDocsArrowStyle","TagGroup"],"mappings":"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"}
|