zudoku 0.0.0-fb7d300 → 0.0.0-fc93837
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/client.d.ts +7 -0
- package/dist/app/demo.js +1 -2
- package/dist/app/demo.js.map +1 -1
- package/dist/app/entry.client.d.ts +1 -0
- package/dist/app/entry.client.js +14 -15
- package/dist/app/entry.client.js.map +1 -1
- package/dist/app/entry.server.d.ts +1 -0
- package/dist/app/entry.server.js +2 -2
- package/dist/app/entry.server.js.map +1 -1
- package/dist/app/main.d.ts +2 -2
- package/dist/app/main.js +21 -8
- package/dist/app/main.js.map +1 -1
- package/dist/app/sentry.d.ts +3 -0
- package/dist/app/sentry.js +19 -0
- package/dist/app/sentry.js.map +1 -0
- package/dist/app/standalone.js +1 -2
- package/dist/app/standalone.js.map +1 -1
- package/dist/app/tailwind.d.ts +2 -1
- package/dist/app/tailwind.js +64 -52
- package/dist/app/tailwind.js.map +1 -1
- package/dist/cli/cli.js +0 -2
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/cmds/build.js +1 -0
- package/dist/cli/cmds/build.js.map +1 -1
- package/dist/cli/cmds/dev.js +5 -0
- package/dist/cli/cmds/dev.js.map +1 -1
- package/dist/cli/common/logger.js +9 -0
- package/dist/cli/common/logger.js.map +1 -1
- package/dist/cli/common/outdated.js +2 -1
- package/dist/cli/common/outdated.js.map +1 -1
- package/dist/cli/dev/handler.d.ts +1 -0
- package/dist/cli/dev/handler.js +3 -3
- package/dist/cli/dev/handler.js.map +1 -1
- package/dist/config/common.d.ts +8 -0
- package/dist/config/common.js +2 -0
- package/dist/config/common.js.map +1 -0
- package/dist/config/config.d.ts +4 -2
- package/dist/config/loader.d.ts +20 -0
- package/dist/config/loader.js +154 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/validators/InputSidebarSchema.d.ts +29 -13
- package/dist/config/validators/InputSidebarSchema.js +1 -0
- package/dist/config/validators/InputSidebarSchema.js.map +1 -1
- package/dist/config/validators/common.d.ts +5034 -0
- package/dist/config/validators/common.js +287 -0
- package/dist/config/validators/common.js.map +1 -0
- package/dist/config/validators/icon-types.d.ts +1 -0
- package/dist/config/validators/icon-types.js +2 -0
- package/dist/config/validators/icon-types.js.map +1 -0
- package/dist/config/validators/validate.d.ts +835 -526
- package/dist/config/validators/validate.js +9 -228
- package/dist/config/validators/validate.js.map +1 -1
- package/dist/lib/authentication/components/CallbackHandler.js +1 -1
- package/dist/lib/authentication/components/CallbackHandler.js.map +1 -1
- package/dist/lib/authentication/components/SignIn.js +1 -1
- package/dist/lib/authentication/components/SignIn.js.map +1 -1
- package/dist/lib/authentication/components/SignOut.js +2 -2
- package/dist/lib/authentication/components/SignOut.js.map +1 -1
- package/dist/lib/authentication/providers/auth0.js +1 -1
- package/dist/lib/authentication/providers/auth0.js.map +1 -1
- package/dist/lib/authentication/providers/clerk.js +29 -6
- package/dist/lib/authentication/providers/clerk.js.map +1 -1
- package/dist/lib/authentication/providers/openid.d.ts +8 -1
- package/dist/lib/authentication/providers/openid.js +21 -10
- package/dist/lib/authentication/providers/openid.js.map +1 -1
- package/dist/lib/components/AnchorLink.d.ts +1 -1
- package/dist/lib/components/AnchorLink.js +6 -3
- package/dist/lib/components/AnchorLink.js.map +1 -1
- package/dist/lib/components/Autocomplete.d.ts +12 -0
- package/dist/lib/components/Autocomplete.js +47 -0
- package/dist/lib/components/Autocomplete.js.map +1 -0
- package/dist/lib/components/Bootstrap.d.ts +1 -2
- package/dist/lib/components/Bootstrap.js +3 -3
- package/dist/lib/components/Bootstrap.js.map +1 -1
- package/dist/lib/components/Header.js +15 -15
- package/dist/lib/components/Header.js.map +1 -1
- package/dist/lib/components/Heading.d.ts +4 -4
- package/dist/lib/components/Heading.js +1 -1
- package/dist/lib/components/Heading.js.map +1 -1
- package/dist/lib/components/Layout.js +4 -3
- package/dist/lib/components/Layout.js.map +1 -1
- package/dist/lib/components/Markdown.d.ts +2 -2
- package/dist/lib/components/Markdown.js +4 -2
- package/dist/lib/components/Markdown.js.map +1 -1
- package/dist/lib/components/MobileTopNavigation.js +1 -1
- package/dist/lib/components/MobileTopNavigation.js.map +1 -1
- package/dist/lib/components/NotFoundPage.js +1 -1
- package/dist/lib/components/NotFoundPage.js.map +1 -1
- package/dist/lib/components/ReactMarkdown.d.ts +29 -0
- package/dist/lib/components/ReactMarkdown.js +182 -0
- package/dist/lib/components/ReactMarkdown.js.map +1 -0
- package/dist/lib/components/Search.d.ts +3 -1
- package/dist/lib/components/Search.js +3 -3
- package/dist/lib/components/Search.js.map +1 -1
- package/dist/lib/components/SlotletProvider.d.ts +2 -2
- package/dist/lib/components/StatusPage.d.ts +7 -0
- package/dist/lib/components/StatusPage.js +71 -0
- package/dist/lib/components/StatusPage.js.map +1 -0
- package/dist/lib/components/SyntaxHighlight.d.ts +2 -1
- package/dist/lib/components/SyntaxHighlight.js +2 -6
- package/dist/lib/components/SyntaxHighlight.js.map +1 -1
- package/dist/lib/components/ThemeSwitch.js +4 -4
- package/dist/lib/components/ThemeSwitch.js.map +1 -1
- package/dist/lib/components/TopNavigation.d.ts +1 -1
- package/dist/lib/components/TopNavigation.js +3 -3
- package/dist/lib/components/TopNavigation.js.map +1 -1
- package/dist/lib/components/Zudoku.js +1 -1
- package/dist/lib/components/Zudoku.js.map +1 -1
- package/dist/lib/components/cache.d.ts +6 -0
- package/dist/lib/components/cache.js +13 -0
- package/dist/lib/components/cache.js.map +1 -0
- package/dist/lib/components/context/ViewportAnchorContext.js +16 -4
- package/dist/lib/components/context/ViewportAnchorContext.js.map +1 -1
- package/dist/lib/components/context/ZudokuContext.js +3 -2
- package/dist/lib/components/context/ZudokuContext.js.map +1 -1
- package/dist/lib/components/index.d.ts +26 -15
- package/dist/lib/components/index.js +10 -3
- package/dist/lib/components/index.js.map +1 -1
- package/dist/lib/components/navigation/Sidebar.d.ts +3 -1
- package/dist/lib/components/navigation/Sidebar.js +2 -2
- package/dist/lib/components/navigation/Sidebar.js.map +1 -1
- package/dist/lib/components/navigation/SidebarBadge.d.ts +4 -3
- package/dist/lib/components/navigation/SidebarBadge.js +11 -11
- package/dist/lib/components/navigation/SidebarBadge.js.map +1 -1
- package/dist/lib/components/navigation/SidebarCategory.d.ts +2 -2
- package/dist/lib/components/navigation/SidebarCategory.js +5 -6
- package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
- package/dist/lib/components/navigation/SidebarItem.d.ts +2 -4
- package/dist/lib/components/navigation/SidebarItem.js +7 -12
- package/dist/lib/components/navigation/SidebarItem.js.map +1 -1
- package/dist/lib/components/navigation/SidebarWrapper.js +1 -1
- package/dist/lib/components/navigation/SidebarWrapper.js.map +1 -1
- package/dist/lib/components/navigation/utils.js +1 -1
- package/dist/lib/components/navigation/utils.js.map +1 -1
- package/dist/lib/core/RouteGuard.d.ts +1 -0
- package/dist/lib/core/RouteGuard.js +28 -0
- package/dist/lib/core/RouteGuard.js.map +1 -0
- package/dist/lib/core/ZudokuContext.d.ts +5 -3
- package/dist/lib/core/ZudokuContext.js +9 -7
- package/dist/lib/core/ZudokuContext.js.map +1 -1
- package/dist/lib/core/plugins.d.ts +3 -5
- package/dist/lib/core/plugins.js.map +1 -1
- package/dist/lib/errors/RouterError.js +1 -1
- package/dist/lib/errors/RouterError.js.map +1 -1
- package/dist/lib/oas/graphql/circular.d.ts +3 -0
- package/dist/lib/oas/graphql/circular.js +27 -0
- package/dist/lib/oas/graphql/circular.js.map +1 -0
- package/dist/lib/oas/graphql/index.d.ts +3 -0
- package/dist/lib/oas/graphql/index.js +37 -23
- package/dist/lib/oas/graphql/index.js.map +1 -1
- package/dist/lib/oas/parser/dereference/index.js +6 -3
- package/dist/lib/oas/parser/dereference/index.js.map +1 -1
- package/dist/lib/oas/parser/upgrade/index.d.ts +2 -2
- package/dist/lib/oas/parser/upgrade/index.js +19 -22
- package/dist/lib/oas/parser/upgrade/index.js.map +1 -1
- package/dist/lib/plugins/api-catalog/Catalog.d.ts +2 -0
- package/dist/lib/plugins/api-catalog/Catalog.js +36 -0
- package/dist/lib/plugins/api-catalog/Catalog.js.map +1 -0
- package/dist/lib/plugins/api-catalog/index.d.ts +30 -0
- package/dist/lib/plugins/api-catalog/index.js +15 -0
- package/dist/lib/plugins/api-catalog/index.js.map +1 -0
- package/dist/lib/plugins/api-keys/CreateApiKey.js +1 -1
- package/dist/lib/plugins/api-keys/CreateApiKey.js.map +1 -1
- package/dist/lib/plugins/api-keys/ProtectedRoute.js +1 -1
- package/dist/lib/plugins/api-keys/ProtectedRoute.js.map +1 -1
- package/dist/lib/plugins/api-keys/SettingsApiKeys.js +1 -1
- package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
- package/dist/lib/plugins/markdown/MdxPage.d.ts +9 -1
- package/dist/lib/plugins/markdown/MdxPage.js +22 -3
- package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
- package/dist/lib/plugins/markdown/index.d.ts +3 -1
- package/dist/lib/plugins/markdown/index.js +1 -1
- package/dist/lib/plugins/markdown/index.js.map +1 -1
- package/dist/lib/plugins/markdown/resolver.js.map +1 -1
- package/dist/lib/plugins/openapi/CollapsibleCode.js +2 -1
- package/dist/lib/plugins/openapi/CollapsibleCode.js.map +1 -1
- package/dist/lib/plugins/openapi/ColorizedParam.d.ts +10 -2
- package/dist/lib/plugins/openapi/ColorizedParam.js +16 -7
- package/dist/lib/plugins/openapi/ColorizedParam.js.map +1 -1
- package/dist/lib/plugins/openapi/Endpoint.d.ts +1 -1
- package/dist/lib/plugins/openapi/Endpoint.js +3 -1
- package/dist/lib/plugins/openapi/Endpoint.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationList.js +27 -3
- package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationListItem.d.ts +2 -1
- package/dist/lib/plugins/openapi/OperationListItem.js +14 -4
- package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/ParameterListItem.js +3 -2
- package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.d.ts +3 -1
- package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js +5 -2
- package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js.map +1 -1
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +4 -5
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +4 -14
- package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +7 -13
- package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
- package/dist/lib/plugins/openapi/Route.d.ts +4 -2
- package/dist/lib/plugins/openapi/Route.js +22 -2
- package/dist/lib/plugins/openapi/Route.js.map +1 -1
- package/dist/lib/plugins/openapi/Sidecar.js +14 -21
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
- package/dist/lib/plugins/openapi/SidecarBox.js +4 -4
- package/dist/lib/plugins/openapi/SidecarBox.js.map +1 -1
- package/dist/lib/plugins/openapi/SidecarExamples.d.ts +9 -0
- package/dist/lib/plugins/openapi/SidecarExamples.js +65 -0
- package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -0
- package/dist/lib/plugins/openapi/client/GraphQLClient.d.ts +1 -1
- package/dist/lib/plugins/openapi/client/GraphQLClient.js +22 -81
- package/dist/lib/plugins/openapi/client/GraphQLClient.js.map +1 -1
- package/dist/lib/plugins/openapi/client/createServer.d.ts +2 -1
- package/dist/lib/plugins/openapi/client/createServer.js +5 -2
- package/dist/lib/plugins/openapi/client/createServer.js.map +1 -1
- package/dist/lib/plugins/openapi/context.d.ts +3 -3
- package/dist/lib/plugins/openapi/graphql/gql.d.ts +1 -1
- package/dist/lib/plugins/openapi/graphql/gql.js +1 -1
- package/dist/lib/plugins/openapi/graphql/gql.js.map +1 -1
- package/dist/lib/plugins/openapi/graphql/graphql.d.ts +2 -0
- package/dist/lib/plugins/openapi/graphql/graphql.js +1 -0
- package/dist/lib/plugins/openapi/graphql/graphql.js.map +1 -1
- package/dist/lib/plugins/openapi/index.d.ts +2 -1
- package/dist/lib/plugins/openapi/index.js +23 -28
- package/dist/lib/plugins/openapi/index.js.map +1 -1
- package/dist/lib/plugins/openapi/interfaces.d.ts +26 -2
- package/dist/lib/plugins/openapi/playground/ExamplesDropdown.d.ts +6 -0
- package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js +12 -0
- package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/Headers.js +67 -4
- package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/ParamsGrid.d.ts +5 -0
- package/dist/lib/plugins/openapi/playground/ParamsGrid.js +4 -0
- package/dist/lib/plugins/openapi/playground/ParamsGrid.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/PathParams.js +4 -7
- package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/Playground.d.ts +21 -1
- package/dist/lib/plugins/openapi/playground/Playground.js +57 -41
- package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +1 -1
- package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/QueryParams.js +20 -14
- package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/SubmitButton.d.ts +7 -0
- package/dist/lib/plugins/openapi/playground/SubmitButton.js +22 -0
- package/dist/lib/plugins/openapi/playground/SubmitButton.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.d.ts +7 -0
- package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.js +11 -0
- package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.d.ts +8 -0
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +95 -0
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.d.ts +7 -0
- package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js +16 -0
- package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.d.ts +10 -0
- package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.js +32 -0
- package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.test.d.ts +1 -0
- package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.test.js +56 -0
- package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.test.js.map +1 -0
- package/dist/lib/plugins/openapi/post-processors/removeExtensions.d.ts +7 -0
- package/dist/lib/plugins/openapi/post-processors/removeExtensions.js +16 -0
- package/dist/lib/plugins/openapi/post-processors/removeExtensions.js.map +1 -0
- package/dist/lib/plugins/openapi/post-processors/removeExtensions.test.d.ts +1 -0
- package/dist/lib/plugins/openapi/post-processors/removeExtensions.test.js +174 -0
- package/dist/lib/plugins/openapi/post-processors/removeExtensions.test.js.map +1 -0
- package/dist/lib/plugins/openapi/post-processors/removeParameters.d.ts +10 -0
- package/dist/lib/plugins/openapi/post-processors/removeParameters.js +66 -0
- package/dist/lib/plugins/openapi/post-processors/removeParameters.js.map +1 -0
- package/dist/lib/plugins/openapi/post-processors/removeParameters.test.d.ts +1 -0
- package/dist/lib/plugins/openapi/post-processors/removeParameters.test.js +131 -0
- package/dist/lib/plugins/openapi/post-processors/removeParameters.test.js.map +1 -0
- package/dist/lib/plugins/openapi/post-processors/removePaths.d.ts +11 -0
- package/dist/lib/plugins/openapi/post-processors/removePaths.js +33 -0
- package/dist/lib/plugins/openapi/post-processors/removePaths.js.map +1 -0
- package/dist/lib/plugins/openapi/post-processors/removePaths.test.d.ts +1 -0
- package/dist/lib/plugins/openapi/post-processors/removePaths.test.js +104 -0
- package/dist/lib/plugins/openapi/post-processors/removePaths.test.js.map +1 -0
- package/dist/lib/plugins/openapi/post-processors/traverse.d.ts +1 -0
- package/dist/lib/plugins/openapi/post-processors/traverse.js +2 -0
- package/dist/lib/plugins/openapi/post-processors/traverse.js.map +1 -0
- package/dist/lib/plugins/openapi/schema/SchemaComponents.js +9 -2
- package/dist/lib/plugins/openapi/schema/SchemaComponents.js.map +1 -1
- package/dist/lib/plugins/openapi/util/generateSchemaExample.js +19 -11
- package/dist/lib/plugins/openapi/util/generateSchemaExample.js.map +1 -1
- package/dist/lib/plugins/openapi/util/methodToColor.d.ts +20 -0
- package/dist/lib/plugins/openapi/util/methodToColor.js +24 -0
- package/dist/lib/plugins/openapi/util/methodToColor.js.map +1 -0
- package/dist/lib/plugins/openapi/util/sanitizeMarkdownForMetatag.d.ts +1 -0
- package/dist/lib/plugins/openapi/util/sanitizeMarkdownForMetatag.js +27 -0
- package/dist/lib/plugins/openapi/util/sanitizeMarkdownForMetatag.js.map +1 -0
- package/dist/lib/plugins/redirect/index.d.ts +1 -1
- package/dist/lib/plugins/redirect/index.js +1 -1
- package/dist/lib/plugins/redirect/index.js.map +1 -1
- package/dist/lib/plugins/search-inkeep/index.d.ts +22 -3
- package/dist/lib/plugins/search-inkeep/index.js +41 -5
- package/dist/lib/plugins/search-inkeep/index.js.map +1 -1
- package/dist/lib/plugins/search-inkeep/inkeep.d.ts +3 -4
- package/dist/lib/plugins/search-inkeep/inkeep.js.map +1 -1
- package/dist/lib/ui/Badge.d.ts +1 -1
- package/dist/lib/ui/Badge.js +2 -1
- package/dist/lib/ui/Badge.js.map +1 -1
- package/dist/lib/ui/Button.d.ts +1 -1
- package/dist/lib/ui/Card.js +1 -1
- package/dist/lib/ui/Card.js.map +1 -1
- package/dist/lib/ui/Checkbox.d.ts +8 -2
- package/dist/lib/ui/Checkbox.js +13 -1
- package/dist/lib/ui/Checkbox.js.map +1 -1
- package/dist/lib/ui/Command.d.ts +10 -2
- package/dist/lib/ui/Command.js +5 -1
- package/dist/lib/ui/Command.js.map +1 -1
- package/dist/lib/ui/Select.js +2 -2
- package/dist/lib/ui/Select.js.map +1 -1
- package/dist/lib/util/MdxComponents.d.ts +18 -19
- package/dist/lib/util/MdxComponents.js +3 -5
- package/dist/lib/util/MdxComponents.js.map +1 -1
- package/dist/lib/util/createVariantComponent.d.ts +2 -2
- package/dist/lib/util/joinUrl.d.ts +1 -0
- package/dist/lib/util/joinUrl.js +40 -0
- package/dist/lib/util/joinUrl.js.map +1 -0
- package/dist/lib/util/traverse.d.ts +9 -0
- package/dist/lib/util/traverse.js +22 -0
- package/dist/lib/util/traverse.js.map +1 -0
- package/dist/lib/util/useExposedProps.js +1 -1
- package/dist/lib/util/useExposedProps.js.map +1 -1
- package/dist/lib/util/useOnScreen.d.ts +1 -1
- package/dist/lib/util/useScrollToAnchor.d.ts +1 -0
- package/dist/lib/util/useScrollToAnchor.js +27 -16
- package/dist/lib/util/useScrollToAnchor.js.map +1 -1
- package/dist/lib/util/useScrollToTop.js +1 -1
- package/dist/lib/util/useScrollToTop.js.map +1 -1
- package/dist/vite/api/schema-codegen.d.ts +12 -0
- package/dist/vite/api/schema-codegen.js +62 -0
- package/dist/vite/api/schema-codegen.js.map +1 -0
- package/dist/vite/api/schema-codegen.test.d.ts +1 -0
- package/dist/vite/api/schema-codegen.test.js +247 -0
- package/dist/vite/api/schema-codegen.test.js.map +1 -0
- package/dist/vite/build.js +24 -10
- package/dist/vite/build.js.map +1 -1
- package/dist/vite/config.d.ts +6 -4
- package/dist/vite/config.js +83 -30
- package/dist/vite/config.js.map +1 -1
- package/dist/vite/config.test.js +11 -5
- package/dist/vite/config.test.js.map +1 -1
- package/dist/vite/css/collect.d.ts +2 -0
- package/dist/vite/css/collect.js +27 -0
- package/dist/vite/css/collect.js.map +1 -0
- package/dist/vite/css/plugin.d.ts +5 -0
- package/dist/vite/css/plugin.js +79 -0
- package/dist/vite/css/plugin.js.map +1 -0
- package/dist/vite/dev-server.d.ts +1 -0
- package/dist/vite/dev-server.js +26 -6
- package/dist/vite/dev-server.js.map +1 -1
- package/dist/vite/output.d.ts +1 -1
- package/dist/vite/output.js +39 -10
- package/dist/vite/output.js.map +1 -1
- package/dist/vite/plugin-api.d.ts +1 -1
- package/dist/vite/plugin-api.js +154 -22
- package/dist/vite/plugin-api.js.map +1 -1
- package/dist/vite/plugin-auth.js +4 -1
- package/dist/vite/plugin-auth.js.map +1 -1
- package/dist/vite/plugin-component.js +14 -19
- package/dist/vite/plugin-component.js.map +1 -1
- package/dist/vite/plugin-config-reload.d.ts +1 -2
- package/dist/vite/plugin-config-reload.js.map +1 -1
- package/dist/vite/plugin-config.js +20 -0
- package/dist/vite/plugin-config.js.map +1 -1
- package/dist/vite/plugin-docs.test.js +15 -23
- package/dist/vite/plugin-docs.test.js.map +1 -1
- package/dist/vite/plugin-mdx.js +69 -8
- package/dist/vite/plugin-mdx.js.map +1 -1
- package/dist/vite/{plugin-custom-css.d.ts → plugin-theme-css.d.ts} +2 -2
- package/dist/vite/plugin-theme-css.js +114 -0
- package/dist/vite/plugin-theme-css.js.map +1 -0
- package/dist/vite/plugin.d.ts +1 -2
- package/dist/vite/plugin.js +6 -2
- package/dist/vite/plugin.js.map +1 -1
- package/dist/vite/prerender.d.ts +3 -2
- package/dist/vite/prerender.js +6 -5
- package/dist/vite/prerender.js.map +1 -1
- package/dist/vite/sitemap.d.ts +1 -1
- package/dist/zuplo/enrich-with-zuplo.d.ts +5 -0
- package/dist/zuplo/enrich-with-zuplo.js +184 -0
- package/dist/zuplo/enrich-with-zuplo.js.map +1 -0
- package/dist/zuplo/env.d.ts +7 -0
- package/dist/zuplo/env.js +12 -0
- package/dist/zuplo/env.js.map +1 -0
- package/dist/zuplo/policy-types.d.ts +33 -0
- package/dist/zuplo/policy-types.js +8 -0
- package/dist/zuplo/policy-types.js.map +1 -0
- package/dist/zuplo/with-zuplo-processors.d.ts +3 -0
- package/dist/zuplo/with-zuplo-processors.js +26 -0
- package/dist/zuplo/with-zuplo-processors.js.map +1 -0
- package/dist/zuplo/with-zuplo.d.ts +3 -0
- package/dist/zuplo/with-zuplo.js +9 -0
- package/dist/zuplo/with-zuplo.js.map +1 -0
- package/lib/AuthenticationPlugin-CO_YCd2x.js +58 -0
- package/lib/AuthenticationPlugin-CO_YCd2x.js.map +1 -0
- package/lib/{CategoryHeading-Bb9dqxD3.js → CategoryHeading-MYL1u_6K.js} +3 -3
- package/lib/{CategoryHeading-Bb9dqxD3.js.map → CategoryHeading-MYL1u_6K.js.map} +1 -1
- package/lib/ClientOnly-E7hGysn1.js.map +1 -1
- package/lib/{Markdown-ievDDhFT.js → Markdown-B8o9Qz4q.js} +13430 -13409
- package/lib/Markdown-B8o9Qz4q.js.map +1 -0
- package/lib/MdxPage-BxRt3Ly7.js +193 -0
- package/lib/MdxPage-BxRt3Ly7.js.map +1 -0
- package/lib/OperationList-DH-zIgtq.js +5160 -0
- package/lib/OperationList-DH-zIgtq.js.map +1 -0
- package/lib/Route-DJ0ZlVq1.js +35 -0
- package/lib/Route-DJ0ZlVq1.js.map +1 -0
- package/lib/Select-B7UXR0SB.js +223 -0
- package/lib/Select-B7UXR0SB.js.map +1 -0
- package/lib/SlotletProvider-CtIp8rP3.js +221 -0
- package/lib/SlotletProvider-CtIp8rP3.js.map +1 -0
- package/lib/{Button-jK0EsymC.js → Spinner-BlzrEEk1.js} +17 -14
- package/lib/Spinner-BlzrEEk1.js.map +1 -0
- package/lib/StaggeredRender-DgsamH_G.js +17 -0
- package/lib/StaggeredRender-DgsamH_G.js.map +1 -0
- package/lib/{SyntaxHighlight-DkLOsjHS.js → SyntaxHighlight-C1w1QPdY.js} +385 -388
- package/lib/{SyntaxHighlight-DkLOsjHS.js.map → SyntaxHighlight-C1w1QPdY.js.map} +1 -1
- package/lib/{utils-DcpDOncX.js → ZudokuContext-8jts0fF3.js} +487 -476
- package/lib/ZudokuContext-8jts0fF3.js.map +1 -0
- package/lib/chunk-SYFQ2XB5-BPvC-soB.js +1821 -0
- package/lib/chunk-SYFQ2XB5-BPvC-soB.js.map +1 -0
- package/lib/circular-Dgpd6AN-.js +15397 -0
- package/lib/circular-Dgpd6AN-.js.map +1 -0
- package/lib/{cn-BmFQLtkS.js → cn-qaFjX9_3.js} +2 -2
- package/lib/cn-qaFjX9_3.js.map +1 -0
- package/lib/context-rwLGh-6_.js +22 -0
- package/lib/context-rwLGh-6_.js.map +1 -0
- package/lib/createServer-BV0tHzLK.js +12590 -0
- package/lib/createServer-BV0tHzLK.js.map +1 -0
- package/lib/{hook-hEqe7fPB.js → hook-BG02esyv.js} +17 -17
- package/lib/{hook-hEqe7fPB.js.map → hook-BG02esyv.js.map} +1 -1
- package/lib/index-B7mqiOei.js +509 -0
- package/lib/index-B7mqiOei.js.map +1 -0
- package/lib/index-Djenk2Hj.js +36 -0
- package/lib/index-Djenk2Hj.js.map +1 -0
- package/lib/{index-CkwDvuPt.js → index-Dl3Yl0yb.js} +303 -286
- package/lib/index-Dl3Yl0yb.js.map +1 -0
- package/lib/index-DmqsUPcm.js +1915 -0
- package/lib/index-DmqsUPcm.js.map +1 -0
- package/lib/index-LNp6rxyU.js.map +1 -1
- package/lib/index.esm-9-TF9KQB.js +692 -0
- package/lib/index.esm-9-TF9KQB.js.map +1 -0
- package/lib/index.esm-CrSoEshU.js +1207 -0
- package/lib/index.esm-CrSoEshU.js.map +1 -0
- package/lib/invariant-Caa8-XvF.js.map +1 -1
- package/lib/joinUrl-BTy9bvoK.js +20 -0
- package/lib/joinUrl-BTy9bvoK.js.map +1 -0
- package/lib/jsx-runtime-Bdg6XQ1m.js +446 -0
- package/lib/jsx-runtime-Bdg6XQ1m.js.map +1 -0
- package/lib/post-processors/removeExtensions.js +11 -0
- package/lib/post-processors/removeExtensions.js.map +1 -0
- package/lib/post-processors/removeParameters.js +48 -0
- package/lib/post-processors/removeParameters.js.map +1 -0
- package/lib/post-processors/removePaths.js +28 -0
- package/lib/post-processors/removePaths.js.map +1 -0
- package/lib/post-processors/traverse.js +15 -0
- package/lib/post-processors/traverse.js.map +1 -0
- package/lib/{prism-bash.min-DadFsM4Z.js → prism-bash.min-HHIMdNJ_.js} +4 -4
- package/lib/{prism-bash.min-DadFsM4Z.js.map → prism-bash.min-HHIMdNJ_.js.map} +1 -1
- package/lib/prism-csharp.min-bQAo2pmx.js +63 -0
- package/lib/{prism-csharp.min-Yizuc34Y.js.map → prism-csharp.min-bQAo2pmx.js.map} +1 -1
- package/lib/prism-java.min-BpvsOuIa.js +35 -0
- package/lib/{prism-java.min-d5iT_mOd.js.map → prism-java.min-BpvsOuIa.js.map} +1 -1
- package/lib/{prism-markdown.min-F3U-vPBi.js → prism-markdown.min-C0Qn0m-5.js} +30 -30
- package/lib/{prism-markdown.min-F3U-vPBi.js.map → prism-markdown.min-C0Qn0m-5.js.map} +1 -1
- package/lib/prism-markup-BNGj0Tvm.js.map +1 -1
- package/lib/prism-ruby.min-Dx9KO9ds.js +38 -0
- package/lib/{prism-ruby.min-C7LwcKyz.js.map → prism-ruby.min-Dx9KO9ds.js.map} +1 -1
- package/lib/prism-typescript.min-CD7H2IYQ.js +34 -0
- package/lib/{prism-typescript.min-oSVeWCAd.js.map → prism-typescript.min-CD7H2IYQ.js.map} +1 -1
- package/lib/state-mM7uaXTW.js +202 -0
- package/lib/state-mM7uaXTW.js.map +1 -0
- package/lib/ui/Accordion.js +2 -2
- package/lib/ui/Accordion.js.map +1 -1
- package/lib/ui/ActionButton.js +10 -11
- package/lib/ui/ActionButton.js.map +1 -1
- package/lib/ui/Alert.js +3 -3
- package/lib/ui/Alert.js.map +1 -1
- package/lib/ui/AlertDialog.js +2 -2
- package/lib/ui/AlertDialog.js.map +1 -1
- package/lib/ui/Badge.js +5 -4
- package/lib/ui/Badge.js.map +1 -1
- package/lib/ui/Breadcrumb.js +2 -2
- package/lib/ui/Breadcrumb.js.map +1 -1
- package/lib/ui/Button.js +3 -3
- package/lib/ui/Button.js.map +1 -1
- package/lib/ui/Callout.js +2 -2
- package/lib/ui/Callout.js.map +1 -1
- package/lib/ui/Card.js +9 -9
- package/lib/ui/Card.js.map +1 -1
- package/lib/ui/Carousel.js +408 -402
- package/lib/ui/Carousel.js.map +1 -1
- package/lib/ui/Checkbox.js +26 -15
- package/lib/ui/Checkbox.js.map +1 -1
- package/lib/ui/Command.js +80 -501
- package/lib/ui/Command.js.map +1 -1
- package/lib/ui/Dialog.js +2 -2
- package/lib/ui/Dialog.js.map +1 -1
- package/lib/ui/Drawer.js +515 -514
- package/lib/ui/Drawer.js.map +1 -1
- package/lib/ui/DropdownMenu.js +2 -2
- package/lib/ui/DropdownMenu.js.map +1 -1
- package/lib/ui/Form.js +3 -3
- package/lib/ui/Form.js.map +1 -1
- package/lib/ui/HoverCard.js +2 -2
- package/lib/ui/Input.js +2 -2
- package/lib/ui/Input.js.map +1 -1
- package/lib/ui/Label.js +3 -3
- package/lib/ui/Pagination.js +8 -8
- package/lib/ui/Pagination.js.map +1 -1
- package/lib/ui/Popover.js +2 -2
- package/lib/ui/Popover.js.map +1 -1
- package/lib/ui/Progress.js +2 -2
- package/lib/ui/Progress.js.map +1 -1
- package/lib/ui/RadioGroup.js +2 -2
- package/lib/ui/RadioGroup.js.map +1 -1
- package/lib/ui/ScrollArea.js +2 -2
- package/lib/ui/ScrollArea.js.map +1 -1
- package/lib/ui/Select.js +4 -4
- package/lib/ui/Select.js.map +1 -1
- package/lib/ui/Skeleton.js +2 -2
- package/lib/ui/Skeleton.js.map +1 -1
- package/lib/ui/Slider.js +2 -2
- package/lib/ui/Switch.js +2 -2
- package/lib/ui/Switch.js.map +1 -1
- package/lib/ui/Tabs.js +2 -2
- package/lib/ui/Textarea.js +2 -2
- package/lib/ui/Textarea.js.map +1 -1
- package/lib/ui/Toggle.js +3 -3
- package/lib/ui/Toggle.js.map +1 -1
- package/lib/ui/ToggleGroup.js +2 -2
- package/lib/ui/ToggleGroup.js.map +1 -1
- package/lib/ui/Tooltip.js +2 -2
- package/lib/useExposedProps-BLKFBylA.js +9 -0
- package/lib/useExposedProps-BLKFBylA.js.map +1 -0
- package/lib/useScrollToAnchor-Bl6mz9_x.js +288 -0
- package/lib/useScrollToAnchor-Bl6mz9_x.js.map +1 -0
- package/lib/zudoku.auth-auth0.js +8 -10
- package/lib/zudoku.auth-auth0.js.map +1 -1
- package/lib/zudoku.auth-clerk.js +79 -51
- package/lib/zudoku.auth-clerk.js.map +1 -1
- package/lib/zudoku.auth-openid.js +398 -385
- package/lib/zudoku.auth-openid.js.map +1 -1
- package/lib/zudoku.components.js +808 -1245
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.plugin-api-catalog.js +123 -0
- package/lib/zudoku.plugin-api-catalog.js.map +1 -0
- package/lib/zudoku.plugin-api-keys.js +15 -16
- package/lib/zudoku.plugin-api-keys.js.map +1 -1
- package/lib/zudoku.plugin-custom-pages.js +4 -4
- package/lib/zudoku.plugin-custom-pages.js.map +1 -1
- package/lib/zudoku.plugin-markdown.js +16 -15
- package/lib/zudoku.plugin-markdown.js.map +1 -1
- package/lib/zudoku.plugin-openapi.js +5 -5
- package/lib/zudoku.plugin-redirect.js +1 -1
- package/lib/zudoku.plugin-redirect.js.map +1 -1
- package/lib/zudoku.plugin-search-inkeep.js +53 -24
- package/lib/zudoku.plugin-search-inkeep.js.map +1 -1
- package/package.json +101 -84
- package/src/app/demo.tsx +1 -2
- package/src/app/entry.client.tsx +16 -15
- package/src/app/entry.server.tsx +3 -2
- package/src/app/main.css +57 -44
- package/src/app/main.tsx +32 -9
- package/src/app/sentry.ts +24 -0
- package/src/app/standalone.tsx +1 -2
- package/src/app/tailwind.ts +67 -52
- package/src/lib/authentication/components/CallbackHandler.tsx +1 -1
- package/src/lib/authentication/components/SignIn.tsx +1 -1
- package/src/lib/authentication/components/SignOut.tsx +3 -2
- package/src/lib/authentication/providers/auth0.tsx +1 -4
- package/src/lib/authentication/providers/clerk.tsx +38 -7
- package/src/lib/authentication/providers/openid.tsx +31 -12
- package/src/lib/components/AnchorLink.tsx +6 -3
- package/src/lib/components/Autocomplete.tsx +111 -0
- package/src/lib/components/Bootstrap.tsx +4 -6
- package/src/lib/components/Header.tsx +14 -10
- package/src/lib/components/Heading.tsx +13 -13
- package/src/lib/components/Layout.tsx +10 -5
- package/src/lib/components/Markdown.tsx +15 -16
- package/src/lib/components/MobileTopNavigation.tsx +18 -18
- package/src/lib/components/NotFoundPage.tsx +1 -1
- package/src/lib/components/ReactMarkdown.license.txt +21 -0
- package/src/lib/components/ReactMarkdown.tsx +264 -0
- package/src/lib/components/Search.tsx +3 -3
- package/src/lib/components/SlotletProvider.tsx +1 -1
- package/src/lib/components/StatusPage.tsx +91 -0
- package/src/lib/components/SyntaxHighlight.tsx +14 -4
- package/src/lib/components/ThemeSwitch.tsx +14 -15
- package/src/lib/components/TopNavigation.tsx +4 -4
- package/src/lib/components/Zudoku.tsx +1 -1
- package/src/lib/components/cache.ts +15 -0
- package/src/lib/components/context/ViewportAnchorContext.tsx +20 -6
- package/src/lib/components/context/ZudokuContext.ts +4 -2
- package/src/lib/components/index.ts +15 -4
- package/src/lib/components/navigation/Sidebar.tsx +18 -8
- package/src/lib/components/navigation/SidebarBadge.tsx +13 -11
- package/src/lib/components/navigation/SidebarCategory.tsx +8 -11
- package/src/lib/components/navigation/SidebarItem.tsx +12 -15
- package/src/lib/components/navigation/SidebarWrapper.tsx +3 -2
- package/src/lib/components/navigation/utils.ts +1 -1
- package/src/lib/core/RouteGuard.tsx +35 -0
- package/src/lib/core/ZudokuContext.ts +10 -9
- package/src/lib/core/plugins.ts +3 -7
- package/src/lib/errors/RouterError.tsx +1 -1
- package/src/lib/oas/graphql/circular.ts +29 -0
- package/src/lib/oas/graphql/index.ts +48 -32
- package/src/lib/oas/parser/dereference/index.ts +8 -4
- package/src/lib/oas/parser/upgrade/index.ts +22 -30
- package/src/lib/plugins/api-catalog/Catalog.tsx +123 -0
- package/src/lib/plugins/api-catalog/index.tsx +64 -0
- package/src/lib/plugins/api-keys/CreateApiKey.tsx +1 -1
- package/src/lib/plugins/api-keys/ProtectedRoute.tsx +1 -1
- package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +1 -1
- package/src/lib/plugins/api-keys/index.tsx +1 -1
- package/src/lib/plugins/custom-pages/index.tsx +1 -1
- package/src/lib/plugins/markdown/MdxPage.tsx +36 -2
- package/src/lib/plugins/markdown/index.tsx +5 -2
- package/src/lib/plugins/markdown/resolver.ts +2 -4
- package/src/lib/plugins/openapi/CollapsibleCode.tsx +10 -7
- package/src/lib/plugins/openapi/ColorizedParam.tsx +29 -12
- package/src/lib/plugins/openapi/Endpoint.tsx +3 -3
- package/src/lib/plugins/openapi/OperationList.tsx +68 -8
- package/src/lib/plugins/openapi/OperationListItem.tsx +33 -4
- package/src/lib/plugins/openapi/ParameterListItem.tsx +6 -7
- package/src/lib/plugins/openapi/PlaygroundDialogWrapper.tsx +7 -0
- package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +14 -39
- package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +46 -63
- package/src/lib/plugins/openapi/Route.tsx +41 -9
- package/src/lib/plugins/openapi/Sidecar.tsx +23 -30
- package/src/lib/plugins/openapi/SidecarBox.tsx +4 -16
- package/src/lib/plugins/openapi/SidecarExamples.tsx +163 -0
- package/src/lib/plugins/openapi/client/GraphQLClient.tsx +28 -103
- package/src/lib/plugins/openapi/client/createServer.ts +6 -2
- package/src/lib/plugins/openapi/context.tsx +2 -2
- package/src/lib/plugins/openapi/graphql/gql.ts +2 -2
- package/src/lib/plugins/openapi/graphql/graphql.ts +3 -0
- package/src/lib/plugins/openapi/index.tsx +49 -44
- package/src/lib/plugins/openapi/interfaces.ts +31 -2
- package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +54 -0
- package/src/lib/plugins/openapi/playground/Headers.tsx +137 -39
- package/src/lib/plugins/openapi/playground/ParamsGrid.tsx +8 -0
- package/src/lib/plugins/openapi/playground/PathParams.tsx +30 -61
- package/src/lib/plugins/openapi/playground/Playground.tsx +244 -189
- package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +2 -2
- package/src/lib/plugins/openapi/playground/QueryParams.tsx +77 -80
- package/src/lib/plugins/openapi/playground/SubmitButton.tsx +75 -0
- package/src/lib/plugins/openapi/playground/result-panel/RequestTab.tsx +73 -0
- package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +210 -0
- package/src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx +101 -0
- package/src/lib/plugins/openapi/playground/result-panel/convertToTypes.test.ts +64 -0
- package/src/lib/plugins/openapi/playground/result-panel/convertToTypes.ts +36 -0
- package/src/lib/plugins/openapi/post-processors/removeExtensions.test.ts +202 -0
- package/src/lib/plugins/openapi/post-processors/removeExtensions.ts +27 -0
- package/src/lib/plugins/openapi/post-processors/removeParameters.test.ts +148 -0
- package/src/lib/plugins/openapi/post-processors/removeParameters.ts +101 -0
- package/src/lib/plugins/openapi/post-processors/removePaths.test.ts +126 -0
- package/src/lib/plugins/openapi/post-processors/removePaths.ts +55 -0
- package/src/lib/plugins/openapi/post-processors/traverse.ts +1 -0
- package/src/lib/plugins/openapi/schema/SchemaComponents.tsx +29 -8
- package/src/lib/plugins/openapi/util/generateSchemaExample.ts +26 -11
- package/src/lib/plugins/openapi/util/methodToColor.ts +27 -0
- package/src/lib/plugins/openapi/util/sanitizeMarkdownForMetatag.tsx +32 -0
- package/src/lib/plugins/redirect/index.tsx +2 -2
- package/src/lib/plugins/search-inkeep/index.tsx +78 -23
- package/src/lib/plugins/search-inkeep/inkeep.ts +3 -9
- package/src/lib/ui/Badge.tsx +2 -1
- package/src/lib/ui/Card.tsx +1 -1
- package/src/lib/ui/Checkbox.tsx +24 -7
- package/src/lib/ui/Command.tsx +20 -0
- package/src/lib/ui/Select.tsx +1 -1
- package/src/lib/util/MdxComponents.tsx +5 -9
- package/src/lib/util/createVariantComponent.tsx +2 -2
- package/src/lib/util/joinUrl.ts +57 -0
- package/src/lib/util/traverse.ts +35 -0
- package/src/lib/util/useExposedProps.tsx +1 -1
- package/src/lib/util/useScrollToAnchor.ts +33 -16
- package/src/lib/util/useScrollToTop.ts +1 -1
- package/dist/lib/plugins/openapi/client/worker.d.ts +0 -4
- package/dist/lib/plugins/openapi/client/worker.js +0 -29
- package/dist/lib/plugins/openapi/client/worker.js.map +0 -1
- package/dist/lib/plugins/openapi/playground/ResponseTab.d.ts +0 -4
- package/dist/lib/plugins/openapi/playground/ResponseTab.js +0 -42
- package/dist/lib/plugins/openapi/playground/ResponseTab.js.map +0 -1
- package/dist/lib/plugins/openapi-worker.d.ts +0 -1
- package/dist/lib/plugins/openapi-worker.js +0 -8
- package/dist/lib/plugins/openapi-worker.js.map +0 -1
- package/dist/lib/plugins/search-inkeep/InkeepCustomTrigger.d.ts +0 -2
- package/dist/lib/plugins/search-inkeep/InkeepCustomTrigger.js +0 -3
- package/dist/lib/plugins/search-inkeep/InkeepCustomTrigger.js.map +0 -1
- package/dist/vite/plugin-custom-css.js +0 -55
- package/dist/vite/plugin-custom-css.js.map +0 -1
- package/lib/AnchorLink-CDlhr8gL.js +0 -706
- package/lib/AnchorLink-CDlhr8gL.js.map +0 -1
- package/lib/AuthenticationPlugin-D0Em0SwR.js +0 -59
- package/lib/AuthenticationPlugin-D0Em0SwR.js.map +0 -1
- package/lib/Button-jK0EsymC.js.map +0 -1
- package/lib/Dialog-k70Qfukb.js +0 -67
- package/lib/Dialog-k70Qfukb.js.map +0 -1
- package/lib/InkeepCustomTrigger-CE5-K5ex.js +0 -6
- package/lib/InkeepCustomTrigger-CE5-K5ex.js.map +0 -1
- package/lib/Markdown-ievDDhFT.js.map +0 -1
- package/lib/MdxPage-Bwn-VSsH.js +0 -174
- package/lib/MdxPage-Bwn-VSsH.js.map +0 -1
- package/lib/OperationList-BwBl1xrD.js +0 -4691
- package/lib/OperationList-BwBl1xrD.js.map +0 -1
- package/lib/Route-DlG_HTMu.js +0 -11
- package/lib/Route-DlG_HTMu.js.map +0 -1
- package/lib/Select-O9ZM3ZgX.js +0 -223
- package/lib/Select-O9ZM3ZgX.js.map +0 -1
- package/lib/SidebarBadge-DxFJcJ6V.js +0 -51
- package/lib/SidebarBadge-DxFJcJ6V.js.map +0 -1
- package/lib/SlotletProvider-DyomlzGx.js +0 -252
- package/lib/SlotletProvider-DyomlzGx.js.map +0 -1
- package/lib/Spinner-3cQDBVGr.js +0 -7
- package/lib/Spinner-3cQDBVGr.js.map +0 -1
- package/lib/assets/index-B_Jk_Yzp.js +0 -4820
- package/lib/assets/index-B_Jk_Yzp.js.map +0 -1
- package/lib/assets/worker-CPsGZsve.js +0 -18201
- package/lib/assets/worker-CPsGZsve.js.map +0 -1
- package/lib/cn-BmFQLtkS.js.map +0 -1
- package/lib/context-D1nXWxm7.js +0 -22
- package/lib/context-D1nXWxm7.js.map +0 -1
- package/lib/createServer-DK-g7kbB.js +0 -16089
- package/lib/createServer-DK-g7kbB.js.map +0 -1
- package/lib/index-BuAyrJe3.js +0 -46
- package/lib/index-BuAyrJe3.js.map +0 -1
- package/lib/index-CkwDvuPt.js.map +0 -1
- package/lib/index-Czzd9rjU.js +0 -899
- package/lib/index-Czzd9rjU.js.map +0 -1
- package/lib/index-DNxQ_rCt.js +0 -1273
- package/lib/index-DNxQ_rCt.js.map +0 -1
- package/lib/index-Yn8c3UWE.js +0 -921
- package/lib/index-Yn8c3UWE.js.map +0 -1
- package/lib/index.esm-C5mr_sKO.js +0 -1193
- package/lib/index.esm-C5mr_sKO.js.map +0 -1
- package/lib/jsx-runtime-B6kdoens.js +0 -635
- package/lib/jsx-runtime-B6kdoens.js.map +0 -1
- package/lib/prism-csharp.min-Yizuc34Y.js +0 -35
- package/lib/prism-java.min-d5iT_mOd.js +0 -7
- package/lib/prism-markup-templating-DZrrEs0A.js +0 -62
- package/lib/prism-markup-templating-DZrrEs0A.js.map +0 -1
- package/lib/prism-php.min-o7FpoMP_.js +0 -11
- package/lib/prism-php.min-o7FpoMP_.js.map +0 -1
- package/lib/prism-ruby.min-C7LwcKyz.js +0 -10
- package/lib/prism-typescript.min-oSVeWCAd.js +0 -6
- package/lib/router-lfyopgBI.js +0 -3024
- package/lib/router-lfyopgBI.js.map +0 -1
- package/lib/state-tsXBLONe.js +0 -203
- package/lib/state-tsXBLONe.js.map +0 -1
- package/lib/useExposedProps-CTPtylCV.js +0 -10
- package/lib/useExposedProps-CTPtylCV.js.map +0 -1
- package/lib/utils-DcpDOncX.js.map +0 -1
- package/lib/zudoku.openapi-worker.js +0 -15
- package/lib/zudoku.openapi-worker.js.map +0 -1
- package/src/lib/plugins/openapi/client/worker.ts +0 -44
- package/src/lib/plugins/openapi/playground/ResponseTab.tsx +0 -76
- package/src/lib/plugins/openapi-worker.ts +0 -11
- package/src/lib/plugins/search-inkeep/InkeepCustomTrigger.tsx +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DmqsUPcm.js","sources":["../src/lib/plugins/openapi/graphql/graphql.ts","../src/lib/plugins/openapi/graphql/gql.ts","../src/lib/plugins/openapi/client/GraphQLClient.tsx","../src/lib/ui/Alert.tsx","../src/lib/ui/Label.tsx","../src/lib/ui/RadioGroup.tsx","../src/lib/ui/Textarea.tsx","../src/lib/util/pastellize.ts","../src/lib/plugins/openapi/ColorizedParam.tsx","../src/lib/plugins/openapi/playground/createUrl.ts","../src/lib/ui/DropdownMenu.tsx","../src/lib/plugins/openapi/playground/ExamplesDropdown.tsx","../src/lib/ui/Card.tsx","../src/lib/ui/Checkbox.tsx","../src/lib/ui/Command.tsx","../src/lib/ui/Popover.tsx","../src/lib/components/Autocomplete.tsx","../src/lib/util/createVariantComponent.tsx","../src/lib/plugins/openapi/playground/ParamsGrid.tsx","../src/lib/plugins/openapi/playground/Headers.tsx","../src/lib/plugins/openapi/playground/PathParams.tsx","../src/lib/plugins/openapi/playground/InlineInput.tsx","../src/lib/plugins/openapi/playground/QueryParams.tsx","../src/lib/plugins/openapi/util/methodToColor.ts","../src/lib/plugins/openapi/playground/result-panel/RequestTab.tsx","../src/lib/ui/Collapsible.tsx","../src/lib/plugins/openapi/playground/result-panel/convertToTypes.ts","../src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx","../src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx","../src/lib/plugins/openapi/playground/SubmitButton.tsx","../src/lib/plugins/openapi/playground/Playground.tsx","../src/lib/plugins/openapi/playground/PlaygroundDialog.tsx","../src/lib/plugins/openapi/index.tsx"],"sourcesContent":["/* eslint-disable */\nimport type { DocumentTypeDecoration } from \"@graphql-typed-document-node/core\";\nexport type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = {\n [K in keyof T]: T[K];\n};\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & {\n [SubKey in K]?: Maybe<T[SubKey]>;\n};\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & {\n [SubKey in K]: Maybe<T[SubKey]>;\n};\nexport type MakeEmpty<\n T extends { [key: string]: unknown },\n K extends keyof T,\n> = { [_ in K]?: never };\nexport type Incremental<T> =\n | T\n | {\n [P in keyof T]?: P extends \" $fragmentName\" | \"__typename\" ? T[P] : never;\n };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: { input: string; output: string };\n String: { input: string; output: string };\n Boolean: { input: boolean; output: boolean };\n Int: { input: number; output: number };\n Float: { input: number; output: number };\n /** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */\n JSON: { input: any; output: any };\n /** The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */\n JSONObject: { input: any; output: any };\n};\n\nexport type EncodingItem = {\n __typename?: \"EncodingItem\";\n allowReserved?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n contentType?: Maybe<Scalars[\"String\"][\"output\"]>;\n explode?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n headers?: Maybe<Scalars[\"JSONObject\"][\"output\"]>;\n name: Scalars[\"String\"][\"output\"];\n style?: Maybe<Scalars[\"String\"][\"output\"]>;\n};\n\nexport type ExampleItem = {\n __typename?: \"ExampleItem\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n externalValue?: Maybe<Scalars[\"String\"][\"output\"]>;\n name: Scalars[\"String\"][\"output\"];\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n value?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n};\n\nexport type MediaTypeObject = {\n __typename?: \"MediaTypeObject\";\n encoding?: Maybe<Array<EncodingItem>>;\n examples?: Maybe<Array<ExampleItem>>;\n mediaType: Scalars[\"String\"][\"output\"];\n schema?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n};\n\nexport type OperationItem = {\n __typename?: \"OperationItem\";\n contentTypes: Array<Scalars[\"String\"][\"output\"]>;\n deprecated?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n method: Scalars[\"String\"][\"output\"];\n operationId?: Maybe<Scalars[\"String\"][\"output\"]>;\n parameters?: Maybe<Array<ParameterItem>>;\n path: Scalars[\"String\"][\"output\"];\n requestBody?: Maybe<RequestBodyObject>;\n responses: Array<ResponseItem>;\n slug: Scalars[\"String\"][\"output\"];\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n tags?: Maybe<Array<TagItem>>;\n};\n\nexport type ParameterIn = \"cookie\" | \"header\" | \"path\" | \"query\";\n\nexport type ParameterItem = {\n __typename?: \"ParameterItem\";\n allowEmptyValue?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n allowReserved?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n deprecated?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n examples?: Maybe<Array<ExampleItem>>;\n explode?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n in: ParameterIn;\n name: Scalars[\"String\"][\"output\"];\n required?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n schema?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n style?: Maybe<Scalars[\"String\"][\"output\"]>;\n};\n\nexport type PathItem = {\n __typename?: \"PathItem\";\n methods: Array<Scalars[\"String\"][\"output\"]>;\n path: Scalars[\"String\"][\"output\"];\n};\n\nexport type Query = {\n __typename?: \"Query\";\n schema: Schema;\n};\n\nexport type QuerySchemaArgs = {\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n};\n\nexport type RequestBodyObject = {\n __typename?: \"RequestBodyObject\";\n content?: Maybe<Array<MediaTypeObject>>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n required?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n};\n\nexport type ResponseItem = {\n __typename?: \"ResponseItem\";\n content?: Maybe<Array<MediaTypeObject>>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n headers?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n links?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n statusCode: Scalars[\"String\"][\"output\"];\n};\n\nexport type Schema = {\n __typename?: \"Schema\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n openapi: Scalars[\"String\"][\"output\"];\n operations: Array<OperationItem>;\n paths: Array<PathItem>;\n servers: Array<Server>;\n tags: Array<SchemaTag>;\n title: Scalars[\"String\"][\"output\"];\n url: Scalars[\"String\"][\"output\"];\n version: Scalars[\"String\"][\"output\"];\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n};\n\nexport type SchemaOperationsArgs = {\n method?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n operationId?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n path?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n tag?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n};\n\nexport type SchemaTagsArgs = {\n name?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n};\n\nexport type SchemaTag = {\n __typename?: \"SchemaTag\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n name?: Maybe<Scalars[\"String\"][\"output\"]>;\n operations: Array<OperationItem>;\n};\n\nexport type SchemaType = \"file\" | \"raw\" | \"url\";\n\nexport type Server = {\n __typename?: \"Server\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n url: Scalars[\"String\"][\"output\"];\n};\n\nexport type TagItem = {\n __typename?: \"TagItem\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n name: Scalars[\"String\"][\"output\"];\n};\n\nexport type ServersQueryQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type ServersQueryQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n url: string;\n servers: Array<{ __typename?: \"Server\"; url: string }>;\n };\n};\n\nexport type OperationsFragmentFragment = {\n __typename?: \"OperationItem\";\n slug: string;\n summary?: string | null;\n method: string;\n description?: string | null;\n operationId?: string | null;\n contentTypes: Array<string>;\n path: string;\n parameters?: Array<{\n __typename?: \"ParameterItem\";\n name: string;\n in: ParameterIn;\n description?: string | null;\n required?: boolean | null;\n schema?: any | null;\n style?: string | null;\n examples?: Array<{\n __typename?: \"ExampleItem\";\n name: string;\n description?: string | null;\n externalValue?: string | null;\n value?: any | null;\n summary?: string | null;\n }> | null;\n }> | null;\n requestBody?: {\n __typename?: \"RequestBodyObject\";\n description?: string | null;\n required?: boolean | null;\n content?: Array<{\n __typename?: \"MediaTypeObject\";\n mediaType: string;\n schema?: any | null;\n encoding?: Array<{ __typename?: \"EncodingItem\"; name: string }> | null;\n examples?: Array<{\n __typename?: \"ExampleItem\";\n name: string;\n description?: string | null;\n externalValue?: string | null;\n value?: any | null;\n summary?: string | null;\n }> | null;\n }> | null;\n } | null;\n responses: Array<{\n __typename?: \"ResponseItem\";\n statusCode: string;\n links?: any | null;\n description?: string | null;\n content?: Array<{\n __typename?: \"MediaTypeObject\";\n mediaType: string;\n schema?: any | null;\n examples?: Array<{\n __typename?: \"ExampleItem\";\n name: string;\n description?: string | null;\n externalValue?: string | null;\n value?: any | null;\n summary?: string | null;\n }> | null;\n encoding?: Array<{ __typename?: \"EncodingItem\"; name: string }> | null;\n }> | null;\n }>;\n} & { \" $fragmentName\"?: \"OperationsFragmentFragment\" };\n\nexport type AllOperationsQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type AllOperationsQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n description?: string | null;\n summary?: string | null;\n title: string;\n url: string;\n version: string;\n tags: Array<{\n __typename?: \"SchemaTag\";\n name?: string | null;\n description?: string | null;\n operations: Array<\n { __typename?: \"OperationItem\"; slug: string } & {\n \" $fragmentRefs\"?: {\n OperationsFragmentFragment: OperationsFragmentFragment;\n };\n }\n >;\n }>;\n };\n};\n\nexport type GetServerQueryQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type GetServerQueryQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n url: string;\n servers: Array<{ __typename?: \"Server\"; url: string }>;\n };\n};\n\nexport type GetCategoriesQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type GetCategoriesQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n url: string;\n tags: Array<{\n __typename: \"SchemaTag\";\n name?: string | null;\n operations: Array<{\n __typename: \"OperationItem\";\n slug: string;\n deprecated?: boolean | null;\n method: string;\n summary?: string | null;\n operationId?: string | null;\n path: string;\n }>;\n }>;\n };\n};\n\nexport class TypedDocumentString<TResult, TVariables>\n extends String\n implements DocumentTypeDecoration<TResult, TVariables>\n{\n __apiType?: DocumentTypeDecoration<TResult, TVariables>[\"__apiType\"];\n\n constructor(\n private value: string,\n public __meta__?: Record<string, any> | undefined,\n ) {\n super(value);\n }\n\n toString(): string & DocumentTypeDecoration<TResult, TVariables> {\n return this.value;\n }\n}\nexport const OperationsFragmentFragmentDoc = new TypedDocumentString(\n `\n fragment OperationsFragment on OperationItem {\n slug\n summary\n method\n description\n operationId\n contentTypes\n path\n parameters {\n name\n in\n description\n required\n schema\n style\n examples {\n name\n description\n externalValue\n value\n summary\n }\n }\n requestBody {\n content {\n mediaType\n encoding {\n name\n }\n examples {\n name\n description\n externalValue\n value\n summary\n }\n schema\n }\n description\n required\n }\n responses {\n statusCode\n links\n description\n content {\n examples {\n name\n description\n externalValue\n value\n summary\n }\n mediaType\n encoding {\n name\n }\n schema\n }\n }\n}\n `,\n { fragmentName: \"OperationsFragment\" },\n) as unknown as TypedDocumentString<OperationsFragmentFragment, unknown>;\nexport const ServersQueryDocument = new TypedDocumentString(`\n query ServersQuery($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n servers {\n url\n }\n }\n}\n `) as unknown as TypedDocumentString<\n ServersQueryQuery,\n ServersQueryQueryVariables\n>;\nexport const AllOperationsDocument = new TypedDocumentString(`\n query AllOperations($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n description\n summary\n title\n url\n version\n tags {\n name\n description\n operations {\n slug\n ...OperationsFragment\n }\n }\n }\n}\n fragment OperationsFragment on OperationItem {\n slug\n summary\n method\n description\n operationId\n contentTypes\n path\n parameters {\n name\n in\n description\n required\n schema\n style\n examples {\n name\n description\n externalValue\n value\n summary\n }\n }\n requestBody {\n content {\n mediaType\n encoding {\n name\n }\n examples {\n name\n description\n externalValue\n value\n summary\n }\n schema\n }\n description\n required\n }\n responses {\n statusCode\n links\n description\n content {\n examples {\n name\n description\n externalValue\n value\n summary\n }\n mediaType\n encoding {\n name\n }\n schema\n }\n }\n}`) as unknown as TypedDocumentString<\n AllOperationsQuery,\n AllOperationsQueryVariables\n>;\nexport const GetServerQueryDocument = new TypedDocumentString(`\n query getServerQuery($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n servers {\n url\n }\n }\n}\n `) as unknown as TypedDocumentString<\n GetServerQueryQuery,\n GetServerQueryQueryVariables\n>;\nexport const GetCategoriesDocument = new TypedDocumentString(`\n query GetCategories($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n tags {\n __typename\n name\n operations {\n __typename\n slug\n deprecated\n method\n summary\n operationId\n path\n }\n }\n }\n}\n `) as unknown as TypedDocumentString<\n GetCategoriesQuery,\n GetCategoriesQueryVariables\n>;\n","/* eslint-disable */\nimport * as types from \"./graphql.js\";\n\n/**\n * Map of all GraphQL operations in the project.\n *\n * This map has several performance disadvantages:\n * 1. It is not tree-shakeable, so it will include all operations in the project.\n * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.\n * 3. It does not support dead code elimination, so it will add unused operations.\n *\n * Therefore it is highly recommended to use the babel or swc plugin for production.\n * Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size\n */\nconst documents = {\n \"\\n query ServersQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\":\n types.ServersQueryDocument,\n \"\\n fragment OperationsFragment on OperationItem {\\n slug\\n summary\\n method\\n description\\n operationId\\n contentTypes\\n path\\n parameters {\\n name\\n in\\n description\\n required\\n schema\\n style\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n }\\n requestBody {\\n content {\\n mediaType\\n encoding {\\n name\\n }\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n schema\\n }\\n description\\n required\\n }\\n responses {\\n statusCode\\n links\\n description\\n content {\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n mediaType\\n encoding {\\n name\\n }\\n schema\\n }\\n }\\n }\\n\":\n types.OperationsFragmentFragmentDoc,\n \"\\n query AllOperations($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n description\\n summary\\n title\\n url\\n version\\n tags {\\n name\\n description\\n operations {\\n slug\\n ...OperationsFragment\\n }\\n }\\n }\\n }\\n\":\n types.AllOperationsDocument,\n \"\\n query getServerQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\":\n types.GetServerQueryDocument,\n \"\\n query GetCategories($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n tags {\\n __typename\\n name\\n operations {\\n __typename\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n }\\n\":\n types.GetCategoriesDocument,\n};\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query ServersQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").ServersQueryDocument;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n fragment OperationsFragment on OperationItem {\\n slug\\n summary\\n method\\n description\\n operationId\\n contentTypes\\n path\\n parameters {\\n name\\n in\\n description\\n required\\n schema\\n style\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n }\\n requestBody {\\n content {\\n mediaType\\n encoding {\\n name\\n }\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n schema\\n }\\n description\\n required\\n }\\n responses {\\n statusCode\\n links\\n description\\n content {\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n mediaType\\n encoding {\\n name\\n }\\n schema\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").OperationsFragmentFragmentDoc;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query AllOperations($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n description\\n summary\\n title\\n url\\n version\\n tags {\\n name\\n description\\n operations {\\n slug\\n ...OperationsFragment\\n }\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").AllOperationsDocument;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query getServerQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").GetServerQueryDocument;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query GetCategories($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n tags {\\n __typename\\n name\\n operations {\\n __typename\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").GetCategoriesDocument;\n\nexport function graphql(source: string) {\n return (documents as any)[source] ?? {};\n}\n","import type { GraphQLError } from \"graphql/error/index.js\";\nimport { ZudokuError } from \"../../../util/invariant.js\";\nimport type { TypedDocumentString } from \"../graphql/graphql.js\";\nimport type { OpenApiPluginOptions } from \"../index.js\";\nimport type { LocalServer } from \"./createServer.js\";\n\nlet localServerPromise: Promise<LocalServer> | undefined;\n\ntype GraphQLResponse<TResult> = {\n errors?: GraphQLError[];\n data: TResult;\n};\n\nconst throwIfError = (response: GraphQLResponse<unknown>) => {\n if (!response.errors?.[0]) return;\n\n throw new ZudokuError(response.errors[0].message, {\n developerHint:\n \"Check your configuration value `apis.type` and `apis.input` in the Zudoku config.\",\n });\n};\n\nexport class GraphQLClient {\n constructor(private readonly config: OpenApiPluginOptions) {}\n\n #getLocalServer = async () => {\n if (!localServerPromise) {\n localServerPromise = import(\"./createServer.js\").then((m) =>\n m.createServer(this.config),\n );\n }\n return localServerPromise;\n };\n\n #executeFetch = async (init: RequestInit): Promise<Response> => {\n if (this.config.server) {\n return fetch(this.config.server, init);\n }\n\n const localServer = await this.#getLocalServer();\n return localServer.fetch(\"http://localhost/graphql\", init);\n };\n\n fetch = async <TResult, TVariables>(\n query: TypedDocumentString<TResult, TVariables>,\n ...[variables]: TVariables extends Record<string, never> ? [] : [TVariables]\n ): Promise<TResult> => {\n const operationName = query.match(/query (\\w+)/)?.[1];\n\n const response = await this.#executeFetch({\n method: \"POST\",\n body: JSON.stringify({ query, variables, operationName }),\n headers: { \"Content-Type\": \"application/json\" },\n });\n\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n\n const result = (await response.json()) as GraphQLResponse<TResult>;\n throwIfError(result);\n\n return result.data;\n };\n}\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n));\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertDescription, AlertTitle };\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n","import * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","const c2n = (c: string) =>\n Math.abs(\n isNaN(parseInt(c))\n ? c.toLowerCase().charCodeAt(0) - 96\n : isNaN(parseInt(c))\n ? 0\n : parseInt(c),\n );\nconst s2n = (s: string) =>\n s.length > 1\n ? parseInt(s.split(\"\").reduce((a, c) => `${c2n(a) + c2n(c)}`))\n : c2n(s);\n\nexport const pastellize = (\n s: string,\n options: {\n saturation?: number;\n lightness?: number;\n } = {},\n) => {\n const hue = (3 * s2n(s) + 2 * s2n(s) + s2n(s)) % 360;\n const { saturation = 75, lightness = 60 } = options;\n\n return `${hue}deg ${saturation}% ${lightness}%`;\n};\n","import { useTheme } from \"next-themes\";\nimport { useEffect, useRef, type CSSProperties, type ReactNode } from \"react\";\nimport { cn } from \"../../util/cn.js\";\nimport { pastellize } from \"../../util/pastellize.js\";\n\nexport const DATA_ATTR = \"data-linked-param\";\n\nexport const usePastellizedColor = (name: string) => {\n const { resolvedTheme } = useTheme();\n\n return {\n text: pastellize(\n name,\n resolvedTheme === \"light\" ? { saturation: 95, lightness: 38 } : {},\n ),\n background: pastellize(\n name,\n resolvedTheme === \"light\" ? { saturation: 85, lightness: 40 } : {},\n ),\n };\n};\n\nexport const useParamColor = (name: string) => {\n const normalized = name.replace(/[{}]/g, \"\");\n return usePastellizedColor(normalized);\n};\n\nexport const ColorizedParam = ({\n name,\n className,\n slug,\n title,\n children,\n onClick,\n}: {\n name: string;\n className?: string;\n backgroundOpacity?: string;\n borderOpacity?: string;\n slug?: string;\n children?: ReactNode;\n title?: string;\n onClick?: () => void;\n}) => {\n const ref = useRef<HTMLSpanElement>(null);\n const normalizedSlug = slug?.replace(/[{}]/g, \"\");\n const normalized = name.replace(/[{}]/g, \"\");\n const { text, background } = usePastellizedColor(normalized);\n\n const textColor = `hsl(${text} / 100%)`;\n const backgroundColor = `hsl(${background} / 10%)`;\n const borderColor = `hsl(${background} / 50%)`;\n\n useEffect(() => {\n if (!normalizedSlug) return;\n if (!ref.current) return;\n\n const onMouseEnter = () => {\n document\n .querySelectorAll(`[${DATA_ATTR}=\"${normalizedSlug}\"]`)\n .forEach((el) => {\n if (el instanceof HTMLElement) {\n el.dataset.active = \"true\";\n }\n });\n };\n const onMouseLeave = () => {\n document\n .querySelectorAll(`[${DATA_ATTR}=\"${normalizedSlug}\"]`)\n .forEach((el) => {\n if (el instanceof HTMLElement) {\n el.dataset.active = \"false\";\n }\n });\n };\n\n const el = ref.current;\n\n el.addEventListener(\"mouseenter\", onMouseEnter);\n el.addEventListener(\"mouseleave\", onMouseLeave);\n\n return () => {\n el.removeEventListener(\"mouseenter\", onMouseEnter);\n el.removeEventListener(\"mouseleave\", onMouseLeave);\n };\n }, [normalizedSlug]);\n\n return (\n <span\n {...{ [DATA_ATTR]: normalizedSlug }}\n className={cn(\n \"relative inline-block rounded transition-all duration-100\",\n \"rounded-lg\",\n \"border border-[--border-color] p-0.5 text-[--param-color] bg-[--background-color]\",\n \"data-[active=true]:border-[--param-color] data-[active=true]:shadow data-[active=true]:-translate-y-px\",\n className,\n )}\n title={title}\n suppressHydrationWarning\n ref={ref}\n onClick={onClick}\n style={\n {\n \"--param-color\": textColor,\n \"--border-color\": borderColor,\n \"--background-color\": backgroundColor,\n } as CSSProperties\n }\n >\n {children ?? name}\n </span>\n );\n};\n","import type { PlaygroundForm } from \"./Playground.js\";\n\nexport const createUrl = (host: string, path: string, data: PlaygroundForm) => {\n const filledPath = path.replace(/(:\\w+|\\{\\w+})/g, (match) => {\n const key = match.replace(/[:{}]/g, \"\");\n const value = data.pathParams.find((part) => part.name === key)?.value;\n\n return value ?? match;\n });\n\n // Ensure host ends with a slash and path doesn't start with one,\n // so they form a correct URL, without overriding the host's path.\n const url = new URL(\n filledPath.replace(/^\\//, \"\"),\n host.endsWith(\"/\") ? host : `${host}/`,\n );\n\n data.queryParams\n .filter((param) => param.active)\n .forEach((param) => {\n url.searchParams.set(param.name, param.value);\n });\n\n return url;\n};\n","import * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\n\nimport { CheckIcon, ChevronRightIcon, DotIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <DotIcon className=\"h-4 w-4 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n","import { Button } from \"zudoku/ui/Button.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"zudoku/ui/DropdownMenu.js\";\nimport { Content, Example } from \"../SidecarExamples.js\";\n\nconst ExamplesDropdown = ({\n examples,\n onSelect,\n}: {\n examples: Content;\n onSelect: (example: Example) => void;\n}) => {\n return (\n <div className=\"flex flex-col gap-2 mt-2 items-end\">\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\">Use Example</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\">\n {examples.map((example) => {\n return (\n <div key={example.mediaType}>\n <DropdownMenuLabel>{example.mediaType}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n {example.examples?.map((example) => {\n return (\n <DropdownMenuItem\n key={example.name}\n onSelect={() => onSelect(example)}\n className=\"line-clamp-1\"\n >\n {example.summary ?? example.name}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuGroup>\n </div>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n};\n\nexport default ExamplesDropdown;\n","import * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n};\n","import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst checkboxVariants = cva(\n \"peer h-4 w-4 shrink-0 rounded-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:text-primary\",\n {\n variants: {\n variant: {\n default: \"border border-primary data-[state=checked]:bg-primary\",\n outline: \"border border-input data-[state=checked]:bg-accent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\ninterface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n VariantProps<typeof checkboxVariants> {}\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, variant, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(checkboxVariants({ variant, className }))}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox, type CheckboxProps };\n","import { type DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Dialog, DialogContent } from \"zudoku/ui/Dialog.js\";\nimport { cn } from \"../util/cn.js\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n // eslint-disable-next-line react/no-unknown-property\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandInlineInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n // eslint-disable-next-line react/no-unknown-property\n <div className=\"flex items-center\" cmdk-input-wrapper=\"\">\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInlineInput.displayName = CommandPrimitive.Input.displayName;\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInlineInput,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n};\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverContent, PopoverTrigger };\n","import { PopoverAnchor } from \"@radix-ui/react-popover\";\nimport { useCommandState } from \"cmdk\";\nimport { useRef, useState, type Ref } from \"react\";\nimport {\n Command,\n CommandInlineInput,\n CommandItem,\n CommandList,\n} from \"zudoku/ui/Command.js\";\nimport { Popover, PopoverContent } from \"zudoku/ui/Popover.js\";\nimport { cn } from \"../util/cn.js\";\n\ntype AutocompleteProps = {\n value: string;\n options: readonly string[];\n onChange: (e: string) => void;\n className?: string;\n placeholder?: string;\n onEnterPress?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n ref?: Ref<HTMLInputElement>;\n};\n\nconst AutocompletePopover = ({\n value,\n options,\n onChange,\n className,\n placeholder = \"Enter value\",\n onEnterPress,\n ref,\n}: AutocompleteProps) => {\n const [open, setOpen] = useState(false);\n const [dontClose, setDontClose] = useState(false);\n const count = useCommandState((state) => state.filtered.count);\n const inputRef = useRef<HTMLInputElement>(null);\n return (\n <Popover open={open}>\n <PopoverAnchor>\n <CommandInlineInput\n ref={(el) => {\n inputRef.current = el;\n if (typeof ref === \"function\") {\n ref(el);\n } else if (ref) {\n ref.current = el;\n }\n }}\n value={value}\n placeholder={placeholder}\n className={cn(\"h-9 bg-transparent\", className)}\n onFocus={() => setOpen(true)}\n onBlur={() => {\n if (dontClose) {\n return;\n }\n setOpen(false);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n setOpen(false);\n inputRef.current?.blur();\n onEnterPress?.(e);\n }\n }}\n onValueChange={(e) => onChange(e)}\n />\n </PopoverAnchor>\n <PopoverContent\n onMouseEnter={() => setDontClose(true)}\n onMouseLeave={() => setDontClose(false)}\n onOpenAutoFocus={(e) => e.preventDefault()}\n className={cn(\"p-0 w-[--radix-popover-trigger-width]\", {\n \"border-0\": count === 0,\n })}\n align=\"start\"\n side=\"bottom\"\n onWheel={(e) => {\n // See: https://github.com/radix-ui/primitives/issues/1159\n e.stopPropagation();\n }}\n onTouchMove={(e) => {\n e.stopPropagation();\n }}\n >\n <CommandList className=\"max-h-[140px]\">\n {options.map((enumValue) => (\n <CommandItem\n key={enumValue}\n value={enumValue}\n onSelect={(selected) => {\n onChange(selected);\n setOpen(false);\n }}\n className=\"cursor-pointer\"\n >\n {enumValue}\n </CommandItem>\n ))}\n </CommandList>\n </PopoverContent>\n </Popover>\n );\n};\n\nexport const Autocomplete = (props: AutocompleteProps) => {\n return (\n <Command className=\"bg-transparent\">\n <AutocompletePopover {...props} />\n </Command>\n );\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport type { ClassValue } from \"clsx\";\nimport * as React from \"react\";\nimport { type HTMLElementType, type JSX } from \"react\";\nimport { cn } from \"./cn.js\";\n\nconst createVariantComponent = <\n E extends HTMLElementType,\n C extends ReturnType<typeof cva>,\n>(\n tag: E,\n cvx: ClassValue | C,\n // variantProps: Array<keyof VariantProps<C>> = [],\n) => {\n const MyVariant = React.forwardRef<\n HTMLElement,\n JSX.IntrinsicElements[E] & { className?: ClassValue; asChild?: boolean }\n >(({ className, asChild, ...props }, ref) => {\n const Comp = asChild ? Slot : tag;\n\n return React.createElement(Comp, {\n ...props,\n ref,\n className:\n typeof cvx === \"function\" ? cvx({ className }) : cn(cvx, className),\n });\n });\n\n MyVariant.displayName = `VariantComponent(${tag})`;\n\n return MyVariant;\n};\n\nexport default createVariantComponent;\n","import createVariantComponent from \"../../../util/createVariantComponent.js\";\n\nconst ParamsGrid = createVariantComponent(\n \"div\",\n \"hover:bg-accent/40 grid grid-cols-[2fr_3fr] gap-2 items-center px-3\",\n);\n\nexport default ParamsGrid;\n","import { XIcon } from \"lucide-react\";\nimport { useRef } from \"react\";\nimport {\n Control,\n Controller,\n useFieldArray,\n useFormContext,\n UseFormRegister,\n} from \"react-hook-form\";\nimport { Card } from \"zudoku/ui/Card.js\";\nimport { Checkbox } from \"zudoku/ui/Checkbox.js\";\nimport { Autocomplete } from \"../../../components/Autocomplete.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport ParamsGrid from \"./ParamsGrid.js\";\nimport { type PlaygroundForm } from \"./Playground.js\";\n\nconst headerOptions = Object.freeze([\n \"Accept\",\n \"Accept-Encoding\",\n \"Accept-Language\",\n \"Authorization\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Disposition\",\n \"Content-Encoding\",\n \"Content-Language\",\n \"Content-Length\",\n \"Content-Range\",\n \"Content-Security-Policy\",\n \"Content-Type\",\n \"Cookie\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"Host\",\n \"If-Modified-Since\",\n \"Location\",\n \"Origin\",\n \"Pragma\",\n \"Referer\",\n \"Set-Cookie\",\n \"User-Agent\",\n \"X-Requested-With\",\n]);\n\nexport const Headers = ({\n control,\n register,\n}: {\n register: UseFormRegister<PlaygroundForm>;\n control: Control<PlaygroundForm>;\n}) => {\n const { fields, append, remove } = useFieldArray<PlaygroundForm>({\n control,\n name: \"headers\",\n });\n const { setValue } = useFormContext<PlaygroundForm>();\n const valueRefs = useRef<Array<HTMLInputElement | null>>([]);\n const nameRefs = useRef<Array<HTMLInputElement | null>>([]);\n\n const addNewHeader = () => {\n append({\n name: \"\",\n value: \"\",\n active: false,\n } as PlaygroundForm[\"headers\"][number]);\n };\n\n const handleHeaderEnter = (index: number) => {\n valueRefs.current[index]?.focus();\n };\n\n const handleValueEnter = (index: number) => {\n addNewHeader();\n requestAnimationFrame(() => nameRefs.current[index + 1]?.focus());\n };\n\n return (\n <div className=\"flex flex-col gap-2\">\n <Card className=\"overflow-hidden\">\n <ParamsGrid>\n {fields.map((header, i) => (\n <div key={i} className=\"group grid col-span-full grid-cols-subgrid\">\n <div className=\"flex items-center gap-2 \">\n <Controller\n control={control}\n name={`headers.${i}.active`}\n render={({ field }) => (\n <Checkbox\n variant=\"outline\"\n id={`headers.${i}.active`}\n checked={field.value}\n onCheckedChange={(checked) => {\n field.onChange(checked);\n }}\n />\n )}\n />\n <Controller\n control={control}\n name={`headers.${i}.name`}\n render={({ field }) => (\n <Autocomplete\n {...field}\n placeholder=\"Name\"\n className=\"border-0 shadow-none bg-transparent text-xs font-mono\"\n options={headerOptions}\n onEnterPress={() => handleHeaderEnter(i)}\n onChange={(e) => {\n field.onChange(e);\n setValue(`headers.${i}.active`, true);\n }}\n ref={(el) => {\n nameRefs.current[i] = el;\n }}\n />\n )}\n />\n </div>\n <div className=\"flex items-center gap-2\">\n <Controller\n control={control}\n name={`headers.${i}.value`}\n render={({ field }) => (\n <Input\n placeholder=\"Value\"\n className=\"w-full border-0 shadow-none text-xs font-mono focus-visible:ring-0\"\n {...field}\n ref={(el) => {\n valueRefs.current[i] = el;\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && e.currentTarget.value.trim()) {\n handleValueEnter(i);\n }\n }}\n autoComplete=\"off\"\n />\n )}\n />\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"text-muted-foreground opacity-0 group-hover:opacity-100 rounded-full w-8 h-7\"\n onClick={() => {\n remove(i);\n }}\n type=\"button\"\n >\n <XIcon size={16} />\n </Button>\n </div>\n </div>\n ))}\n </ParamsGrid>\n </Card>\n <div className=\"text-end\">\n <Button\n className=\"\"\n onClick={addNewHeader}\n type=\"button\"\n variant=\"secondary\"\n >\n Add header\n </Button>\n </div>\n </div>\n );\n};\n","import { Control, Controller, useFieldArray } from \"react-hook-form\";\nimport { Card } from \"zudoku/ui/Card.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { ColorizedParam } from \"../ColorizedParam.js\";\nimport ParamsGrid from \"./ParamsGrid.js\";\nimport type { PlaygroundForm } from \"./Playground.js\";\n\nexport const PathParams = ({\n control,\n}: {\n control: Control<PlaygroundForm>;\n}) => {\n const { fields } = useFieldArray<PlaygroundForm>({\n control,\n name: \"pathParams\",\n });\n\n return (\n <Card className=\"rounded-lg\">\n <ParamsGrid>\n {fields.map((part, i) => (\n <>\n <Controller\n control={control}\n name={`pathParams.${i}.value`}\n render={() => (\n <div>\n <ColorizedParam\n slug={part.name}\n name={part.name}\n className=\"font-mono text-xs px-2\"\n />\n </div>\n )}\n />\n\n <div className=\"flex justify-between items-center\">\n <Controller\n control={control}\n name={`pathParams.${i}.value`}\n render={({ field }) => (\n <Input\n {...field}\n required\n placeholder=\"Enter value\"\n className=\"w-full border-0 shadow-none text-xs font-mono hover:bg-accent\"\n />\n )}\n />\n </div>\n </>\n ))}\n </ParamsGrid>\n </Card>\n );\n};\n","import createVariantComponent from \"../../../util/createVariantComponent.js\";\n\nexport const InlineInput = createVariantComponent(\n \"input\",\n \"px-2 bg-transparent h-6 font-mono text-xs m-2\",\n);\n","import {\n Control,\n Controller,\n useFieldArray,\n useFormContext,\n} from \"react-hook-form\";\nimport { Card } from \"zudoku/ui/Card.js\";\nimport { Checkbox } from \"zudoku/ui/Checkbox.js\";\nimport { Autocomplete } from \"../../../components/Autocomplete.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { InlineInput } from \"./InlineInput.js\";\nimport ParamsGrid from \"./ParamsGrid.js\";\nimport { type PlaygroundForm, type QueryParam } from \"./Playground.js\";\n\nexport const QueryParams = ({\n control,\n queryParams,\n}: {\n control: Control<PlaygroundForm>;\n queryParams: QueryParam[];\n}) => {\n const { fields } = useFieldArray<PlaygroundForm>({\n control,\n name: \"queryParams\",\n });\n const form = useFormContext<PlaygroundForm>();\n\n const requiredFields = queryParams.map((param) => Boolean(param.isRequired));\n\n return (\n <Card className=\"rounded-lg\">\n <div className=\"w-full \">\n {fields.map((field, i) => {\n const currentParam = queryParams.find(\n (param) => param.name === field.name,\n );\n return (\n <ParamsGrid key={field.id}>\n <div className=\"flex items-center\">\n <Controller\n control={control}\n name={`queryParams.${i}.active`}\n render={({ field }) => (\n <Checkbox\n variant=\"outline\"\n id={`queryParams.${i}.active`}\n className=\"mr-2\"\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n )}\n />\n <Controller\n control={control}\n render={({ field }) =>\n !requiredFields[i] ? (\n <Autocomplete\n value={field.value}\n options={queryParams.map((param) => param.name)}\n onChange={(e) => {\n field.onChange(e);\n }}\n className=\"border-0 font-mono text-xs bg-transparent hover:bg-transparent\"\n />\n ) : (\n <InlineInput asChild>\n <label\n className=\"flex items-center cursor-pointer gap-1\"\n htmlFor={`queryParams.${i}.active`}\n title={\n requiredFields[i] ? \"Required field\" : undefined\n }\n >\n {field.value}\n {requiredFields[i] && <sup> *</sup>}\n </label>\n </InlineInput>\n )\n }\n name={`queryParams.${i}.name`}\n />\n </div>\n <div className=\"flex justify-between items-center\">\n <Controller\n control={control}\n render={({ field }) => {\n const hasEnum =\n currentParam?.enum && currentParam.enum.length > 0;\n\n if (!hasEnum) {\n return (\n <Input\n {...field}\n onChange={(e) => {\n field.onChange(e.target.value);\n if (e.target.value.length > 0) {\n form.setValue(`queryParams.${i}.active`, true);\n }\n }}\n placeholder=\"Enter value\"\n className=\"w-full border-0 shadow-none text-xs font-mono\"\n />\n );\n }\n\n return (\n <Autocomplete\n value={field.value}\n options={currentParam.enum ?? []}\n onChange={(e) => {\n field.onChange(e);\n form.setValue(`queryParams.${i}.active`, true);\n }}\n className=\"font-mono text-xs border-0 ring-1 ring-ring\"\n />\n );\n }}\n name={`queryParams.${i}.value`}\n />\n </div>\n </ParamsGrid>\n );\n })}\n </div>\n </Card>\n );\n};\n","export const TextColorMap = {\n green: \"text-green-600\",\n blue: \"text-sky-600\",\n yellow: \"text-yellow-600\",\n red: \"text-red-600\",\n purple: \"text-purple-600\",\n indigo: \"text-indigo-600\",\n gray: \"text-gray-600\",\n};\n\nexport const methodToColor = {\n get: TextColorMap.green,\n post: TextColorMap.blue,\n put: TextColorMap.yellow,\n delete: TextColorMap.red,\n patch: TextColorMap.purple,\n options: TextColorMap.indigo,\n head: TextColorMap.gray,\n trace: TextColorMap.gray,\n};\n\nexport const methodForColor = (method: string) => {\n return (\n methodToColor[method.toLocaleLowerCase() as keyof typeof methodToColor] ??\n TextColorMap.gray\n );\n};\n","import { ChevronRightIcon } from \"lucide-react\";\nimport { Fragment } from \"react\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../../../../ui/Collapsible.js\";\nimport { cn } from \"../../../../util/cn.js\";\nimport { methodForColor } from \"../../util/methodToColor.js\";\n\nexport const RequestTab = ({\n method,\n url,\n headers,\n body,\n}: {\n method: string;\n url: string;\n headers: Array<[string, string]>;\n body?: string;\n}) => {\n return (\n <div className=\"flex flex-col gap-2 font-mono text-xs\">\n <div className=\"gap-2 p-2 bg-muted rounded-md\">\n <span className={cn(methodForColor(method), \"font-semibold\")}>\n {method}\n </span>\n \n <span className=\"break-all\">{url}</span> \n <span className=\"text-muted-foreground\">HTTP/1.1</span>\n </div>\n <div className=\"mx-1.5 flex flex-col gap-3\">\n <Collapsible defaultOpen>\n <CollapsibleTrigger className=\"flex items-center gap-2 hover:text-primary group\">\n <ChevronRightIcon className=\"h-4 w-4 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]\" />\n <span className=\"font-semibold\">Headers</span>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <div className=\"grid grid-cols-[auto,1fr] gap-x-8 gap-y-1 pl-1.5 pt-2\">\n {headers.map(([key, value]) => (\n <Fragment key={key}>\n <div className=\"text-primary\">{key}</div>\n <div className=\"break-words\">{value}</div>\n </Fragment>\n ))}\n </div>\n </CollapsibleContent>\n </Collapsible>\n\n <Collapsible defaultOpen>\n <CollapsibleTrigger className=\"flex items-center gap-2 hover:text-primary group\">\n <ChevronRightIcon className=\"h-4 w-4 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]\" />\n <span className=\"font-semibold\">Body</span>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <div className=\"pl-0 pt-2\">\n <div\n className={cn(\n \"whitespace-pre-wrap break-all bg-muted p-2 rounded-md\",\n !body && \"text-muted-foreground\",\n )}\n >\n {body ?? \"Empty body\"}\n </div>\n </div>\n </CollapsibleContent>\n </Collapsible>\n </div>\n </div>\n );\n};\n\nexport default RequestTab;\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleContent, CollapsibleTrigger };\n","type JsonValue = string | number | boolean | null | JsonObject | JsonArray;\ntype JsonObject = { [key: string]: JsonValue };\ntype JsonArray = JsonValue[];\n\nfunction inferType(value: JsonValue): string {\n if (value === null) return \"null\";\n if (Array.isArray(value)) {\n if (value.length === 0) return \"any[]\";\n const firstValue = value[0];\n if (firstValue === undefined) return \"any[]\";\n const elementType = inferType(firstValue);\n return `${elementType}[]`;\n }\n if (typeof value === \"object\") {\n return generateInterface(value);\n }\n return typeof value;\n}\n\nexport function generateInterface(obj: JsonObject, indentation = \"\"): string {\n const lines: string[] = [\"{\"];\n\n for (const [key, value] of Object.entries(obj)) {\n const propertyType = inferType(value);\n lines.push(` ${key}: ${propertyType};`);\n }\n\n lines.push(\"}\");\n return lines.join(\"\\n\");\n}\n\nexport function convertToTypes(json: JsonValue): { lines: string[] } {\n const typeDefinition = inferType(json);\n const lines = [`type GeneratedType = ${typeDefinition};`];\n return { lines };\n}\n","import { useQuery } from \"@tanstack/react-query\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport { Fragment, useState } from \"react\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"zudoku/ui/Collapsible.js\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"zudoku/ui/Select.js\";\nimport { SyntaxHighlight } from \"../../../../components/SyntaxHighlight.js\";\nimport { Card } from \"../../../../ui/Card.js\";\nimport { convertToTypes } from \"./convertToTypes.js\";\n\nconst statusCodeMap: Record<number, string> = {\n 200: \"OK\",\n 201: \"Created\",\n 202: \"Accepted\",\n 204: \"No Content\",\n 400: \"Bad Request\",\n 401: \"Unauthorized\",\n 403: \"Forbidden\",\n 404: \"Not Found\",\n 405: \"Method Not Allowed\",\n 500: \"Internal Server Error\",\n};\n\nconst mimeTypeToLanguage = (mimeType: string) => {\n const mimeTypeMapping = {\n \"application/json\": \"json\",\n \"text/json\": \"json\",\n \"text/html\": \"html\",\n \"text/css\": \"css\",\n \"text/javascript\": \"javascript\",\n \"application/xml\": \"xml\",\n \"application/xhtml+xml\": \"xhtml\",\n };\n\n return Object.entries(mimeTypeMapping).find(([mime]) =>\n mimeType.includes(mime),\n )?.[1];\n};\n\nconst detectLanguage = (headers: Array<[string, string]>) => {\n const contentType =\n headers.find(([key, value]) => key === \"Content-Type\")?.[1] || \"\";\n return mimeTypeToLanguage(contentType);\n};\n\nconst tryParseJson = (body: string) => {\n try {\n return JSON.stringify(JSON.parse(body), null, 2);\n } catch {\n return null;\n }\n};\n\nconst sortHeadersByRelevance = (\n headers: Array<[string, string]>,\n): Array<[string, string]> => {\n const priorityOrder = [\n \"Content-Type\",\n \"Content-Length\",\n \"Authorization\",\n \"X-RateLimit-Remaining\",\n \"X-RateLimit-Limit\",\n \"Cache-Control\",\n \"ETag\",\n ].map((key) => key.toLowerCase());\n\n return [...headers].sort(([keyA], [keyB]) => {\n const indexA = priorityOrder.indexOf(keyA.toLowerCase());\n const indexB = priorityOrder.indexOf(keyB.toLowerCase());\n if (indexA === indexB) return 0;\n if (indexA === -1) return 1;\n if (indexB === -1) return -1;\n return indexA - indexB;\n });\n};\n\nexport const ResponseTab = ({\n body = \"\",\n headers,\n status,\n time,\n size,\n url,\n}: {\n body?: string;\n headers: Array<[string, string]>;\n status: number;\n time: number;\n size: number;\n url: string;\n}) => {\n const detectedLanguage = detectLanguage(headers);\n const jsonContent = tryParseJson(body);\n const beautifiedBody = jsonContent || body;\n const [view, setView] = useState<\"formatted\" | \"raw\" | \"types\">(\n jsonContent ? \"formatted\" : \"raw\",\n );\n\n const types = useQuery({\n queryKey: [\"types\", beautifiedBody],\n queryFn: async () => {\n return convertToTypes(JSON.parse(beautifiedBody));\n },\n enabled: view === \"types\",\n });\n\n const sortedHeaders = sortHeadersByRelevance([...headers]);\n\n return (\n <div className=\"flex flex-col gap-2 h-full overflow-y-scroll max-h-[calc(100vh-220px)] py-4\">\n <Collapsible defaultOpen>\n <CollapsibleTrigger className=\"flex items-center gap-2 hover:text-primary group\">\n <ChevronRightIcon className=\"h-4 w-4 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]\" />\n <span className=\"font-semibold\">Headers</span>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <div className=\"grid grid-cols-[auto,1fr] gap-x-8 gap-y-1 pl-1.5 pt-2 font-mono text-xs\">\n {sortedHeaders.slice(0, 5).map(([key, value]) => (\n <Fragment key={key}>\n <div className=\"text-primary whitespace-pre\">{key}</div>\n <div className=\"break-all\">{value}</div>\n </Fragment>\n ))}\n {sortedHeaders.length > 5 && (\n <Collapsible className=\"col-span-full grid-cols-subgrid grid\">\n <CollapsibleTrigger className=\"col-span-2 text-xs text-muted-foreground hover:text-primary flex items-center gap-1 py-1\">\n <ChevronRightIcon className=\"h-3 w-3 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]\" />\n Show {sortedHeaders.length - 5} more headers\n </CollapsibleTrigger>\n <CollapsibleContent className=\"col-span-full grid grid-cols-subgrid gap-x-8 gap-y-1 \">\n {sortedHeaders.slice(5).map(([key, value]) => (\n <Fragment key={key}>\n <div className=\"text-primary whitespace-pre\">{key}</div>\n <div className=\"break-all\">{value}</div>\n </Fragment>\n ))}\n </CollapsibleContent>\n </Collapsible>\n )}\n </div>\n </CollapsibleContent>\n </Collapsible>\n\n <Card className=\"shadow-none\">\n <SyntaxHighlight\n language={\n view === \"types\"\n ? \"typescript\"\n : view === \"raw\"\n ? jsonContent\n ? \"plain\"\n : detectedLanguage\n : \"json\"\n }\n noBackground\n // playground dialog has h-5/6 ≈ 83.333vh\n className=\"overflow-x-auto p-4 text-xs max-h-[calc(83.333vh-180px)]\"\n code={\n (view === \"raw\"\n ? body\n : view === \"types\"\n ? types.data?.lines.join(\"\\n\")\n : beautifiedBody) ?? \"\"\n }\n />\n </Card>\n <div className=\"flex gap-2 justify-between\">\n <div className=\"flex text-xs gap-2 border bg-muted rounded-md p-2 items-center h-8 font-mono divide-x\">\n <div>\n <span className=\"text-muted-foreground\">Status</span> {status}{\" \"}\n {statusCodeMap[status] ?? \"\"}\n </div>\n <div>\n <span className=\"text-muted-foreground\">Time</span>{\" \"}\n {time.toFixed(0)}ms\n </div>\n <div>\n <span className=\"text-muted-foreground\">Size</span> {size}B\n </div>\n </div>\n {jsonContent && (\n <div>\n <Select\n value={view}\n onValueChange={(value) => setView(value as \"formatted\" | \"raw\")}\n >\n <SelectTrigger className=\"min-w-32\">\n <SelectValue placeholder=\"View\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"formatted\">Formatted</SelectItem>\n <SelectItem value=\"raw\">Raw</SelectItem>\n <SelectItem value=\"types\">Types</SelectItem>\n </SelectContent>\n </Select>\n </div>\n )}\n </div>\n </div>\n );\n};\n","import { UseMutationResult } from \"@tanstack/react-query\";\nimport { Spinner } from \"../../../../components/Spinner.js\";\nimport { Callout } from \"../../../../ui/Callout.js\";\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n} from \"../../../../ui/Card.js\";\nimport {\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from \"../../../../ui/Tabs.js\";\nimport { cn } from \"../../../../util/cn.js\";\nimport { PlaygroundResult } from \"../Playground.js\";\nimport { RequestTab } from \"./RequestTab.js\";\nimport { ResponseTab } from \"./ResponseTab.js\";\n\nexport const ResultPanel = ({\n queryMutation,\n showPathParamsWarning,\n}: {\n queryMutation: UseMutationResult<PlaygroundResult, Error, any, unknown>;\n showPathParamsWarning: boolean;\n}) => {\n const status = ((queryMutation.data?.status ?? 0) / 100).toFixed(0);\n return (\n <div className=\"min-w-0 p-8 bg-muted/70 overflow-y-auto\">\n {queryMutation.error ? (\n <div className=\"flex flex-col gap-2\">\n {showPathParamsWarning && (\n <Callout type=\"caution\">\n Some path parameters are missing values. Please fill them in to\n ensure the request is sent correctly.\n </Callout>\n )}\n <Card>\n <CardHeader>\n <CardTitle>Request failed</CardTitle>\n </CardHeader>\n <CardContent>\n Error:{\" \"}\n {queryMutation.error.message ||\n String(queryMutation.error) ||\n \"Unexpected error\"}\n </CardContent>\n </Card>\n </div>\n ) : queryMutation.data ? (\n <div className=\"flex flex-col gap-2\">\n <Tabs defaultValue=\"response\">\n <TabsList>\n <TabsTrigger value=\"request\">Request</TabsTrigger>\n <TabsTrigger value=\"response\">\n Response\n <span\n className={cn(\n \"text-xs font-mono ml-1\",\n status === \"2\" && \"text-green-500\",\n status === \"3\" && \"text-blue-500\",\n status === \"4\" && \"text-yellow-500\",\n status === \"5\" && \"text-red-500\",\n )}\n >\n ({queryMutation.data.status})\n </span>\n </TabsTrigger>\n </TabsList>\n <TabsContent value=\"request\">\n <RequestTab {...queryMutation.data.request} />\n </TabsContent>\n <TabsContent value=\"response\">\n <ResponseTab\n status={queryMutation.data.status}\n time={queryMutation.data.time}\n size={queryMutation.data.size}\n headers={queryMutation.data.headers}\n body={queryMutation.data.body}\n url={queryMutation.data.request.url}\n />\n </TabsContent>\n </Tabs>\n </div>\n ) : (\n <div className=\"grid place-items-center h-full\">\n <span className=\"text-[16px] font-semibold text-muted-foreground\">\n {queryMutation.isPending ? (\n <Spinner />\n ) : (\n \"Send a request first to see the response here\"\n )}\n </span>\n </div>\n )}\n </div>\n );\n};\n\nexport default ResultPanel;\n","import { ChevronDownIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"zudoku/ui/DropdownMenu.js\";\nimport { RadioGroup, RadioGroupItem } from \"zudoku/ui/RadioGroup.js\";\nimport { ApiIdentity } from \"../../../core/ZudokuContext.js\";\nimport { NO_IDENTITY } from \"./Playground.js\";\n\nconst SubmitButton = ({\n identities,\n formRef,\n disabled,\n}: {\n identities: ApiIdentity[];\n formRef?: React.RefObject<HTMLFormElement | null>;\n disabled?: boolean;\n}) => {\n const { setValue } = useFormContext();\n const [dropdownValue, setDropdownValue] = useState<string | undefined>();\n if (identities.length === 0) {\n return <Button disabled={disabled}>Send</Button>;\n }\n return (\n <div className=\"flex\">\n <Button\n className=\"rounded-r-none inset-shadow-sm\"\n disabled={disabled}\n onClick={() => formRef?.current?.requestSubmit()}\n >\n Send\n </Button>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n disabled={disabled}\n className=\"rounded-l-none border-l border-border/40 inset-shadow-sm w-6\"\n size=\"icon\"\n >\n <ChevronDownIcon className=\"w-4 h-4\" />\n </Button>\n </DropdownMenuTrigger>\n <RadioGroup value={dropdownValue}>\n <DropdownMenuContent className=\"w-56\" align=\"end\" alignOffset={-150}>\n {[{ id: NO_IDENTITY, label: \"None\" }, ...identities].map(\n (identity) => (\n <DropdownMenuItem\n key={identity.id}\n onClick={() => {\n setDropdownValue(identity.id);\n setValue(\"identity\", identity.id);\n formRef?.current?.requestSubmit();\n }}\n onMouseEnter={() => setDropdownValue(identity.id)}\n onMouseLeave={() => setDropdownValue(undefined)}\n >\n <RadioGroupItem value={identity.id} className=\"mr-2\" />\n\n {identity.label}\n </DropdownMenuItem>\n ),\n )}\n </DropdownMenuContent>\n </RadioGroup>\n </DropdownMenu>\n </div>\n );\n};\n\nexport default SubmitButton;\n","import { useMutation } from \"@tanstack/react-query\";\nimport { InfoIcon } from \"lucide-react\";\nimport { Fragment, useEffect, useRef, useTransition } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { Alert, AlertDescription, AlertTitle } from \"zudoku/ui/Alert.js\";\n\nimport { Label } from \"zudoku/ui/Label.js\";\nimport { RadioGroup, RadioGroupItem } from \"zudoku/ui/RadioGroup.js\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"zudoku/ui/Select.js\";\nimport { Textarea } from \"zudoku/ui/Textarea.js\";\nimport { useSelectedServerStore } from \"../../../authentication/state.js\";\nimport { useApiIdentities } from \"../../../components/context/ZudokuContext.js\";\nimport { Card } from \"../../../ui/Card.js\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../../../ui/Tabs.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { ColorizedParam } from \"../ColorizedParam.js\";\nimport { Content } from \"../SidecarExamples.js\";\nimport { createUrl } from \"./createUrl.js\";\nimport ExamplesDropdown from \"./ExamplesDropdown.js\";\nimport { Headers } from \"./Headers.js\";\nimport { PathParams } from \"./PathParams.js\";\nimport { QueryParams } from \"./QueryParams.js\";\nimport { ResultPanel } from \"./result-panel/ResultPanel.js\";\nimport SubmitButton from \"./SubmitButton.js\";\n\nexport const NO_IDENTITY = \"__none\";\n\nexport type Header = {\n name: string;\n defaultValue?: string;\n defaultActive?: boolean;\n};\n\nexport type QueryParam = {\n name: string;\n defaultValue?: string;\n defaultActive?: boolean;\n isRequired?: boolean;\n enum?: string[];\n type?: string;\n};\nexport type PathParam = {\n name: string;\n defaultValue?: string;\n isRequired?: boolean;\n};\n\nexport type PlaygroundForm = {\n body: string;\n queryParams: Array<{\n name: string;\n value: string;\n active: boolean;\n enum?: string[];\n }>;\n pathParams: Array<{ name: string; value: string }>;\n headers: Array<{\n name: string;\n value: string;\n active: boolean;\n }>;\n identity?: string;\n};\n\nexport type PlaygroundResult = {\n status: number;\n headers: Array<[string, string]>;\n size: number;\n body: string;\n time: number;\n request: {\n method: string;\n url: string;\n headers: Array<[string, string]>;\n body?: string;\n };\n};\n\nexport type PlaygroundContentProps = {\n server: string;\n servers?: string[];\n url: string;\n method: string;\n headers?: Header[];\n queryParams?: QueryParam[];\n pathParams?: PathParam[];\n defaultBody?: string;\n examples?: Content;\n};\n\nexport const Playground = ({\n server,\n servers,\n url,\n method,\n headers = [],\n queryParams = [],\n pathParams = [],\n defaultBody = \"\",\n examples,\n}: PlaygroundContentProps) => {\n const { selectedServer, setSelectedServer } = useSelectedServerStore();\n const [, startTransition] = useTransition();\n const { register, control, handleSubmit, watch, setValue, ...form } =\n useForm<PlaygroundForm>({\n defaultValues: {\n body: defaultBody,\n queryParams: queryParams\n .map((param) => ({\n name: param.name,\n value: param.defaultValue ?? \"\",\n active: param.defaultActive ?? false,\n enum: param.enum ?? [],\n }))\n .concat([\n {\n name: \"\",\n value: \"\",\n active: false,\n enum: [],\n },\n ]),\n pathParams: pathParams.map((param) => ({\n name: param.name,\n value: param.defaultValue ?? \"\",\n })),\n headers: headers\n .map((header) => ({\n name: header.name,\n value: header.defaultValue ?? \"\",\n active: header.defaultActive ?? false,\n }))\n .concat([\n {\n name: \"\",\n value: \"\",\n active: false,\n },\n ]),\n identity: NO_IDENTITY,\n },\n });\n const formState = watch();\n const identities = useApiIdentities();\n\n const setOnce = useRef(false);\n useEffect(() => {\n if (setOnce.current) return;\n const firstIdentity = identities.data?.at(0);\n if (firstIdentity) {\n setValue(\"identity\", firstIdentity.id);\n setOnce.current = true;\n }\n }, [setValue, identities.data]);\n\n const formRef = useRef<HTMLFormElement>(null);\n\n const queryMutation = useMutation({\n mutationFn: async (data: PlaygroundForm) => {\n const start = performance.now();\n const request = new Request(\n createUrl(selectedServer ?? server, url, data),\n {\n method: method.toUpperCase(),\n headers: Object.fromEntries(\n data.headers\n .filter((h) => h.name && h.active)\n .map((header) => [header.name, header.value]),\n ),\n body: data.body ? data.body : undefined,\n },\n );\n\n if (data.identity !== NO_IDENTITY) {\n identities.data\n ?.find((i) => i.id === data.identity)\n ?.authorizeRequest(request);\n }\n try {\n const response = await fetch(request, {\n signal: AbortSignal.timeout(5000),\n });\n\n const time = performance.now() - start;\n\n const body = await response.text();\n\n const url = new URL(request.url);\n\n return {\n status: response.status,\n headers: Array.from(response.headers.entries()),\n size: body.length,\n body,\n time,\n request: {\n method: request.method.toUpperCase(),\n url: request.url,\n headers: [\n [\"Host\", url.host],\n [\"User-Agent\", \"Zudoku Playground\"],\n ...Array.from(request.headers.entries()),\n ],\n body: data.body ? data.body : undefined,\n },\n } satisfies PlaygroundResult;\n } catch (error) {\n if (error instanceof TypeError) {\n throw new Error(\n \"The request failed, possibly due to network issues or CORS policy.\",\n );\n } else {\n throw error;\n }\n }\n },\n });\n\n const path = url.split(\"/\").map((part, i, arr) => {\n const isPathParam =\n (part.startsWith(\"{\") && part.endsWith(\"}\")) || part.startsWith(\":\");\n const replaced = part.replace(/[:{}]/g, \"\");\n const value = formState.pathParams.find((p) => p.name === replaced)?.value;\n\n const pathParamValue = (\n <ColorizedParam\n backgroundOpacity=\"25%\"\n name={part}\n slug={part}\n title={\n !value\n ? `Missing value for path parameter \\`${replaced}\\``\n : undefined\n }\n >\n {value ? encodeURIComponent(value) : part}\n </ColorizedParam>\n );\n\n return (\n // eslint-disable-next-line react/no-array-index-key\n <Fragment key={part + i}>\n {isPathParam ? pathParamValue : part}\n {i < arr.length - 1 && \"/\"}\n <wbr />\n </Fragment>\n );\n });\n\n const urlQueryParams = formState.queryParams\n .filter((p) => p.active)\n .map((p, i, arr) => (\n <Fragment key={p.name}>\n {p.name}={encodeURIComponent(p.value).replaceAll(\"%20\", \"+\")}\n {i < arr.length - 1 && \"&\"}\n <wbr />\n </Fragment>\n ));\n\n const serverSelect = (\n <div className=\"inline-block opacity-50 hover:opacity-100 transition\">\n {servers && servers.length > 1 ? (\n <Select\n onValueChange={(value) => {\n startTransition(() => {\n setSelectedServer(value);\n });\n }}\n value={selectedServer}\n defaultValue={selectedServer}\n >\n <SelectTrigger className=\"p-0 border-none flex-row-reverse bg-transparent text-xs gap-0.5 h-auto\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {servers.map((s) => (\n <SelectItem key={s} value={s}>\n {s.replace(/^https?:\\/\\//, \"\")}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : (\n <span>{server.replace(/^https?:\\/\\//, \"\")}</span>\n )}\n </div>\n );\n\n return (\n <FormProvider\n {...{ register, control, handleSubmit, watch, setValue, ...form }}\n >\n <form\n onSubmit={handleSubmit((data) => queryMutation.mutateAsync(data))}\n ref={formRef}\n >\n <div className=\"grid grid-cols-2 text-sm h-full\">\n <div className=\"flex flex-col gap-4 p-4 after:bg-muted-foreground/20 relative after:absolute after:w-px after:inset-0 after:left-auto\">\n <div className=\"flex gap-2 items-stretch\">\n <div className=\"flex flex-1 items-center w-full border rounded-md\">\n <div className=\"border-r p-2 bg-muted rounded-l-md self-stretch font-semibold font-mono flex items-center\">\n {method.toUpperCase()}\n </div>\n <div className=\"flex items-center flex-wrap p-2 font-mono text-xs break-all\">\n {serverSelect}\n {path}\n {urlQueryParams.length > 0 ? \"?\" : \"\"}\n {urlQueryParams}\n </div>\n </div>\n\n <SubmitButton\n identities={identities.data ?? []}\n formRef={formRef}\n disabled={form.formState.isSubmitting}\n />\n </div>\n <Tabs defaultValue=\"parameters\">\n <div className=\"flex flex-wrap gap-1 justify-between\">\n <TabsList>\n <TabsTrigger value=\"parameters\">\n Parameters\n {(formState.pathParams.some((p) => p.value !== \"\") ||\n formState.queryParams.some((p) => p.active)) && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n <TabsTrigger value=\"headers\">\n Headers\n {formState.headers.filter((h) => h.active).length > 0 && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n <TabsTrigger value=\"auth\">\n Auth\n {formState.identity !== NO_IDENTITY && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n <TabsTrigger value=\"body\">Body</TabsTrigger>\n </TabsList>\n </div>\n <TabsContent value=\"headers\">\n <Headers control={control} register={register} />\n </TabsContent>\n <TabsContent value=\"parameters\">\n {pathParams.length > 0 && (\n <div className=\"flex flex-col gap-4 my-4\">\n <span className=\"font-semibold\">Path Parameters</span>\n <PathParams control={control} />\n </div>\n )}\n <div className=\"flex flex-col gap-4 my-4\">\n <span className=\"font-semibold\">Query Parameters</span>\n <QueryParams control={control} queryParams={queryParams} />\n </div>\n </TabsContent>\n <TabsContent value=\"body\">\n {![\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n ) && (\n <Alert className=\"mb-2\">\n <InfoIcon className=\"w-4 h-4\" />\n <AlertTitle>Body</AlertTitle>\n <AlertDescription>\n Body is only supported for POST, PUT, PATCH, and DELETE\n requests\n </AlertDescription>\n </Alert>\n )}\n <Textarea\n {...register(\"body\")}\n className={cn(\n \"border w-full rounded-lg p-2 bg-muted h-40 font-mono\",\n ![\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n ) && \"h-20\",\n )}\n placeholder={\n ![\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n )\n ? \"This request does not support a body\"\n : undefined\n }\n disabled={\n ![\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n )\n }\n />\n {examples && (\n <ExamplesDropdown\n examples={examples}\n onSelect={(example) =>\n setValue(\"body\", JSON.stringify(example.value, null, 2))\n }\n />\n )}\n </TabsContent>\n <TabsContent value=\"auth\">\n <div className=\"flex flex-col gap-4 my-4\">\n {identities.data?.length === 0 && (\n <Alert>\n <InfoIcon className=\"w-4 h-4\" />\n <AlertTitle>Authentication</AlertTitle>\n <AlertDescription>\n No identities found. Please create an identity first.\n </AlertDescription>\n </Alert>\n )}\n <div className=\"flex flex-col items-center gap-2\">\n <Card className=\"w-full overflow-hidden\">\n <RadioGroup\n onValueChange={(value) => setValue(\"identity\", value)}\n value={formState.identity}\n defaultValue={formState.identity}\n className=\"gap-0\"\n disabled={identities.data?.length === 0}\n >\n <Label\n className=\"h-12 border-b items-center flex p-4 cursor-pointer hover:bg-accent\"\n htmlFor=\"none\"\n >\n <RadioGroupItem value={NO_IDENTITY} id=\"none\">\n None\n </RadioGroupItem>\n <Label htmlFor=\"none\" className=\"ml-2\">\n None\n </Label>\n </Label>\n {identities.data?.map((identity) => (\n <Label\n key={identity.id}\n className=\"h-12 border-b items-center flex p-4 cursor-pointer hover:bg-accent\"\n >\n <RadioGroupItem\n value={identity.id}\n id={identity.id}\n >\n {identity.label}\n </RadioGroupItem>\n <Label htmlFor={identity.id} className=\"ml-2\">\n {identity.label}\n </Label>\n </Label>\n ))}\n </RadioGroup>\n </Card>\n </div>\n </div>\n </TabsContent>\n </Tabs>\n </div>\n <ResultPanel\n queryMutation={queryMutation}\n showPathParamsWarning={formState.pathParams.some(\n (p) => p.value === \"\",\n )}\n />\n </div>\n </form>\n </FormProvider>\n );\n};\n\nexport default Playground;\n","import { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { type PropsWithChildren, useState } from \"react\";\nimport {\n Dialog,\n DialogContent,\n DialogTitle,\n DialogTrigger,\n} from \"zudoku/ui/Dialog.js\";\nimport { Playground, type PlaygroundContentProps } from \"./Playground.js\";\n\nexport type PlaygroundDialogProps = PropsWithChildren<PlaygroundContentProps>;\n\nconst HeroPlayIcon = ({\n className,\n size = 16,\n}: {\n className?: string;\n size?: number;\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={size}\n height={size}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm14.024-.983a1.125 1.125 0 0 1 0 1.966l-5.603 3.113A1.125 1.125 0 0 1 9 15.113V8.887c0-.857.921-1.4 1.671-.983l5.603 3.113Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst PlaygroundDialog = (props: PlaygroundDialogProps) => {\n const [open, setOpen] = useState(false);\n return (\n <Dialog onOpenChange={(open) => setOpen(open)}>\n <DialogTrigger asChild>\n {props.children ?? (\n <button className=\"flex gap-1 items-center px-2 py-1 rounded-md transition text-xs bg-primary text-primary-foreground shadow-sm hover:bg-primary/80\">\n Test\n <HeroPlayIcon className=\"\" size={14} />\n </button>\n )}\n </DialogTrigger>\n\n <DialogContent\n className=\"max-w-screen-xl w-full h-5/6 overflow-hidden p-0\"\n aria-describedby={undefined}\n >\n <VisuallyHidden>\n <DialogTitle>Playground</DialogTitle>\n </VisuallyHidden>\n {open && <Playground {...props} />}\n </DialogContent>\n </Dialog>\n );\n};\n\nexport { PlaygroundDialog };\n","import { matchPath } from \"react-router\";\nimport { type ZudokuPlugin } from \"../../core/plugins.js\";\nimport { graphql } from \"./graphql/index.js\";\n\nimport { CirclePlayIcon, LogInIcon } from \"lucide-react\";\nimport type { SidebarItem } from \"../../../config/validators/SidebarSchema.js\";\nimport { useAuth } from \"../../authentication/hook.js\";\nimport { ColorMap } from \"../../components/navigation/SidebarBadge.js\";\nimport type { SchemaImports } from \"../../oas/graphql/index.js\";\nimport { Button } from \"../../ui/Button.js\";\nimport { joinPath } from \"../../util/joinPath.js\";\nimport { GraphQLClient } from \"./client/GraphQLClient.js\";\nimport { OasPluginConfig } from \"./interfaces.js\";\nimport type { PlaygroundContentProps } from \"./playground/Playground.js\";\nimport { PlaygroundDialog } from \"./playground/PlaygroundDialog.js\";\n\nconst GetCategoriesQuery = graphql(`\n query GetCategories($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n tags {\n __typename\n name\n operations {\n __typename\n slug\n deprecated\n method\n summary\n operationId\n path\n }\n }\n }\n }\n`);\n\ntype InternalOasPluginConfig = { schemaImports?: SchemaImports };\n\nconst MethodColorMap: Record<string, keyof typeof ColorMap> = {\n get: \"green\",\n post: \"blue\",\n put: \"yellow\",\n delete: \"red\",\n patch: \"purple\",\n options: \"gray\",\n head: \"gray\",\n};\n\nexport type OpenApiPluginOptions = OasPluginConfig & InternalOasPluginConfig;\n\nexport const openApiPlugin = (config: OpenApiPluginOptions): ZudokuPlugin => {\n const basePath = joinPath(config.navigationId ?? \"/reference\");\n\n const versions = config.type === \"file\" ? Object.keys(config.input) : [];\n\n const client = new GraphQLClient(config);\n\n return {\n getHead: () => {\n if (config.type === \"url\" && !config.skipPreload) {\n return (\n <link\n rel=\"preload\"\n href={config.input}\n as=\"fetch\"\n crossOrigin=\"anonymous\"\n />\n );\n }\n\n if (config.server) {\n return <link rel=\"preconnect\" href={config.server} />;\n }\n },\n getMdxComponents: () => ({\n OpenPlaygroundButton: ({\n requireAuth,\n server,\n method,\n url,\n ...props\n }: Partial<PlaygroundContentProps> &\n Pick<PlaygroundContentProps, \"server\"> & {\n requireAuth: boolean;\n }) => {\n const auth = useAuth();\n\n if (!server) {\n throw new Error(\"Server is required\");\n }\n\n if (requireAuth && !auth.isAuthenticated) {\n return (\n <Button\n className=\"gap-2 items-center\"\n variant=\"outline\"\n onClick={auth.login}\n >\n Login to open in Playground <LogInIcon size={16} />\n </Button>\n );\n }\n\n return (\n <PlaygroundDialog\n url={url ?? \"/\"}\n method={method ?? \"get\"}\n server={server}\n {...props}\n >\n <Button className=\"gap-2 items-center\" variant=\"outline\">\n Open in Playground <CirclePlayIcon size={16} />\n </Button>\n </PlaygroundDialog>\n );\n },\n }),\n getSidebar: async (path: string) => {\n if (!matchPath({ path: basePath, end: false }, path)) {\n return [];\n }\n\n try {\n const version =\n versions.find((v) => path === joinPath(basePath, v)) ??\n Object.keys(config.input).at(0);\n\n const data = await client.fetch(GetCategoriesQuery, {\n type: config.type,\n input: config.type === \"file\" ? config.input[version!] : config.input,\n version,\n });\n\n const categories = data.schema.tags\n .filter((tag) => tag.operations.length > 0)\n .map<SidebarItem>((tag) => ({\n type: \"category\",\n label: tag.name || \"Other endpoints\",\n collapsible: true,\n collapsed: false,\n items: tag.operations.map((operation) => ({\n type: \"link\",\n label: operation.summary ?? operation.path,\n href: `#${operation.slug}`,\n badge: {\n label: operation.method,\n color: MethodColorMap[operation.method.toLowerCase()]!,\n invert: true,\n },\n })),\n }));\n\n categories.unshift({\n type: \"link\",\n label: \"Overview\",\n href: \"#description\",\n });\n\n return categories;\n } catch {\n return [];\n }\n },\n getRoutes: () => {\n const versionsInPath = [null, ...versions];\n\n return versionsInPath.map((version) => ({\n path: basePath + (version ? `/${version}` : \"\"),\n async lazy() {\n const { OpenApiRoute } = await import(\"./Route.js\");\n return {\n element: (\n <OpenApiRoute\n basePath={basePath}\n versions={versions}\n client={client}\n config={config}\n />\n ),\n };\n },\n children: [\n {\n index: true,\n async lazy() {\n const { OperationList } = await import(\"./OperationList.js\");\n return { element: <OperationList /> };\n },\n },\n ],\n }));\n },\n };\n};\n"],"names":["TypedDocumentString","value","__meta__","__publicField","OperationsFragmentFragmentDoc","ServersQueryDocument","AllOperationsDocument","GetServerQueryDocument","GetCategoriesDocument","documents","types.ServersQueryDocument","types.OperationsFragmentFragmentDoc","types.AllOperationsDocument","types.GetServerQueryDocument","types.GetCategoriesDocument","graphql","source","localServerPromise","throwIfError","response","_a","ZudokuError","GraphQLClient","config","__privateAdd","_getLocalServer","m","_executeFetch","init","__privateGet","query","variables","operationName","result","alertVariants","cva","Alert","React","className","variant","props","ref","jsx","cn","AlertTitle","AlertDescription","labelVariants","Label","LabelPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","Circle","Textarea","c2n","c","s2n","s","a","pastellize","options","hue","saturation","lightness","DATA_ATTR","usePastellizedColor","name","resolvedTheme","useTheme","ColorizedParam","slug","title","children","onClick","useRef","normalizedSlug","normalized","text","background","textColor","backgroundColor","borderColor","useEffect","onMouseEnter","el","onMouseLeave","createUrl","host","path","data","filledPath","match","key","part","url","param","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuSubTrigger","inset","jsxs","ChevronRightIcon","DropdownMenuSubContent","DropdownMenuContent","sideOffset","DropdownMenuItem","DropdownMenuCheckboxItem","checked","CheckIcon","DropdownMenuRadioItem","DotIcon","DropdownMenuLabel","DropdownMenuSeparator","ExamplesDropdown","examples","onSelect","Button","example","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","checkboxVariants","Checkbox","CheckboxPrimitive","Check","Command","CommandPrimitive","CommandInput","Search","CommandInlineInput","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","Popover","PopoverPrimitive","PopoverContent","align","AutocompletePopover","onChange","placeholder","onEnterPress","open","setOpen","useState","dontClose","setDontClose","count","useCommandState","state","inputRef","PopoverAnchor","e","enumValue","selected","Autocomplete","createVariantComponent","tag","cvx","MyVariant","asChild","Comp","Slot","ParamsGrid","headerOptions","Headers","control","register","fields","append","remove","useFieldArray","setValue","useFormContext","valueRefs","nameRefs","addNewHeader","handleHeaderEnter","index","handleValueEnter","header","i","Controller","field","Input","XIcon","PathParams","Fragment","InlineInput","QueryParams","queryParams","form","requiredFields","currentParam","TextColorMap","methodToColor","methodForColor","method","RequestTab","headers","body","Collapsible","CollapsibleTrigger","CollapsibleContent","CollapsiblePrimitive","inferType","firstValue","generateInterface","obj","indentation","lines","propertyType","convertToTypes","json","statusCodeMap","mimeTypeToLanguage","mimeType","mime","detectLanguage","contentType","tryParseJson","sortHeadersByRelevance","priorityOrder","keyA","keyB","indexA","indexB","ResponseTab","status","time","size","detectedLanguage","jsonContent","beautifiedBody","view","setView","types","useQuery","sortedHeaders","SyntaxHighlight","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","ResultPanel","queryMutation","showPathParamsWarning","Callout","Tabs","TabsList","TabsTrigger","TabsContent","Spinner","SubmitButton","identities","formRef","disabled","dropdownValue","setDropdownValue","ChevronDownIcon","NO_IDENTITY","identity","Playground","server","servers","pathParams","defaultBody","selectedServer","setSelectedServer","useSelectedServerStore","startTransition","useTransition","handleSubmit","watch","useForm","formState","useApiIdentities","setOnce","firstIdentity","useMutation","start","request","h","_b","error","arr","isPathParam","replaced","p","pathParamValue","urlQueryParams","serverSelect","FormProvider","InfoIcon","_c","HeroPlayIcon","PlaygroundDialog","Dialog","DialogTrigger","DialogContent","VisuallyHidden","DialogTitle","GetCategoriesQuery","MethodColorMap","openApiPlugin","basePath","joinPath","versions","client","requireAuth","auth","useAuth","LogInIcon","CirclePlayIcon","matchPath","version","v","categories","operation","OpenApiRoute","OperationList"],"mappings":"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"}
|