@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.
Files changed (477) hide show
  1. package/README.md +92 -0
  2. package/cli.js +13 -13
  3. package/client.d.ts +8 -8
  4. package/dist/cli/cli.js +1117 -624
  5. package/dist/declarations/config/config.d.ts +4 -0
  6. package/dist/declarations/config/loader.d.ts +2 -0
  7. package/dist/declarations/config/resolve-modules.d.ts +34 -0
  8. package/dist/declarations/config/validators/InputNavigationSchema.d.ts +7 -7
  9. package/dist/declarations/config/validators/ModulesSchema.d.ts +417 -0
  10. package/dist/declarations/config/validators/ZudokuConfig.d.ts +123 -4
  11. package/dist/declarations/index.d.ts +3 -1
  12. package/dist/declarations/lib/authentication/components/ProductionUnlockPage.d.ts +1 -0
  13. package/dist/declarations/lib/authentication/hook.d.ts +3 -19
  14. package/dist/declarations/lib/authentication/providers/dev-portal-constants.d.ts +16 -0
  15. package/dist/declarations/lib/authentication/providers/dev-portal-utils.d.ts +9 -0
  16. package/dist/declarations/lib/authentication/providers/dev-portal.d.ts +39 -0
  17. package/dist/declarations/lib/authentication/state.d.ts +12 -26
  18. package/dist/declarations/lib/components/LandingLayout.d.ts +4 -0
  19. package/dist/declarations/lib/components/index.d.ts +2 -0
  20. package/dist/declarations/lib/plugins/api-keys/index.d.ts +2 -1
  21. package/dist/flat-config.d.ts +209 -24
  22. package/docs/components/alert.mdx +130 -0
  23. package/docs/components/badge.mdx +70 -0
  24. package/docs/components/button.mdx +132 -0
  25. package/docs/components/callout.mdx +112 -0
  26. package/docs/components/card.mdx +104 -0
  27. package/docs/components/checkbox.mdx +72 -0
  28. package/docs/components/client-only.mdx +79 -0
  29. package/docs/components/code-tabs.mdx +179 -0
  30. package/docs/components/dialog.mdx +167 -0
  31. package/docs/components/head.mdx +200 -0
  32. package/docs/components/icons.mdx +27 -0
  33. package/docs/components/input.mdx +96 -0
  34. package/docs/components/label.mdx +86 -0
  35. package/docs/components/link.mdx +242 -0
  36. package/docs/components/markdown.mdx +151 -0
  37. package/docs/components/mermaid.mdx +81 -0
  38. package/docs/components/playground.mdx +87 -0
  39. package/docs/components/secret.mdx +79 -0
  40. package/docs/components/select.mdx +176 -0
  41. package/docs/components/shadcn.mdx +73 -0
  42. package/docs/components/slider.mdx +108 -0
  43. package/docs/components/slot.mdx +119 -0
  44. package/docs/components/stepper.mdx +138 -0
  45. package/docs/components/switch.mdx +96 -0
  46. package/docs/components/syntax-highlight.mdx +602 -0
  47. package/docs/components/textarea.mdx +78 -0
  48. package/docs/components/tooltip.mdx +195 -0
  49. package/docs/components/typography.mdx +61 -0
  50. package/docs/concepts/auth-provider-api-identities.md +109 -0
  51. package/docs/configuration/ai-assistants.md +65 -0
  52. package/docs/configuration/api-catalog.md +109 -0
  53. package/docs/configuration/api-reference.md +397 -0
  54. package/docs/configuration/authentication-auth0.md +174 -0
  55. package/docs/configuration/authentication-azure-ad.md +238 -0
  56. package/docs/configuration/authentication-clerk.md +110 -0
  57. package/docs/configuration/authentication-firebase.md +62 -0
  58. package/docs/configuration/authentication-pingfederate.md +136 -0
  59. package/docs/configuration/authentication-supabase.md +226 -0
  60. package/docs/configuration/authentication.md +231 -0
  61. package/docs/configuration/build-configuration.mdx +147 -0
  62. package/docs/configuration/docs.md +282 -0
  63. package/docs/configuration/footer.mdx +214 -0
  64. package/docs/configuration/llms.md +90 -0
  65. package/docs/configuration/make-config.mdx +90 -0
  66. package/docs/configuration/navigation.mdx +422 -0
  67. package/docs/configuration/overview.md +380 -0
  68. package/docs/configuration/protected-routes.md +150 -0
  69. package/docs/configuration/search.md +163 -0
  70. package/docs/configuration/sentry.mdx +44 -0
  71. package/docs/configuration/site.md +124 -0
  72. package/docs/configuration/slots.mdx +125 -0
  73. package/docs/configuration/vite-config.md +18 -0
  74. package/docs/custom-plugins.md +285 -0
  75. package/docs/customization/colors-theme.mdx +276 -0
  76. package/docs/customization/fonts.md +110 -0
  77. package/docs/deploy/apache-nginx.md +41 -0
  78. package/docs/deploy/apitogo.md +139 -0
  79. package/docs/deploy/cloudflare-pages.md +75 -0
  80. package/docs/deploy/direct-upload.md +18 -0
  81. package/docs/deploy/github-pages.md +50 -0
  82. package/docs/deploy/vercel.md +103 -0
  83. package/docs/deployment.md +21 -0
  84. package/docs/extending/events.md +124 -0
  85. package/docs/guides/custom-pages.md +106 -0
  86. package/docs/guides/environment-variables.md +99 -0
  87. package/docs/guides/managing-api-keys-and-identities.md +172 -0
  88. package/docs/guides/mermaid.mdx +70 -0
  89. package/docs/guides/navigation-migration.md +87 -0
  90. package/docs/guides/navigation-rules.mdx +203 -0
  91. package/docs/guides/processors.mdx +234 -0
  92. package/docs/guides/static-files.md +55 -0
  93. package/docs/guides/transforming-examples.md +156 -0
  94. package/docs/guides/using-multiple-apis.md +87 -0
  95. package/docs/markdown/admonitions.md +128 -0
  96. package/docs/markdown/code-blocks.md +196 -0
  97. package/docs/markdown/frontmatter.md +173 -0
  98. package/docs/markdown/mdx.md +68 -0
  99. package/docs/markdown/overview.md +275 -0
  100. package/docs/plugins.md +5 -0
  101. package/docs/quickstart.md +87 -0
  102. package/docs/writing.mdx +72 -0
  103. package/package.json +170 -116
  104. package/src/app/ZuploBuildConfig.ts +36 -36
  105. package/src/app/defaultTheme.css +77 -77
  106. package/src/app/demo-cdn.html +37 -37
  107. package/src/app/demo.html +21 -21
  108. package/src/app/demo.tsx +77 -77
  109. package/src/app/entry.client.tsx +118 -118
  110. package/src/app/entry.server.tsx +160 -160
  111. package/src/app/env.ts +40 -40
  112. package/src/app/font.geist.css +73 -73
  113. package/src/app/main.css +390 -390
  114. package/src/app/main.tsx +8 -1
  115. package/src/app/polyfills.ts +47 -47
  116. package/src/app/processRoutes.tsx +51 -25
  117. package/src/app/sentry.ts +24 -24
  118. package/src/app/standalone.html +23 -23
  119. package/src/app/standalone.tsx +60 -60
  120. package/src/app/utils/createRedirectRoutes.ts +11 -11
  121. package/src/config/config.ts +32 -0
  122. package/src/config/create-plugin.ts +71 -71
  123. package/src/config/file-exists.ts +6 -6
  124. package/src/config/loader.ts +11 -1
  125. package/src/config/resolve-modules.ts +260 -0
  126. package/src/config/validators/BuildSchema.ts +95 -95
  127. package/src/config/validators/HeaderNavigationSchema.ts +41 -41
  128. package/src/config/validators/InputNavigationSchema.test-d.ts +178 -178
  129. package/src/config/validators/InputNavigationSchema.ts +206 -206
  130. package/src/config/validators/ModulesSchema.ts +312 -0
  131. package/src/config/validators/ProtectedRoutesSchema.ts +35 -35
  132. package/src/config/validators/ZudokuConfig.ts +766 -729
  133. package/src/config/validators/auth.ts +3 -3
  134. package/src/config/validators/reason-codes.ts +7 -7
  135. package/src/env.d.ts +11 -11
  136. package/src/index.ts +31 -0
  137. package/src/lib/MissingIcon.tsx +22 -22
  138. package/src/lib/assets/language-icons/bun.tsx +50 -50
  139. package/src/lib/assets/language-icons/c.tsx +31 -31
  140. package/src/lib/assets/language-icons/commonlisp.tsx +22 -22
  141. package/src/lib/assets/language-icons/cpp.tsx +35 -35
  142. package/src/lib/assets/language-icons/csharp.tsx +35 -35
  143. package/src/lib/assets/language-icons/css.tsx +36 -36
  144. package/src/lib/assets/language-icons/dart.tsx +39 -39
  145. package/src/lib/assets/language-icons/elixir.tsx +19 -19
  146. package/src/lib/assets/language-icons/go.tsx +19 -19
  147. package/src/lib/assets/language-icons/graphql.tsx +19 -19
  148. package/src/lib/assets/language-icons/html.tsx +24 -24
  149. package/src/lib/assets/language-icons/java.tsx +35 -35
  150. package/src/lib/assets/language-icons/javascript.tsx +11 -11
  151. package/src/lib/assets/language-icons/json.tsx +19 -19
  152. package/src/lib/assets/language-icons/kotlin.tsx +30 -30
  153. package/src/lib/assets/language-icons/markdown.tsx +19 -19
  154. package/src/lib/assets/language-icons/mdx.tsx +23 -23
  155. package/src/lib/assets/language-icons/npm.tsx +15 -15
  156. package/src/lib/assets/language-icons/objectivec.tsx +23 -23
  157. package/src/lib/assets/language-icons/ocaml.tsx +34 -34
  158. package/src/lib/assets/language-icons/php.tsx +19 -19
  159. package/src/lib/assets/language-icons/pnpm.tsx +32 -32
  160. package/src/lib/assets/language-icons/powershell.tsx +27 -27
  161. package/src/lib/assets/language-icons/python.tsx +23 -23
  162. package/src/lib/assets/language-icons/react.tsx +21 -21
  163. package/src/lib/assets/language-icons/ruby.tsx +19 -19
  164. package/src/lib/assets/language-icons/rust.tsx +19 -19
  165. package/src/lib/assets/language-icons/scala.tsx +19 -19
  166. package/src/lib/assets/language-icons/shell.tsx +19 -19
  167. package/src/lib/assets/language-icons/swift.tsx +19 -19
  168. package/src/lib/assets/language-icons/toml.tsx +23 -23
  169. package/src/lib/assets/language-icons/typescript.tsx +23 -23
  170. package/src/lib/assets/language-icons/xml.tsx +19 -19
  171. package/src/lib/assets/language-icons/yaml.tsx +23 -23
  172. package/src/lib/assets/language-icons/yarn.tsx +17 -17
  173. package/src/lib/assets/language-icons/zig.tsx +32 -32
  174. package/src/lib/auth/issuer.ts +34 -31
  175. package/src/lib/authentication/AuthenticationPlugin.tsx +33 -33
  176. package/src/lib/authentication/authentication.ts +48 -48
  177. package/src/lib/authentication/components/OAuthErrorPage.tsx +197 -197
  178. package/src/lib/authentication/components/ProductionUnlockPage.tsx +27 -0
  179. package/src/lib/authentication/components/SignOut.tsx +15 -15
  180. package/src/lib/authentication/constants.ts +1 -1
  181. package/src/lib/authentication/errors.ts +34 -34
  182. package/src/lib/authentication/hook.ts +141 -139
  183. package/src/lib/authentication/providers/auth0.tsx +91 -91
  184. package/src/lib/authentication/providers/azureb2c.tsx +223 -223
  185. package/src/lib/authentication/providers/dev-portal-constants.ts +21 -0
  186. package/src/lib/authentication/providers/dev-portal-utils.ts +107 -0
  187. package/src/lib/authentication/providers/dev-portal.tsx +270 -0
  188. package/src/lib/authentication/providers/firebase.tsx +486 -486
  189. package/src/lib/authentication/providers/openid.tsx +516 -516
  190. package/src/lib/authentication/providers/supabase.tsx +412 -412
  191. package/src/lib/authentication/providers/util.ts +26 -26
  192. package/src/lib/authentication/state.ts +179 -91
  193. package/src/lib/authentication/ui/icons/Apple.tsx +10 -10
  194. package/src/lib/authentication/ui/icons/Facebook.tsx +15 -15
  195. package/src/lib/authentication/ui/icons/Github.tsx +16 -16
  196. package/src/lib/authentication/ui/icons/Google.tsx +16 -16
  197. package/src/lib/authentication/ui/icons/Microsoft.tsx +12 -12
  198. package/src/lib/authentication/ui/icons/X.tsx +10 -10
  199. package/src/lib/authentication/utils/relativeRedirectUrl.ts +16 -16
  200. package/src/lib/components/AnchorLink.tsx +24 -24
  201. package/src/lib/components/Banner.tsx +52 -52
  202. package/src/lib/components/Bootstrap.tsx +77 -77
  203. package/src/lib/components/BuildCheck.tsx +87 -87
  204. package/src/lib/components/CategoryHeading.tsx +19 -19
  205. package/src/lib/components/ClientOnly.tsx +19 -19
  206. package/src/lib/components/ErrorPage.tsx +26 -26
  207. package/src/lib/components/Footer.tsx +140 -140
  208. package/src/lib/components/Framed.tsx +51 -51
  209. package/src/lib/components/Header.tsx +11 -3
  210. package/src/lib/components/HeaderNavigation.tsx +148 -148
  211. package/src/lib/components/Heading.tsx +84 -84
  212. package/src/lib/components/InlineCode.tsx +15 -15
  213. package/src/lib/components/LandingLayout.tsx +21 -0
  214. package/src/lib/components/LanguageIcon.tsx +199 -199
  215. package/src/lib/components/Markdown.tsx +55 -55
  216. package/src/lib/components/Meta.tsx +46 -46
  217. package/src/lib/components/MobileTopNavigation.tsx +11 -3
  218. package/src/lib/components/NotFoundPage.tsx +37 -37
  219. package/src/lib/components/PageProgress.tsx +28 -28
  220. package/src/lib/components/PagefindSearchMeta.tsx +14 -14
  221. package/src/lib/components/Pagination.tsx +44 -44
  222. package/src/lib/components/PathRenderer.tsx +61 -61
  223. package/src/lib/components/PluginHeads.tsx +17 -17
  224. package/src/lib/components/Search.tsx +70 -70
  225. package/src/lib/components/Slot.tsx +64 -64
  226. package/src/lib/components/Spinner.tsx +5 -5
  227. package/src/lib/components/StatusPage.tsx +96 -96
  228. package/src/lib/components/ThemeSwitch.tsx +49 -49
  229. package/src/lib/components/Typography.tsx +12 -12
  230. package/src/lib/components/Zudoku.tsx +106 -106
  231. package/src/lib/components/cache.ts +27 -27
  232. package/src/lib/components/context/RenderContext.ts +11 -11
  233. package/src/lib/components/context/RouterEventsEmitter.tsx +19 -19
  234. package/src/lib/components/context/SlotProvider.tsx +149 -149
  235. package/src/lib/components/context/ViewportAnchorContext.tsx +137 -137
  236. package/src/lib/components/context/ZudokuContext.ts +140 -140
  237. package/src/lib/components/context/ZudokuProvider.tsx +22 -22
  238. package/src/lib/components/context/ZudokuReactContext.tsx +17 -17
  239. package/src/lib/components/index.ts +2 -0
  240. package/src/lib/components/navigation/Navigation.tsx +51 -51
  241. package/src/lib/components/navigation/NavigationBadge.tsx +48 -48
  242. package/src/lib/components/navigation/NavigationFilterContext.tsx +28 -28
  243. package/src/lib/components/navigation/NavigationWrapper.tsx +49 -49
  244. package/src/lib/components/navigation/Toc.tsx +137 -137
  245. package/src/lib/components/navigation/ZudokuLogo.tsx +25 -25
  246. package/src/lib/components/navigation/ZuploLogo.tsx +14 -14
  247. package/src/lib/components/navigation/utils.ts +234 -234
  248. package/src/lib/core/RouteGuard.tsx +11 -1
  249. package/src/lib/core/ZudokuContext.ts +271 -271
  250. package/src/lib/core/plugins.ts +138 -138
  251. package/src/lib/core/react-query.ts +1 -1
  252. package/src/lib/core/router.ts +1 -1
  253. package/src/lib/core/transform-config.ts +67 -67
  254. package/src/lib/demo/DemoAnnouncement.tsx +17 -17
  255. package/src/lib/errors/ErrorAlert.tsx +28 -28
  256. package/src/lib/errors/RouterError.tsx +18 -18
  257. package/src/lib/errors/ServerError.tsx +5 -5
  258. package/src/lib/errors/TopLevelError.tsx +6 -6
  259. package/src/lib/hooks/index.ts +13 -13
  260. package/src/lib/hooks/useEvent.ts +41 -41
  261. package/src/lib/hooks/useHighlighter.ts +15 -15
  262. package/src/lib/hooks/useHotkey.ts +70 -70
  263. package/src/lib/icons.ts +2 -2
  264. package/src/lib/navigation/applyRules.ts +127 -127
  265. package/src/lib/navigation/pathMatcher.ts +81 -81
  266. package/src/lib/oas/graphql/circular.ts +69 -69
  267. package/src/lib/oas/graphql/constants.ts +2 -2
  268. package/src/lib/oas/graphql/index.ts +791 -791
  269. package/src/lib/oas/parser/dereference/index.ts +84 -84
  270. package/src/lib/oas/parser/dereference/resolveRef.ts +32 -32
  271. package/src/lib/oas/parser/index.ts +129 -129
  272. package/src/lib/oas/parser/schemas/v3.0.json +1489 -1489
  273. package/src/lib/oas/parser/schemas/v3.1.json +1298 -1298
  274. package/src/lib/oas/parser/upgrade/index.ts +174 -174
  275. package/src/lib/plugins/api-catalog/index.tsx +119 -119
  276. package/src/lib/plugins/api-keys/ProtectedRoute.tsx +33 -33
  277. package/src/lib/plugins/api-keys/index.tsx +274 -272
  278. package/src/lib/plugins/api-keys/settings/ApiKeyList.tsx +67 -67
  279. package/src/lib/plugins/custom-pages/index.tsx +32 -32
  280. package/src/lib/plugins/markdown/assets/ChatGPTLogo.tsx +11 -11
  281. package/src/lib/plugins/markdown/assets/ClaudeLogo.tsx +19 -19
  282. package/src/lib/plugins/markdown/index.tsx +62 -62
  283. package/src/lib/plugins/openapi/ColorizedParam.tsx +115 -115
  284. package/src/lib/plugins/openapi/Endpoint.tsx +85 -85
  285. package/src/lib/plugins/openapi/MCPEndpoint.tsx +273 -273
  286. package/src/lib/plugins/openapi/OasProvider.tsx +74 -74
  287. package/src/lib/plugins/openapi/OperationList.tsx +275 -275
  288. package/src/lib/plugins/openapi/ParamInfos.tsx +96 -96
  289. package/src/lib/plugins/openapi/ParameterList.tsx +53 -53
  290. package/src/lib/plugins/openapi/ParameterListItem.tsx +161 -161
  291. package/src/lib/plugins/openapi/PlaygroundDialogWrapper.tsx +67 -67
  292. package/src/lib/plugins/openapi/SidecarBox.tsx +57 -57
  293. package/src/lib/plugins/openapi/SimpleSelect.tsx +46 -46
  294. package/src/lib/plugins/openapi/client/GraphQLClient.tsx +73 -73
  295. package/src/lib/plugins/openapi/client/GraphQLContext.tsx +16 -16
  296. package/src/lib/plugins/openapi/client/createServer.ts +35 -35
  297. package/src/lib/plugins/openapi/client/useCreateQuery.ts +44 -44
  298. package/src/lib/plugins/openapi/components/ConstValue.tsx +24 -24
  299. package/src/lib/plugins/openapi/components/NonHighlightedCode.tsx +22 -22
  300. package/src/lib/plugins/openapi/components/SelectOnClick.tsx +29 -29
  301. package/src/lib/plugins/openapi/context.tsx +16 -16
  302. package/src/lib/plugins/openapi/graphql/fragment-masking.ts +104 -104
  303. package/src/lib/plugins/openapi/graphql/gql.ts +95 -95
  304. package/src/lib/plugins/openapi/graphql/graphql.ts +835 -835
  305. package/src/lib/plugins/openapi/graphql/index.ts +2 -2
  306. package/src/lib/plugins/openapi/index.tsx +221 -221
  307. package/src/lib/plugins/openapi/interfaces.ts +100 -100
  308. package/src/lib/plugins/openapi/playground/Headers.tsx +6 -6
  309. package/src/lib/plugins/openapi/playground/PathParams.tsx +53 -53
  310. package/src/lib/plugins/openapi/playground/Spinner.tsx +87 -87
  311. package/src/lib/plugins/openapi/playground/createUrl.ts +25 -25
  312. package/src/lib/plugins/openapi/playground/fileUtils.ts +36 -36
  313. package/src/lib/plugins/openapi/playground/rememberedIdentity.ts +26 -26
  314. package/src/lib/plugins/openapi/playground/request-panel/UrlPath.tsx +31 -31
  315. package/src/lib/plugins/openapi/playground/request-panel/UrlQueryParams.tsx +29 -29
  316. package/src/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.ts +340 -340
  317. package/src/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.tsx +117 -117
  318. package/src/lib/plugins/openapi/playground/result-panel/convertToTypes.ts +36 -36
  319. package/src/lib/plugins/openapi/playground/serializeQueryParams.ts +125 -125
  320. package/src/lib/plugins/openapi/playground/useRememberSkipLoginDialog.tsx +23 -23
  321. package/src/lib/plugins/openapi/processors/removeExtensions.ts +29 -29
  322. package/src/lib/plugins/openapi/processors/removeParameters.ts +103 -103
  323. package/src/lib/plugins/openapi/processors/removePaths.ts +57 -57
  324. package/src/lib/plugins/openapi/processors/traverse.ts +1 -1
  325. package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +39 -39
  326. package/src/lib/plugins/openapi/schema/UnionView.tsx +132 -132
  327. package/src/lib/plugins/openapi/schema/union-helpers.ts +123 -123
  328. package/src/lib/plugins/openapi/schema/utils.ts +49 -49
  329. package/src/lib/plugins/openapi/state.ts +36 -36
  330. package/src/lib/plugins/openapi/util/buildTagCategories.ts +54 -54
  331. package/src/lib/plugins/openapi/util/createHttpSnippet.ts +135 -135
  332. package/src/lib/plugins/openapi/util/createNavigationCategory.tsx +39 -39
  333. package/src/lib/plugins/openapi/util/generateSchemaExample.ts +191 -191
  334. package/src/lib/plugins/openapi/util/getRoutes.tsx +265 -265
  335. package/src/lib/plugins/openapi/util/methodColorMap.tsx +11 -11
  336. package/src/lib/plugins/openapi/util/methodToColor.ts +27 -27
  337. package/src/lib/plugins/openapi/util/sanitizeMarkdownForMetatag.tsx +32 -32
  338. package/src/lib/plugins/openapi/util/useWarmupSchema.ts +23 -23
  339. package/src/lib/plugins/search-inkeep/index.tsx +108 -108
  340. package/src/lib/plugins/search-inkeep/inkeep.ts +24 -24
  341. package/src/lib/plugins/search-pagefind/get-results.tsx +74 -74
  342. package/src/lib/plugins/search-pagefind/index.tsx +21 -21
  343. package/src/lib/plugins/search-pagefind/types.ts +118 -118
  344. package/src/lib/shiki-constants.ts +24 -24
  345. package/src/lib/testing/index.tsx +146 -146
  346. package/src/lib/ui/Accordion.tsx +55 -55
  347. package/src/lib/ui/Alert.tsx +84 -84
  348. package/src/lib/ui/AlertDialog.tsx +195 -195
  349. package/src/lib/ui/AspectRatio.tsx +5 -5
  350. package/src/lib/ui/Badge.tsx +48 -48
  351. package/src/lib/ui/Breadcrumb.tsx +115 -115
  352. package/src/lib/ui/Button.tsx +65 -65
  353. package/src/lib/ui/ButtonGroup.tsx +80 -80
  354. package/src/lib/ui/Callout.tsx +113 -113
  355. package/src/lib/ui/Card.tsx +95 -95
  356. package/src/lib/ui/Carousel.tsx +259 -259
  357. package/src/lib/ui/Checkbox.tsx +28 -28
  358. package/src/lib/ui/CodeBlock.tsx +92 -92
  359. package/src/lib/ui/CodeTabPanel.tsx +13 -13
  360. package/src/lib/ui/CodeTabs.tsx +161 -161
  361. package/src/lib/ui/Collapsible.tsx +31 -31
  362. package/src/lib/ui/Dialog.tsx +138 -138
  363. package/src/lib/ui/DismissibleAlert.tsx +74 -74
  364. package/src/lib/ui/Drawer.tsx +121 -121
  365. package/src/lib/ui/DropdownMenu.tsx +254 -254
  366. package/src/lib/ui/EmbeddedCodeBlock.tsx +99 -99
  367. package/src/lib/ui/Form.tsx +176 -176
  368. package/src/lib/ui/Frame.tsx +81 -81
  369. package/src/lib/ui/HoverCard.tsx +26 -26
  370. package/src/lib/ui/Input.tsx +23 -23
  371. package/src/lib/ui/InputGroup.tsx +168 -168
  372. package/src/lib/ui/Item.tsx +213 -213
  373. package/src/lib/ui/Kbd.tsx +28 -28
  374. package/src/lib/ui/Label.tsx +23 -23
  375. package/src/lib/ui/NativeSelect.tsx +48 -48
  376. package/src/lib/ui/NavigationMenu.tsx +169 -169
  377. package/src/lib/ui/Pagination.tsx +115 -115
  378. package/src/lib/ui/Popover.tsx +28 -28
  379. package/src/lib/ui/Progress.tsx +25 -25
  380. package/src/lib/ui/RadioGroup.tsx +41 -41
  381. package/src/lib/ui/ReactComponentDoc.tsx +68 -68
  382. package/src/lib/ui/ScrollArea.tsx +45 -45
  383. package/src/lib/ui/Secret.tsx +133 -133
  384. package/src/lib/ui/Select.tsx +184 -184
  385. package/src/lib/ui/Separator.tsx +25 -25
  386. package/src/lib/ui/Skeleton.tsx +15 -15
  387. package/src/lib/ui/Slider.tsx +25 -25
  388. package/src/lib/ui/Stepper.tsx +8 -8
  389. package/src/lib/ui/Switch.tsx +26 -26
  390. package/src/lib/ui/SyntaxHighlight.tsx +54 -54
  391. package/src/lib/ui/Tabs.tsx +52 -52
  392. package/src/lib/ui/Textarea.tsx +22 -22
  393. package/src/lib/ui/Toggle.tsx +42 -42
  394. package/src/lib/ui/ToggleGroup.tsx +58 -58
  395. package/src/lib/ui/Tooltip.tsx +65 -65
  396. package/src/lib/ui/Value.tsx +42 -42
  397. package/src/lib/ui/util.tsx +8 -8
  398. package/src/lib/util/cn.ts +6 -6
  399. package/src/lib/util/createVariantComponent.tsx +61 -61
  400. package/src/lib/util/ensureArray.ts +3 -3
  401. package/src/lib/util/flattenAllOf.ts +72 -72
  402. package/src/lib/util/flattenAllOfProcessor.ts +74 -74
  403. package/src/lib/util/hastToJsx.tsx +67 -67
  404. package/src/lib/util/humanFileSize.ts +15 -15
  405. package/src/lib/util/invariant.ts +52 -52
  406. package/src/lib/util/joinUrl.ts +60 -60
  407. package/src/lib/util/logInit.ts +9 -9
  408. package/src/lib/util/objectEntries.ts +5 -5
  409. package/src/lib/util/os.ts +18 -18
  410. package/src/lib/util/pastellize.ts +25 -25
  411. package/src/lib/util/problemJson.ts +63 -63
  412. package/src/lib/util/readFrontmatter.ts +14 -14
  413. package/src/lib/util/renderIf.ts +4 -4
  414. package/src/lib/util/scrollIntoViewIfNeeded.ts +18 -18
  415. package/src/lib/util/slugify.ts +21 -21
  416. package/src/lib/util/syncZustandState.ts +22 -22
  417. package/src/lib/util/traverse.ts +70 -70
  418. package/src/lib/util/types.ts +7 -7
  419. package/src/lib/util/url.ts +18 -18
  420. package/src/lib/util/useCopyToClipboard.ts +17 -17
  421. package/src/lib/util/useExposedProps.tsx +27 -27
  422. package/src/lib/util/useIsomorphicLayoutEffect.ts +6 -6
  423. package/src/lib/util/useLatest.ts +18 -18
  424. package/src/lib/util/useOnScreen.ts +34 -34
  425. package/src/lib/util/useScrollToAnchor.ts +70 -70
  426. package/src/lib/util/useScrollToTop.ts +18 -18
  427. package/src/types.d.ts +57 -53
  428. package/src/vite/api/SchemaManager.ts +371 -371
  429. package/src/vite/api/schema-codegen.ts +163 -163
  430. package/src/vite/config.ts +5 -1
  431. package/src/vite/css/collect.ts +42 -42
  432. package/src/vite/css/plugin.ts +105 -105
  433. package/src/vite/debug.ts +18 -18
  434. package/src/vite/dev-portal-env.ts +93 -0
  435. package/src/vite/html.ts +54 -54
  436. package/src/vite/index.ts +2 -2
  437. package/src/vite/mdx/rehype-extract-toc-with-jsx-export.ts +19 -19
  438. package/src/vite/mdx/rehype-extract-toc-with-jsx.ts +70 -70
  439. package/src/vite/mdx/remark-code-tabs.ts +47 -47
  440. package/src/vite/mdx/remark-inject-filepath.ts +13 -13
  441. package/src/vite/mdx/remark-last-modified.ts +103 -103
  442. package/src/vite/mdx/remark-link-rewrite.ts +23 -23
  443. package/src/vite/mdx/remark-normalize-image-url.ts +15 -15
  444. package/src/vite/mdx/remark-static-generation.ts +149 -149
  445. package/src/vite/mdx/utils.ts +32 -32
  446. package/src/vite/output.ts +261 -261
  447. package/src/vite/package-root.ts +12 -12
  448. package/src/vite/pagefind-dev-index.ts +100 -100
  449. package/src/vite/plugin-api-keys.ts +6 -1
  450. package/src/vite/plugin-api.ts +4 -1
  451. package/src/vite/plugin-auth.ts +5 -1
  452. package/src/vite/plugin-component.ts +1 -1
  453. package/src/vite/plugin-config-reload.ts +49 -49
  454. package/src/vite/plugin-doc-metadata.ts +45 -45
  455. package/src/vite/plugin-docs.ts +4 -1
  456. package/src/vite/plugin-metadata.ts +30 -30
  457. package/src/vite/plugin-modules.ts +144 -0
  458. package/src/vite/plugin-shiki-register.ts +97 -97
  459. package/src/vite/plugin-theme.ts +399 -399
  460. package/src/vite/plugin.ts +2 -0
  461. package/src/vite/prerender/utils.ts +76 -76
  462. package/src/vite/prerender/worker.ts +118 -118
  463. package/src/vite/reporter.ts +34 -34
  464. package/src/vite/shadcn-registry.ts +48 -48
  465. package/src/vite/sitemap.ts +78 -78
  466. package/src/vite/ssr-templates/cloudflare.ts +19 -19
  467. package/src/vite/ssr-templates/node.ts +25 -25
  468. package/src/vite/ssr-templates/vercel.ts +22 -22
  469. package/src/vite/zuplo.ts +30 -30
  470. package/src/vite-env.d.ts +6 -6
  471. package/src/zuplo/enrich-with-zuplo-mcp.ts +168 -168
  472. package/src/zuplo/enrich-with-zuplo.ts +256 -256
  473. package/src/zuplo/policy-types.ts +46 -46
  474. package/src/zuplo/with-zuplo-processors.ts +36 -36
  475. package/src/zuplo/with-zuplo.ts +14 -14
  476. package/LICENSE.md +0 -18
  477. 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