zudoku 0.0.0-fix-firebase-export.f8270825 → 0.0.0-fix-circular-ref-false-positives.zbe02c6a6
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/dist/app/main.d.ts +6 -6
- package/dist/cli/common/version-check.js +12 -3
- package/dist/cli/common/version-check.js.map +1 -1
- package/dist/config/loader.js +3 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/config/validators/InputNavigationSchema.d.ts +77 -75
- package/dist/config/validators/InputNavigationSchema.js +1 -0
- package/dist/config/validators/InputNavigationSchema.js.map +1 -1
- package/dist/config/validators/NavigationSchema.js +6 -1
- package/dist/config/validators/NavigationSchema.js.map +1 -1
- package/dist/config/validators/validate.d.ts +59 -12
- package/dist/config/validators/validate.js +7 -4
- package/dist/config/validators/validate.js.map +1 -1
- package/dist/flat-config.d.ts +28 -26
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/auth/issuer.js +1 -1
- package/dist/lib/auth/issuer.js.map +1 -1
- package/dist/lib/authentication/authentication.d.ts +3 -2
- 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 +4 -2
- package/dist/lib/authentication/components/SignIn.js.map +1 -1
- package/dist/lib/authentication/components/SignUp.js +4 -2
- package/dist/lib/authentication/components/SignUp.js.map +1 -1
- package/dist/lib/authentication/hook.d.ts +2 -0
- package/dist/lib/authentication/hook.js +10 -0
- package/dist/lib/authentication/hook.js.map +1 -1
- package/dist/lib/authentication/providers/auth0.js +11 -7
- package/dist/lib/authentication/providers/auth0.js.map +1 -1
- package/dist/lib/authentication/providers/clerk.js +0 -22
- package/dist/lib/authentication/providers/clerk.js.map +1 -1
- package/dist/lib/authentication/providers/firebase.js +67 -9
- package/dist/lib/authentication/providers/firebase.js.map +1 -1
- package/dist/lib/authentication/providers/supabase.js +6 -15
- package/dist/lib/authentication/providers/supabase.js.map +1 -1
- package/dist/lib/authentication/ui/EmailVerificationUi.d.ts +4 -0
- package/dist/lib/authentication/ui/EmailVerificationUi.js +34 -0
- package/dist/lib/authentication/ui/EmailVerificationUi.js.map +1 -0
- package/dist/lib/authentication/ui/ZudokuAuthUi.d.ts +7 -2
- package/dist/lib/authentication/ui/ZudokuAuthUi.js +43 -11
- package/dist/lib/authentication/ui/ZudokuAuthUi.js.map +1 -1
- package/dist/lib/authentication/utils/relativeRedirectUrl.d.ts +1 -0
- package/dist/lib/authentication/utils/relativeRedirectUrl.js +8 -0
- package/dist/lib/authentication/utils/relativeRedirectUrl.js.map +1 -0
- package/dist/lib/components/Pagination.js +2 -2
- package/dist/lib/components/Pagination.js.map +1 -1
- package/dist/lib/components/index.d.ts +5 -0
- package/dist/lib/components/index.js +4 -0
- package/dist/lib/components/index.js.map +1 -1
- package/dist/lib/components/navigation/NavigationItem.js +2 -2
- package/dist/lib/components/navigation/NavigationItem.js.map +1 -1
- package/dist/lib/core/RouteGuard.js +12 -7
- package/dist/lib/core/RouteGuard.js.map +1 -1
- package/dist/lib/core/plugins.d.ts +11 -1
- package/dist/lib/core/plugins.js +1 -0
- package/dist/lib/core/plugins.js.map +1 -1
- package/dist/lib/core/react-query.d.ts +1 -0
- package/dist/lib/core/react-query.js +2 -0
- package/dist/lib/core/react-query.js.map +1 -0
- package/dist/lib/core/transform-config.d.ts +2 -0
- package/dist/lib/core/transform-config.js +22 -0
- package/dist/lib/core/transform-config.js.map +1 -0
- package/dist/lib/errors/ErrorMessage.d.ts +3 -0
- package/dist/lib/errors/ErrorMessage.js +16 -0
- package/dist/lib/errors/ErrorMessage.js.map +1 -0
- package/dist/lib/hooks/index.d.ts +2 -0
- package/dist/lib/oas/graphql/circular.d.ts +2 -0
- package/dist/lib/oas/graphql/circular.js +21 -16
- package/dist/lib/oas/graphql/circular.js.map +1 -1
- package/dist/lib/oas/graphql/circular.test.d.ts +1 -0
- package/dist/lib/oas/graphql/circular.test.js +183 -0
- package/dist/lib/oas/graphql/circular.test.js.map +1 -0
- package/dist/lib/oas/graphql/index.js +7 -3
- package/dist/lib/oas/graphql/index.js.map +1 -1
- package/dist/lib/plugins/api-keys/SettingsApiKeys.js +9 -172
- package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
- package/dist/lib/plugins/api-keys/index.d.ts +11 -4
- package/dist/lib/plugins/api-keys/index.js +36 -22
- package/dist/lib/plugins/api-keys/index.js.map +1 -1
- package/dist/lib/plugins/api-keys/settings/ApiKeyItem.d.ts +12 -0
- package/dist/lib/plugins/api-keys/settings/ApiKeyItem.js +133 -0
- package/dist/lib/plugins/api-keys/settings/ApiKeyItem.js.map +1 -0
- package/dist/lib/plugins/api-keys/settings/ApiKeyList.d.ts +4 -0
- package/dist/lib/plugins/api-keys/settings/ApiKeyList.js +33 -0
- package/dist/lib/plugins/api-keys/settings/ApiKeyList.js.map +1 -0
- package/dist/lib/plugins/api-keys/settings/RevealApiKey.d.ts +6 -0
- package/dist/lib/plugins/api-keys/settings/RevealApiKey.js +39 -0
- package/dist/lib/plugins/api-keys/settings/RevealApiKey.js.map +1 -0
- package/dist/lib/plugins/openapi/OasProvider.js +6 -2
- package/dist/lib/plugins/openapi/OasProvider.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationList.js +4 -4
- package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
- package/dist/lib/plugins/openapi/ParamInfos.js +1 -0
- package/dist/lib/plugins/openapi/ParamInfos.js.map +1 -1
- package/dist/lib/plugins/openapi/Sidecar.js +3 -2
- package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
- package/dist/lib/plugins/openapi/interfaces.d.ts +3 -0
- package/dist/lib/plugins/openapi/schema/SchemaView.js +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/utils.js +11 -3
- package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
- package/dist/lib/plugins/openapi/util/createHttpSnippet.js +24 -1
- package/dist/lib/plugins/openapi/util/createHttpSnippet.js.map +1 -1
- package/dist/lib/plugins/openapi/util/getRoutes.d.ts +3 -0
- package/dist/lib/plugins/openapi/util/getRoutes.js +2 -1
- package/dist/lib/plugins/openapi/util/getRoutes.js.map +1 -1
- package/dist/lib/ui/Button.js +1 -1
- package/dist/lib/ui/Button.js.map +1 -1
- package/dist/lib/ui/Command.d.ts +3 -3
- package/dist/lib/util/invariant.d.ts +1 -1
- package/dist/lib/util/invariant.js +2 -2
- package/dist/lib/util/invariant.js.map +1 -1
- package/dist/vite/api/SchemaManager.d.ts +12 -1
- package/dist/vite/api/SchemaManager.js +31 -14
- package/dist/vite/api/SchemaManager.js.map +1 -1
- package/dist/vite/api/SchemaManager.test.js +44 -0
- package/dist/vite/api/SchemaManager.test.js.map +1 -1
- package/dist/vite/config.js +10 -4
- package/dist/vite/config.js.map +1 -1
- package/dist/vite/error-handler.js +1 -5
- package/dist/vite/error-handler.js.map +1 -1
- package/dist/vite/mdx/remark-link-rewrite.js +1 -1
- package/dist/vite/plugin-api-keys.js +5 -1
- package/dist/vite/plugin-api-keys.js.map +1 -1
- package/dist/vite/plugin-api.js +5 -3
- package/dist/vite/plugin-api.js.map +1 -1
- package/dist/vite/plugin-markdown-export.js +1 -1
- package/dist/vite/plugin-markdown-export.js.map +1 -1
- package/dist/vite/prerender/utils.js +9 -3
- package/dist/vite/prerender/utils.js.map +1 -1
- package/dist/vite/prerender/worker.js +3 -0
- package/dist/vite/prerender/worker.js.map +1 -1
- package/dist/vite/zuplo.d.ts +13 -0
- package/dist/vite/zuplo.js +15 -0
- package/dist/vite/zuplo.js.map +1 -0
- package/lib/{ActionButton-DUgvSylL.js → ActionButton-B0CXL1Lq.js} +3 -3
- package/lib/{ActionButton-DUgvSylL.js.map → ActionButton-B0CXL1Lq.js.map} +1 -1
- package/lib/{Button-CynVW1JV.js → Button-GUVe7pmt.js} +8 -7
- package/lib/{Button-CynVW1JV.js.map → Button-GUVe7pmt.js.map} +1 -1
- package/lib/{Card-KFniaZn5.js → Card-DCdq37aA.js} +2 -2
- package/lib/{Card-KFniaZn5.js.map → Card-DCdq37aA.js.map} +1 -1
- package/lib/{ClaudeLogo-B4Xxt-x_.js → ClaudeLogo-DJ9bU-sO.js} +22 -22
- package/lib/ClaudeLogo-DJ9bU-sO.js.map +1 -0
- package/lib/{Command-BpT1iBE6.js → Command-N6VujV30.js} +3 -3
- package/lib/{Command-BpT1iBE6.js.map → Command-N6VujV30.js.map} +1 -1
- package/lib/{Dialog-BQciPiHN.js → Dialog-hlvmmQ_c.js} +2 -2
- package/lib/{Dialog-BQciPiHN.js.map → Dialog-hlvmmQ_c.js.map} +1 -1
- package/lib/{Drawer-Ci7XwhqT.js → Drawer-Ch7927PF.js} +7 -7
- package/lib/{Drawer-Ci7XwhqT.js.map → Drawer-Ch7927PF.js.map} +1 -1
- package/lib/{DropdownMenu-C8SX_-S_.js → DropdownMenu-DN0jNrjj.js} +2 -2
- package/lib/{DropdownMenu-C8SX_-S_.js.map → DropdownMenu-DN0jNrjj.js.map} +1 -1
- package/lib/Frame-DKlOmSkU.js +205 -0
- package/lib/Frame-DKlOmSkU.js.map +1 -0
- package/lib/HydrationBoundary-CNF2ZV3E.js +601 -0
- package/lib/HydrationBoundary-CNF2ZV3E.js.map +1 -0
- package/lib/{IndexingDialog-B5zCiUKr.js → IndexingDialog-D0YdGfbn.js} +3 -3
- package/lib/{IndexingDialog-B5zCiUKr.js.map → IndexingDialog-D0YdGfbn.js.map} +1 -1
- package/lib/Input-Cx-GeKoF.js +22 -0
- package/lib/Input-Cx-GeKoF.js.map +1 -0
- package/lib/{MdxPage-BagO2c-n.js → MdxPage-stpAoBtx.js} +11 -11
- package/lib/{MdxPage-BagO2c-n.js.map → MdxPage-stpAoBtx.js.map} +1 -1
- package/lib/{Mermaid-D_VSX7_Q.js → Mermaid-Koc3z8mU.js} +4 -4
- package/lib/{Mermaid-D_VSX7_Q.js.map → Mermaid-Koc3z8mU.js.map} +1 -1
- package/lib/{OAuthErrorPage-Fq54RLgt.js → OAuthErrorPage-DJ811Bn_.js} +15 -15
- package/lib/OAuthErrorPage-DJ811Bn_.js.map +1 -0
- package/lib/OasProvider-B2KxIBsI.js +48 -0
- package/lib/OasProvider-B2KxIBsI.js.map +1 -0
- package/lib/{OperationList-C0jiEaG5.js → OperationList-C2tAfThO.js} +1558 -1543
- package/lib/{OperationList-C0jiEaG5.js.map → OperationList-C2tAfThO.js.map} +1 -1
- package/lib/RouteGuard--A04ESy8.js +77 -0
- package/lib/RouteGuard--A04ESy8.js.map +1 -0
- package/lib/{SchemaList-BU0zCHn9.js → SchemaList-Ep8DleP_.js} +9 -9
- package/lib/{SchemaList-BU0zCHn9.js.map → SchemaList-Ep8DleP_.js.map} +1 -1
- package/lib/SchemaView-BpaEKRYx.js +438 -0
- package/lib/SchemaView-BpaEKRYx.js.map +1 -0
- package/lib/{Select-CkxXP5I7.js → Secret-BDBqq4p3.js} +122 -122
- package/lib/Secret-BDBqq4p3.js.map +1 -0
- package/lib/{Separator-CTPSeW1S.js → Separator-BXt1LYnm.js} +2 -2
- package/lib/{Separator-CTPSeW1S.js.map → Separator-BXt1LYnm.js.map} +1 -1
- package/lib/SignUp-DCBViNUi.js +50 -0
- package/lib/SignUp-DCBViNUi.js.map +1 -0
- package/lib/{SyntaxHighlight-Kdyskw3C.js → SyntaxHighlight-Dshjn3Zf.js} +1749 -1723
- package/lib/SyntaxHighlight-Dshjn3Zf.js.map +1 -0
- package/lib/{Toc-DJxFPfcS.js → Toc-Cgz6CPiE.js} +3 -3
- package/lib/{Toc-DJxFPfcS.js.map → Toc-Cgz6CPiE.js.map} +1 -1
- package/lib/ZudokuContext-BZB1TWdT.js +387 -0
- package/lib/ZudokuContext-BZB1TWdT.js.map +1 -0
- package/lib/{___vite-browser-external_commonjs-proxy-Cga3HsWk.js → ___vite-browser-external_commonjs-proxy-BttVsNON.js} +2 -2
- package/lib/___vite-browser-external_commonjs-proxy-BttVsNON.js.map +1 -0
- package/lib/chunk-EPOLDU6W-C6C8jAwd.js +8558 -0
- package/lib/chunk-EPOLDU6W-C6C8jAwd.js.map +1 -0
- package/lib/{circular-CzWF1hj5.js → circular-CG3e0_Uz.js} +1689 -1686
- package/lib/{circular-CzWF1hj5.js.map → circular-CG3e0_Uz.js.map} +1 -1
- package/lib/{cn-dYga0KKN.js → cn-5-Gd1Dss.js} +531 -498
- package/lib/cn-5-Gd1Dss.js.map +1 -0
- package/lib/{createServer-BIr2_tGn.js → createServer-CNeRqj98.js} +12 -12
- package/lib/{createServer-BIr2_tGn.js.map → createServer-CNeRqj98.js.map} +1 -1
- package/lib/createVariantComponent-Dc0vtOvr.js +18 -0
- package/lib/createVariantComponent-Dc0vtOvr.js.map +1 -0
- package/lib/{errors-Bs4duWDy.js → errors-b9I-fAOY.js} +3 -3
- package/lib/{errors-Bs4duWDy.js.map → errors-b9I-fAOY.js.map} +1 -1
- package/lib/{firebase-qUdSEL1p.js → firebase-BCXX7Qv5.js} +1590 -1342
- package/lib/firebase-BCXX7Qv5.js.map +1 -0
- package/lib/hook-BGlHBdET.js +52 -0
- package/lib/hook-BGlHBdET.js.map +1 -0
- package/lib/{ErrorAlert-DrOR8w3f.js → index-CL8eDnQW.js} +5473 -4433
- package/lib/index-CL8eDnQW.js.map +1 -0
- package/lib/index-CrcNWbel.js.map +1 -1
- package/lib/{index-Css56y3F.js → index-DBjOT2H1.js} +4 -4
- package/lib/{index-Css56y3F.js.map → index-DBjOT2H1.js.map} +1 -1
- package/lib/{index-0oT9beQN.js → index-I3kmZ7tG.js} +152 -148
- package/lib/{index-0oT9beQN.js.map → index-I3kmZ7tG.js.map} +1 -1
- package/lib/{index-Bh-MffiL.js → index-UOLtazB8.js} +2 -2
- package/lib/{index-Bh-MffiL.js.map → index-UOLtazB8.js.map} +1 -1
- package/lib/index.esm-BYObtETB.js.map +1 -1
- package/lib/{index.esm-DtzT_KoE.js → index.esm-B_0dvNjB.js} +2 -2
- package/lib/{index.esm-DtzT_KoE.js.map → index.esm-B_0dvNjB.js.map} +1 -1
- package/lib/{index.esm-kW-Utcsi.js → index.esm-C5CBsVzN.js} +16 -14
- package/lib/index.esm-C5CBsVzN.js.map +1 -0
- package/lib/{invariant-CGOLuIIz.js → invariant-BJAl77rw.js} +4 -4
- package/lib/invariant-BJAl77rw.js.map +1 -0
- package/lib/jsx-runtime-BzflLqGi.js.map +1 -1
- package/lib/{mutation-BoVlx8yA.js → mutation-BISOc7OM.js} +70 -44
- package/lib/mutation-BISOc7OM.js.map +1 -0
- package/lib/ui/Accordion.js +1 -1
- package/lib/ui/ActionButton.js +2 -2
- package/lib/ui/Alert.js +1 -1
- package/lib/ui/AlertDialog.js +1 -1
- package/lib/ui/Badge.js +1 -1
- package/lib/ui/Breadcrumb.js +1 -1
- package/lib/ui/Button.js +7 -6
- package/lib/ui/Button.js.map +1 -1
- package/lib/ui/ButtonGroup.js +1 -1
- package/lib/ui/Callout.js +1 -1
- package/lib/ui/Card.js +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/CodeBlock.js +1 -1
- package/lib/ui/Command.js +2 -2
- package/lib/ui/Dialog.js +1 -1
- package/lib/ui/Drawer.js +3 -3
- package/lib/ui/DropdownMenu.js +1 -1
- package/lib/ui/EmbeddedCodeBlock.js +1 -1
- package/lib/ui/Form.js +1 -1
- package/lib/ui/Frame.js +1 -1
- package/lib/ui/HoverCard.js +1 -1
- package/lib/ui/Input.js +1 -1
- package/lib/ui/Item.js +1 -1
- package/lib/ui/Label.js +1 -1
- package/lib/ui/NativeSelect.js +1 -1
- package/lib/ui/Pagination.js +1 -1
- package/lib/ui/Popover.js +1 -1
- package/lib/ui/Progress.js +1 -1
- package/lib/ui/RadioGroup.js +1 -1
- package/lib/ui/ScrollArea.js +1 -1
- package/lib/ui/Secret.js +1 -1
- package/lib/ui/Separator.js +1 -1
- package/lib/ui/Skeleton.js +1 -1
- package/lib/ui/Slider.js +1 -1
- package/lib/ui/Switch.js +1 -1
- package/lib/ui/SyntaxHighlight.js +3 -3
- package/lib/ui/Tabs.js +1 -1
- package/lib/ui/Textarea.js +1 -1
- package/lib/ui/Toggle.js +1 -1
- package/lib/ui/ToggleGroup.js +1 -1
- package/lib/ui/Value.js +1 -1
- package/lib/ui/util.js +1 -1
- package/lib/{useMutation-C6RqWmTS.js → useMutation-CFMGlAMW.js} +39 -17
- package/lib/useMutation-CFMGlAMW.js.map +1 -0
- package/lib/useSuspenseQuery-CSB_rVek.js +1226 -0
- package/lib/useSuspenseQuery-CSB_rVek.js.map +1 -0
- package/lib/zudoku.__internal.js +826 -1325
- package/lib/zudoku.__internal.js.map +1 -1
- package/lib/zudoku.auth-auth0.js +16 -16
- package/lib/zudoku.auth-auth0.js.map +1 -1
- package/lib/zudoku.auth-azureb2c.js +4 -4
- package/lib/zudoku.auth-clerk.js +52 -75
- package/lib/zudoku.auth-clerk.js.map +1 -1
- package/lib/zudoku.auth-firebase.js +6 -5
- package/lib/zudoku.auth-firebase.js.map +1 -1
- package/lib/zudoku.auth-openid.js +5 -5
- package/lib/zudoku.auth-supabase.js +31 -40
- package/lib/zudoku.auth-supabase.js.map +1 -1
- package/lib/zudoku.components.js +23 -21
- package/lib/zudoku.hooks.js +3 -3
- package/lib/zudoku.mermaid.js +3 -3
- package/lib/zudoku.plugin-api-catalog.js +8 -8
- package/lib/zudoku.plugin-api-keys.js +607 -552
- package/lib/zudoku.plugin-api-keys.js.map +1 -1
- package/lib/zudoku.plugin-custom-pages.js +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-openapi.js +3 -3
- package/lib/zudoku.plugin-redirect.js +1 -1
- package/lib/zudoku.plugin-search-pagefind.js +30 -29
- package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
- package/lib/zudoku.plugins.js +9 -8
- package/lib/zudoku.plugins.js.map +1 -1
- package/lib/zudoku.react-query.js +440 -0
- package/lib/zudoku.react-query.js.map +1 -0
- package/lib/zudoku.router.js +1130 -1404
- package/lib/zudoku.router.js.map +1 -1
- package/package.json +28 -21
- package/src/lib/auth/issuer.ts +1 -1
- package/src/lib/authentication/authentication.ts +8 -2
- package/src/lib/authentication/components/CallbackHandler.tsx +1 -1
- package/src/lib/authentication/components/SignIn.tsx +5 -2
- package/src/lib/authentication/components/SignUp.tsx +5 -2
- package/src/lib/authentication/hook.ts +16 -0
- package/src/lib/authentication/providers/auth0.tsx +15 -9
- package/src/lib/authentication/providers/clerk.tsx +0 -26
- package/src/lib/authentication/providers/firebase.tsx +98 -6
- package/src/lib/authentication/providers/supabase.tsx +6 -15
- package/src/lib/authentication/ui/EmailVerificationUi.tsx +129 -0
- package/src/lib/authentication/ui/ZudokuAuthUi.tsx +170 -38
- package/src/lib/authentication/utils/relativeRedirectUrl.ts +12 -0
- package/src/lib/components/Pagination.tsx +4 -5
- package/src/lib/components/index.ts +4 -0
- package/src/lib/components/navigation/NavigationItem.tsx +9 -3
- package/src/lib/core/RouteGuard.tsx +30 -24
- package/src/lib/core/plugins.ts +21 -1
- package/src/lib/core/react-query.ts +1 -0
- package/src/lib/core/transform-config.ts +29 -0
- package/src/lib/errors/ErrorMessage.tsx +38 -0
- package/src/lib/oas/graphql/circular.test.ts +221 -0
- package/src/lib/oas/graphql/circular.ts +31 -18
- package/src/lib/oas/graphql/index.ts +7 -3
- package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +36 -476
- package/src/lib/plugins/api-keys/index.tsx +76 -32
- package/src/lib/plugins/api-keys/settings/ApiKeyItem.tsx +342 -0
- package/src/lib/plugins/api-keys/settings/ApiKeyList.tsx +67 -0
- package/src/lib/plugins/api-keys/settings/RevealApiKey.tsx +124 -0
- package/src/lib/plugins/openapi/OasProvider.tsx +10 -2
- package/src/lib/plugins/openapi/OperationList.tsx +4 -4
- package/src/lib/plugins/openapi/ParamInfos.tsx +1 -0
- package/src/lib/plugins/openapi/Sidecar.tsx +3 -2
- package/src/lib/plugins/openapi/interfaces.ts +6 -1
- package/src/lib/plugins/openapi/schema/SchemaView.tsx +6 -4
- package/src/lib/plugins/openapi/schema/utils.ts +15 -4
- package/src/lib/plugins/openapi/util/createHttpSnippet.ts +29 -1
- package/src/lib/plugins/openapi/util/getRoutes.tsx +4 -1
- package/src/lib/ui/Button.tsx +1 -0
- package/src/lib/util/invariant.ts +2 -1
- package/src/shiki/langs/c3.js +1 -0
- package/src/shiki/langs/gn.js +1 -0
- package/src/shiki/langs/moonbit.js +1 -0
- package/lib/ClaudeLogo-B4Xxt-x_.js.map +0 -1
- package/lib/ErrorAlert-DrOR8w3f.js.map +0 -1
- package/lib/OAuthErrorPage-Fq54RLgt.js.map +0 -1
- package/lib/OasProvider-DPH8mwDa.js +0 -40
- package/lib/OasProvider-DPH8mwDa.js.map +0 -1
- package/lib/RouteGuard-9wjejsKm.js +0 -77
- package/lib/RouteGuard-9wjejsKm.js.map +0 -1
- package/lib/RouterError-DSLXagd5.js +0 -42
- package/lib/RouterError-DSLXagd5.js.map +0 -1
- package/lib/SchemaView-DVae4RO2.js +0 -597
- package/lib/SchemaView-DVae4RO2.js.map +0 -1
- package/lib/Select-CkxXP5I7.js.map +0 -1
- package/lib/SignUp-BjS4ozA7.js +0 -50
- package/lib/SignUp-BjS4ozA7.js.map +0 -1
- package/lib/SyntaxHighlight-Kdyskw3C.js.map +0 -1
- package/lib/ZudokuContext-BXldanA8.js +0 -1508
- package/lib/ZudokuContext-BXldanA8.js.map +0 -1
- package/lib/___vite-browser-external_commonjs-proxy-Cga3HsWk.js.map +0 -1
- package/lib/chunk-PVWAREVJ-dLIqswPy.js +0 -7965
- package/lib/chunk-PVWAREVJ-dLIqswPy.js.map +0 -1
- package/lib/cn-dYga0KKN.js.map +0 -1
- package/lib/createVariantComponent-B9_dVBvu.js +0 -35
- package/lib/createVariantComponent-B9_dVBvu.js.map +0 -1
- package/lib/firebase-qUdSEL1p.js.map +0 -1
- package/lib/hook-BNxidGQq.js +0 -40
- package/lib/hook-BNxidGQq.js.map +0 -1
- package/lib/index-CCmMJp02.js +0 -1059
- package/lib/index-CCmMJp02.js.map +0 -1
- package/lib/index.esm-kW-Utcsi.js.map +0 -1
- package/lib/invariant-CGOLuIIz.js.map +0 -1
- package/lib/mutation-BoVlx8yA.js.map +0 -1
- package/lib/useMutation-C6RqWmTS.js.map +0 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { TrashIcon } from "lucide-react";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { Button } from "zudoku/ui/Button.js";
|
|
4
|
+
import {
|
|
5
|
+
Dialog,
|
|
6
|
+
DialogClose,
|
|
7
|
+
DialogContent,
|
|
8
|
+
DialogDescription,
|
|
9
|
+
DialogFooter,
|
|
10
|
+
DialogHeader,
|
|
11
|
+
DialogTitle,
|
|
12
|
+
DialogTrigger,
|
|
13
|
+
} from "zudoku/ui/Dialog.js";
|
|
14
|
+
import { Secret } from "zudoku/ui/Secret.js";
|
|
15
|
+
import { cn } from "../../../util/cn.js";
|
|
16
|
+
import type { ApiKey } from "../index.js";
|
|
17
|
+
|
|
18
|
+
export const RevealApiKey = ({
|
|
19
|
+
apiKey,
|
|
20
|
+
onDeleteKey,
|
|
21
|
+
className,
|
|
22
|
+
}: {
|
|
23
|
+
apiKey: ApiKey;
|
|
24
|
+
onDeleteKey: () => void;
|
|
25
|
+
className?: string;
|
|
26
|
+
}) => {
|
|
27
|
+
const [revealed, setRevealed] = useState(false);
|
|
28
|
+
|
|
29
|
+
const { key, createdOn, expiresOn } = apiKey;
|
|
30
|
+
const isExpired = expiresOn && new Date(expiresOn) < new Date();
|
|
31
|
+
const daysUntilExpiry = expiresOn
|
|
32
|
+
? Math.ceil(
|
|
33
|
+
(new Date(expiresOn).getTime() - Date.now()) / (1000 * 60 * 60 * 24),
|
|
34
|
+
)
|
|
35
|
+
: Infinity;
|
|
36
|
+
const expiresSoon = daysUntilExpiry <= 7 && !isExpired;
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<div className={cn("grid col-span-full grid-cols-subgrid p-6", className)}>
|
|
40
|
+
<div className="flex flex-col gap-1">
|
|
41
|
+
<Secret
|
|
42
|
+
className="max-w-fit w-full"
|
|
43
|
+
secret={key}
|
|
44
|
+
status={isExpired ? "expired" : expiresSoon ? "expiring" : "active"}
|
|
45
|
+
revealed={revealed}
|
|
46
|
+
onReveal={setRevealed}
|
|
47
|
+
/>
|
|
48
|
+
<div className="flex gap-1 mt-0.5 text-nowrap">
|
|
49
|
+
{createdOn && (
|
|
50
|
+
<span className="text-xs text-muted-foreground">
|
|
51
|
+
Created {getTimeAgo(createdOn)}.
|
|
52
|
+
</span>
|
|
53
|
+
)}{" "}
|
|
54
|
+
{expiresOn && expiresSoon && (
|
|
55
|
+
<span className="text-xs text-primary">
|
|
56
|
+
Expires in {daysUntilExpiry}{" "}
|
|
57
|
+
{daysUntilExpiry === 1 ? "day" : "days"}.
|
|
58
|
+
</span>
|
|
59
|
+
)}
|
|
60
|
+
{expiresOn && isExpired && (
|
|
61
|
+
<span className="text-xs text-primary">
|
|
62
|
+
Expired{" "}
|
|
63
|
+
{daysUntilExpiry === 0
|
|
64
|
+
? "today."
|
|
65
|
+
: `${daysUntilExpiry * -1} days ago.`}
|
|
66
|
+
</span>
|
|
67
|
+
)}
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
<div className="flex justify-end">
|
|
71
|
+
{expiresOn && onDeleteKey && (
|
|
72
|
+
<Dialog>
|
|
73
|
+
<DialogTrigger asChild>
|
|
74
|
+
<Button variant="ghost" size="icon">
|
|
75
|
+
<TrashIcon size={16} />
|
|
76
|
+
</Button>
|
|
77
|
+
</DialogTrigger>
|
|
78
|
+
<DialogContent>
|
|
79
|
+
<DialogHeader>
|
|
80
|
+
<DialogTitle>Delete API Key</DialogTitle>
|
|
81
|
+
<DialogDescription>
|
|
82
|
+
Are you sure you want to delete this API key?
|
|
83
|
+
</DialogDescription>
|
|
84
|
+
</DialogHeader>
|
|
85
|
+
<DialogFooter>
|
|
86
|
+
<DialogClose asChild>
|
|
87
|
+
<Button variant="outline">Cancel</Button>
|
|
88
|
+
</DialogClose>
|
|
89
|
+
<DialogClose asChild>
|
|
90
|
+
<Button
|
|
91
|
+
onClick={() => {
|
|
92
|
+
onDeleteKey();
|
|
93
|
+
}}
|
|
94
|
+
>
|
|
95
|
+
Delete
|
|
96
|
+
</Button>
|
|
97
|
+
</DialogClose>
|
|
98
|
+
</DialogFooter>
|
|
99
|
+
</DialogContent>
|
|
100
|
+
</Dialog>
|
|
101
|
+
)}
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
);
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const getTimeAgo = (date: string) => {
|
|
108
|
+
const now = new Date();
|
|
109
|
+
const created = new Date(date);
|
|
110
|
+
const diffInSeconds = Math.floor((now.getTime() - created.getTime()) / 1000);
|
|
111
|
+
|
|
112
|
+
const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
|
|
113
|
+
|
|
114
|
+
if (diffInSeconds < 60) return rtf.format(-diffInSeconds, "second");
|
|
115
|
+
if (diffInSeconds < 3600)
|
|
116
|
+
return rtf.format(-Math.floor(diffInSeconds / 60), "minute");
|
|
117
|
+
if (diffInSeconds < 86400)
|
|
118
|
+
return rtf.format(-Math.floor(diffInSeconds / 3600), "hour");
|
|
119
|
+
if (diffInSeconds < 2592000)
|
|
120
|
+
return rtf.format(-Math.floor(diffInSeconds / 86400), "day");
|
|
121
|
+
if (diffInSeconds < 31536000)
|
|
122
|
+
return rtf.format(-Math.floor(diffInSeconds / 2592000), "month");
|
|
123
|
+
return rtf.format(-Math.floor(diffInSeconds / 31536000), "year");
|
|
124
|
+
};
|
|
@@ -19,13 +19,21 @@ export const OasProvider = ({
|
|
|
19
19
|
client: GraphQLClient;
|
|
20
20
|
}) => {
|
|
21
21
|
const value = useMemo(() => {
|
|
22
|
-
const {
|
|
22
|
+
const {
|
|
23
|
+
versions: availableVersions,
|
|
24
|
+
labels,
|
|
25
|
+
downloadUrls,
|
|
26
|
+
} = getVersionMetadata(config);
|
|
23
27
|
const currentVersion = version ?? availableVersions.at(0);
|
|
24
28
|
|
|
25
29
|
const versionLinks = Object.fromEntries(
|
|
26
30
|
availableVersions.map((id) => [
|
|
27
31
|
id,
|
|
28
|
-
{
|
|
32
|
+
{
|
|
33
|
+
path: joinUrl(basePath, id),
|
|
34
|
+
label: labels[id] ?? id,
|
|
35
|
+
downloadUrl: downloadUrls[id],
|
|
36
|
+
},
|
|
29
37
|
]),
|
|
30
38
|
);
|
|
31
39
|
|
|
@@ -20,7 +20,6 @@ import { Heading } from "../../components/Heading.js";
|
|
|
20
20
|
import { Markdown } from "../../components/Markdown.js";
|
|
21
21
|
import { PagefindSearchMeta } from "../../components/PagefindSearchMeta.js";
|
|
22
22
|
import { Pagination } from "../../components/Pagination.js";
|
|
23
|
-
import { joinUrl } from "../../util/joinUrl.js";
|
|
24
23
|
import { useCreateQuery } from "./client/useCreateQuery.js";
|
|
25
24
|
import { useOasConfig } from "./context.js";
|
|
26
25
|
import { DownloadSchemaButton } from "./DownloadSchemaButton.js";
|
|
@@ -158,7 +157,7 @@ export const OperationList = ({
|
|
|
158
157
|
tag?: string;
|
|
159
158
|
untagged?: boolean;
|
|
160
159
|
}) => {
|
|
161
|
-
const {
|
|
160
|
+
const { input, type, versions, version, options } = useOasConfig();
|
|
162
161
|
const { tag: tagFromParams } = useParams<"tag">();
|
|
163
162
|
const query = useCreateQuery(OperationsForTagQuery, {
|
|
164
163
|
input,
|
|
@@ -247,11 +246,12 @@ export const OperationList = ({
|
|
|
247
246
|
const tagTitle = schema.tag.extensions?.["x-displayName"] ?? schema.tag.name;
|
|
248
247
|
const helmetTitle = [tagTitle, title].filter(Boolean).join(" - ");
|
|
249
248
|
|
|
249
|
+
const currentVersion = version != null ? versions[version] : undefined;
|
|
250
250
|
const downloadUrl =
|
|
251
251
|
typeof input === "string"
|
|
252
252
|
? type === "url"
|
|
253
253
|
? input
|
|
254
|
-
:
|
|
254
|
+
: currentVersion?.downloadUrl
|
|
255
255
|
: undefined;
|
|
256
256
|
|
|
257
257
|
return (
|
|
@@ -286,7 +286,7 @@ export const OperationList = ({
|
|
|
286
286
|
{showVersions && (
|
|
287
287
|
<span className="text-xl text-muted-foreground ms-1.5">
|
|
288
288
|
{" "}
|
|
289
|
-
({version})
|
|
289
|
+
({schema.version})
|
|
290
290
|
</span>
|
|
291
291
|
)}
|
|
292
292
|
</Heading>
|
|
@@ -40,6 +40,7 @@ const getSchemaInfos = (schema?: SchemaObject) => {
|
|
|
40
40
|
schema.enum && "enum",
|
|
41
41
|
schema.const && "const",
|
|
42
42
|
schema.format,
|
|
43
|
+
schema.type === "array" && schema.items?.contentMediaType,
|
|
43
44
|
schema.minimum !== undefined && `min: ${schema.minimum}`,
|
|
44
45
|
schema.maximum !== undefined && `max: ${schema.maximum}`,
|
|
45
46
|
schema.minLength !== undefined && `minLength: ${schema.minLength}`,
|
|
@@ -149,10 +149,10 @@ export const Sidecar = ({
|
|
|
149
149
|
selectedServer,
|
|
150
150
|
exampleBody: currentExampleCode
|
|
151
151
|
? {
|
|
152
|
-
mimeType: "application/json",
|
|
152
|
+
mimeType: selectedContent?.mediaType ?? "application/json",
|
|
153
153
|
text: JSON.stringify(currentExampleCode, null, 2),
|
|
154
154
|
}
|
|
155
|
-
: { mimeType: "application/json" },
|
|
155
|
+
: { mimeType: selectedContent?.mediaType ?? "application/json" },
|
|
156
156
|
});
|
|
157
157
|
|
|
158
158
|
return getConverted(snippet, selectedLang);
|
|
@@ -161,6 +161,7 @@ export const Sidecar = ({
|
|
|
161
161
|
operation,
|
|
162
162
|
selectedServer,
|
|
163
163
|
selectedLang,
|
|
164
|
+
selectedContent,
|
|
164
165
|
options,
|
|
165
166
|
auth,
|
|
166
167
|
context,
|
|
@@ -7,6 +7,8 @@ type DynamicInput = () => Promise<unknown>;
|
|
|
7
7
|
|
|
8
8
|
export type VersionedInput<T> = Array<{
|
|
9
9
|
path: string;
|
|
10
|
+
version?: string;
|
|
11
|
+
downloadUrl?: string;
|
|
10
12
|
label?: string;
|
|
11
13
|
input: T;
|
|
12
14
|
}>;
|
|
@@ -85,5 +87,8 @@ export type OasPluginConfig = BaseOasConfig & OasSource;
|
|
|
85
87
|
export type OasPluginContext = BaseOasConfig &
|
|
86
88
|
ContextOasSource & {
|
|
87
89
|
version?: string;
|
|
88
|
-
versions: Record<
|
|
90
|
+
versions: Record<
|
|
91
|
+
string,
|
|
92
|
+
{ path: string; label: string; downloadUrl?: string }
|
|
93
|
+
>;
|
|
89
94
|
};
|
|
@@ -154,10 +154,12 @@ export const SchemaView = ({
|
|
|
154
154
|
<FrameDescription>{schema.description}</FrameDescription>
|
|
155
155
|
</FrameHeader>
|
|
156
156
|
)}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
157
|
+
{(itemsList.length > 0 || additionalObjectProperties) && (
|
|
158
|
+
<FramePanel className="p-0!">
|
|
159
|
+
{itemsList}
|
|
160
|
+
{additionalObjectProperties}
|
|
161
|
+
</FramePanel>
|
|
162
|
+
)}
|
|
161
163
|
{schema.additionalProperties === true && (
|
|
162
164
|
<FrameFooter>
|
|
163
165
|
<a
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
CIRCULAR_REF,
|
|
3
|
+
SCHEMA_REF_PREFIX,
|
|
4
|
+
} from "../../../oas/graphql/circular.js";
|
|
2
5
|
import type {
|
|
3
6
|
ArraySchemaObject,
|
|
4
7
|
SchemaObject,
|
|
@@ -25,7 +28,8 @@ export const isComplexType = (value?: SchemaObject) =>
|
|
|
25
28
|
(!value.items.type || value.items.type === "object")));
|
|
26
29
|
|
|
27
30
|
export const isCircularRef = (schema: unknown): schema is string =>
|
|
28
|
-
typeof schema === "string" &&
|
|
31
|
+
typeof schema === "string" &&
|
|
32
|
+
(schema.startsWith(CIRCULAR_REF) || schema.startsWith(SCHEMA_REF_PREFIX));
|
|
29
33
|
|
|
30
34
|
export const isArrayCircularRef = (
|
|
31
35
|
schema: SchemaObject,
|
|
@@ -34,5 +38,12 @@ export const isArrayCircularRef = (
|
|
|
34
38
|
|
|
35
39
|
export const extractCircularRefInfo = (
|
|
36
40
|
ref?: string | SchemaObject,
|
|
37
|
-
): string | undefined =>
|
|
38
|
-
typeof ref
|
|
41
|
+
): string | undefined => {
|
|
42
|
+
if (typeof ref !== "string") return undefined;
|
|
43
|
+
|
|
44
|
+
if (ref.startsWith(SCHEMA_REF_PREFIX)) {
|
|
45
|
+
return ref.slice(SCHEMA_REF_PREFIX.length).split("/").pop();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return ref.split(":")[1];
|
|
49
|
+
};
|
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
import { HTTPSnippet } from "@zudoku/httpsnippet";
|
|
2
2
|
import type { OperationsFragmentFragment } from "../graphql/graphql.js";
|
|
3
3
|
|
|
4
|
+
const toFormDataParams = (text?: string) => {
|
|
5
|
+
const stringify = (v: unknown) =>
|
|
6
|
+
typeof v === "string" ? v : JSON.stringify(v);
|
|
7
|
+
|
|
8
|
+
try {
|
|
9
|
+
const obj = text && JSON.parse(text);
|
|
10
|
+
if (typeof obj !== "object" || !obj) return [];
|
|
11
|
+
|
|
12
|
+
return Object.entries(obj).flatMap(([name, value]) => {
|
|
13
|
+
const values = Array.isArray(value) ? value : [value];
|
|
14
|
+
return values.map((v) => ({ name, value: stringify(v) }));
|
|
15
|
+
});
|
|
16
|
+
} catch {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
4
21
|
export const createHttpSnippet = ({
|
|
5
22
|
operation,
|
|
6
23
|
selectedServer,
|
|
@@ -13,11 +30,22 @@ export const createHttpSnippet = ({
|
|
|
13
30
|
text?: string;
|
|
14
31
|
};
|
|
15
32
|
}) => {
|
|
33
|
+
const isMultipart =
|
|
34
|
+
exampleBody.mimeType === "multipart/form-data" ||
|
|
35
|
+
exampleBody.mimeType === "application/x-www-form-urlencoded";
|
|
36
|
+
|
|
37
|
+
const postData = isMultipart
|
|
38
|
+
? {
|
|
39
|
+
mimeType: exampleBody.mimeType,
|
|
40
|
+
params: toFormDataParams(exampleBody.text),
|
|
41
|
+
}
|
|
42
|
+
: exampleBody;
|
|
43
|
+
|
|
16
44
|
return new HTTPSnippet({
|
|
17
45
|
method: operation.method.toUpperCase(),
|
|
18
46
|
url:
|
|
19
47
|
selectedServer + operation.path.replaceAll("{", ":").replaceAll("}", ""),
|
|
20
|
-
postData
|
|
48
|
+
postData,
|
|
21
49
|
headers: [
|
|
22
50
|
...(exampleBody.text
|
|
23
51
|
? [{ name: "Content-Type", value: exampleBody.mimeType }]
|
|
@@ -150,7 +150,7 @@ const createVersionRoutes = (
|
|
|
150
150
|
|
|
151
151
|
export const getVersionMetadata = (config: OasPluginConfig) => {
|
|
152
152
|
if (config.type === "raw" || !Array.isArray(config.input)) {
|
|
153
|
-
return { versions: [], labels: {} };
|
|
153
|
+
return { versions: [], labels: {}, downloadUrls: {} };
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
return {
|
|
@@ -158,6 +158,9 @@ export const getVersionMetadata = (config: OasPluginConfig) => {
|
|
|
158
158
|
labels: Object.fromEntries(
|
|
159
159
|
config.input.map((v) => [v.path, v.label ?? v.path]),
|
|
160
160
|
),
|
|
161
|
+
downloadUrls: Object.fromEntries(
|
|
162
|
+
config.input.map((v) => [v.path, v.downloadUrl]),
|
|
163
|
+
),
|
|
161
164
|
};
|
|
162
165
|
};
|
|
163
166
|
|
package/src/lib/ui/Button.tsx
CHANGED
|
@@ -51,6 +51,7 @@ export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
|
|
|
51
51
|
const Comp = asChild ? Slot : "button";
|
|
52
52
|
return (
|
|
53
53
|
<Comp
|
|
54
|
+
type={asChild ? undefined : "button"}
|
|
54
55
|
className={cn(buttonVariants({ variant, size, className }))}
|
|
55
56
|
ref={ref}
|
|
56
57
|
{...props}
|
|
@@ -7,6 +7,7 @@ export default function invariant(
|
|
|
7
7
|
* the message takes a fair amount of effort to compute
|
|
8
8
|
*/
|
|
9
9
|
message?: string | (() => string),
|
|
10
|
+
options?: ZudokuErrorOptions,
|
|
10
11
|
): asserts condition {
|
|
11
12
|
if (condition) {
|
|
12
13
|
return;
|
|
@@ -16,7 +17,7 @@ export default function invariant(
|
|
|
16
17
|
const provided: string | undefined =
|
|
17
18
|
typeof message === "function" ? message() : message;
|
|
18
19
|
|
|
19
|
-
throw new ZudokuError(provided ?? "Invariant failed");
|
|
20
|
+
throw new ZudokuError(provided ?? "Invariant failed", options);
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
export type ZudokuErrorOptions = {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "@shikijs/langs/c3";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "@shikijs/langs/gn";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from "@shikijs/langs/moonbit";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeLogo-B4Xxt-x_.js","sources":["../src/lib/components/Pagination.tsx","../src/lib/plugins/markdown/assets/ChatGPTLogo.tsx","../src/lib/plugins/markdown/assets/ClaudeLogo.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from \"lucide-react\";\nimport { Link } from \"react-router\";\nimport { cn } from \"../util/cn.js\";\nimport { Button } from \"./index.js\";\n\nexport const Pagination = ({\n prev,\n next,\n className,\n}: {\n prev: { to: string; label: string } | undefined;\n next: { to: string; label: string } | undefined;\n className?: string;\n}) => {\n const linkClass =\n \"group transition-all p-5 space-x-1 rtl:space-x-reverse transition-all hover:text-foreground\";\n\n return (\n <div\n className={cn(\n \"flex -mx-4 text-muted-foreground font-semibold\",\n prev ? \"justify-between\" : \"justify-end\",\n className,\n )}\n data-pagefind-ignore=\"all\"\n >\n {prev && (\n <Button variant=\"ghost\" asChild>\n <Link to={prev.to} relative=\"path\" className={linkClass}>\n <ArrowLeftIcon size={14} strokeWidth={2.5} />\n <span className=\"text-lg truncate\">{prev.label}</span>\n </Link>\n </Button>\n )}\n {next && (\n <Button variant=\"ghost\" asChild>\n <Link to={next.to} relative=\"path\" className={linkClass}>\n <span className=\"text-lg truncate\">{next.label}</span>\n <ArrowRightIcon size={14} strokeWidth={2.5} />\n </Link>\n </Button>\n )}\n </div>\n );\n};\n","import type { SVGProps } from \"react\";\n\nexport const ChatGPTLogo = (props: SVGProps<SVGSVGElement>) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 320\" {...props}>\n <title>ChatGPT</title>\n <path\n fill=\"currentColor\"\n d=\"M297.06 130.97a79.712 79.712 0 0 0-6.85-65.48c-17.46-30.4-52.56-46.04-86.84-38.68A79.747 79.747 0 0 0 143.24 0C108.2-.08 77.11 22.48 66.33 55.82a79.754 79.754 0 0 0-53.31 38.67c-17.59 30.32-13.58 68.54 9.92 94.54a79.712 79.712 0 0 0 6.85 65.48c17.46 30.4 52.56 46.04 86.84 38.68a79.687 79.687 0 0 0 60.13 26.8c35.06.09 66.16-22.49 76.94-55.86a79.754 79.754 0 0 0 53.31-38.67c17.57-30.32 13.55-68.51-9.94-94.51zM176.78 299.08a59.77 59.77 0 0 1-38.39-13.88c.49-.26 1.34-.73 1.89-1.07l63.72-36.8a10.36 10.36 0 0 0 5.24-9.07v-89.83l26.93 15.55c.29.14.48.42.52.74v74.39c-.04 33.08-26.83 59.9-59.91 59.97zM47.94 244.05a59.71 59.71 0 0 1-7.15-40.18c.47.28 1.3.79 1.89 1.13l63.72 36.8c3.23 1.89 7.23 1.89 10.47 0l77.79-44.92v31.1c.02.32-.13.63-.38.83L129.87 266c-28.69 16.52-65.33 6.7-81.92-21.95zM31.17 104.96c7-12.16 18.05-21.46 31.21-26.29 0 .55-.03 1.52-.03 2.2v73.61c-.02 3.74 1.98 7.21 5.23 9.06l77.79 44.91L118.44 224c-.27.18-.61.21-.91.08l-64.42-37.22c-28.63-16.58-38.45-53.21-21.95-81.89zm221.26 51.49-77.79-44.92 26.93-15.54c.27-.18.61-.21.91-.08l64.42 37.19c28.68 16.57 38.51 53.26 21.94 81.94a59.94 59.94 0 0 1-31.2 26.28v-75.81c.03-3.74-1.96-7.2-5.2-9.06zm26.8-40.34c-.47-.29-1.3-.79-1.89-1.13l-63.72-36.8a10.375 10.375 0 0 0-10.47 0l-77.79 44.92V92c-.02-.32.13-.63.38-.83l64.41-37.16c28.69-16.55 65.37-6.7 81.91 22a59.95 59.95 0 0 1 7.15 40.1zm-168.51 55.43-26.94-15.55a.943.943 0 0 1-.52-.74V80.86c.02-33.12 26.89-59.96 60.01-59.94 14.01 0 27.57 4.92 38.34 13.88-.49.26-1.33.73-1.89 1.07L116 72.67a10.344 10.344 0 0 0-5.24 9.06l-.04 89.79zM125.35 140 160 119.99l34.65 20V180L160 200l-34.65-20z\"\n />\n </svg>\n);\n","import type { SVGProps } from \"react\";\n\nexport const ClaudeLogo = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <title>Claude</title>\n <path\n fill=\"#D97757\"\n d=\"m4.709 15.955 4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 0 1-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312z\"\n />\n </svg>\n);\n"],"names":["Pagination","prev","next","className","linkClass","jsxs","cn","jsx","Button","Link","ArrowLeftIcon","ArrowRightIcon","ChatGPTLogo","props","ClaudeLogo"],"mappings":";;;;;AAKO,MAAMA,IAAa,CAAC;AAAA,EACzB,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC;AACF,MAIM;AACJ,QAAMC,IACJ;AAEF,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAL,IAAO,oBAAoB;AAAA,QAC3BE;AAAA,MAAA;AAAA,MAEF,wBAAqB;AAAA,MAEpB,UAAA;AAAA,QAAAF,KACCM,gBAAAA,EAAAA,IAACC,GAAA,EAAO,SAAQ,SAAQ,SAAO,IAC7B,UAAAH,gBAAAA,EAAAA,KAACI,GAAA,EAAK,IAAIR,EAAK,IAAI,UAAS,QAAO,WAAWG,GAC5C,UAAA;AAAA,UAAAG,gBAAAA,EAAAA,IAACG,GAAA,EAAc,MAAM,IAAI,aAAa,KAAK;AAAA,UAC3CH,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,oBAAoB,YAAK,MAAA,CAAM;AAAA,QAAA,EAAA,CACjD,EAAA,CACF;AAAA,QAEDL,KACCK,gBAAAA,EAAAA,IAACC,GAAA,EAAO,SAAQ,SAAQ,SAAO,IAC7B,UAAAH,gBAAAA,EAAAA,KAACI,GAAA,EAAK,IAAIP,EAAK,IAAI,UAAS,QAAO,WAAWE,GAC5C,UAAA;AAAA,UAAAG,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,oBAAoB,UAAAL,EAAK,OAAM;AAAA,UAC/CK,gBAAAA,EAAAA,IAACI,GAAA,EAAe,MAAM,IAAI,aAAa,IAAA,CAAK;AAAA,QAAA,EAAA,CAC9C,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR,GC1CaC,IAAc,CAACC,MAC1BR,gBAAAA,EAAAA,KAAC,OAAA,EAAI,OAAM,8BAA6B,SAAQ,eAAe,GAAGQ,GAChE,UAAA;AAAA,EAAAN,gBAAAA,EAAAA,IAAC,WAAM,UAAA,UAAA,CAAO;AAAA,EACdA,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,GAAE;AAAA,IAAA;AAAA,EAAA;AACJ,EAAA,CACF,GCPWO,IAAa,CAACD,MACzBR,gBAAAA,EAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,OAAM;AAAA,IACN,QAAO;AAAA,IACP,MAAK;AAAA,IACL,UAAS;AAAA,IACT,SAAQ;AAAA,IACP,GAAGQ;AAAA,IAEJ,UAAA;AAAA,MAAAN,gBAAAA,EAAAA,IAAC,WAAM,UAAA,SAAA,CAAM;AAAA,MACbA,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,GAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EAAA;AACF;"}
|