@lukoweb/apitogo 0.1.24 → 0.1.37
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,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Markdown
|
|
3
|
+
sidebar_icon: heading-1
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
A component for rendering markdown content with syntax highlighting and custom components.
|
|
7
|
+
|
|
8
|
+
## Import
|
|
9
|
+
|
|
10
|
+
```tsx
|
|
11
|
+
import { Markdown } from "@lukoweb/apitogo/components";
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Props
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
type MarkdownProps = {
|
|
18
|
+
content: string;
|
|
19
|
+
className?: string;
|
|
20
|
+
components?: Components;
|
|
21
|
+
};
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
### Basic Markdown
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
<Markdown content="# Hello World\n\nThis is **bold** text." />
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### With Custom Styling
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
<Markdown content="# Styled Content" className="max-w-2xl mx-auto" />
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### With Custom Components
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
const customComponents = {
|
|
42
|
+
h1: ({ children }) => <h1 className="text-4xl font-bold text-blue-600">{children}</h1>,
|
|
43
|
+
p: ({ children }) => <p className="text-gray-700 leading-relaxed">{children}</p>,
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
<Markdown content="# Custom Heading\n\nCustom paragraph styling." components={customComponents} />;
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
:::info
|
|
50
|
+
|
|
51
|
+
Custom components provided via the `components` prop will merge with default MDX components,
|
|
52
|
+
allowing you to override specific elements while keeping others intact.
|
|
53
|
+
|
|
54
|
+
:::
|
|
55
|
+
|
|
56
|
+
## Features
|
|
57
|
+
|
|
58
|
+
- **GitHub Flavored Markdown**: Full GFM support including tables, strikethrough, and task lists
|
|
59
|
+
- **Syntax Highlighting**: Code blocks with configurable Shiki themes
|
|
60
|
+
- **Raw HTML Support**: Safely renders HTML mixed with markdown
|
|
61
|
+
- **Custom Components**: Override default markdown elements with custom React components
|
|
62
|
+
- **Prose Styling**: Built-in typography styles with dark mode support
|
|
63
|
+
|
|
64
|
+
## Supported Markdown
|
|
65
|
+
|
|
66
|
+
### Headers
|
|
67
|
+
|
|
68
|
+
```markdown
|
|
69
|
+
# H1 Header
|
|
70
|
+
|
|
71
|
+
## H2 Header
|
|
72
|
+
|
|
73
|
+
### H3 Header
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Emphasis
|
|
77
|
+
|
|
78
|
+
<!-- prettier-ignore -->
|
|
79
|
+
```markdown
|
|
80
|
+
_italic_ or *italic*
|
|
81
|
+
**bold** or __bold__
|
|
82
|
+
**_bold italic_**
|
|
83
|
+
~~strikethrough~~
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Lists
|
|
87
|
+
|
|
88
|
+
```markdown
|
|
89
|
+
- Unordered list item
|
|
90
|
+
- Another item
|
|
91
|
+
- Nested item
|
|
92
|
+
|
|
93
|
+
1. Ordered list item
|
|
94
|
+
2. Another numbered item
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Code
|
|
98
|
+
|
|
99
|
+
The Markdown component supports both inline code and code blocks with syntax highlighting.
|
|
100
|
+
|
|
101
|
+
**Inline code** with backticks:
|
|
102
|
+
|
|
103
|
+
```markdown
|
|
104
|
+
Inline `code` with backticks
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Code blocks** with syntax highlighting:
|
|
108
|
+
|
|
109
|
+
````markdown
|
|
110
|
+
```javascript
|
|
111
|
+
// Code block with syntax highlighting
|
|
112
|
+
function hello() {
|
|
113
|
+
console.log("Hello, world!");
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
````
|
|
117
|
+
|
|
118
|
+
For advanced syntax highlighting features like line numbers, titles, and line highlighting, see:
|
|
119
|
+
|
|
120
|
+
- [Code Blocks](/docs/markdown/code-blocks) - Markdown code block syntax and features
|
|
121
|
+
- [Syntax Highlight](/docs/components/syntax-highlight) - React component for syntax highlighting
|
|
122
|
+
|
|
123
|
+
### Links and Images
|
|
124
|
+
|
|
125
|
+
```markdown
|
|
126
|
+
[Link text](https://example.com) 
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Tables
|
|
130
|
+
|
|
131
|
+
```markdown
|
|
132
|
+
| Column 1 | Column 2 |
|
|
133
|
+
| -------- | -------- |
|
|
134
|
+
| Cell 1 | Cell 2 |
|
|
135
|
+
| Cell 3 | Cell 4 |
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Configuration
|
|
139
|
+
|
|
140
|
+
The Markdown component automatically uses:
|
|
141
|
+
|
|
142
|
+
- **Remark GFM**: For GitHub Flavored Markdown features
|
|
143
|
+
- **Rehype Raw**: For HTML support
|
|
144
|
+
- **Shiki**: For syntax highlighting with your configured themes
|
|
145
|
+
|
|
146
|
+
:::tip
|
|
147
|
+
|
|
148
|
+
The Markdown component integrates with APIToGo's syntax highlighting configuration and will use the
|
|
149
|
+
same themes as configured in your APIToGo options.
|
|
150
|
+
|
|
151
|
+
:::
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Mermaid
|
|
3
|
+
sidebar_icon: chart-network
|
|
4
|
+
description: Render Mermaid diagrams dynamically with client-side rendering.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
import { Mermaid } from "@lukoweb/apitogo/mermaid";
|
|
8
|
+
|
|
9
|
+
The `Mermaid` component renders [Mermaid diagrams](https://mermaid.js.org/) in the browser using
|
|
10
|
+
client-side rendering.
|
|
11
|
+
|
|
12
|
+
<br />
|
|
13
|
+
|
|
14
|
+
:::info{title="Build-Time Alternative"}
|
|
15
|
+
|
|
16
|
+
For static diagrams, consider [build-time rendering with rehype-mermaid](/docs/guides/mermaid).
|
|
17
|
+
|
|
18
|
+
:::
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
Install the `mermaid` peer dependency:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install mermaid
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Import
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
import { Mermaid } from "@lukoweb/apitogo/mermaid";
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Props
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
type MermaidProps = {
|
|
38
|
+
chart: string; // Mermaid diagram definition
|
|
39
|
+
config?: MermaidConfig; // Optional Mermaid configuration
|
|
40
|
+
} & ComponentProps<"div">;
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Usage
|
|
44
|
+
|
|
45
|
+
### Basic Usage
|
|
46
|
+
|
|
47
|
+
```tsx
|
|
48
|
+
<Mermaid
|
|
49
|
+
chart={`graph TD;
|
|
50
|
+
A-->B;
|
|
51
|
+
A-->C;
|
|
52
|
+
B-->D;
|
|
53
|
+
C-->D;`}
|
|
54
|
+
/>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
<Mermaid
|
|
58
|
+
chart={`graph TD;
|
|
59
|
+
A-->B;
|
|
60
|
+
A-->C;
|
|
61
|
+
B-->D;
|
|
62
|
+
C-->D;`}
|
|
63
|
+
/>
|
|
64
|
+
|
|
65
|
+
### With Configuration
|
|
66
|
+
|
|
67
|
+
```tsx
|
|
68
|
+
<Mermaid
|
|
69
|
+
config={{ theme: "dark" }}
|
|
70
|
+
chart={`sequenceDiagram
|
|
71
|
+
Alice->>Bob: Hello Bob
|
|
72
|
+
Bob-->>Alice: Hi Alice`}
|
|
73
|
+
/>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
<Mermaid
|
|
77
|
+
config={{ theme: "dark" }}
|
|
78
|
+
chart={`sequenceDiagram
|
|
79
|
+
Alice->>Bob: Hello Bob
|
|
80
|
+
Bob-->>Alice: Hi Alice`}
|
|
81
|
+
/>
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: API Playground
|
|
3
|
+
sidebar_icon: circle-play
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You can use this component to allow users to test your API anywhere in your documentation.
|
|
7
|
+
|
|
8
|
+
This component is **only available in [MDX files](/docs/markdown/mdx)** and you can use it directly
|
|
9
|
+
without any imports:
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
<OpenPlaygroundButton {...props} />
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
:::tip{title="Hot tip"}
|
|
16
|
+
|
|
17
|
+
The Playground can point to any API endpoint, even if it's not in the API catalog.
|
|
18
|
+
|
|
19
|
+
:::
|
|
20
|
+
|
|
21
|
+
## Props
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
type PlaygroundProps = {
|
|
25
|
+
server: string;
|
|
26
|
+
url: string;
|
|
27
|
+
method: string;
|
|
28
|
+
headers?: Header[];
|
|
29
|
+
pathParams?: PathParam[];
|
|
30
|
+
queryParams?: QueryParam[];
|
|
31
|
+
body?: string;
|
|
32
|
+
};
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Examples
|
|
36
|
+
|
|
37
|
+
### Zuplo Echo
|
|
38
|
+
|
|
39
|
+
In this example, we're using the Zuplo Echo API to test the `POST /hello-world/{name}` endpoint.
|
|
40
|
+
|
|
41
|
+
<OpenPlaygroundButton
|
|
42
|
+
server="https://echo.zuplo.io/"
|
|
43
|
+
url="/hello-world/{name}"
|
|
44
|
+
headers={[{ name: "X-APIToGo-Playground", defaultValue: "Hello World" }]}
|
|
45
|
+
pathParams={[{ name: "name", defaultValue: "John" }]}
|
|
46
|
+
queryParams={[
|
|
47
|
+
{ name: "age", defaultValue: "30" },
|
|
48
|
+
{ name: "city", defaultValue: "New York" },
|
|
49
|
+
]}
|
|
50
|
+
body={JSON.stringify({ message: "Hello World" })}
|
|
51
|
+
method="POST"
|
|
52
|
+
/>
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
<OpenPlaygroundButton
|
|
56
|
+
server="https://echo.zuplo.io/"
|
|
57
|
+
url="/hello-world/{name}"
|
|
58
|
+
headers={[
|
|
59
|
+
{
|
|
60
|
+
name: "X-APIToGo-Playground",
|
|
61
|
+
defaultValue: "Hello World",
|
|
62
|
+
},
|
|
63
|
+
]}
|
|
64
|
+
pathParams={[{ name: "name", defaultValue: "John" }]}
|
|
65
|
+
queryParams={[
|
|
66
|
+
{ name: "age", defaultValue: "30" },
|
|
67
|
+
{ name: "city", defaultValue: "New York" },
|
|
68
|
+
]}
|
|
69
|
+
body={JSON.stringify({ message: "Hello World" })}
|
|
70
|
+
method="POST"
|
|
71
|
+
/>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### JSON Placeholder
|
|
75
|
+
|
|
76
|
+
In this example, we're using the JSON Placeholder API to test the `GET /photos` endpoint. We can
|
|
77
|
+
also change the Text on the button to something more specific to the API.
|
|
78
|
+
|
|
79
|
+
<OpenPlaygroundButton server="https://jsonplaceholder.typicode.com" url="/photos" method="GET">
|
|
80
|
+
Test Photos Endpoint
|
|
81
|
+
</OpenPlaygroundButton>
|
|
82
|
+
|
|
83
|
+
```tsx
|
|
84
|
+
<OpenPlaygroundButton server="https://jsonplaceholder.typicode.com" url="/photos" method="GET">
|
|
85
|
+
Test Photos Endpoint
|
|
86
|
+
</OpenPlaygroundButton>
|
|
87
|
+
```
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Secret
|
|
3
|
+
sidebar_icon: lock
|
|
4
|
+
description: Use the Secret component to display and manage API keys in your APIToGo application.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
import { Secret } from "@lukoweb/apitogo/ui/Secret";
|
|
8
|
+
import { Value } from "@lukoweb/apitogo/ui/Value";
|
|
9
|
+
|
|
10
|
+
The `Secret` component can be used to display secrets, typically API keys, in your APIToGo
|
|
11
|
+
application.
|
|
12
|
+
|
|
13
|
+
## Import
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { Secret } from "@lukoweb/apitogo/ui/Secret";
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
<Secret
|
|
23
|
+
secret="pkcd_this-is-a-never-01K1DASDXXQDA9S6GKASKYAFSDH"
|
|
24
|
+
status="active"
|
|
25
|
+
preview={5}
|
|
26
|
+
onCopy={(secret) => {
|
|
27
|
+
console.log("Copied secret:", secret);
|
|
28
|
+
}}
|
|
29
|
+
onReveal={(revealed) => {
|
|
30
|
+
console.log("Revealed:", revealed);
|
|
31
|
+
}}
|
|
32
|
+
/>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
<div className="flex flex-col gap-2">
|
|
36
|
+
<Secret
|
|
37
|
+
secret="pkcd_this-is-a-never-01K1DASDXXQDA9S6GKASKYAFSDH"
|
|
38
|
+
status="active"
|
|
39
|
+
className="max-w-fit"
|
|
40
|
+
/>
|
|
41
|
+
|
|
42
|
+
<Secret
|
|
43
|
+
secret="pkcd_this-is-a-gonna-01K1DAFSDHAS9S6GE5KASKYSDXX"
|
|
44
|
+
status="expiring"
|
|
45
|
+
className="max-w-fit"
|
|
46
|
+
/>
|
|
47
|
+
|
|
48
|
+
<Secret
|
|
49
|
+
secret="pkcd_this-is-a-give-01K1DAFSSDHOOASDD9S6KYGE5KAS"
|
|
50
|
+
status="expired"
|
|
51
|
+
className="max-w-fit"
|
|
52
|
+
/>
|
|
53
|
+
|
|
54
|
+
<Secret
|
|
55
|
+
secret="pkcd_this-is-a-you-01K1DAGDN0NDDHXS7VBYGFME1SFSR"
|
|
56
|
+
status="revoked"
|
|
57
|
+
className="max-w-fit"
|
|
58
|
+
/>
|
|
59
|
+
|
|
60
|
+
<Secret
|
|
61
|
+
secret="pkcd_this-is-a-you-01K1DAGDN0NDDHXS7VBYGFME1SFSR"
|
|
62
|
+
status="none"
|
|
63
|
+
className="max-w-fit"
|
|
64
|
+
/>
|
|
65
|
+
|
|
66
|
+
<Secret secret="pkcd_this-is-a-up-01K1DAFSDHASDXXSQDA9S6GE5KASKY" className="max-w-fit" />
|
|
67
|
+
|
|
68
|
+
<div className="flex flex-col gap-0 max-w-fit not-prose">
|
|
69
|
+
<span className="text-sm font-medium">Client ID</span>
|
|
70
|
+
<Value
|
|
71
|
+
value="client-id-01985b58-d7af-71eb-a27e-b2062935ece4"
|
|
72
|
+
className="w-full"
|
|
73
|
+
/>
|
|
74
|
+
<span className="text-sm font-medium">Client Secret</span>
|
|
75
|
+
<Secret
|
|
76
|
+
secret="pkcd_this-is-a-up-01K1DAFSDHASDXXSQDA9S6GE5KASKY"
|
|
77
|
+
/>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Select
|
|
3
|
+
sidebar_icon: chevron-down
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
Select,
|
|
8
|
+
SelectContent,
|
|
9
|
+
SelectGroup,
|
|
10
|
+
SelectItem,
|
|
11
|
+
SelectLabel,
|
|
12
|
+
SelectSeparator,
|
|
13
|
+
SelectTrigger,
|
|
14
|
+
SelectValue,
|
|
15
|
+
} from "@lukoweb/apitogo/ui/Select";
|
|
16
|
+
import { Label } from "@lukoweb/apitogo/ui/Label";
|
|
17
|
+
|
|
18
|
+
A select component built on Radix UI primitives for choosing from a list of options.
|
|
19
|
+
|
|
20
|
+
## Import
|
|
21
|
+
|
|
22
|
+
<!-- prettier-ignore -->
|
|
23
|
+
```tsx
|
|
24
|
+
import {
|
|
25
|
+
Select,
|
|
26
|
+
SelectContent,
|
|
27
|
+
SelectItem,
|
|
28
|
+
SelectTrigger,
|
|
29
|
+
SelectValue,
|
|
30
|
+
} from "@lukoweb/apitogo/ui/Select";
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Components
|
|
34
|
+
|
|
35
|
+
The Select component consists of several sub-components:
|
|
36
|
+
|
|
37
|
+
- `Select` - The main container (root)
|
|
38
|
+
- `SelectTrigger` - Button that opens the select menu
|
|
39
|
+
- `SelectValue` - Displays the selected value
|
|
40
|
+
- `SelectContent` - The dropdown content container
|
|
41
|
+
- `SelectItem` - Individual selectable option
|
|
42
|
+
- `SelectLabel` - Section labels within the dropdown
|
|
43
|
+
- `SelectSeparator` - Visual separator between groups
|
|
44
|
+
- `SelectGroup` - Groups related items together
|
|
45
|
+
|
|
46
|
+
## Basic Usage
|
|
47
|
+
|
|
48
|
+
<Select>
|
|
49
|
+
<SelectTrigger className="w-[180px]">
|
|
50
|
+
<SelectValue placeholder="Select a fruit" />
|
|
51
|
+
</SelectTrigger>
|
|
52
|
+
<SelectContent>
|
|
53
|
+
<SelectItem value="apple">Apple</SelectItem>
|
|
54
|
+
<SelectItem value="banana">Banana</SelectItem>
|
|
55
|
+
<SelectItem value="blueberry">Blueberry</SelectItem>
|
|
56
|
+
<SelectItem value="grapes">Grapes</SelectItem>
|
|
57
|
+
<SelectItem value="pineapple">Pineapple</SelectItem>
|
|
58
|
+
</SelectContent>
|
|
59
|
+
</Select>
|
|
60
|
+
|
|
61
|
+
```tsx
|
|
62
|
+
<Select>
|
|
63
|
+
<SelectTrigger className="w-[180px]">
|
|
64
|
+
<SelectValue placeholder="Select a fruit" />
|
|
65
|
+
</SelectTrigger>
|
|
66
|
+
<SelectContent>
|
|
67
|
+
<SelectItem value="apple">Apple</SelectItem>
|
|
68
|
+
<SelectItem value="banana">Banana</SelectItem>
|
|
69
|
+
<SelectItem value="blueberry">Blueberry</SelectItem>
|
|
70
|
+
<SelectItem value="grapes">Grapes</SelectItem>
|
|
71
|
+
<SelectItem value="pineapple">Pineapple</SelectItem>
|
|
72
|
+
</SelectContent>
|
|
73
|
+
</Select>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## With Labels and Groups
|
|
77
|
+
|
|
78
|
+
<Select>
|
|
79
|
+
<SelectTrigger className="w-[280px]">
|
|
80
|
+
<SelectValue placeholder="Select a timezone" />
|
|
81
|
+
</SelectTrigger>
|
|
82
|
+
<SelectContent>
|
|
83
|
+
<SelectGroup>
|
|
84
|
+
<SelectLabel>North America</SelectLabel>
|
|
85
|
+
<SelectItem value="est">Eastern Standard Time (EST)</SelectItem>
|
|
86
|
+
<SelectItem value="cst">Central Standard Time (CST)</SelectItem>
|
|
87
|
+
<SelectItem value="mst">Mountain Standard Time (MST)</SelectItem>
|
|
88
|
+
<SelectItem value="pst">Pacific Standard Time (PST)</SelectItem>
|
|
89
|
+
<SelectItem value="akst">Alaska Standard Time (AKST)</SelectItem>
|
|
90
|
+
<SelectItem value="hst">Hawaii Standard Time (HST)</SelectItem>
|
|
91
|
+
</SelectGroup>
|
|
92
|
+
<SelectSeparator />
|
|
93
|
+
<SelectGroup>
|
|
94
|
+
<SelectLabel>Europe & Africa</SelectLabel>
|
|
95
|
+
<SelectItem value="gmt">Greenwich Mean Time (GMT)</SelectItem>
|
|
96
|
+
<SelectItem value="cet">Central European Time (CET)</SelectItem>
|
|
97
|
+
<SelectItem value="eet">Eastern European Time (EET)</SelectItem>
|
|
98
|
+
<SelectItem value="west">Western European Summer Time (WEST)</SelectItem>
|
|
99
|
+
<SelectItem value="cat">Central Africa Time (CAT)</SelectItem>
|
|
100
|
+
<SelectItem value="eat">East Africa Time (EAT)</SelectItem>
|
|
101
|
+
</SelectGroup>
|
|
102
|
+
</SelectContent>
|
|
103
|
+
</Select>
|
|
104
|
+
|
|
105
|
+
```tsx
|
|
106
|
+
<Select>
|
|
107
|
+
<SelectTrigger className="w-[280px]">
|
|
108
|
+
<SelectValue placeholder="Select a timezone" />
|
|
109
|
+
</SelectTrigger>
|
|
110
|
+
<SelectContent>
|
|
111
|
+
<SelectGroup>
|
|
112
|
+
<SelectLabel>North America</SelectLabel>
|
|
113
|
+
<SelectItem value="est">Eastern Standard Time (EST)</SelectItem>
|
|
114
|
+
<SelectItem value="cst">Central Standard Time (CST)</SelectItem>
|
|
115
|
+
<SelectItem value="mst">Mountain Standard Time (MST)</SelectItem>
|
|
116
|
+
<SelectItem value="pst">Pacific Standard Time (PST)</SelectItem>
|
|
117
|
+
<SelectItem value="akst">Alaska Standard Time (AKST)</SelectItem>
|
|
118
|
+
<SelectItem value="hst">Hawaii Standard Time (HST)</SelectItem>
|
|
119
|
+
</SelectGroup>
|
|
120
|
+
<SelectSeparator />
|
|
121
|
+
<SelectGroup>
|
|
122
|
+
<SelectLabel>Europe & Africa</SelectLabel>
|
|
123
|
+
<SelectItem value="gmt">Greenwich Mean Time (GMT)</SelectItem>
|
|
124
|
+
<SelectItem value="cet">Central European Time (CET)</SelectItem>
|
|
125
|
+
<SelectItem value="eet">Eastern European Time (EET)</SelectItem>
|
|
126
|
+
<SelectItem value="west">Western European Summer Time (WEST)</SelectItem>
|
|
127
|
+
<SelectItem value="cat">Central Africa Time (CAT)</SelectItem>
|
|
128
|
+
<SelectItem value="eat">East Africa Time (EAT)</SelectItem>
|
|
129
|
+
</SelectGroup>
|
|
130
|
+
</SelectContent>
|
|
131
|
+
</Select>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## With Label
|
|
135
|
+
|
|
136
|
+
<div className="grid w-full max-w-sm items-center gap-1.5">
|
|
137
|
+
<Label htmlFor="framework">Framework</Label>
|
|
138
|
+
<Select>
|
|
139
|
+
<SelectTrigger id="framework">
|
|
140
|
+
<SelectValue placeholder="Select" />
|
|
141
|
+
</SelectTrigger>
|
|
142
|
+
<SelectContent position="popper">
|
|
143
|
+
<SelectItem value="next">Next.js</SelectItem>
|
|
144
|
+
<SelectItem value="sveltekit">SvelteKit</SelectItem>
|
|
145
|
+
<SelectItem value="nuxt">Nuxt.js</SelectItem>
|
|
146
|
+
<SelectItem value="remix">Remix</SelectItem>
|
|
147
|
+
<SelectItem value="astro">Astro</SelectItem>
|
|
148
|
+
</SelectContent>
|
|
149
|
+
</Select>
|
|
150
|
+
</div>
|
|
151
|
+
|
|
152
|
+
```tsx
|
|
153
|
+
<div className="grid w-full max-w-sm items-center gap-1.5">
|
|
154
|
+
<Label htmlFor="framework">Framework</Label>
|
|
155
|
+
<Select>
|
|
156
|
+
<SelectTrigger id="framework">
|
|
157
|
+
<SelectValue placeholder="Select" />
|
|
158
|
+
</SelectTrigger>
|
|
159
|
+
<SelectContent position="popper">
|
|
160
|
+
<SelectItem value="next">Next.js</SelectItem>
|
|
161
|
+
<SelectItem value="sveltekit">SvelteKit</SelectItem>
|
|
162
|
+
<SelectItem value="nuxt">Nuxt.js</SelectItem>
|
|
163
|
+
<SelectItem value="remix">Remix</SelectItem>
|
|
164
|
+
<SelectItem value="astro">Astro</SelectItem>
|
|
165
|
+
</SelectContent>
|
|
166
|
+
</Select>
|
|
167
|
+
</div>
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Features
|
|
171
|
+
|
|
172
|
+
- **Keyboard Navigation**: Full keyboard support for navigation and selection
|
|
173
|
+
- **Accessibility**: Proper ARIA attributes and screen reader support
|
|
174
|
+
- **Controlled/Uncontrolled**: Can be used with or without state management
|
|
175
|
+
- **Searchable**: Built-in search functionality when typing
|
|
176
|
+
- **Custom Positioning**: Flexible positioning options
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_label: shadcn/ui
|
|
3
|
+
sidebar_icon: puzzle
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
All shadcn/ui components are available for direct import from their respective UI modules:
|
|
7
|
+
|
|
8
|
+
export const components = [
|
|
9
|
+
"Accordion",
|
|
10
|
+
"Alert",
|
|
11
|
+
"AspectRatio",
|
|
12
|
+
"Badge",
|
|
13
|
+
"Breadcrumb",
|
|
14
|
+
"Button",
|
|
15
|
+
"Card",
|
|
16
|
+
"Carousel",
|
|
17
|
+
"Checkbox",
|
|
18
|
+
"Collapsible",
|
|
19
|
+
"Command",
|
|
20
|
+
"Dialog",
|
|
21
|
+
"Drawer",
|
|
22
|
+
"DropdownMenu",
|
|
23
|
+
"Form",
|
|
24
|
+
"HoverCard",
|
|
25
|
+
"Input",
|
|
26
|
+
"Label",
|
|
27
|
+
"Pagination",
|
|
28
|
+
"Popover",
|
|
29
|
+
"Progress",
|
|
30
|
+
"RadioGroup",
|
|
31
|
+
"ScrollArea",
|
|
32
|
+
"Select",
|
|
33
|
+
"Skeleton",
|
|
34
|
+
"Slider",
|
|
35
|
+
"Switch",
|
|
36
|
+
"Tabs",
|
|
37
|
+
"Textarea",
|
|
38
|
+
"Toggle",
|
|
39
|
+
"ToggleGroup",
|
|
40
|
+
"Tooltip",
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
# `shadcn/ui` components
|
|
44
|
+
|
|
45
|
+
We use a couple components from [shadcn/ui](https://ui.shadcn.com). To make them re-usable for and
|
|
46
|
+
use them in your project you can import them from `@lukoweb/apitogo/ui/*`.
|
|
47
|
+
|
|
48
|
+
For example:
|
|
49
|
+
|
|
50
|
+
```tsx
|
|
51
|
+
import { Button } from "@lukoweb/apitogo/ui/Button";
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Following components are available:
|
|
55
|
+
|
|
56
|
+
<ul className="grid grid-cols-2 sm:grid-cols-3">
|
|
57
|
+
{components.map((comp) => {
|
|
58
|
+
const link = comp.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<li key={comp}>
|
|
62
|
+
<a
|
|
63
|
+
target="_blank"
|
|
64
|
+
href={`https://ui.shadcn.com/docs/components/${link}`}
|
|
65
|
+
>
|
|
66
|
+
{comp}
|
|
67
|
+
</a>
|
|
68
|
+
</li>
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
})}
|
|
72
|
+
|
|
73
|
+
</ul>
|