@lukoweb/apitogo 0.1.24 → 0.1.38
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 +92 -0
- package/cli.js +13 -13
- package/client.d.ts +8 -8
- package/dist/cli/cli.js +1117 -624
- package/dist/declarations/config/config.d.ts +4 -0
- package/dist/declarations/config/loader.d.ts +2 -0
- package/dist/declarations/config/resolve-modules.d.ts +34 -0
- package/dist/declarations/config/validators/InputNavigationSchema.d.ts +7 -7
- package/dist/declarations/config/validators/ModulesSchema.d.ts +417 -0
- package/dist/declarations/config/validators/ZudokuConfig.d.ts +123 -4
- package/dist/declarations/index.d.ts +3 -1
- package/dist/declarations/lib/authentication/components/ProductionUnlockPage.d.ts +1 -0
- package/dist/declarations/lib/authentication/hook.d.ts +3 -19
- package/dist/declarations/lib/authentication/providers/dev-portal-constants.d.ts +16 -0
- package/dist/declarations/lib/authentication/providers/dev-portal-utils.d.ts +9 -0
- package/dist/declarations/lib/authentication/providers/dev-portal.d.ts +39 -0
- package/dist/declarations/lib/authentication/state.d.ts +12 -26
- package/dist/declarations/lib/components/LandingLayout.d.ts +4 -0
- package/dist/declarations/lib/components/index.d.ts +2 -0
- package/dist/declarations/lib/plugins/api-keys/index.d.ts +2 -1
- package/dist/flat-config.d.ts +209 -24
- package/docs/components/alert.mdx +130 -0
- package/docs/components/badge.mdx +70 -0
- package/docs/components/button.mdx +132 -0
- package/docs/components/callout.mdx +112 -0
- package/docs/components/card.mdx +104 -0
- package/docs/components/checkbox.mdx +72 -0
- package/docs/components/client-only.mdx +79 -0
- package/docs/components/code-tabs.mdx +179 -0
- package/docs/components/dialog.mdx +167 -0
- package/docs/components/head.mdx +200 -0
- package/docs/components/icons.mdx +27 -0
- package/docs/components/input.mdx +96 -0
- package/docs/components/label.mdx +86 -0
- package/docs/components/link.mdx +242 -0
- package/docs/components/markdown.mdx +151 -0
- package/docs/components/mermaid.mdx +81 -0
- package/docs/components/playground.mdx +87 -0
- package/docs/components/secret.mdx +79 -0
- package/docs/components/select.mdx +176 -0
- package/docs/components/shadcn.mdx +73 -0
- package/docs/components/slider.mdx +108 -0
- package/docs/components/slot.mdx +119 -0
- package/docs/components/stepper.mdx +138 -0
- package/docs/components/switch.mdx +96 -0
- package/docs/components/syntax-highlight.mdx +602 -0
- package/docs/components/textarea.mdx +78 -0
- package/docs/components/tooltip.mdx +195 -0
- package/docs/components/typography.mdx +61 -0
- package/docs/concepts/auth-provider-api-identities.md +109 -0
- package/docs/configuration/ai-assistants.md +65 -0
- package/docs/configuration/api-catalog.md +109 -0
- package/docs/configuration/api-reference.md +397 -0
- package/docs/configuration/authentication-auth0.md +174 -0
- package/docs/configuration/authentication-azure-ad.md +238 -0
- package/docs/configuration/authentication-clerk.md +110 -0
- package/docs/configuration/authentication-firebase.md +62 -0
- package/docs/configuration/authentication-pingfederate.md +136 -0
- package/docs/configuration/authentication-supabase.md +226 -0
- package/docs/configuration/authentication.md +231 -0
- package/docs/configuration/build-configuration.mdx +147 -0
- package/docs/configuration/docs.md +282 -0
- package/docs/configuration/footer.mdx +214 -0
- package/docs/configuration/llms.md +90 -0
- package/docs/configuration/make-config.mdx +90 -0
- package/docs/configuration/navigation.mdx +422 -0
- package/docs/configuration/overview.md +380 -0
- package/docs/configuration/protected-routes.md +150 -0
- package/docs/configuration/search.md +163 -0
- package/docs/configuration/sentry.mdx +44 -0
- package/docs/configuration/site.md +124 -0
- package/docs/configuration/slots.mdx +125 -0
- package/docs/configuration/vite-config.md +18 -0
- package/docs/custom-plugins.md +285 -0
- package/docs/customization/colors-theme.mdx +276 -0
- package/docs/customization/fonts.md +110 -0
- package/docs/deploy/apache-nginx.md +41 -0
- package/docs/deploy/apitogo.md +139 -0
- package/docs/deploy/cloudflare-pages.md +75 -0
- package/docs/deploy/direct-upload.md +18 -0
- package/docs/deploy/github-pages.md +50 -0
- package/docs/deploy/vercel.md +103 -0
- package/docs/deployment.md +21 -0
- package/docs/extending/events.md +124 -0
- package/docs/guides/custom-pages.md +106 -0
- package/docs/guides/environment-variables.md +99 -0
- package/docs/guides/managing-api-keys-and-identities.md +172 -0
- package/docs/guides/mermaid.mdx +70 -0
- package/docs/guides/navigation-migration.md +87 -0
- package/docs/guides/navigation-rules.mdx +203 -0
- package/docs/guides/processors.mdx +234 -0
- package/docs/guides/static-files.md +55 -0
- package/docs/guides/transforming-examples.md +156 -0
- package/docs/guides/using-multiple-apis.md +87 -0
- package/docs/markdown/admonitions.md +128 -0
- package/docs/markdown/code-blocks.md +196 -0
- package/docs/markdown/frontmatter.md +173 -0
- package/docs/markdown/mdx.md +68 -0
- package/docs/markdown/overview.md +275 -0
- package/docs/plugins.md +5 -0
- package/docs/quickstart.md +87 -0
- package/docs/writing.mdx +72 -0
- package/package.json +170 -116
- package/src/app/ZuploBuildConfig.ts +36 -36
- package/src/app/defaultTheme.css +77 -77
- package/src/app/demo-cdn.html +37 -37
- package/src/app/demo.html +21 -21
- package/src/app/demo.tsx +77 -77
- package/src/app/entry.client.tsx +118 -118
- package/src/app/entry.server.tsx +160 -160
- package/src/app/env.ts +40 -40
- package/src/app/font.geist.css +73 -73
- package/src/app/main.css +390 -390
- package/src/app/main.tsx +8 -1
- package/src/app/polyfills.ts +47 -47
- package/src/app/processRoutes.tsx +51 -25
- package/src/app/sentry.ts +24 -24
- package/src/app/standalone.html +23 -23
- package/src/app/standalone.tsx +60 -60
- package/src/app/utils/createRedirectRoutes.ts +11 -11
- package/src/config/config.ts +32 -0
- package/src/config/create-plugin.ts +71 -71
- package/src/config/file-exists.ts +6 -6
- package/src/config/loader.ts +11 -1
- package/src/config/resolve-modules.ts +260 -0
- package/src/config/validators/BuildSchema.ts +95 -95
- package/src/config/validators/HeaderNavigationSchema.ts +41 -41
- package/src/config/validators/InputNavigationSchema.test-d.ts +178 -178
- package/src/config/validators/InputNavigationSchema.ts +206 -206
- package/src/config/validators/ModulesSchema.ts +312 -0
- package/src/config/validators/ProtectedRoutesSchema.ts +35 -35
- package/src/config/validators/ZudokuConfig.ts +766 -729
- package/src/config/validators/auth.ts +3 -3
- package/src/config/validators/reason-codes.ts +7 -7
- package/src/env.d.ts +11 -11
- package/src/index.ts +31 -0
- package/src/lib/MissingIcon.tsx +22 -22
- package/src/lib/assets/language-icons/bun.tsx +50 -50
- package/src/lib/assets/language-icons/c.tsx +31 -31
- package/src/lib/assets/language-icons/commonlisp.tsx +22 -22
- package/src/lib/assets/language-icons/cpp.tsx +35 -35
- package/src/lib/assets/language-icons/csharp.tsx +35 -35
- package/src/lib/assets/language-icons/css.tsx +36 -36
- package/src/lib/assets/language-icons/dart.tsx +39 -39
- package/src/lib/assets/language-icons/elixir.tsx +19 -19
- package/src/lib/assets/language-icons/go.tsx +19 -19
- package/src/lib/assets/language-icons/graphql.tsx +19 -19
- package/src/lib/assets/language-icons/html.tsx +24 -24
- package/src/lib/assets/language-icons/java.tsx +35 -35
- package/src/lib/assets/language-icons/javascript.tsx +11 -11
- package/src/lib/assets/language-icons/json.tsx +19 -19
- package/src/lib/assets/language-icons/kotlin.tsx +30 -30
- package/src/lib/assets/language-icons/markdown.tsx +19 -19
- package/src/lib/assets/language-icons/mdx.tsx +23 -23
- package/src/lib/assets/language-icons/npm.tsx +15 -15
- package/src/lib/assets/language-icons/objectivec.tsx +23 -23
- package/src/lib/assets/language-icons/ocaml.tsx +34 -34
- package/src/lib/assets/language-icons/php.tsx +19 -19
- package/src/lib/assets/language-icons/pnpm.tsx +32 -32
- package/src/lib/assets/language-icons/powershell.tsx +27 -27
- package/src/lib/assets/language-icons/python.tsx +23 -23
- package/src/lib/assets/language-icons/react.tsx +21 -21
- package/src/lib/assets/language-icons/ruby.tsx +19 -19
- package/src/lib/assets/language-icons/rust.tsx +19 -19
- package/src/lib/assets/language-icons/scala.tsx +19 -19
- package/src/lib/assets/language-icons/shell.tsx +19 -19
- package/src/lib/assets/language-icons/swift.tsx +19 -19
- package/src/lib/assets/language-icons/toml.tsx +23 -23
- package/src/lib/assets/language-icons/typescript.tsx +23 -23
- package/src/lib/assets/language-icons/xml.tsx +19 -19
- package/src/lib/assets/language-icons/yaml.tsx +23 -23
- package/src/lib/assets/language-icons/yarn.tsx +17 -17
- package/src/lib/assets/language-icons/zig.tsx +32 -32
- package/src/lib/auth/issuer.ts +34 -31
- package/src/lib/authentication/AuthenticationPlugin.tsx +33 -33
- package/src/lib/authentication/authentication.ts +48 -48
- package/src/lib/authentication/components/OAuthErrorPage.tsx +197 -197
- package/src/lib/authentication/components/ProductionUnlockPage.tsx +27 -0
- package/src/lib/authentication/components/SignOut.tsx +15 -15
- package/src/lib/authentication/constants.ts +1 -1
- package/src/lib/authentication/errors.ts +34 -34
- package/src/lib/authentication/hook.ts +141 -139
- package/src/lib/authentication/providers/auth0.tsx +91 -91
- package/src/lib/authentication/providers/azureb2c.tsx +223 -223
- package/src/lib/authentication/providers/dev-portal-constants.ts +21 -0
- package/src/lib/authentication/providers/dev-portal-utils.ts +107 -0
- package/src/lib/authentication/providers/dev-portal.tsx +270 -0
- package/src/lib/authentication/providers/firebase.tsx +486 -486
- package/src/lib/authentication/providers/openid.tsx +516 -516
- package/src/lib/authentication/providers/supabase.tsx +412 -412
- package/src/lib/authentication/providers/util.ts +26 -26
- package/src/lib/authentication/state.ts +179 -91
- package/src/lib/authentication/ui/icons/Apple.tsx +10 -10
- package/src/lib/authentication/ui/icons/Facebook.tsx +15 -15
- package/src/lib/authentication/ui/icons/Github.tsx +16 -16
- package/src/lib/authentication/ui/icons/Google.tsx +16 -16
- package/src/lib/authentication/ui/icons/Microsoft.tsx +12 -12
- package/src/lib/authentication/ui/icons/X.tsx +10 -10
- package/src/lib/authentication/utils/relativeRedirectUrl.ts +16 -16
- package/src/lib/components/AnchorLink.tsx +24 -24
- package/src/lib/components/Banner.tsx +52 -52
- package/src/lib/components/Bootstrap.tsx +77 -77
- package/src/lib/components/BuildCheck.tsx +87 -87
- package/src/lib/components/CategoryHeading.tsx +19 -19
- package/src/lib/components/ClientOnly.tsx +19 -19
- package/src/lib/components/ErrorPage.tsx +26 -26
- package/src/lib/components/Footer.tsx +140 -140
- package/src/lib/components/Framed.tsx +51 -51
- package/src/lib/components/Header.tsx +11 -3
- package/src/lib/components/HeaderNavigation.tsx +148 -148
- package/src/lib/components/Heading.tsx +84 -84
- package/src/lib/components/InlineCode.tsx +15 -15
- package/src/lib/components/LandingLayout.tsx +21 -0
- package/src/lib/components/LanguageIcon.tsx +199 -199
- package/src/lib/components/Markdown.tsx +55 -55
- package/src/lib/components/Meta.tsx +46 -46
- package/src/lib/components/MobileTopNavigation.tsx +11 -3
- package/src/lib/components/NotFoundPage.tsx +37 -37
- package/src/lib/components/PageProgress.tsx +28 -28
- package/src/lib/components/PagefindSearchMeta.tsx +14 -14
- package/src/lib/components/Pagination.tsx +44 -44
- package/src/lib/components/PathRenderer.tsx +61 -61
- package/src/lib/components/PluginHeads.tsx +17 -17
- package/src/lib/components/Search.tsx +70 -70
- package/src/lib/components/Slot.tsx +64 -64
- package/src/lib/components/Spinner.tsx +5 -5
- package/src/lib/components/StatusPage.tsx +96 -96
- package/src/lib/components/ThemeSwitch.tsx +49 -49
- package/src/lib/components/Typography.tsx +12 -12
- package/src/lib/components/Zudoku.tsx +106 -106
- package/src/lib/components/cache.ts +27 -27
- package/src/lib/components/context/RenderContext.ts +11 -11
- package/src/lib/components/context/RouterEventsEmitter.tsx +19 -19
- package/src/lib/components/context/SlotProvider.tsx +149 -149
- package/src/lib/components/context/ViewportAnchorContext.tsx +137 -137
- package/src/lib/components/context/ZudokuContext.ts +140 -140
- package/src/lib/components/context/ZudokuProvider.tsx +22 -22
- package/src/lib/components/context/ZudokuReactContext.tsx +17 -17
- package/src/lib/components/index.ts +2 -0
- package/src/lib/components/navigation/Navigation.tsx +51 -51
- package/src/lib/components/navigation/NavigationBadge.tsx +48 -48
- package/src/lib/components/navigation/NavigationFilterContext.tsx +28 -28
- package/src/lib/components/navigation/NavigationWrapper.tsx +49 -49
- package/src/lib/components/navigation/Toc.tsx +137 -137
- package/src/lib/components/navigation/ZudokuLogo.tsx +25 -25
- package/src/lib/components/navigation/ZuploLogo.tsx +14 -14
- package/src/lib/components/navigation/utils.ts +234 -234
- package/src/lib/core/RouteGuard.tsx +11 -1
- package/src/lib/core/ZudokuContext.ts +271 -271
- package/src/lib/core/plugins.ts +138 -138
- package/src/lib/core/react-query.ts +1 -1
- package/src/lib/core/router.ts +1 -1
- package/src/lib/core/transform-config.ts +67 -67
- package/src/lib/demo/DemoAnnouncement.tsx +17 -17
- package/src/lib/errors/ErrorAlert.tsx +28 -28
- package/src/lib/errors/RouterError.tsx +18 -18
- package/src/lib/errors/ServerError.tsx +5 -5
- package/src/lib/errors/TopLevelError.tsx +6 -6
- package/src/lib/hooks/index.ts +13 -13
- package/src/lib/hooks/useEvent.ts +41 -41
- package/src/lib/hooks/useHighlighter.ts +15 -15
- package/src/lib/hooks/useHotkey.ts +70 -70
- package/src/lib/icons.ts +2 -2
- package/src/lib/navigation/applyRules.ts +127 -127
- package/src/lib/navigation/pathMatcher.ts +81 -81
- package/src/lib/oas/graphql/circular.ts +69 -69
- package/src/lib/oas/graphql/constants.ts +2 -2
- package/src/lib/oas/graphql/index.ts +791 -791
- package/src/lib/oas/parser/dereference/index.ts +84 -84
- package/src/lib/oas/parser/dereference/resolveRef.ts +32 -32
- package/src/lib/oas/parser/index.ts +129 -129
- package/src/lib/oas/parser/schemas/v3.0.json +1489 -1489
- package/src/lib/oas/parser/schemas/v3.1.json +1298 -1298
- package/src/lib/oas/parser/upgrade/index.ts +174 -174
- package/src/lib/plugins/api-catalog/index.tsx +119 -119
- package/src/lib/plugins/api-keys/ProtectedRoute.tsx +33 -33
- package/src/lib/plugins/api-keys/index.tsx +274 -272
- package/src/lib/plugins/api-keys/settings/ApiKeyList.tsx +67 -67
- package/src/lib/plugins/custom-pages/index.tsx +32 -32
- package/src/lib/plugins/markdown/assets/ChatGPTLogo.tsx +11 -11
- package/src/lib/plugins/markdown/assets/ClaudeLogo.tsx +19 -19
- package/src/lib/plugins/markdown/index.tsx +62 -62
- package/src/lib/plugins/openapi/ColorizedParam.tsx +115 -115
- package/src/lib/plugins/openapi/Endpoint.tsx +85 -85
- package/src/lib/plugins/openapi/MCPEndpoint.tsx +273 -273
- package/src/lib/plugins/openapi/OasProvider.tsx +74 -74
- package/src/lib/plugins/openapi/OperationList.tsx +275 -275
- package/src/lib/plugins/openapi/ParamInfos.tsx +96 -96
- package/src/lib/plugins/openapi/ParameterList.tsx +53 -53
- package/src/lib/plugins/openapi/ParameterListItem.tsx +161 -161
- package/src/lib/plugins/openapi/PlaygroundDialogWrapper.tsx +67 -67
- package/src/lib/plugins/openapi/SidecarBox.tsx +57 -57
- package/src/lib/plugins/openapi/SimpleSelect.tsx +46 -46
- package/src/lib/plugins/openapi/client/GraphQLClient.tsx +73 -73
- package/src/lib/plugins/openapi/client/GraphQLContext.tsx +16 -16
- package/src/lib/plugins/openapi/client/createServer.ts +35 -35
- package/src/lib/plugins/openapi/client/useCreateQuery.ts +44 -44
- package/src/lib/plugins/openapi/components/ConstValue.tsx +24 -24
- package/src/lib/plugins/openapi/components/NonHighlightedCode.tsx +22 -22
- package/src/lib/plugins/openapi/components/SelectOnClick.tsx +29 -29
- package/src/lib/plugins/openapi/context.tsx +16 -16
- package/src/lib/plugins/openapi/graphql/fragment-masking.ts +104 -104
- package/src/lib/plugins/openapi/graphql/gql.ts +95 -95
- package/src/lib/plugins/openapi/graphql/graphql.ts +835 -835
- package/src/lib/plugins/openapi/graphql/index.ts +2 -2
- package/src/lib/plugins/openapi/index.tsx +221 -221
- package/src/lib/plugins/openapi/interfaces.ts +100 -100
- package/src/lib/plugins/openapi/playground/Headers.tsx +6 -6
- package/src/lib/plugins/openapi/playground/PathParams.tsx +53 -53
- package/src/lib/plugins/openapi/playground/Spinner.tsx +87 -87
- package/src/lib/plugins/openapi/playground/createUrl.ts +25 -25
- package/src/lib/plugins/openapi/playground/fileUtils.ts +36 -36
- package/src/lib/plugins/openapi/playground/rememberedIdentity.ts +26 -26
- package/src/lib/plugins/openapi/playground/request-panel/UrlPath.tsx +31 -31
- package/src/lib/plugins/openapi/playground/request-panel/UrlQueryParams.tsx +29 -29
- package/src/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.ts +340 -340
- package/src/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.tsx +117 -117
- package/src/lib/plugins/openapi/playground/result-panel/convertToTypes.ts +36 -36
- package/src/lib/plugins/openapi/playground/serializeQueryParams.ts +125 -125
- package/src/lib/plugins/openapi/playground/useRememberSkipLoginDialog.tsx +23 -23
- package/src/lib/plugins/openapi/processors/removeExtensions.ts +29 -29
- package/src/lib/plugins/openapi/processors/removeParameters.ts +103 -103
- package/src/lib/plugins/openapi/processors/removePaths.ts +57 -57
- package/src/lib/plugins/openapi/processors/traverse.ts +1 -1
- package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +39 -39
- package/src/lib/plugins/openapi/schema/UnionView.tsx +132 -132
- package/src/lib/plugins/openapi/schema/union-helpers.ts +123 -123
- package/src/lib/plugins/openapi/schema/utils.ts +49 -49
- package/src/lib/plugins/openapi/state.ts +36 -36
- package/src/lib/plugins/openapi/util/buildTagCategories.ts +54 -54
- package/src/lib/plugins/openapi/util/createHttpSnippet.ts +135 -135
- package/src/lib/plugins/openapi/util/createNavigationCategory.tsx +39 -39
- package/src/lib/plugins/openapi/util/generateSchemaExample.ts +191 -191
- package/src/lib/plugins/openapi/util/getRoutes.tsx +265 -265
- package/src/lib/plugins/openapi/util/methodColorMap.tsx +11 -11
- package/src/lib/plugins/openapi/util/methodToColor.ts +27 -27
- package/src/lib/plugins/openapi/util/sanitizeMarkdownForMetatag.tsx +32 -32
- package/src/lib/plugins/openapi/util/useWarmupSchema.ts +23 -23
- package/src/lib/plugins/search-inkeep/index.tsx +108 -108
- package/src/lib/plugins/search-inkeep/inkeep.ts +24 -24
- package/src/lib/plugins/search-pagefind/get-results.tsx +74 -74
- package/src/lib/plugins/search-pagefind/index.tsx +21 -21
- package/src/lib/plugins/search-pagefind/types.ts +118 -118
- package/src/lib/shiki-constants.ts +24 -24
- package/src/lib/testing/index.tsx +146 -146
- package/src/lib/ui/Accordion.tsx +55 -55
- package/src/lib/ui/Alert.tsx +84 -84
- package/src/lib/ui/AlertDialog.tsx +195 -195
- package/src/lib/ui/AspectRatio.tsx +5 -5
- package/src/lib/ui/Badge.tsx +48 -48
- package/src/lib/ui/Breadcrumb.tsx +115 -115
- package/src/lib/ui/Button.tsx +65 -65
- package/src/lib/ui/ButtonGroup.tsx +80 -80
- package/src/lib/ui/Callout.tsx +113 -113
- package/src/lib/ui/Card.tsx +95 -95
- package/src/lib/ui/Carousel.tsx +259 -259
- package/src/lib/ui/Checkbox.tsx +28 -28
- package/src/lib/ui/CodeBlock.tsx +92 -92
- package/src/lib/ui/CodeTabPanel.tsx +13 -13
- package/src/lib/ui/CodeTabs.tsx +161 -161
- package/src/lib/ui/Collapsible.tsx +31 -31
- package/src/lib/ui/Dialog.tsx +138 -138
- package/src/lib/ui/DismissibleAlert.tsx +74 -74
- package/src/lib/ui/Drawer.tsx +121 -121
- package/src/lib/ui/DropdownMenu.tsx +254 -254
- package/src/lib/ui/EmbeddedCodeBlock.tsx +99 -99
- package/src/lib/ui/Form.tsx +176 -176
- package/src/lib/ui/Frame.tsx +81 -81
- package/src/lib/ui/HoverCard.tsx +26 -26
- package/src/lib/ui/Input.tsx +23 -23
- package/src/lib/ui/InputGroup.tsx +168 -168
- package/src/lib/ui/Item.tsx +213 -213
- package/src/lib/ui/Kbd.tsx +28 -28
- package/src/lib/ui/Label.tsx +23 -23
- package/src/lib/ui/NativeSelect.tsx +48 -48
- package/src/lib/ui/NavigationMenu.tsx +169 -169
- package/src/lib/ui/Pagination.tsx +115 -115
- package/src/lib/ui/Popover.tsx +28 -28
- package/src/lib/ui/Progress.tsx +25 -25
- package/src/lib/ui/RadioGroup.tsx +41 -41
- package/src/lib/ui/ReactComponentDoc.tsx +68 -68
- package/src/lib/ui/ScrollArea.tsx +45 -45
- package/src/lib/ui/Secret.tsx +133 -133
- package/src/lib/ui/Select.tsx +184 -184
- package/src/lib/ui/Separator.tsx +25 -25
- package/src/lib/ui/Skeleton.tsx +15 -15
- package/src/lib/ui/Slider.tsx +25 -25
- package/src/lib/ui/Stepper.tsx +8 -8
- package/src/lib/ui/Switch.tsx +26 -26
- package/src/lib/ui/SyntaxHighlight.tsx +54 -54
- package/src/lib/ui/Tabs.tsx +52 -52
- package/src/lib/ui/Textarea.tsx +22 -22
- package/src/lib/ui/Toggle.tsx +42 -42
- package/src/lib/ui/ToggleGroup.tsx +58 -58
- package/src/lib/ui/Tooltip.tsx +65 -65
- package/src/lib/ui/Value.tsx +42 -42
- package/src/lib/ui/util.tsx +8 -8
- package/src/lib/util/cn.ts +6 -6
- package/src/lib/util/createVariantComponent.tsx +61 -61
- package/src/lib/util/ensureArray.ts +3 -3
- package/src/lib/util/flattenAllOf.ts +72 -72
- package/src/lib/util/flattenAllOfProcessor.ts +74 -74
- package/src/lib/util/hastToJsx.tsx +67 -67
- package/src/lib/util/humanFileSize.ts +15 -15
- package/src/lib/util/invariant.ts +52 -52
- package/src/lib/util/joinUrl.ts +60 -60
- package/src/lib/util/logInit.ts +9 -9
- package/src/lib/util/objectEntries.ts +5 -5
- package/src/lib/util/os.ts +18 -18
- package/src/lib/util/pastellize.ts +25 -25
- package/src/lib/util/problemJson.ts +63 -63
- package/src/lib/util/readFrontmatter.ts +14 -14
- package/src/lib/util/renderIf.ts +4 -4
- package/src/lib/util/scrollIntoViewIfNeeded.ts +18 -18
- package/src/lib/util/slugify.ts +21 -21
- package/src/lib/util/syncZustandState.ts +22 -22
- package/src/lib/util/traverse.ts +70 -70
- package/src/lib/util/types.ts +7 -7
- package/src/lib/util/url.ts +18 -18
- package/src/lib/util/useCopyToClipboard.ts +17 -17
- package/src/lib/util/useExposedProps.tsx +27 -27
- package/src/lib/util/useIsomorphicLayoutEffect.ts +6 -6
- package/src/lib/util/useLatest.ts +18 -18
- package/src/lib/util/useOnScreen.ts +34 -34
- package/src/lib/util/useScrollToAnchor.ts +70 -70
- package/src/lib/util/useScrollToTop.ts +18 -18
- package/src/types.d.ts +57 -53
- package/src/vite/api/SchemaManager.ts +371 -371
- package/src/vite/api/schema-codegen.ts +163 -163
- package/src/vite/config.ts +5 -1
- package/src/vite/css/collect.ts +42 -42
- package/src/vite/css/plugin.ts +105 -105
- package/src/vite/debug.ts +18 -18
- package/src/vite/dev-portal-env.ts +93 -0
- package/src/vite/html.ts +54 -54
- package/src/vite/index.ts +2 -2
- package/src/vite/mdx/rehype-extract-toc-with-jsx-export.ts +19 -19
- package/src/vite/mdx/rehype-extract-toc-with-jsx.ts +70 -70
- package/src/vite/mdx/remark-code-tabs.ts +47 -47
- package/src/vite/mdx/remark-inject-filepath.ts +13 -13
- package/src/vite/mdx/remark-last-modified.ts +103 -103
- package/src/vite/mdx/remark-link-rewrite.ts +23 -23
- package/src/vite/mdx/remark-normalize-image-url.ts +15 -15
- package/src/vite/mdx/remark-static-generation.ts +149 -149
- package/src/vite/mdx/utils.ts +32 -32
- package/src/vite/output.ts +261 -261
- package/src/vite/package-root.ts +12 -12
- package/src/vite/pagefind-dev-index.ts +100 -100
- package/src/vite/plugin-api-keys.ts +6 -1
- package/src/vite/plugin-api.ts +4 -1
- package/src/vite/plugin-auth.ts +5 -1
- package/src/vite/plugin-component.ts +1 -1
- package/src/vite/plugin-config-reload.ts +49 -49
- package/src/vite/plugin-doc-metadata.ts +45 -45
- package/src/vite/plugin-docs.ts +4 -1
- package/src/vite/plugin-metadata.ts +30 -30
- package/src/vite/plugin-modules.ts +144 -0
- package/src/vite/plugin-shiki-register.ts +97 -97
- package/src/vite/plugin-theme.ts +399 -399
- package/src/vite/plugin.ts +2 -0
- package/src/vite/prerender/utils.ts +76 -76
- package/src/vite/prerender/worker.ts +118 -118
- package/src/vite/reporter.ts +34 -34
- package/src/vite/shadcn-registry.ts +48 -48
- package/src/vite/sitemap.ts +78 -78
- package/src/vite/ssr-templates/cloudflare.ts +19 -19
- package/src/vite/ssr-templates/node.ts +25 -25
- package/src/vite/ssr-templates/vercel.ts +22 -22
- package/src/vite/zuplo.ts +30 -30
- package/src/vite-env.d.ts +6 -6
- package/src/zuplo/enrich-with-zuplo-mcp.ts +168 -168
- package/src/zuplo/enrich-with-zuplo.ts +256 -256
- package/src/zuplo/policy-types.ts +46 -46
- package/src/zuplo/with-zuplo-processors.ts +36 -36
- package/src/zuplo/with-zuplo.ts +14 -14
- package/LICENSE.md +0 -18
- package/dist/declarations/lib/components/navigation/ZudokuLogo.d.ts +0 -6
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Callout
|
|
3
|
+
sidebar_icon: circle-alert
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Callout } from "@lukoweb/apitogo/ui/Callout";
|
|
7
|
+
import { ReactComponentDoc } from "@lukoweb/apitogo/ui/ReactComponentDoc";
|
|
8
|
+
|
|
9
|
+
This is a callout component that can be used to draw attention to important information.
|
|
10
|
+
|
|
11
|
+
## Import
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
import { Callout } from "@lukoweb/apitogo/ui/Callout";
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
<ReactComponentDoc component={Callout} />
|
|
18
|
+
|
|
19
|
+
:::tip{title="Hot tip"}
|
|
20
|
+
|
|
21
|
+
There's a shortcut to use callout components in Markdown files:
|
|
22
|
+
[Admonitions](../markdown/admonitions).
|
|
23
|
+
|
|
24
|
+
:::
|
|
25
|
+
|
|
26
|
+
## Note
|
|
27
|
+
|
|
28
|
+
<Callout type="note" title="Hey, listen!">
|
|
29
|
+
This draws attention to important information.
|
|
30
|
+
</Callout>
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
<Callout type="note" title="Hey, listen!">
|
|
34
|
+
This draws attention to important information.
|
|
35
|
+
</Callout>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Info
|
|
39
|
+
|
|
40
|
+
<Callout type="info" title="It's safe to use the info">
|
|
41
|
+
This adds info to your content.
|
|
42
|
+
</Callout>
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
<Callout type="info" title="It's safe to use the info">
|
|
46
|
+
This adds info to your content.
|
|
47
|
+
</Callout>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Tip
|
|
51
|
+
|
|
52
|
+
<Callout type="tip" title="You'll be successful">
|
|
53
|
+
If you choose to be.
|
|
54
|
+
</Callout>
|
|
55
|
+
|
|
56
|
+
```tsx
|
|
57
|
+
<Callout type="tip" title="You'll be successful">
|
|
58
|
+
If you choose to be.
|
|
59
|
+
</Callout>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Danger
|
|
63
|
+
|
|
64
|
+
<Callout type="danger" title="But some things are dangerous">
|
|
65
|
+
It's dangerous to go alone, take this.
|
|
66
|
+
</Callout>
|
|
67
|
+
|
|
68
|
+
```tsx
|
|
69
|
+
<Callout type="danger" title="But some things are dangerous">
|
|
70
|
+
It's dangerous to go alone, take this.
|
|
71
|
+
</Callout>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Caution
|
|
75
|
+
|
|
76
|
+
<Callout type="caution" title="So, better show a warning">
|
|
77
|
+
This raises a warning to watch out for.
|
|
78
|
+
</Callout>
|
|
79
|
+
|
|
80
|
+
```tsx
|
|
81
|
+
<Callout type="caution" title="So, better show a warning">
|
|
82
|
+
This raises a warning to watch out for.
|
|
83
|
+
</Callout>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Variations
|
|
87
|
+
|
|
88
|
+
Callouts can be customized by omitting the title or icon:
|
|
89
|
+
|
|
90
|
+
<Callout type="note">Without a title</Callout>
|
|
91
|
+
|
|
92
|
+
<Callout type="note" icon={false} title="Without an icon">
|
|
93
|
+
You can hide the icon while keeping the title
|
|
94
|
+
</Callout>
|
|
95
|
+
|
|
96
|
+
<Callout type="note" icon={false}>
|
|
97
|
+
Or have neither title nor icon
|
|
98
|
+
</Callout>
|
|
99
|
+
|
|
100
|
+
```tsx
|
|
101
|
+
<Callout type="note">
|
|
102
|
+
Without a title
|
|
103
|
+
</Callout>
|
|
104
|
+
|
|
105
|
+
<Callout type="note" icon={false} title="Without an icon">
|
|
106
|
+
You can hide the icon while keeping the title
|
|
107
|
+
</Callout>
|
|
108
|
+
|
|
109
|
+
<Callout type="note" icon={false}>
|
|
110
|
+
Or have neither title nor icon
|
|
111
|
+
</Callout>
|
|
112
|
+
```
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Card
|
|
3
|
+
sidebar_icon: square
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
Card,
|
|
8
|
+
CardContent,
|
|
9
|
+
CardHeader,
|
|
10
|
+
CardTitle,
|
|
11
|
+
CardDescription,
|
|
12
|
+
CardFooter,
|
|
13
|
+
} from "@lukoweb/apitogo/ui/Card";
|
|
14
|
+
import { Button } from "@lukoweb/apitogo/ui/Button";
|
|
15
|
+
import { Input } from "@lukoweb/apitogo/ui/Input";
|
|
16
|
+
import { Label } from "@lukoweb/apitogo/ui/Label";
|
|
17
|
+
|
|
18
|
+
A flexible card component with header, content, and footer sections for displaying grouped
|
|
19
|
+
information.
|
|
20
|
+
|
|
21
|
+
## Import
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
import {
|
|
25
|
+
Card,
|
|
26
|
+
CardContent,
|
|
27
|
+
CardDescription,
|
|
28
|
+
CardFooter,
|
|
29
|
+
CardHeader,
|
|
30
|
+
CardTitle,
|
|
31
|
+
} from "@lukoweb/apitogo/ui/Card";
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Components
|
|
35
|
+
|
|
36
|
+
The Card component consists of several sub-components:
|
|
37
|
+
|
|
38
|
+
- `Card` - The main container
|
|
39
|
+
- `CardHeader` - Header section with padding
|
|
40
|
+
- `CardTitle` - Styled title for the header
|
|
41
|
+
- `CardDescription` - Muted description text
|
|
42
|
+
- `CardContent` - Main content area
|
|
43
|
+
- `CardFooter` - Footer section for actions
|
|
44
|
+
|
|
45
|
+
## Basic Usage
|
|
46
|
+
|
|
47
|
+
<Card className="w-[350px] not-prose">
|
|
48
|
+
<CardHeader>
|
|
49
|
+
<CardTitle>Card Title</CardTitle>
|
|
50
|
+
<CardDescription>Card Description</CardDescription>
|
|
51
|
+
</CardHeader>
|
|
52
|
+
<CardContent>
|
|
53
|
+
<p>Card content goes here.</p>
|
|
54
|
+
</CardContent>
|
|
55
|
+
</Card>
|
|
56
|
+
|
|
57
|
+
```tsx
|
|
58
|
+
<Card className="w-[350px]">
|
|
59
|
+
<CardHeader>
|
|
60
|
+
<CardTitle>Card Title</CardTitle>
|
|
61
|
+
<CardDescription>Card Description</CardDescription>
|
|
62
|
+
</CardHeader>
|
|
63
|
+
<CardContent>
|
|
64
|
+
<p>Card content goes here.</p>
|
|
65
|
+
</CardContent>
|
|
66
|
+
</Card>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## With Footer
|
|
70
|
+
|
|
71
|
+
<Card className="w-[350px] not-prose">
|
|
72
|
+
<CardHeader>
|
|
73
|
+
<CardTitle>Create project</CardTitle>
|
|
74
|
+
<CardDescription>Deploy your new project in one-click.</CardDescription>
|
|
75
|
+
</CardHeader>
|
|
76
|
+
<CardContent>Card content goes here.</CardContent>
|
|
77
|
+
<CardFooter className="flex justify-between">
|
|
78
|
+
<Button variant="outline">Cancel</Button>
|
|
79
|
+
<Button>Deploy</Button>
|
|
80
|
+
</CardFooter>
|
|
81
|
+
</Card>
|
|
82
|
+
|
|
83
|
+
```tsx
|
|
84
|
+
<Card className="w-[350px]">
|
|
85
|
+
<CardHeader>
|
|
86
|
+
<CardTitle>Create project</CardTitle>
|
|
87
|
+
<CardDescription>Deploy your new project in one-click.</CardDescription>
|
|
88
|
+
</CardHeader>
|
|
89
|
+
<CardContent>
|
|
90
|
+
<form>
|
|
91
|
+
<div className="grid w-full items-center gap-4">
|
|
92
|
+
<div className="flex flex-col space-y-1.5">
|
|
93
|
+
<Label htmlFor="name">Name</Label>
|
|
94
|
+
<Input id="name" placeholder="Name of your project" />
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</form>
|
|
98
|
+
</CardContent>
|
|
99
|
+
<CardFooter className="flex justify-between">
|
|
100
|
+
<Button variant="outline">Cancel</Button>
|
|
101
|
+
<Button>Deploy</Button>
|
|
102
|
+
</CardFooter>
|
|
103
|
+
</Card>
|
|
104
|
+
```
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Checkbox
|
|
3
|
+
sidebar_icon: check-square
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Checkbox } from "@lukoweb/apitogo/ui/Checkbox";
|
|
7
|
+
import { Label } from "@lukoweb/apitogo/ui/Label";
|
|
8
|
+
|
|
9
|
+
A checkbox component built on Radix UI primitives for boolean input.
|
|
10
|
+
|
|
11
|
+
## Import
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
import { Checkbox } from "@lukoweb/apitogo/ui/Checkbox";
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Basic Usage
|
|
18
|
+
|
|
19
|
+
<Checkbox />
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
<Checkbox />
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## With Label
|
|
26
|
+
|
|
27
|
+
<div className="flex items-center space-x-2">
|
|
28
|
+
<Checkbox id="terms" />
|
|
29
|
+
<Label htmlFor="terms">Accept terms and conditions</Label>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
<div className="flex items-center space-x-2">
|
|
34
|
+
<Checkbox id="terms" />
|
|
35
|
+
<Label htmlFor="terms">Accept terms and conditions</Label>
|
|
36
|
+
</div>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Checked State
|
|
40
|
+
|
|
41
|
+
<div className="flex items-center space-x-2">
|
|
42
|
+
<Checkbox id="terms2" defaultChecked />
|
|
43
|
+
<Label htmlFor="terms2">Accept terms and conditions</Label>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
```tsx
|
|
47
|
+
<div className="flex items-center space-x-2">
|
|
48
|
+
<Checkbox id="terms2" defaultChecked />
|
|
49
|
+
<Label htmlFor="terms2">Accept terms and conditions</Label>
|
|
50
|
+
</div>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Disabled State
|
|
54
|
+
|
|
55
|
+
<div className="flex items-center space-x-2">
|
|
56
|
+
<Checkbox id="terms3" disabled />
|
|
57
|
+
<Label htmlFor="terms3">Accept terms and conditions</Label>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
```tsx
|
|
61
|
+
<div className="flex items-center space-x-2">
|
|
62
|
+
<Checkbox id="terms3" disabled />
|
|
63
|
+
<Label htmlFor="terms3">Accept terms and conditions</Label>
|
|
64
|
+
</div>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Features
|
|
68
|
+
|
|
69
|
+
- **Accessibility**: Full keyboard navigation and screen reader support
|
|
70
|
+
- **Indeterminate State**: Supports indeterminate state for partial selections
|
|
71
|
+
- **Controlled/Uncontrolled**: Can be used with or without state management
|
|
72
|
+
- **Customizable**: Easy to style with className prop
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: ClientOnly
|
|
3
|
+
sidebar_icon: monitor
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
A component that only renders its children on the client-side, preventing hydration mismatches
|
|
7
|
+
between server and client rendering.
|
|
8
|
+
|
|
9
|
+
## Import
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
import { ClientOnly } from "@lukoweb/apitogo/components";
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Props
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
type ClientOnlyProps = {
|
|
19
|
+
children: ReactNode;
|
|
20
|
+
fallback?: ReactNode;
|
|
21
|
+
};
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
### Basic Usage
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
<ClientOnly>
|
|
30
|
+
<SomeClientOnlyComponent />
|
|
31
|
+
</ClientOnly>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### With Fallback
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
<ClientOnly fallback={<div>Loading...</div>}>
|
|
38
|
+
<InteractiveWidget />
|
|
39
|
+
</ClientOnly>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
function MyComponent() {
|
|
46
|
+
return (
|
|
47
|
+
<div>
|
|
48
|
+
<h1>This renders on both server and client</h1>
|
|
49
|
+
<ClientOnly fallback={<Spinner />}>
|
|
50
|
+
<ComponentThatUsesWindowObject />
|
|
51
|
+
</ClientOnly>
|
|
52
|
+
</div>
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Use Cases
|
|
58
|
+
|
|
59
|
+
- **Browser APIs**: Components that use `window`, `document`, or other browser-only APIs
|
|
60
|
+
- **Third-party Libraries**: Libraries that don't support SSR
|
|
61
|
+
- **Theme Switches**: Preventing flash of incorrect theme
|
|
62
|
+
- **Interactive Widgets**: Components with complex client-side state
|
|
63
|
+
- **Conditional Features**: Features that should only appear on the client
|
|
64
|
+
|
|
65
|
+
## Notes
|
|
66
|
+
|
|
67
|
+
:::caution
|
|
68
|
+
|
|
69
|
+
Use ClientOnly sparingly as it can impact SEO and initial page load performance. Only use it when
|
|
70
|
+
necessary for components that cannot be server-rendered.
|
|
71
|
+
|
|
72
|
+
:::
|
|
73
|
+
|
|
74
|
+
:::tip
|
|
75
|
+
|
|
76
|
+
Always provide a meaningful fallback that matches the approximate size and layout of your
|
|
77
|
+
client-only component to prevent layout shifts.
|
|
78
|
+
|
|
79
|
+
:::
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: CodeTabs
|
|
3
|
+
sidebar_icon: columns-2
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
A tabbed code block component that groups multiple code blocks into a single unified view. Useful
|
|
7
|
+
for showing the same example in different languages or alternative commands for different package
|
|
8
|
+
managers.
|
|
9
|
+
|
|
10
|
+
:::note
|
|
11
|
+
|
|
12
|
+
In MDX, the `CodeTabs` component is available by default and doesn't need an explicit import.
|
|
13
|
+
|
|
14
|
+
:::
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
Wrap multiple fenced code blocks with `<CodeTabs>` and they will render as tabs. Tab labels are
|
|
19
|
+
automatically inferred from the code block language.
|
|
20
|
+
|
|
21
|
+
<CodeTabs>
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
const greeting: string = "Hello, world!";
|
|
25
|
+
console.log(greeting);
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
const greeting = "Hello, world!";
|
|
30
|
+
console.log(greeting);
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```py
|
|
34
|
+
greeting = "Hello, world!"
|
|
35
|
+
print(greeting)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
</CodeTabs>
|
|
39
|
+
|
|
40
|
+
````mdx
|
|
41
|
+
<CodeTabs>
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
const greeting: string = "Hello, world!";
|
|
45
|
+
console.log(greeting);
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```js
|
|
49
|
+
const greeting = "Hello, world!";
|
|
50
|
+
console.log(greeting);
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```py
|
|
54
|
+
greeting = "Hello, world!"
|
|
55
|
+
print(greeting)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
</CodeTabs>
|
|
59
|
+
````
|
|
60
|
+
|
|
61
|
+
## Custom Labels
|
|
62
|
+
|
|
63
|
+
Use the `title` meta attribute on each code block to set a custom tab label. This is especially
|
|
64
|
+
useful when multiple code blocks share the same language.
|
|
65
|
+
|
|
66
|
+
<CodeTabs>
|
|
67
|
+
|
|
68
|
+
```sh /apitogo/ title="pnpm" showLineNumbers icon="pnpm"
|
|
69
|
+
pnpm add @lukoweb/apitogo
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```sh title="npm" icon="npm"
|
|
73
|
+
npm install @lukoweb/apitogo
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```sh title="yarn" icon="yarn"
|
|
77
|
+
yarn add @lukoweb/apitogo
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
</CodeTabs>
|
|
81
|
+
|
|
82
|
+
````mdx
|
|
83
|
+
<CodeTabs>
|
|
84
|
+
|
|
85
|
+
```sh title="pnpm" icon="pnpm"
|
|
86
|
+
pnpm add @lukoweb/apitogo
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
```sh title="npm" icon="npm"
|
|
90
|
+
npm install @lukoweb/apitogo
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
```sh title="yarn" icon="yarn"
|
|
94
|
+
yarn add @lukoweb/apitogo
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
</CodeTabs>
|
|
98
|
+
````
|
|
99
|
+
|
|
100
|
+
## Synced Tabs
|
|
101
|
+
|
|
102
|
+
Use the `syncKey` prop to keep multiple `CodeTabs` instances in sync. When a user selects a tab in
|
|
103
|
+
one group, all groups with the same `syncKey` update to match. The selection is persisted to
|
|
104
|
+
localStorage and synced across browser tabs.
|
|
105
|
+
|
|
106
|
+
<div className="flex justify-center gap-4 *:flex-1">
|
|
107
|
+
|
|
108
|
+
<CodeTabs syncKey="package-manager">
|
|
109
|
+
```sh title="pnpm" icon="pnpm"
|
|
110
|
+
pnpm run build
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
```sh title="npm" icon="npm"
|
|
114
|
+
npm run build
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
</CodeTabs>
|
|
118
|
+
|
|
119
|
+
<CodeTabs syncKey="package-manager">
|
|
120
|
+
```sh title="pnpm" icon="pnpm"
|
|
121
|
+
pnpm run build
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
```sh title="npm" icon="npm"
|
|
125
|
+
npm run build
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
</CodeTabs>
|
|
129
|
+
</div>
|
|
130
|
+
|
|
131
|
+
````mdx
|
|
132
|
+
<CodeTabs syncKey="package-manager">
|
|
133
|
+
```sh title="pnpm" icon="pnpm"
|
|
134
|
+
pnpm add @lukoweb/apitogo
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
```sh title="npm" icon="npm"
|
|
138
|
+
npm install @lukoweb/apitogo
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
</CodeTabs>
|
|
142
|
+
|
|
143
|
+
<!-- repeat above -->
|
|
144
|
+
````
|
|
145
|
+
|
|
146
|
+
## Programmatic Usage
|
|
147
|
+
|
|
148
|
+
Usually it's recommended to use fenced code blocks in MDX files. However, when building reusable
|
|
149
|
+
components (e.g. in your MDX component config), fenced code blocks aren't processed by the MDX
|
|
150
|
+
pipeline. Use `CodeTabPanel` directly instead:
|
|
151
|
+
|
|
152
|
+
```tsx
|
|
153
|
+
import { CodeTabs, CodeTabPanel } from "@lukoweb/apitogo/ui/CodeTabs";
|
|
154
|
+
|
|
155
|
+
const InstallTabs = ({ pkg }: { pkg: string }) => (
|
|
156
|
+
<CodeTabs syncKey="package-manager">
|
|
157
|
+
<CodeTabPanel language="sh" title="pnpm" icon="pnpm" code={`pnpm add ${pkg}`} />
|
|
158
|
+
<CodeTabPanel language="sh" title="npm" icon="npm" code={`npm install ${pkg}`} />
|
|
159
|
+
<CodeTabPanel language="sh" title="yarn" icon="yarn" code={`yarn add ${pkg}`} />
|
|
160
|
+
</CodeTabs>
|
|
161
|
+
);
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### CodeTabPanel Props
|
|
165
|
+
|
|
166
|
+
| Prop | Type | Description |
|
|
167
|
+
| ---------- | -------- | --------------------------------------------------------------- |
|
|
168
|
+
| `code` | `string` | The code content to display. Required. |
|
|
169
|
+
| `language` | `string` | Language for syntax highlighting and label inference. |
|
|
170
|
+
| `title` | `string` | Custom tab label. Falls back to `language`. |
|
|
171
|
+
| `icon` | `string` | Override the language icon (e.g. `"pnpm"`, `"npm"`). |
|
|
172
|
+
| `meta` | `string` | Raw meta string like in code blocks (e.g. `"showLineNumbers"`). |
|
|
173
|
+
|
|
174
|
+
## Props
|
|
175
|
+
|
|
176
|
+
| Prop | Type | Description |
|
|
177
|
+
| ---------- | --------- | ----------------------------------------------------------------------------------------------------- |
|
|
178
|
+
| `syncKey` | `string` | Sync selected tab across all `CodeTabs` with the same key. Persisted to localStorage and across tabs. |
|
|
179
|
+
| `hideIcon` | `boolean` | Hide the language icon in tabs. Defaults to `false`. |
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Dialog
|
|
3
|
+
sidebar_icon: rectangle-horizontal
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
Dialog,
|
|
8
|
+
DialogContent,
|
|
9
|
+
DialogDescription,
|
|
10
|
+
DialogFooter,
|
|
11
|
+
DialogHeader,
|
|
12
|
+
DialogTitle,
|
|
13
|
+
DialogTrigger,
|
|
14
|
+
} from "@lukoweb/apitogo/ui/Dialog";
|
|
15
|
+
import { Button } from "@lukoweb/apitogo/ui/Button";
|
|
16
|
+
import { Input } from "@lukoweb/apitogo/ui/Input";
|
|
17
|
+
import { Label } from "@lukoweb/apitogo/ui/Label";
|
|
18
|
+
|
|
19
|
+
A modal dialog component built on Radix UI primitives for displaying content that requires user
|
|
20
|
+
attention.
|
|
21
|
+
|
|
22
|
+
## Import
|
|
23
|
+
|
|
24
|
+
```tsx
|
|
25
|
+
import {
|
|
26
|
+
Dialog,
|
|
27
|
+
DialogContent,
|
|
28
|
+
DialogDescription,
|
|
29
|
+
DialogFooter,
|
|
30
|
+
DialogHeader,
|
|
31
|
+
DialogTitle,
|
|
32
|
+
DialogTrigger,
|
|
33
|
+
} from "@lukoweb/apitogo/ui/Dialog";
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Components
|
|
37
|
+
|
|
38
|
+
The Dialog component consists of several sub-components:
|
|
39
|
+
|
|
40
|
+
- `Dialog` - The main container (root)
|
|
41
|
+
- `DialogTrigger` - Button that opens the dialog
|
|
42
|
+
- `DialogContent` - The modal content container
|
|
43
|
+
- `DialogHeader` - Header section for title and description
|
|
44
|
+
- `DialogTitle` - The dialog title
|
|
45
|
+
- `DialogDescription` - Additional description text
|
|
46
|
+
- `DialogFooter` - Footer section for actions
|
|
47
|
+
- `DialogClose` - Element that closes the dialog when clicked
|
|
48
|
+
|
|
49
|
+
## Basic Usage
|
|
50
|
+
|
|
51
|
+
<Dialog>
|
|
52
|
+
<DialogTrigger asChild>
|
|
53
|
+
<Button variant="outline">Open Dialog</Button>
|
|
54
|
+
</DialogTrigger>
|
|
55
|
+
<DialogContent>
|
|
56
|
+
<DialogHeader>
|
|
57
|
+
<DialogTitle>Are you absolutely sure?</DialogTitle>
|
|
58
|
+
<DialogDescription>
|
|
59
|
+
This action cannot be undone. This will permanently delete your account and remove your data
|
|
60
|
+
from our servers.
|
|
61
|
+
</DialogDescription>
|
|
62
|
+
</DialogHeader>
|
|
63
|
+
</DialogContent>
|
|
64
|
+
</Dialog>
|
|
65
|
+
|
|
66
|
+
```tsx
|
|
67
|
+
<Dialog>
|
|
68
|
+
<DialogTrigger asChild>
|
|
69
|
+
<Button variant="outline">Open Dialog</Button>
|
|
70
|
+
</DialogTrigger>
|
|
71
|
+
<DialogContent>
|
|
72
|
+
<DialogHeader>
|
|
73
|
+
<DialogTitle>Are you absolutely sure?</DialogTitle>
|
|
74
|
+
<DialogDescription>
|
|
75
|
+
This action cannot be undone. This will permanently delete your account and remove your data
|
|
76
|
+
from our servers.
|
|
77
|
+
</DialogDescription>
|
|
78
|
+
</DialogHeader>
|
|
79
|
+
</DialogContent>
|
|
80
|
+
</Dialog>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## With Footer Actions
|
|
84
|
+
|
|
85
|
+
<Dialog>
|
|
86
|
+
<DialogTrigger asChild>
|
|
87
|
+
<Button>Edit Profile</Button>
|
|
88
|
+
</DialogTrigger>
|
|
89
|
+
<DialogContent className="sm:max-w-[425px]">
|
|
90
|
+
<DialogHeader>
|
|
91
|
+
<DialogTitle>Edit profile</DialogTitle>
|
|
92
|
+
<DialogDescription>
|
|
93
|
+
Make changes to your profile here. Click save when you're done.
|
|
94
|
+
</DialogDescription>
|
|
95
|
+
</DialogHeader>
|
|
96
|
+
<div className="grid gap-4 py-4">
|
|
97
|
+
<div className="grid grid-cols-4 items-center gap-4">
|
|
98
|
+
<Label htmlFor="name" className="text-right">
|
|
99
|
+
Name
|
|
100
|
+
</Label>
|
|
101
|
+
<Input id="name" defaultValue="Pedro Duarte" className="col-span-3" />
|
|
102
|
+
</div>
|
|
103
|
+
<div className="grid grid-cols-4 items-center gap-4">
|
|
104
|
+
<Label htmlFor="username" className="text-right">
|
|
105
|
+
Username
|
|
106
|
+
</Label>
|
|
107
|
+
<Input id="username" defaultValue="@peduarte" className="col-span-3" />
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
<DialogFooter>
|
|
111
|
+
<Button type="submit">Save changes</Button>
|
|
112
|
+
</DialogFooter>
|
|
113
|
+
</DialogContent>
|
|
114
|
+
</Dialog>
|
|
115
|
+
|
|
116
|
+
```tsx
|
|
117
|
+
<Dialog>
|
|
118
|
+
<DialogTrigger asChild>
|
|
119
|
+
<Button>Edit Profile</Button>
|
|
120
|
+
</DialogTrigger>
|
|
121
|
+
<DialogContent className="sm:max-w-[425px]">
|
|
122
|
+
<DialogHeader>
|
|
123
|
+
<DialogTitle>Edit profile</DialogTitle>
|
|
124
|
+
<DialogDescription>
|
|
125
|
+
Make changes to your profile here. Click save when you're done.
|
|
126
|
+
</DialogDescription>
|
|
127
|
+
</DialogHeader>
|
|
128
|
+
<div className="grid gap-4 py-4">
|
|
129
|
+
<div className="grid grid-cols-4 items-center gap-4">
|
|
130
|
+
<Label htmlFor="name" className="text-right">
|
|
131
|
+
Name
|
|
132
|
+
</Label>
|
|
133
|
+
<Input id="name" defaultValue="Pedro Duarte" className="col-span-3" />
|
|
134
|
+
</div>
|
|
135
|
+
<div className="grid grid-cols-4 items-center gap-4">
|
|
136
|
+
<Label htmlFor="username" className="text-right">
|
|
137
|
+
Username
|
|
138
|
+
</Label>
|
|
139
|
+
<Input id="username" defaultValue="@peduarte" className="col-span-3" />
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
<DialogFooter>
|
|
143
|
+
<Button type="submit">Save changes</Button>
|
|
144
|
+
</DialogFooter>
|
|
145
|
+
</DialogContent>
|
|
146
|
+
</Dialog>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Props
|
|
150
|
+
|
|
151
|
+
### DialogContent
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
interface DialogContentProps extends React.ComponentPropsWithoutRef<
|
|
155
|
+
typeof DialogPrimitive.Content
|
|
156
|
+
> {
|
|
157
|
+
showCloseButton?: boolean; // Default: true
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Features
|
|
162
|
+
|
|
163
|
+
- **Keyboard Navigation**: ESC key closes the dialog
|
|
164
|
+
- **Focus Management**: Focus is trapped within the dialog
|
|
165
|
+
- **Accessibility**: Proper ARIA attributes and screen reader support
|
|
166
|
+
- **Backdrop Click**: Clicking outside closes the dialog
|
|
167
|
+
- **Animation**: Smooth enter/exit animations
|