zudoku 0.0.0-f62edde → 0.0.0-f687ed1
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/README.md +2 -2
- package/dist/app/demo.js +17 -2
- package/dist/app/demo.js.map +1 -1
- package/dist/app/main.js +7 -13
- package/dist/app/main.js.map +1 -1
- package/dist/app/standalone.js +3 -3
- package/dist/app/standalone.js.map +1 -1
- package/dist/cli/build/handler.js +9 -1
- package/dist/cli/build/handler.js.map +1 -1
- package/dist/config/loader.js +2 -5
- package/dist/config/loader.js.map +1 -1
- package/dist/config/validators/BuildSchema.js +5 -0
- package/dist/config/validators/BuildSchema.js.map +1 -1
- package/dist/config/validators/InputNavigationSchema.d.ts +152 -5
- package/dist/config/validators/InputNavigationSchema.js +0 -3
- package/dist/config/validators/InputNavigationSchema.js.map +1 -1
- package/dist/config/validators/InputNavigationSchema.test-d.js +0 -1
- package/dist/config/validators/InputNavigationSchema.test-d.js.map +1 -1
- package/dist/config/validators/NavigationSchema.js +4 -3
- package/dist/config/validators/NavigationSchema.js.map +1 -1
- package/dist/config/validators/icon-types.d.ts +1 -1
- package/dist/config/validators/icon-types.js +38 -0
- package/dist/config/validators/icon-types.js.map +1 -1
- package/dist/config/validators/validate.d.ts +6 -3
- package/dist/config/validators/validate.js +15 -5
- package/dist/config/validators/validate.js.map +1 -1
- package/dist/config/validators/validate.test.js +65 -2
- package/dist/config/validators/validate.test.js.map +1 -1
- package/dist/lib/authentication/authentication.d.ts +2 -0
- package/dist/lib/authentication/components/SignIn.js +4 -3
- package/dist/lib/authentication/components/SignIn.js.map +1 -1
- package/dist/lib/authentication/providers/openid.d.ts +4 -2
- package/dist/lib/authentication/providers/openid.js +11 -5
- package/dist/lib/authentication/providers/openid.js.map +1 -1
- package/dist/lib/components/Autocomplete.js +2 -2
- package/dist/lib/components/Autocomplete.js.map +1 -1
- package/dist/lib/components/Banner.js +2 -2
- package/dist/lib/components/Banner.js.map +1 -1
- package/dist/lib/components/CategoryHeading.js +1 -1
- package/dist/lib/components/CategoryHeading.js.map +1 -1
- package/dist/lib/components/ErrorPage.js +2 -2
- package/dist/lib/components/ErrorPage.js.map +1 -1
- package/dist/lib/components/Footer.js +1 -1
- package/dist/lib/components/Footer.js.map +1 -1
- package/dist/lib/components/Header.js +10 -10
- package/dist/lib/components/Header.js.map +1 -1
- package/dist/lib/components/Main.js +1 -1
- package/dist/lib/components/Markdown.d.ts +0 -1
- package/dist/lib/components/Markdown.js +2 -3
- package/dist/lib/components/Markdown.js.map +1 -1
- package/dist/lib/components/MobileTopNavigation.js +8 -5
- package/dist/lib/components/MobileTopNavigation.js.map +1 -1
- package/dist/lib/components/NotFoundPage.js +2 -2
- package/dist/lib/components/NotFoundPage.js.map +1 -1
- package/dist/lib/components/Pagination.js +1 -1
- package/dist/lib/components/Pagination.js.map +1 -1
- package/dist/lib/components/StatusPage.js +4 -0
- package/dist/lib/components/StatusPage.js.map +1 -1
- package/dist/lib/components/TopNavigation.d.ts +5 -0
- package/dist/lib/components/TopNavigation.js +16 -12
- package/dist/lib/components/TopNavigation.js.map +1 -1
- package/dist/lib/components/Typography.d.ts +5 -0
- package/dist/lib/components/Typography.js +8 -0
- package/dist/lib/components/Typography.js.map +1 -0
- package/dist/lib/components/index.d.ts +4 -0
- package/dist/lib/components/index.js +2 -0
- package/dist/lib/components/index.js.map +1 -1
- package/dist/lib/components/navigation/NavigationWrapper.js +2 -2
- package/dist/lib/components/navigation/NavigationWrapper.js.map +1 -1
- package/dist/lib/core/ZudokuContext.d.ts +7 -5
- package/dist/lib/core/ZudokuContext.js +16 -3
- package/dist/lib/core/ZudokuContext.js.map +1 -1
- package/dist/lib/errors/ErrorAlert.js +2 -3
- package/dist/lib/errors/ErrorAlert.js.map +1 -1
- package/dist/lib/hooks/useHotkey.d.ts +4 -0
- package/dist/lib/hooks/useHotkey.js +58 -0
- package/dist/lib/hooks/useHotkey.js.map +1 -0
- package/dist/lib/plugins/api-keys/SettingsApiKeys.js +8 -12
- package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
- package/dist/lib/plugins/api-keys/index.js +1 -1
- package/dist/lib/plugins/custom-pages/index.d.ts +1 -4
- package/dist/lib/plugins/custom-pages/index.js +1 -3
- package/dist/lib/plugins/custom-pages/index.js.map +1 -1
- package/dist/lib/plugins/markdown/MdxPage.js +5 -5
- package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationList.js +3 -3
- package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationListItem.js +2 -2
- package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/ParameterListItem.js +1 -1
- package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/SchemaList.js +2 -3
- package/dist/lib/plugins/openapi/SchemaList.js.map +1 -1
- package/dist/lib/plugins/openapi/Sidecar.js +1 -1
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
- package/dist/lib/plugins/openapi/SidecarExamples.js +1 -1
- package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
- package/dist/lib/plugins/openapi/index.js +1 -1
- package/dist/lib/plugins/openapi/index.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/BodyPanel.d.ts +2 -2
- package/dist/lib/plugins/openapi/playground/BodyPanel.js +16 -12
- package/dist/lib/plugins/openapi/playground/BodyPanel.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/CollapsibleHeader.d.ts +8 -0
- package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js +11 -0
- package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js +2 -2
- package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/Headers.d.ts +3 -2
- package/dist/lib/plugins/openapi/playground/Headers.js +52 -30
- package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/IdentityDialog.js +2 -1
- package/dist/lib/plugins/openapi/playground/IdentityDialog.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/IdentitySelector.js +1 -2
- package/dist/lib/plugins/openapi/playground/IdentitySelector.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/InlineInput.js +1 -1
- package/dist/lib/plugins/openapi/playground/InlineInput.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/ParamsGrid.js +2 -2
- package/dist/lib/plugins/openapi/playground/ParamsGrid.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/PathParams.js +1 -2
- package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/Playground.js +50 -35
- 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.d.ts +2 -2
- package/dist/lib/plugins/openapi/playground/QueryParams.js +38 -23
- package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/Spinner.d.ts +2 -0
- package/dist/lib/plugins/openapi/playground/Spinner.js +63 -0
- package/dist/lib/plugins/openapi/playground/Spinner.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/request-panel/UrlPath.d.ts +3 -0
- package/dist/lib/plugins/openapi/playground/request-panel/UrlPath.js +13 -0
- package/dist/lib/plugins/openapi/playground/request-panel/UrlPath.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.d.ts +1 -0
- package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js +12 -0
- package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/result-panel/Highlight.d.ts +12 -0
- package/dist/lib/plugins/openapi/playground/result-panel/Highlight.js +11 -0
- package/dist/lib/plugins/openapi/playground/result-panel/Highlight.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.d.ts +8 -0
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.js +69 -0
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.js.map +1 -0
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.d.ts +7 -4
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +25 -32
- package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
- package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.d.ts +4 -2
- package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js +8 -10
- package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js +3 -3
- package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js +2 -3
- package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaView.js +4 -4
- package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/utils.js +3 -2
- package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
- package/dist/lib/plugins/search-inkeep/index.d.ts +5 -22
- package/dist/lib/plugins/search-inkeep/index.js +35 -29
- package/dist/lib/plugins/search-inkeep/index.js.map +1 -1
- package/dist/lib/plugins/search-inkeep/inkeep.d.ts +5 -21
- package/dist/lib/plugins/search-inkeep/inkeep.js +10 -19
- package/dist/lib/plugins/search-inkeep/inkeep.js.map +1 -1
- package/dist/lib/plugins/search-pagefind/PagefindSearch.js +1 -1
- package/dist/lib/plugins/search-pagefind/PagefindSearch.js.map +1 -1
- package/dist/lib/plugins/search-pagefind/ResultList.d.ts +1 -1
- package/dist/lib/plugins/search-pagefind/ResultList.js +12 -5
- package/dist/lib/plugins/search-pagefind/ResultList.js.map +1 -1
- package/dist/lib/ui/Alert.d.ts +1 -1
- package/dist/lib/ui/CodeBlock.js +5 -6
- package/dist/lib/ui/CodeBlock.js.map +1 -1
- package/dist/lib/ui/Dialog.js +1 -1
- package/dist/lib/ui/Dialog.js.map +1 -1
- package/dist/lib/ui/EmbeddedCodeBlock.js +1 -1
- package/dist/lib/ui/EmbeddedCodeBlock.js.map +1 -1
- package/dist/lib/ui/Select.js +1 -1
- package/dist/lib/util/os.d.ts +2 -0
- package/dist/lib/util/os.js +21 -0
- package/dist/lib/util/os.js.map +1 -0
- package/dist/lib/util/useCopyToClipboard.d.ts +1 -0
- package/dist/lib/util/useCopyToClipboard.js +11 -0
- package/dist/lib/util/useCopyToClipboard.js.map +1 -0
- package/dist/vite/api/SchemaManager.js +6 -2
- package/dist/vite/api/SchemaManager.js.map +1 -1
- package/dist/vite/api/schema-codegen.js +42 -11
- package/dist/vite/api/schema-codegen.js.map +1 -1
- package/dist/vite/api/schema-codegen.test.js +82 -0
- package/dist/vite/api/schema-codegen.test.js.map +1 -1
- package/dist/vite/build.js +8 -2
- package/dist/vite/build.js.map +1 -1
- package/dist/vite/dev-server.js +10 -2
- package/dist/vite/dev-server.js.map +1 -1
- package/dist/vite/mdx/remark-last-modified.js +1 -28
- package/dist/vite/mdx/remark-last-modified.js.map +1 -1
- package/dist/vite/plugin-docs.js +11 -9
- package/dist/vite/plugin-docs.js.map +1 -1
- package/dist/vite/plugin-mdx.js +2 -3
- package/dist/vite/plugin-mdx.js.map +1 -1
- package/dist/vite/plugin-theme.js +91 -40
- package/dist/vite/plugin-theme.js.map +1 -1
- package/dist/vite/plugin-theme.test.js +47 -5
- package/dist/vite/plugin-theme.test.js.map +1 -1
- package/lib/Alert-_ISVjPaE.js +161 -0
- package/lib/Alert-_ISVjPaE.js.map +1 -0
- package/lib/{Button-BE9IVkWV.js → Button-B3o-2Xdf.js} +2 -2
- package/lib/{Button-BE9IVkWV.js.map → Button-B3o-2Xdf.js.map} +1 -1
- package/lib/CallbackHandler-CHrZoaQm.js +38 -0
- package/lib/CallbackHandler-CHrZoaQm.js.map +1 -0
- package/lib/{Card-DPhGbYUM.js → Card-CMDQUPM4.js} +2 -2
- package/lib/{Card-DPhGbYUM.js.map → Card-CMDQUPM4.js.map} +1 -1
- package/lib/ClientOnly-E7hGysn1.js.map +1 -1
- package/lib/CodeBlock-B-G0eKtw.js +85 -0
- package/lib/CodeBlock-B-G0eKtw.js.map +1 -0
- package/lib/Command-C9AC5cf-.js +140 -0
- package/lib/Command-C9AC5cf-.js.map +1 -0
- package/lib/{Dialog-BxpuVLh9.js → Dialog-DMWw1doX.js} +6 -6
- package/lib/Dialog-DMWw1doX.js.map +1 -0
- package/lib/{Drawer-BzkOKwgC.js → Drawer-DJ05s2pH.js} +86 -86
- package/lib/{Drawer-BzkOKwgC.js.map → Drawer-DJ05s2pH.js.map} +1 -1
- package/lib/MdxPage-CO_w2FI6.js +110 -0
- package/lib/MdxPage-CO_w2FI6.js.map +1 -0
- package/lib/{OasProvider-CUXXF3oj.js → OasProvider-BbVO6EgC.js} +3 -3
- package/lib/{OasProvider-CUXXF3oj.js.map → OasProvider-BbVO6EgC.js.map} +1 -1
- package/lib/{OperationList-P_vP7u7f.js → OperationList-Crvmqvd9.js} +726 -714
- package/lib/OperationList-Crvmqvd9.js.map +1 -0
- package/lib/{Pagination-tnJwvuLq.js → Pagination-Ct2YfjYl.js} +10 -9
- package/lib/Pagination-Ct2YfjYl.js.map +1 -0
- package/lib/RouteGuard-Vnlz_t51.js +737 -0
- package/lib/RouteGuard-Vnlz_t51.js.map +1 -0
- package/lib/{SchemaList-6GhTLPZt.js → SchemaList-DOYtqnab.js} +26 -37
- package/lib/SchemaList-DOYtqnab.js.map +1 -0
- package/lib/{SchemaView-DTIMiB_H.js → SchemaView-CyRfElaI.js} +94 -103
- package/lib/SchemaView-CyRfElaI.js.map +1 -0
- package/lib/SignUp-CcP8Tyfs.js +56 -0
- package/lib/SignUp-CcP8Tyfs.js.map +1 -0
- package/lib/{Markdown-BF7mJP8j.js → Slot-DqgTXQwt.js} +3359 -3002
- package/lib/Slot-DqgTXQwt.js.map +1 -0
- package/lib/Spinner-mNLZ6awP.js.map +1 -1
- package/lib/{SyntaxHighlight-C5ja40ix.js → SyntaxHighlight-bm761HDo.js} +756 -756
- package/lib/SyntaxHighlight-bm761HDo.js.map +1 -0
- package/lib/{Toc-BxYiZwxz.js → Toc-8NJ4k4Us.js} +3 -3
- package/lib/{Toc-BxYiZwxz.js.map → Toc-8NJ4k4Us.js.map} +1 -1
- package/lib/{chunk-DQRVZFIR-BblmKnHy.js → chunk-DQRVZFIR-DHK7_Ilc.js} +7 -7
- package/lib/{chunk-DQRVZFIR-BblmKnHy.js.map → chunk-DQRVZFIR-DHK7_Ilc.js.map} +1 -1
- package/lib/{circular-BBvOD6jV.js → circular-DZw_Mz7f.js} +2 -2
- package/lib/{circular-BBvOD6jV.js.map → circular-DZw_Mz7f.js.map} +1 -1
- package/lib/{cn-wvCW-ho6.js → cn-dYga0KKN.js} +2 -2
- package/lib/cn-dYga0KKN.js.map +1 -0
- package/lib/{createServer-CR5sbG6H.js → createServer-CQoCyFC1.js} +3398 -3552
- package/lib/createServer-CQoCyFC1.js.map +1 -0
- package/lib/errors-BfmB7Vsx.js +44 -0
- package/lib/errors-BfmB7Vsx.js.map +1 -0
- package/lib/{hook-CHXroBFt.js → hook-CZjW2buS.js} +423 -416
- package/lib/hook-CZjW2buS.js.map +1 -0
- package/lib/index-B3xY0rUq.js +3471 -0
- package/lib/index-B3xY0rUq.js.map +1 -0
- package/lib/index-BHBXOwle.js +3980 -0
- package/lib/index-BHBXOwle.js.map +1 -0
- package/lib/index-Bm35Tkgf.js +107 -0
- package/lib/index-Bm35Tkgf.js.map +1 -0
- package/lib/index-CrcNWbel.js.map +1 -1
- package/lib/{index-BvvmIczU.js → index-D-Vi7oy2.js} +2 -2
- package/lib/{index-BvvmIczU.js.map → index-D-Vi7oy2.js.map} +1 -1
- package/lib/index-DI5SPFK9.js.map +1 -1
- package/lib/index-DmNq2fbN.js.map +1 -1
- package/lib/index.esm-Cp4wkyud.js.map +1 -1
- package/lib/invariant-DAFpPywt.js.map +1 -1
- package/lib/jsx-runtime-C5mzlN2N.js.map +1 -1
- package/lib/processors/removeExtensions.js.map +1 -1
- package/lib/processors/removeParameters.js.map +1 -1
- package/lib/processors/removePaths.js.map +1 -1
- package/lib/processors/traverse.js.map +1 -1
- package/lib/ui/Accordion.js +1 -1
- package/lib/ui/Accordion.js.map +1 -1
- package/lib/ui/ActionButton.js +2 -2
- package/lib/ui/ActionButton.js.map +1 -1
- package/lib/ui/Alert.js +1 -1
- package/lib/ui/Alert.js.map +1 -1
- package/lib/ui/AlertDialog.js +1 -1
- package/lib/ui/AlertDialog.js.map +1 -1
- package/lib/ui/Badge.js +1 -1
- package/lib/ui/Badge.js.map +1 -1
- package/lib/ui/Breadcrumb.js +1 -1
- package/lib/ui/Breadcrumb.js.map +1 -1
- package/lib/ui/Button.js +1 -1
- package/lib/ui/Button.js.map +1 -1
- package/lib/ui/Callout.js +1 -1
- package/lib/ui/Callout.js.map +1 -1
- package/lib/ui/Card.js +1 -1
- package/lib/ui/Card.js.map +1 -1
- package/lib/ui/Carousel.js +1 -1
- package/lib/ui/Carousel.js.map +1 -1
- package/lib/ui/Checkbox.js +1 -1
- package/lib/ui/Checkbox.js.map +1 -1
- package/lib/ui/CodeBlock.js +6 -73
- package/lib/ui/CodeBlock.js.map +1 -1
- package/lib/ui/Command.js +2 -2
- package/lib/ui/Command.js.map +1 -1
- package/lib/ui/Dialog.js +24 -24
- package/lib/ui/Dialog.js.map +1 -1
- package/lib/ui/Drawer.js +2 -2
- package/lib/ui/DropdownMenu.js +1 -1
- package/lib/ui/DropdownMenu.js.map +1 -1
- package/lib/ui/EmbeddedCodeBlock.js +3 -3
- package/lib/ui/EmbeddedCodeBlock.js.map +1 -1
- package/lib/ui/Form.js +1 -1
- package/lib/ui/Form.js.map +1 -1
- package/lib/ui/HoverCard.js +1 -1
- package/lib/ui/HoverCard.js.map +1 -1
- package/lib/ui/Input.js +1 -1
- package/lib/ui/Input.js.map +1 -1
- package/lib/ui/Label.js +1 -1
- package/lib/ui/Label.js.map +1 -1
- package/lib/ui/Pagination.js +1 -1
- package/lib/ui/Pagination.js.map +1 -1
- package/lib/ui/Popover.js +1 -1
- package/lib/ui/Popover.js.map +1 -1
- package/lib/ui/Progress.js +1 -1
- package/lib/ui/Progress.js.map +1 -1
- package/lib/ui/RadioGroup.js +1 -1
- package/lib/ui/RadioGroup.js.map +1 -1
- package/lib/ui/ScrollArea.js +1 -1
- package/lib/ui/ScrollArea.js.map +1 -1
- package/lib/ui/Select.js +2 -2
- package/lib/ui/Select.js.map +1 -1
- package/lib/ui/Skeleton.js +1 -1
- package/lib/ui/Skeleton.js.map +1 -1
- package/lib/ui/Slider.js +1 -1
- package/lib/ui/Slider.js.map +1 -1
- package/lib/ui/Stepper.js.map +1 -1
- package/lib/ui/Switch.js +1 -1
- package/lib/ui/Switch.js.map +1 -1
- package/lib/ui/SyntaxHighlight.js +3 -3
- package/lib/ui/Tabs.js +1 -1
- package/lib/ui/Tabs.js.map +1 -1
- package/lib/ui/Textarea.js +1 -1
- package/lib/ui/Textarea.js.map +1 -1
- package/lib/ui/Toggle.js +1 -1
- package/lib/ui/Toggle.js.map +1 -1
- package/lib/ui/ToggleGroup.js +1 -1
- package/lib/ui/ToggleGroup.js.map +1 -1
- package/lib/ui/Tooltip.js +1 -1
- package/lib/ui/Tooltip.js.map +1 -1
- package/lib/ui/util.js +1 -1
- package/lib/{useExposedProps-BZQkZneR.js → useExposedProps-BIYjecPD.js} +2 -2
- package/lib/{useExposedProps-BZQkZneR.js.map → useExposedProps-BIYjecPD.js.map} +1 -1
- package/lib/zudoku.auth-auth0.js +1 -1
- package/lib/zudoku.auth-auth0.js.map +1 -1
- package/lib/zudoku.auth-azureb2c.js +40 -9885
- package/lib/zudoku.auth-azureb2c.js.map +1 -1
- package/lib/zudoku.auth-clerk.js +3 -3
- package/lib/zudoku.auth-clerk.js.map +1 -1
- package/lib/zudoku.auth-openid.js +131 -121
- package/lib/zudoku.auth-openid.js.map +1 -1
- package/lib/zudoku.auth-supabase.js +97 -0
- package/lib/zudoku.auth-supabase.js.map +1 -0
- package/lib/zudoku.components.js +33 -3534
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.hooks.js +10 -11
- package/lib/zudoku.hooks.js.map +1 -1
- package/lib/zudoku.icons.js.map +1 -1
- package/lib/zudoku.plugin-api-catalog.js +6 -6
- package/lib/zudoku.plugin-api-catalog.js.map +1 -1
- package/lib/zudoku.plugin-api-keys.js +128 -167
- package/lib/zudoku.plugin-api-keys.js.map +1 -1
- package/lib/zudoku.plugin-custom-pages.js +8 -20
- package/lib/zudoku.plugin-custom-pages.js.map +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-markdown.js.map +1 -1
- package/lib/zudoku.plugin-openapi.js +3 -3
- package/lib/zudoku.plugin-redirect.js +1 -1
- package/lib/zudoku.plugin-redirect.js.map +1 -1
- package/lib/zudoku.plugin-search-inkeep.js +54 -57
- package/lib/zudoku.plugin-search-inkeep.js.map +1 -1
- package/lib/zudoku.plugin-search-pagefind.js +211 -117
- package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
- package/lib/zudoku.plugins.js.map +1 -1
- package/package.json +31 -29
- package/src/app/demo.tsx +20 -3
- package/src/app/main.css +26 -5
- package/src/app/main.tsx +10 -18
- package/src/app/standalone.tsx +3 -3
- package/src/lib/authentication/authentication.ts +2 -2
- package/src/lib/authentication/components/SignIn.tsx +5 -12
- package/src/lib/authentication/providers/openid.tsx +23 -4
- package/src/lib/components/Autocomplete.tsx +2 -1
- package/src/lib/components/Banner.tsx +1 -2
- package/src/lib/components/CategoryHeading.tsx +4 -1
- package/src/lib/components/ErrorPage.tsx +3 -3
- package/src/lib/components/Footer.tsx +1 -1
- package/src/lib/components/Header.tsx +20 -19
- package/src/lib/components/Main.tsx +1 -1
- package/src/lib/components/Markdown.tsx +3 -5
- package/src/lib/components/MobileTopNavigation.tsx +58 -9
- package/src/lib/components/NotFoundPage.tsx +6 -5
- package/src/lib/components/Pagination.tsx +1 -0
- package/src/lib/components/StatusPage.tsx +5 -0
- package/src/lib/components/TopNavigation.tsx +30 -14
- package/src/lib/components/Typography.tsx +14 -0
- package/src/lib/components/index.ts +2 -0
- package/src/lib/components/navigation/NavigationWrapper.tsx +5 -2
- package/src/lib/core/ZudokuContext.ts +27 -5
- package/src/lib/errors/ErrorAlert.tsx +8 -16
- package/src/lib/hooks/useHotkey.ts +70 -0
- package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +18 -18
- package/src/lib/plugins/api-keys/index.tsx +1 -1
- package/src/lib/plugins/custom-pages/index.tsx +2 -6
- package/src/lib/plugins/markdown/MdxPage.tsx +7 -12
- package/src/lib/plugins/openapi/OperationList.tsx +11 -19
- package/src/lib/plugins/openapi/OperationListItem.tsx +2 -2
- package/src/lib/plugins/openapi/ParameterListItem.tsx +6 -0
- package/src/lib/plugins/openapi/SchemaList.tsx +3 -9
- package/src/lib/plugins/openapi/Sidecar.tsx +1 -1
- package/src/lib/plugins/openapi/SidecarExamples.tsx +2 -1
- package/src/lib/plugins/openapi/index.tsx +1 -1
- package/src/lib/plugins/openapi/playground/BodyPanel.tsx +40 -31
- package/src/lib/plugins/openapi/playground/CollapsibleHeader.tsx +47 -0
- package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +7 -3
- package/src/lib/plugins/openapi/playground/Headers.tsx +187 -89
- package/src/lib/plugins/openapi/playground/IdentityDialog.tsx +3 -2
- package/src/lib/plugins/openapi/playground/IdentitySelector.tsx +7 -12
- package/src/lib/plugins/openapi/playground/InlineInput.tsx +1 -1
- package/src/lib/plugins/openapi/playground/ParamsGrid.tsx +2 -2
- package/src/lib/plugins/openapi/playground/PathParams.tsx +5 -6
- package/src/lib/plugins/openapi/playground/Playground.tsx +181 -126
- package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +1 -1
- package/src/lib/plugins/openapi/playground/QueryParams.tsx +104 -58
- package/src/lib/plugins/openapi/playground/Spinner.tsx +87 -0
- package/src/lib/plugins/openapi/playground/request-panel/UrlPath.tsx +31 -0
- package/src/lib/plugins/openapi/playground/request-panel/UrlQueryParams.tsx +25 -0
- package/src/lib/plugins/openapi/playground/result-panel/Highlight.tsx +26 -0
- package/src/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.tsx +115 -0
- package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +103 -97
- package/src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx +68 -92
- package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +3 -3
- package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +2 -3
- package/src/lib/plugins/openapi/schema/SchemaView.tsx +5 -10
- package/src/lib/plugins/openapi/schema/utils.ts +3 -2
- package/src/lib/plugins/search-inkeep/index.tsx +54 -58
- package/src/lib/plugins/search-inkeep/inkeep.ts +19 -21
- package/src/lib/plugins/search-pagefind/PagefindSearch.tsx +1 -0
- package/src/lib/plugins/search-pagefind/ResultList.tsx +13 -4
- package/src/lib/ui/Alert.tsx +1 -1
- package/src/lib/ui/CodeBlock.tsx +5 -6
- package/src/lib/ui/Dialog.tsx +2 -2
- package/src/lib/ui/EmbeddedCodeBlock.tsx +2 -2
- package/src/lib/ui/Select.tsx +1 -1
- package/src/lib/util/os.ts +18 -0
- package/src/lib/util/useCopyToClipboard.ts +17 -0
- package/dist/lib/plugins/custom-pages/CustomPage.d.ts +0 -2
- package/dist/lib/plugins/custom-pages/CustomPage.js +0 -11
- package/dist/lib/plugins/custom-pages/CustomPage.js.map +0 -1
- package/dist/lib/plugins/openapi/playground/UrlDisplay.d.ts +0 -4
- package/dist/lib/plugins/openapi/playground/UrlDisplay.js +0 -22
- package/dist/lib/plugins/openapi/playground/UrlDisplay.js.map +0 -1
- package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.d.ts +0 -7
- package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.js +0 -11
- package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.js.map +0 -1
- package/lib/Callout-CoVxYafP.js +0 -231
- package/lib/Callout-CoVxYafP.js.map +0 -1
- package/lib/CategoryHeading-Cu2RwgjC.js +0 -10
- package/lib/CategoryHeading-Cu2RwgjC.js.map +0 -1
- package/lib/Dialog-BxpuVLh9.js.map +0 -1
- package/lib/Markdown-BF7mJP8j.js.map +0 -1
- package/lib/MdxPage-CJs98yjf.js +0 -121
- package/lib/MdxPage-CJs98yjf.js.map +0 -1
- package/lib/OperationList-P_vP7u7f.js.map +0 -1
- package/lib/Pagination-tnJwvuLq.js.map +0 -1
- package/lib/RouteGuard-gV7nvzi7.js +0 -55
- package/lib/RouteGuard-gV7nvzi7.js.map +0 -1
- package/lib/SchemaList-6GhTLPZt.js.map +0 -1
- package/lib/SchemaView-DTIMiB_H.js.map +0 -1
- package/lib/SignUp-B6w5AwHM.js +0 -63
- package/lib/SignUp-B6w5AwHM.js.map +0 -1
- package/lib/Slot-Di32B6gb.js +0 -161
- package/lib/Slot-Di32B6gb.js.map +0 -1
- package/lib/SyntaxHighlight-C5ja40ix.js.map +0 -1
- package/lib/clerk-BDZ31hjU.js +0 -25190
- package/lib/clerk-BDZ31hjU.js.map +0 -1
- package/lib/cn-wvCW-ho6.js.map +0 -1
- package/lib/createServer-CR5sbG6H.js.map +0 -1
- package/lib/errors-D_5vKvUq.js +0 -78
- package/lib/errors-D_5vKvUq.js.map +0 -1
- package/lib/hook-CHXroBFt.js.map +0 -1
- package/lib/index--oeBayMa.js +0 -86
- package/lib/index--oeBayMa.js.map +0 -1
- package/lib/index-Bn6Lc9tq.js +0 -9
- package/lib/index-Bn6Lc9tq.js.map +0 -1
- package/lib/index-DwJ9TXn0.js +0 -3227
- package/lib/index-DwJ9TXn0.js.map +0 -1
- package/lib/index-QzXzw_ra.js +0 -24
- package/lib/index-QzXzw_ra.js.map +0 -1
- package/lib/index.esm-BFcSKCe-.js +0 -683
- package/lib/index.esm-BFcSKCe-.js.map +0 -1
- package/lib/mutation-BpcyTgWI.js +0 -196
- package/lib/mutation-BpcyTgWI.js.map +0 -1
- package/lib/objectEntries-yMIkr2mI.js +0 -5
- package/lib/objectEntries-yMIkr2mI.js.map +0 -1
- package/lib/react-nprogress.esm-C2MPXjiJ.js +0 -389
- package/lib/react-nprogress.esm-C2MPXjiJ.js.map +0 -1
- package/lib/useLatest-hmRS46UF.js +0 -11
- package/lib/useLatest-hmRS46UF.js.map +0 -1
- package/lib/useMutation-N4ockVKi.js +0 -97
- package/lib/useMutation-N4ockVKi.js.map +0 -1
- package/src/lib/plugins/custom-pages/CustomPage.tsx +0 -18
- package/src/lib/plugins/openapi/playground/UrlDisplay.tsx +0 -32
- package/src/lib/plugins/openapi/playground/result-panel/RequestTab.tsx +0 -73
|
@@ -1,122 +1,98 @@
|
|
|
1
1
|
import { type UseMutationResult } from "@tanstack/react-query";
|
|
2
|
-
import {
|
|
2
|
+
import { SendIcon, UnplugIcon } from "lucide-react";
|
|
3
|
+
import { Spinner } from "zudoku/components";
|
|
4
|
+
import { Alert, AlertDescription, AlertTitle } from "zudoku/ui/Alert.js";
|
|
3
5
|
import { Button } from "../../../../ui/Button.js";
|
|
4
|
-
import { Callout } from "../../../../ui/Callout.js";
|
|
5
|
-
import {
|
|
6
|
-
Card,
|
|
7
|
-
CardContent,
|
|
8
|
-
CardHeader,
|
|
9
|
-
CardTitle,
|
|
10
|
-
} from "../../../../ui/Card.js";
|
|
11
|
-
import {
|
|
12
|
-
Tabs,
|
|
13
|
-
TabsContent,
|
|
14
|
-
TabsList,
|
|
15
|
-
TabsTrigger,
|
|
16
|
-
} from "../../../../ui/Tabs.js";
|
|
17
6
|
import { cn } from "../../../../util/cn.js";
|
|
18
7
|
import { type PlaygroundResult } from "../Playground.js";
|
|
19
|
-
import
|
|
8
|
+
import ResponseStatusBar from "./ResponseStatusBar.js";
|
|
20
9
|
import { ResponseTab } from "./ResponseTab.js";
|
|
21
10
|
|
|
22
11
|
export const ResultPanel = ({
|
|
23
12
|
queryMutation,
|
|
24
|
-
showPathParamsWarning,
|
|
25
13
|
showLongRunningWarning,
|
|
26
14
|
onCancel,
|
|
15
|
+
tip,
|
|
16
|
+
isFinished,
|
|
17
|
+
progress,
|
|
27
18
|
}: {
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
20
|
queryMutation: UseMutationResult<PlaygroundResult, Error, any>;
|
|
29
|
-
showPathParamsWarning: boolean;
|
|
30
21
|
showLongRunningWarning?: boolean;
|
|
31
22
|
onCancel?: () => void;
|
|
23
|
+
isFinished: boolean;
|
|
24
|
+
progress: number;
|
|
25
|
+
tip?: React.ReactNode;
|
|
32
26
|
}) => {
|
|
33
|
-
const status = ((queryMutation.data?.status ?? 0) / 100).toFixed(0);
|
|
34
27
|
return (
|
|
35
|
-
<div className="
|
|
28
|
+
<div className="overflow-y-auto h-[80vh] bg-muted/50">
|
|
29
|
+
{(queryMutation.isPending || queryMutation.data) && (
|
|
30
|
+
<ResponseStatusBar
|
|
31
|
+
status={queryMutation.data?.status}
|
|
32
|
+
time={queryMutation.data?.time}
|
|
33
|
+
size={queryMutation.data?.size}
|
|
34
|
+
isFinished={isFinished}
|
|
35
|
+
progress={progress}
|
|
36
|
+
/>
|
|
37
|
+
)}
|
|
36
38
|
{queryMutation.error ? (
|
|
37
|
-
<div className="
|
|
38
|
-
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
</Callout>
|
|
43
|
-
)}
|
|
44
|
-
<Card>
|
|
45
|
-
<CardHeader>
|
|
46
|
-
<CardTitle>Request failed</CardTitle>
|
|
47
|
-
</CardHeader>
|
|
48
|
-
<CardContent>
|
|
49
|
-
Error:{" "}
|
|
39
|
+
<div className="max-w-2/3 mx-auto mt-20">
|
|
40
|
+
<Alert>
|
|
41
|
+
<UnplugIcon size={24} strokeWidth={1.5} className="me-5" />
|
|
42
|
+
<AlertTitle>Request failed</AlertTitle>
|
|
43
|
+
<AlertDescription>
|
|
50
44
|
{queryMutation.error.message ||
|
|
51
45
|
String(queryMutation.error) ||
|
|
52
46
|
"Unexpected error"}
|
|
53
|
-
</
|
|
54
|
-
</
|
|
47
|
+
</AlertDescription>
|
|
48
|
+
</Alert>
|
|
55
49
|
</div>
|
|
56
50
|
) : queryMutation.data ? (
|
|
57
|
-
<
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
status === "4" && "text-yellow-500",
|
|
68
|
-
status === "5" && "text-red-500",
|
|
69
|
-
)}
|
|
70
|
-
>
|
|
71
|
-
({queryMutation.data.status})
|
|
72
|
-
</span>
|
|
73
|
-
</TabsTrigger>
|
|
74
|
-
</TabsList>
|
|
75
|
-
<TabsContent value="request">
|
|
76
|
-
<RequestTab {...queryMutation.data.request} />
|
|
77
|
-
</TabsContent>
|
|
78
|
-
<TabsContent value="response">
|
|
79
|
-
<ResponseTab
|
|
80
|
-
status={queryMutation.data.status}
|
|
81
|
-
time={queryMutation.data.time}
|
|
82
|
-
size={queryMutation.data.size}
|
|
83
|
-
headers={queryMutation.data.headers}
|
|
84
|
-
body={queryMutation.data.body}
|
|
85
|
-
url={queryMutation.data.request.url}
|
|
86
|
-
isBinary={queryMutation.data.isBinary}
|
|
87
|
-
fileName={queryMutation.data.fileName}
|
|
88
|
-
blob={queryMutation.data.blob}
|
|
89
|
-
/>
|
|
90
|
-
</TabsContent>
|
|
91
|
-
</Tabs>
|
|
92
|
-
) : (
|
|
51
|
+
<ResponseTab
|
|
52
|
+
request={queryMutation.data.request}
|
|
53
|
+
size={queryMutation.data.size}
|
|
54
|
+
headers={queryMutation.data.headers}
|
|
55
|
+
body={queryMutation.data.body}
|
|
56
|
+
isBinary={queryMutation.data.isBinary}
|
|
57
|
+
fileName={queryMutation.data.fileName}
|
|
58
|
+
blob={queryMutation.data.blob}
|
|
59
|
+
/>
|
|
60
|
+
) : queryMutation.isPending ? (
|
|
93
61
|
<div className="grid place-items-center h-full">
|
|
94
|
-
|
|
95
|
-
<
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
62
|
+
<div className="flex flex-col gap-2 items-center mt-20">
|
|
63
|
+
<Spinner />
|
|
64
|
+
<div
|
|
65
|
+
className={cn(
|
|
66
|
+
"opacity-0 pointer-events-none transition-opacity h-20 text-sm text-muted-foreground duration-300 flex flex-col gap-2 items-center",
|
|
67
|
+
showLongRunningWarning && "opacity-100 pointer-events-auto",
|
|
68
|
+
)}
|
|
69
|
+
>
|
|
70
|
+
Looks like the request is taking longer than expected.
|
|
71
|
+
<Button
|
|
72
|
+
type="button"
|
|
73
|
+
onClick={onCancel}
|
|
74
|
+
size="sm"
|
|
75
|
+
className="w-fit"
|
|
76
|
+
variant="outline"
|
|
102
77
|
>
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
type="button"
|
|
106
|
-
onClick={onCancel}
|
|
107
|
-
size="sm"
|
|
108
|
-
className="w-fit"
|
|
109
|
-
variant="outline"
|
|
110
|
-
>
|
|
111
|
-
Cancel
|
|
112
|
-
</Button>
|
|
113
|
-
</div>
|
|
78
|
+
Cancel
|
|
79
|
+
</Button>
|
|
114
80
|
</div>
|
|
115
|
-
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
) : (
|
|
84
|
+
<div className="h-full grid place-items-center">
|
|
85
|
+
<div className="flex flex-col gap-4 items-center">
|
|
86
|
+
<SendIcon
|
|
87
|
+
size={64}
|
|
88
|
+
className="text-muted-foreground"
|
|
89
|
+
strokeWidth={1.2}
|
|
90
|
+
/>
|
|
116
91
|
<span className="text-[16px] font-semibold text-muted-foreground">
|
|
117
|
-
Send
|
|
92
|
+
Send your first request
|
|
118
93
|
</span>
|
|
119
|
-
|
|
94
|
+
{tip}
|
|
95
|
+
</div>
|
|
120
96
|
</div>
|
|
121
97
|
)}
|
|
122
98
|
</div>
|
|
@@ -9,11 +9,11 @@ export const SchemaExampleAndDefault = ({
|
|
|
9
9
|
const example = schema.examples?.at(0);
|
|
10
10
|
const defaultValue = schema.default;
|
|
11
11
|
|
|
12
|
-
if (
|
|
12
|
+
if (example === undefined && defaultValue === undefined) return null;
|
|
13
13
|
|
|
14
14
|
return (
|
|
15
15
|
<div className="flex flex-col gap-1 text-xs">
|
|
16
|
-
{example && (
|
|
16
|
+
{example !== undefined && (
|
|
17
17
|
<div>
|
|
18
18
|
<span className="text-muted-foreground">Example: </span>
|
|
19
19
|
<SelectOnClick className="border rounded-sm px-1 font-mono">
|
|
@@ -23,7 +23,7 @@ export const SchemaExampleAndDefault = ({
|
|
|
23
23
|
</SelectOnClick>
|
|
24
24
|
</div>
|
|
25
25
|
)}
|
|
26
|
-
{defaultValue && (
|
|
26
|
+
{defaultValue !== undefined && (
|
|
27
27
|
<div>
|
|
28
28
|
<span className="text-muted-foreground">Default: </span>
|
|
29
29
|
<SelectOnClick className="border rounded-sm px-1 font-mono">
|
|
@@ -2,10 +2,9 @@ import * as Collapsible from "@radix-ui/react-collapsible";
|
|
|
2
2
|
import { MinusIcon, PlusIcon, RefreshCcwDotIcon } from "lucide-react";
|
|
3
3
|
import { useCallback, useState } from "react";
|
|
4
4
|
import { InlineCode } from "../../../components/InlineCode.js";
|
|
5
|
-
import { Markdown
|
|
5
|
+
import { Markdown } from "../../../components/Markdown.js";
|
|
6
6
|
import type { SchemaObject } from "../../../oas/parser/index.js";
|
|
7
7
|
import { Button } from "../../../ui/Button.js";
|
|
8
|
-
import { cn } from "../../../util/cn.js";
|
|
9
8
|
import { objectEntries } from "../../../util/objectEntries.js";
|
|
10
9
|
import { ConstValue } from "../components/ConstValue.js";
|
|
11
10
|
import { EnumValues } from "../components/EnumValues.js";
|
|
@@ -117,7 +116,7 @@ export const SchemaPropertyItem = ({
|
|
|
117
116
|
</div>
|
|
118
117
|
{schema.description && (
|
|
119
118
|
<Markdown
|
|
120
|
-
className=
|
|
119
|
+
className="text-sm leading-normal"
|
|
121
120
|
content={schema.description}
|
|
122
121
|
/>
|
|
123
122
|
)}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { InfoIcon } from "lucide-react";
|
|
2
|
-
import { Markdown
|
|
2
|
+
import { Markdown } from "../../../components/Markdown.js";
|
|
3
|
+
import { Typography } from "../../../components/Typography.js";
|
|
3
4
|
import type { SchemaObject } from "../../../oas/parser/index.js";
|
|
4
5
|
import { Card } from "../../../ui/Card.js";
|
|
5
|
-
import { cn } from "../../../util/cn.js";
|
|
6
6
|
import { groupBy } from "../../../util/groupBy.js";
|
|
7
7
|
import { ConstValue } from "../components/ConstValue.js";
|
|
8
8
|
import { EnumValues } from "../components/EnumValues.js";
|
|
@@ -17,7 +17,7 @@ import { hasLogicalGroupings, isBasicType } from "./utils.js";
|
|
|
17
17
|
const renderMarkdown = (content?: string) =>
|
|
18
18
|
content && (
|
|
19
19
|
<Markdown
|
|
20
|
-
className=
|
|
20
|
+
className="text-sm leading-normal line-clamp-4"
|
|
21
21
|
content={content}
|
|
22
22
|
/>
|
|
23
23
|
);
|
|
@@ -86,12 +86,7 @@ export const SchemaView = ({
|
|
|
86
86
|
typeof schema.additionalProperties === "object" ? (
|
|
87
87
|
<SchemaView schema={schema.additionalProperties} />
|
|
88
88
|
) : schema.additionalProperties === true ? (
|
|
89
|
-
<
|
|
90
|
-
className={cn(
|
|
91
|
-
ProseClasses,
|
|
92
|
-
"text-sm p-4 bg-border/20 hover:bg-border/30 flex items-center gap-1",
|
|
93
|
-
)}
|
|
94
|
-
>
|
|
89
|
+
<Typography className="text-sm p-4 bg-border/20 hover:bg-border/30 flex items-center gap-1">
|
|
95
90
|
<span>Additional properties are allowed</span>
|
|
96
91
|
<a
|
|
97
92
|
className="p-0.5 -m-0.5"
|
|
@@ -101,7 +96,7 @@ export const SchemaView = ({
|
|
|
101
96
|
>
|
|
102
97
|
<InfoIcon size={14} />
|
|
103
98
|
</a>
|
|
104
|
-
</
|
|
99
|
+
</Typography>
|
|
105
100
|
) : null;
|
|
106
101
|
|
|
107
102
|
return (
|
|
@@ -4,8 +4,9 @@ import type { SchemaObject } from "../../../oas/parser/index.js";
|
|
|
4
4
|
export const isBasicType = (
|
|
5
5
|
type: unknown,
|
|
6
6
|
): type is "string" | "number" | "boolean" | "integer" | "null" =>
|
|
7
|
-
typeof type === "string" &&
|
|
8
|
-
|
|
7
|
+
(typeof type === "string" &&
|
|
8
|
+
["string", "number", "boolean", "integer", "null"].includes(type)) ||
|
|
9
|
+
(Array.isArray(type) && type.every(isBasicType));
|
|
9
10
|
|
|
10
11
|
export const isArrayType = (value: SchemaObject) =>
|
|
11
12
|
value.type === "array" ||
|
|
@@ -1,102 +1,98 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type {
|
|
2
|
+
InkeepBaseSettings,
|
|
3
|
+
InkeepComponentInstance,
|
|
4
|
+
InkeepJS,
|
|
5
|
+
InkeepSettings,
|
|
6
|
+
} from "@inkeep/cxkit-types";
|
|
7
|
+
import { useEffect, useMemo, useState } from "react";
|
|
2
8
|
import { ClientOnly } from "../../components/ClientOnly.js";
|
|
3
9
|
import type { ZudokuPlugin } from "../../core/plugins.js";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
organizationDisplayName?: string;
|
|
11
|
-
primaryBrandColor: string;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
interface InkeepEmbedConfig {
|
|
15
|
-
componentType: string;
|
|
16
|
-
targetElement: HTMLElement;
|
|
17
|
-
properties: unknown;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
interface InkeepWidget {
|
|
21
|
-
render: (config: InkeepEmbedConfig & { isOpen: boolean }) => void;
|
|
22
|
-
}
|
|
10
|
+
import {
|
|
11
|
+
aiChatSettings,
|
|
12
|
+
baseSettings,
|
|
13
|
+
modalSettings,
|
|
14
|
+
searchSettings,
|
|
15
|
+
} from "./inkeep.js";
|
|
23
16
|
|
|
24
17
|
declare global {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
18
|
+
interface Window {
|
|
19
|
+
Inkeep: InkeepJS | undefined;
|
|
20
|
+
}
|
|
28
21
|
}
|
|
29
22
|
|
|
30
23
|
const InkeepSearch = ({
|
|
31
|
-
prefilledQuery,
|
|
32
24
|
isOpen,
|
|
33
25
|
onClose,
|
|
34
26
|
settings,
|
|
35
27
|
}: {
|
|
36
28
|
isOpen: boolean;
|
|
37
29
|
onClose: () => void;
|
|
38
|
-
|
|
39
|
-
settings: PluginInkeepBaseSettings;
|
|
30
|
+
settings: InkeepBaseSettings;
|
|
40
31
|
}) => {
|
|
41
|
-
const
|
|
42
|
-
const widgetRef = useRef<InkeepWidget | null>(null);
|
|
43
|
-
const [isInkeepAvailable, setIsInkeepAvailable] = useState(
|
|
44
|
-
typeof Inkeep !== "undefined",
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
const config: InkeepEmbedConfig = useMemo(
|
|
32
|
+
const config = useMemo<InkeepSettings>(
|
|
48
33
|
() => ({
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
34
|
+
baseSettings: {
|
|
35
|
+
...baseSettings,
|
|
36
|
+
...settings,
|
|
37
|
+
colorMode: {
|
|
38
|
+
sync: {
|
|
39
|
+
target: "html",
|
|
40
|
+
attributes: ["class"],
|
|
41
|
+
isDarkMode: (attrs) => attrs["class"]?.includes("dark") ?? false,
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
modalSettings: {
|
|
46
|
+
...modalSettings,
|
|
47
|
+
onOpenChange: (newOpen: boolean) => {
|
|
48
|
+
if (!newOpen) onClose();
|
|
58
49
|
},
|
|
59
|
-
aiChatSettings,
|
|
60
50
|
},
|
|
51
|
+
searchSettings,
|
|
52
|
+
aiChatSettings,
|
|
61
53
|
}),
|
|
62
|
-
[
|
|
54
|
+
[onClose, settings],
|
|
55
|
+
);
|
|
56
|
+
const [searchInstance, setSearchInstance] = useState<
|
|
57
|
+
InkeepComponentInstance | undefined
|
|
58
|
+
>(
|
|
59
|
+
typeof window !== "undefined" && window.Inkeep?.ModalSearchAndChat
|
|
60
|
+
? window.Inkeep.ModalSearchAndChat(config)!
|
|
61
|
+
: undefined,
|
|
63
62
|
);
|
|
64
63
|
|
|
65
64
|
useEffect(() => {
|
|
66
|
-
if (
|
|
65
|
+
if (searchInstance) return;
|
|
67
66
|
|
|
68
67
|
const checkInkeep = setInterval(() => {
|
|
69
|
-
if (typeof
|
|
70
|
-
|
|
68
|
+
if (typeof window !== "undefined" && window.Inkeep?.ModalSearchAndChat) {
|
|
69
|
+
const inkeep = window.Inkeep.ModalSearchAndChat(config)!;
|
|
70
|
+
setSearchInstance(inkeep);
|
|
71
71
|
clearInterval(checkInkeep);
|
|
72
72
|
}
|
|
73
73
|
}, 100);
|
|
74
74
|
|
|
75
75
|
return () => clearInterval(checkInkeep);
|
|
76
|
-
}, [
|
|
76
|
+
}, [config, searchInstance]);
|
|
77
77
|
|
|
78
78
|
useEffect(() => {
|
|
79
|
-
if (!
|
|
80
|
-
|
|
81
|
-
widgetRef.current = Inkeep().embed(config);
|
|
82
|
-
}, [config, isInkeepAvailable]);
|
|
79
|
+
if (!searchInstance) return;
|
|
83
80
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}, [config, isOpen]);
|
|
81
|
+
searchInstance.update({ modalSettings: { isOpen } });
|
|
82
|
+
}, [isOpen, searchInstance]);
|
|
87
83
|
|
|
88
|
-
return
|
|
84
|
+
return null;
|
|
89
85
|
};
|
|
90
86
|
|
|
91
87
|
export const inkeepSearchPlugin = (
|
|
92
|
-
settings:
|
|
88
|
+
settings: InkeepBaseSettings,
|
|
93
89
|
): ZudokuPlugin => {
|
|
94
90
|
return {
|
|
95
91
|
getHead: () => {
|
|
96
92
|
return (
|
|
97
93
|
<script
|
|
98
94
|
type="module"
|
|
99
|
-
src="https://
|
|
95
|
+
src="https://cdn.jsdelivr.net/npm/@inkeep/cxkit-js@0.5.90/+esm"
|
|
100
96
|
defer
|
|
101
97
|
/>
|
|
102
98
|
);
|
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
variant: "no-shadow",
|
|
8
|
-
},
|
|
9
|
-
},
|
|
10
|
-
SearchBarTrigger: {
|
|
11
|
-
defaultProps: {
|
|
12
|
-
size: "expand",
|
|
13
|
-
variant: "subtle", // Choose from 'emphasized' or 'subtle'
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
} as const;
|
|
1
|
+
import type {
|
|
2
|
+
InkeepAIChatSettings,
|
|
3
|
+
InkeepBaseSettings,
|
|
4
|
+
InkeepModalSettings,
|
|
5
|
+
InkeepSearchSettings,
|
|
6
|
+
} from "@inkeep/cxkit-types";
|
|
19
7
|
|
|
20
|
-
const
|
|
8
|
+
const baseSettings: InkeepBaseSettings = {
|
|
9
|
+
primaryBrandColor: "#26D6FF",
|
|
10
|
+
};
|
|
21
11
|
|
|
22
|
-
const
|
|
12
|
+
const modalSettings: InkeepModalSettings = {
|
|
13
|
+
shortcutKey: "k",
|
|
14
|
+
};
|
|
23
15
|
|
|
24
|
-
const
|
|
16
|
+
const searchSettings: InkeepSearchSettings = {
|
|
17
|
+
placeholder: "Search...",
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const aiChatSettings: InkeepAIChatSettings = {
|
|
21
|
+
aiAssistantName: "Assistant",
|
|
22
|
+
};
|
|
25
23
|
|
|
26
24
|
export { aiChatSettings, baseSettings, modalSettings, searchSettings };
|
|
@@ -2,6 +2,7 @@ import { BracketsIcon, FileTextIcon } from "lucide-react";
|
|
|
2
2
|
import { useLayoutEffect, useRef } from "react";
|
|
3
3
|
import { Link, useNavigate } from "react-router";
|
|
4
4
|
import { CommandGroup, CommandItem, CommandList } from "zudoku/ui/Command.js";
|
|
5
|
+
import { joinUrl } from "../../util/joinUrl.js";
|
|
5
6
|
import {
|
|
6
7
|
type PagefindSearchFragment,
|
|
7
8
|
type PagefindSubResult,
|
|
@@ -22,6 +23,7 @@ const sortSubResults = (a: PagefindSubResult, b: PagefindSubResult) => {
|
|
|
22
23
|
const hoverClassname = `cursor-pointer border border-transparent data-[selected=true]:border-border`;
|
|
23
24
|
|
|
24
25
|
export const ResultList = ({
|
|
26
|
+
basePath,
|
|
25
27
|
searchResults,
|
|
26
28
|
searchTerm,
|
|
27
29
|
onClose,
|
|
@@ -42,6 +44,13 @@ export const ResultList = ({
|
|
|
42
44
|
});
|
|
43
45
|
}, [searchTerm]);
|
|
44
46
|
|
|
47
|
+
const stripBasePath = (url: string) => {
|
|
48
|
+
if (basePath && url.startsWith(basePath)) {
|
|
49
|
+
return joinUrl(url.slice(basePath.length));
|
|
50
|
+
}
|
|
51
|
+
return url;
|
|
52
|
+
};
|
|
53
|
+
|
|
45
54
|
return (
|
|
46
55
|
<CommandList className="max-h-[450px]" ref={commandListRef}>
|
|
47
56
|
{searchTerm && searchResults.length > 0 && (
|
|
@@ -60,11 +69,11 @@ export const ResultList = ({
|
|
|
60
69
|
value={`${result.meta.title}-${result.url}`}
|
|
61
70
|
className={hoverClassname}
|
|
62
71
|
onSelect={() => {
|
|
63
|
-
void navigate(result.url);
|
|
72
|
+
void navigate(stripBasePath(result.url));
|
|
64
73
|
onClose();
|
|
65
74
|
}}
|
|
66
75
|
>
|
|
67
|
-
<Link to={result.url}>
|
|
76
|
+
<Link to={stripBasePath(result.url)}>
|
|
68
77
|
{result.meta.section === "openapi" ? (
|
|
69
78
|
<BracketsIcon />
|
|
70
79
|
) : (
|
|
@@ -83,11 +92,11 @@ export const ResultList = ({
|
|
|
83
92
|
value={`sub-${result.meta.title}-${subResult.url}`}
|
|
84
93
|
className={hoverClassname}
|
|
85
94
|
onSelect={() => {
|
|
86
|
-
void navigate(subResult.url);
|
|
95
|
+
void navigate(stripBasePath(subResult.url));
|
|
87
96
|
onClose();
|
|
88
97
|
}}
|
|
89
98
|
>
|
|
90
|
-
<Link to={subResult.url} onClick={onClose}>
|
|
99
|
+
<Link to={stripBasePath(subResult.url)} onClick={onClose}>
|
|
91
100
|
<div className="flex flex-col items-start gap-2 ms-2.5 ps-5 border-l border-muted-foreground/50">
|
|
92
101
|
<span className="font-bold">{subResult.title}</span>
|
|
93
102
|
<span
|
package/src/lib/ui/Alert.tsx
CHANGED
package/src/lib/ui/CodeBlock.tsx
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { CheckIcon, CopyIcon } from "lucide-react";
|
|
2
2
|
import type { ReactNode } from "react";
|
|
3
|
-
import { useRef
|
|
3
|
+
import { useRef } from "react";
|
|
4
4
|
import { cn } from "../util/cn.js";
|
|
5
|
+
import { useCopyToClipboard } from "../util/useCopyToClipboard.js";
|
|
5
6
|
|
|
6
7
|
export type CodeBlockProps = {
|
|
7
8
|
className?: string;
|
|
@@ -26,7 +27,7 @@ export const CodeBlock = ({
|
|
|
26
27
|
showLineNumbers,
|
|
27
28
|
...props
|
|
28
29
|
}: CodeBlockProps) => {
|
|
29
|
-
const [isCopied,
|
|
30
|
+
const [isCopied, copyToClipboard] = useCopyToClipboard();
|
|
30
31
|
const ref = useRef<HTMLDivElement>(null);
|
|
31
32
|
|
|
32
33
|
if (!children) return null;
|
|
@@ -57,9 +58,7 @@ export const CodeBlock = ({
|
|
|
57
58
|
onClick={() => {
|
|
58
59
|
if (!ref.current?.textContent) return;
|
|
59
60
|
|
|
60
|
-
|
|
61
|
-
void navigator.clipboard.writeText(ref.current.textContent);
|
|
62
|
-
setTimeout(() => setIsCopied(false), 2000);
|
|
61
|
+
copyToClipboard(ref.current.textContent);
|
|
63
62
|
}}
|
|
64
63
|
>
|
|
65
64
|
{isCopied ? (
|
|
@@ -77,7 +76,7 @@ export const CodeBlock = ({
|
|
|
77
76
|
</div>
|
|
78
77
|
<div
|
|
79
78
|
className={cn(
|
|
80
|
-
"code-block text-sm not-prose scrollbar overflow-x-auto scrollbar p-4",
|
|
79
|
+
"code-block text-sm not-prose scrollbar overflow-x-auto scrollbar [&>code]:p-4",
|
|
81
80
|
props.className,
|
|
82
81
|
)}
|
|
83
82
|
ref={ref}
|
package/src/lib/ui/Dialog.tsx
CHANGED
|
@@ -45,8 +45,8 @@ const DialogContent = React.forwardRef<
|
|
|
45
45
|
>
|
|
46
46
|
{children}
|
|
47
47
|
{showCloseButton && (
|
|
48
|
-
<DialogPrimitive.Close className="absolute
|
|
49
|
-
<XIcon className="h-
|
|
48
|
+
<DialogPrimitive.Close className="absolute left-1 top-1 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground">
|
|
49
|
+
<XIcon className="h-3 w-3" strokeWidth={2} />
|
|
50
50
|
<span className="sr-only">Close</span>
|
|
51
51
|
</DialogPrimitive.Close>
|
|
52
52
|
)}
|
|
@@ -34,13 +34,13 @@ export const EmbeddedCodeBlock = ({
|
|
|
34
34
|
return (
|
|
35
35
|
<div
|
|
36
36
|
className={cn(
|
|
37
|
-
"code-block-wrapper relative group bg-muted/50
|
|
37
|
+
"code-block-wrapper relative group bg-muted/50",
|
|
38
38
|
showLineNumbers && "line-numbers",
|
|
39
39
|
)}
|
|
40
40
|
>
|
|
41
41
|
<div
|
|
42
42
|
className={cn(
|
|
43
|
-
"code-block text-sm not-prose scrollbar overflow-x-auto scrollbar p-4",
|
|
43
|
+
"code-block text-sm not-prose scrollbar overflow-x-auto scrollbar [&>pre]:p-4",
|
|
44
44
|
props.className,
|
|
45
45
|
)}
|
|
46
46
|
ref={ref}
|
package/src/lib/ui/Select.tsx
CHANGED
|
@@ -16,7 +16,7 @@ const SelectTrigger = React.forwardRef<
|
|
|
16
16
|
<SelectPrimitive.Trigger
|
|
17
17
|
ref={ref}
|
|
18
18
|
className={cn(
|
|
19
|
-
"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-hidden focus:ring-
|
|
19
|
+
"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-hidden focus:ring-1 focus:ring-ring focus:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-50",
|
|
20
20
|
className,
|
|
21
21
|
)}
|
|
22
22
|
{...props}
|