@lukoweb/apitogo 0.1.24 → 0.1.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -57,31 +57,35 @@ export type _Schema9 = (("Inter" | "Roboto" | "Open Sans" | "Poppins" | "Montser
57
57
  url: string
58
58
  fontFamily?: string
59
59
  })
60
- export type _Schema14 = ({
60
+ /**
61
+ * Whether this module is active in the application.
62
+ */
63
+ export type _Schema15 = boolean
64
+ export type _Schema35 = ({
61
65
  type: "url"
62
- input: (string | _Schema15[])
63
- server?: _Schema16
64
- path?: _Schema17
65
- categories?: _Schema18
66
- options?: _Schema20
66
+ input: (string | _Schema36[])
67
+ server?: _Schema37
68
+ path?: _Schema38
69
+ categories?: _Schema39
70
+ options?: _Schema41
67
71
  } | {
68
72
  type: "file"
69
- input: (string | (string | _Schema15)[])
70
- server?: _Schema16
71
- path?: _Schema17
72
- categories?: _Schema18
73
- options?: _Schema20
73
+ input: (string | (string | _Schema36)[])
74
+ server?: _Schema37
75
+ path?: _Schema38
76
+ categories?: _Schema39
77
+ options?: _Schema41
74
78
  } | {
75
79
  type: "raw"
76
80
  input: string
77
- server?: _Schema16
78
- path?: _Schema17
79
- categories?: _Schema18
80
- options?: _Schema20
81
+ server?: _Schema37
82
+ path?: _Schema38
83
+ categories?: _Schema39
84
+ options?: _Schema41
81
85
  })
82
- export type _Schema16 = string
83
- export type _Schema17 = string
84
- export type _Schema18 = {
86
+ export type _Schema37 = string
87
+ export type _Schema38 = string
88
+ export type _Schema39 = {
85
89
  label: string
86
90
  tags: string[]
87
91
  }[]
@@ -301,6 +305,12 @@ export interface FlatZudokuConfig {
301
305
  redirectToAfterSignUp?: string
302
306
  redirectToAfterSignIn?: string
303
307
  redirectToAfterSignOut?: string
308
+ } | {
309
+ type: "dev-portal"
310
+ apiBaseUrl?: string
311
+ redirectToAfterSignUp?: string
312
+ redirectToAfterSignIn?: string
313
+ redirectToAfterSignOut?: string
304
314
  })
305
315
  search?: ({
306
316
  type: "inkeep"
@@ -353,8 +363,13 @@ export interface FlatZudokuConfig {
353
363
  includeProtected?: boolean
354
364
  }
355
365
  }
356
- apis?: (_Schema14 | _Schema14[])
357
- catalogs?: (_Schema21 | _Schema21[])
366
+ modules?: {
367
+ docs?: _Schema14
368
+ landing?: _Schema16
369
+ userPanel?: _Schema23
370
+ }
371
+ apis?: (_Schema35 | _Schema35[])
372
+ catalogs?: (_Schema42 | _Schema42[])
358
373
  apiKeys?: {
359
374
  enabled: boolean
360
375
  getConsumers?: unknown
@@ -382,7 +397,7 @@ export interface FlatZudokuConfig {
382
397
  }
383
398
  enableStatusPages?: boolean
384
399
  defaults?: {
385
- apis: _Schema20
400
+ apis: _Schema41
386
401
  examplesLanguage?: string
387
402
  }
388
403
  __pluginDirs?: string[]
@@ -432,12 +447,182 @@ export interface _Schema8 {
432
447
  ring?: string
433
448
  radius?: string
434
449
  }
435
- export interface _Schema15 {
450
+ /**
451
+ * Documentation module — MD/MDX pages and OpenAPI reference.
452
+ */
453
+ export interface _Schema14 {
454
+ enabled?: _Schema15
455
+ files?: (string | string[])
456
+ publishMarkdown?: boolean
457
+ defaultOptions?: {
458
+ toc?: boolean
459
+ copyPage?: boolean
460
+ disablePager?: boolean
461
+ showLastModified?: boolean
462
+ suggestEdit?: {
463
+ url: string
464
+ text?: string
465
+ }
466
+ }
467
+ llms?: {
468
+ llmsTxt?: boolean
469
+ llmsTxtFull?: boolean
470
+ includeProtected?: boolean
471
+ }
472
+ }
473
+ /**
474
+ * Landing page module — marketing or home page.
475
+ */
476
+ export interface _Schema16 {
477
+ enabled?: _Schema15
478
+ /**
479
+ * Route path for the landing page.
480
+ */
481
+ path?: string
482
+ /**
483
+ * Custom React component for the landing page.
484
+ */
485
+ component?: {
486
+ [k: string]: unknown
487
+ }
488
+ /**
489
+ * Path to a custom landing page component file, relative to the project root.
490
+ */
491
+ page?: string
492
+ /**
493
+ * Layout wrapper: landing (header + footer), default (docs layout), or none.
494
+ */
495
+ layout?: ("default" | "landing" | "none")
496
+ content?: _Schema21
497
+ }
498
+ /**
499
+ * Default landing page content when no custom component is provided.
500
+ */
501
+ export interface _Schema21 {
502
+ hero?: {
503
+ title?: string
504
+ subtitle?: string
505
+ description?: string
506
+ }
507
+ features?: {
508
+ title: string
509
+ description: string
510
+ }[]
511
+ primaryAction?: _Schema22
512
+ secondaryAction?: _Schema22
513
+ showPoweredBy?: boolean
514
+ }
515
+ export interface _Schema22 {
516
+ label: string
517
+ href: string
518
+ }
519
+ /**
520
+ * User panel module — authenticated user area with sub-modules.
521
+ */
522
+ export interface _Schema23 {
523
+ enabled?: _Schema15
524
+ /**
525
+ * Base path prefix for user panel routes.
526
+ */
527
+ basePath?: string
528
+ dashboard?: {
529
+ enabled?: _Schema15
530
+ /**
531
+ * Route path for the user dashboard.
532
+ */
533
+ path?: string
534
+ /**
535
+ * Path to a custom page component file, relative to the project root.
536
+ */
537
+ page?: string
538
+ /**
539
+ * Custom React component for this sub-module page.
540
+ */
541
+ component?: {
542
+ [k: string]: unknown
543
+ }
544
+ content?: _Schema30
545
+ }
546
+ userManagement?: {
547
+ enabled?: _Schema15
548
+ routes?: {
549
+ login?: string
550
+ register?: string
551
+ profile?: string
552
+ logout?: string
553
+ }
554
+ /**
555
+ * Path to a custom page component file, relative to the project root.
556
+ */
557
+ page?: string
558
+ /**
559
+ * Custom React component for this sub-module page.
560
+ */
561
+ component?: {
562
+ [k: string]: unknown
563
+ }
564
+ content?: _Schema31
565
+ }
566
+ apiKeys?: {
567
+ enabled?: _Schema15
568
+ /**
569
+ * Route path for API key management.
570
+ */
571
+ path?: string
572
+ }
573
+ plans?: {
574
+ enabled?: _Schema15
575
+ /**
576
+ * Route path for plans and subscription management.
577
+ */
578
+ path?: string
579
+ /**
580
+ * Path to a custom page component file, relative to the project root.
581
+ */
582
+ page?: string
583
+ /**
584
+ * Custom React component for this sub-module page.
585
+ */
586
+ component?: {
587
+ [k: string]: unknown
588
+ }
589
+ content?: _Schema34
590
+ }
591
+ }
592
+ /**
593
+ * Default dashboard page content when no custom component is provided.
594
+ */
595
+ export interface _Schema30 {
596
+ title?: string
597
+ subtitle?: string
598
+ description?: string
599
+ quickLinks?: _Schema22[]
600
+ }
601
+ /**
602
+ * Default profile page content when no custom component is provided.
603
+ */
604
+ export interface _Schema31 {
605
+ title?: string
606
+ description?: string
607
+ }
608
+ /**
609
+ * Default plans page content when no custom component is provided.
610
+ */
611
+ export interface _Schema34 {
612
+ title?: string
613
+ description?: string
614
+ tiers?: {
615
+ name: string
616
+ price?: string
617
+ description?: string
618
+ }[]
619
+ }
620
+ export interface _Schema36 {
436
621
  path: string
437
622
  input: string
438
623
  label?: string
439
624
  }
440
- export interface _Schema20 {
625
+ export interface _Schema41 {
441
626
  examplesLanguage?: string
442
627
  supportedLanguages?: {
443
628
  value: string
@@ -454,7 +639,7 @@ export interface _Schema20 {
454
639
  transformExamples?: unknown
455
640
  generateCodeSnippet?: unknown
456
641
  }
457
- export interface _Schema21 {
642
+ export interface _Schema42 {
458
643
  path: string
459
644
  label: string
460
645
  items?: string[]
@@ -0,0 +1,130 @@
1
+ ---
2
+ title: Alert
3
+ sidebar_icon: triangle-alert
4
+ ---
5
+
6
+ import { Alert, AlertDescription, AlertTitle } from "@lukoweb/apitogo/ui/Alert";
7
+ import { CheckCircle2Icon, TerminalIcon } from "@lukoweb/apitogo/icons";
8
+ import { ReactComponentDoc } from "@lukoweb/apitogo/ui/ReactComponentDoc";
9
+
10
+ An alert component for displaying important information to users with different severity levels.
11
+
12
+ ## Import
13
+
14
+ ```tsx
15
+ import { Alert, AlertDescription, AlertTitle } from "@lukoweb/apitogo/ui/Alert";
16
+ ```
17
+
18
+ ## Components
19
+
20
+ The Alert component consists of several sub-components:
21
+
22
+ - `Alert` - The main container
23
+ - `AlertTitle` - Title for the alert
24
+ - `AlertDescription` - Description content for the alert
25
+
26
+ ## Default Alert
27
+
28
+ <Alert className="not-prose">
29
+ <TerminalIcon className="h-4 w-4" />
30
+ <AlertTitle>Heads up!</AlertTitle>
31
+ <AlertDescription>
32
+ You can add components and dependencies to your app using the cli.
33
+ </AlertDescription>
34
+ </Alert>
35
+
36
+ ```tsx title="Alert"
37
+ <Alert>
38
+ <TerminalIcon className="h-4 w-4" />
39
+ <AlertTitle>Heads up!</AlertTitle>
40
+ <AlertDescription>
41
+ You can add components and dependencies to your app using the cli.
42
+ </AlertDescription>
43
+ </Alert>
44
+ ```
45
+
46
+ ## Destructive Alert
47
+
48
+ <Alert variant="destructive">
49
+ <AlertTitle>Error</AlertTitle>
50
+ <AlertDescription>Your session has expired. Please log in again.</AlertDescription>
51
+ </Alert>
52
+
53
+ ```tsx
54
+ <Alert variant="destructive">
55
+ <AlertTitle>Error</AlertTitle>
56
+ <AlertDescription>Your session has expired. Please log in again.</AlertDescription>
57
+ </Alert>
58
+ ```
59
+
60
+ ## Without Title
61
+
62
+ <Alert>
63
+ <TerminalIcon className="h-4 w-4" />
64
+ <AlertDescription>
65
+ You can add components and dependencies to your app using the cli.
66
+ </AlertDescription>
67
+ </Alert>
68
+
69
+ ```tsx
70
+ <Alert>
71
+ <TerminalIcon className="h-4 w-4" />
72
+ <AlertDescription>
73
+ You can add components and dependencies to your app using the cli.
74
+ </AlertDescription>
75
+ </Alert>
76
+ ```
77
+
78
+ ## Without Icon
79
+
80
+ <Alert>
81
+ <AlertTitle>Heads up!</AlertTitle>
82
+ <AlertDescription>
83
+ You can add components and dependencies to your app using the cli.
84
+ </AlertDescription>
85
+ </Alert>
86
+
87
+ ```tsx
88
+ <Alert>
89
+ <AlertTitle>Heads up!</AlertTitle>
90
+ <AlertDescription>
91
+ You can add components and dependencies to your app using the cli.
92
+ </AlertDescription>
93
+ </Alert>
94
+ ```
95
+
96
+ ## Usage Examples
97
+
98
+ ### Success Alert
99
+
100
+ <Alert className="border-green-200 bg-green-50 text-green-800 dark:border-green-800 dark:bg-green-950 dark:text-green-400">
101
+ <CheckCircle2Icon className="h-4 w-4" />
102
+ <AlertTitle>Success!</AlertTitle>
103
+ <AlertDescription>Your changes have been saved successfully.</AlertDescription>
104
+ </Alert>
105
+
106
+ ```tsx
107
+ <Alert className="border-green-200 bg-green-50 text-green-800 dark:border-green-800 dark:bg-green-950 dark:text-green-400">
108
+ <CheckCircle2Icon className="h-4 w-4" />
109
+ <AlertTitle>Success!</AlertTitle>
110
+ <AlertDescription>Your changes have been saved successfully.</AlertDescription>
111
+ </Alert>
112
+ ```
113
+
114
+ ### Warning Alert
115
+
116
+ <Alert className="border-yellow-200 bg-yellow-50 text-yellow-800 dark:border-yellow-800 dark:bg-yellow-950 dark:text-yellow-400">
117
+ <AlertTitle>Warning!</AlertTitle>
118
+ <AlertDescription>This action cannot be undone. Please proceed with caution.</AlertDescription>
119
+ </Alert>
120
+
121
+ ```tsx
122
+ <Alert className="border-yellow-200 bg-yellow-50 text-yellow-800 dark:border-yellow-800 dark:bg-yellow-950 dark:text-yellow-400">
123
+ <AlertTitle>Warning!</AlertTitle>
124
+ <AlertDescription>This action cannot be undone. Please proceed with caution.</AlertDescription>
125
+ </Alert>
126
+ ```
127
+
128
+ # Props
129
+
130
+ <ReactComponentDoc component={Alert} />
@@ -0,0 +1,70 @@
1
+ ---
2
+ title: Badge
3
+ sidebar_icon: tag
4
+ ---
5
+
6
+ A small badge component used to display status information or labels.
7
+
8
+ ## Import
9
+
10
+ ```tsx
11
+ import { Badge } from "@lukoweb/apitogo/ui/Badge";
12
+ ```
13
+
14
+ ## Variants
15
+
16
+ ### Default
17
+
18
+ <Badge variant="default">Default</Badge>
19
+
20
+ ```tsx
21
+ <Badge variant="default">Default</Badge>
22
+ ```
23
+
24
+ ### Secondary
25
+
26
+ <Badge variant="secondary">Secondary</Badge>
27
+
28
+ ```tsx
29
+ <Badge variant="secondary">Secondary</Badge>
30
+ ```
31
+
32
+ ### Muted
33
+
34
+ <Badge variant="muted">Muted</Badge>
35
+
36
+ ```tsx
37
+ <Badge variant="muted">Muted</Badge>
38
+ ```
39
+
40
+ ### Destructive
41
+
42
+ <Badge variant="destructive">Destructive</Badge>
43
+
44
+ ```tsx
45
+ <Badge variant="destructive">Destructive</Badge>
46
+ ```
47
+
48
+ ### Outline
49
+
50
+ <Badge variant="outline">Outline</Badge>
51
+
52
+ ```tsx
53
+ <Badge variant="outline">Outline</Badge>
54
+ ```
55
+
56
+ ## Usage
57
+
58
+ Badges are perfect for showing status, categories, or counts:
59
+
60
+ <div className="flex gap-2">
61
+ <Badge variant="default">New</Badge>
62
+ <Badge variant="secondary">Main</Badge>
63
+ <Badge variant="muted">10</Badge>
64
+ </div>
65
+
66
+ ```tsx
67
+ <Badge variant="default">New</Badge>
68
+ <Badge variant="secondary">Main</Badge>
69
+ <Badge variant="muted">10</Badge>
70
+ ```
@@ -0,0 +1,132 @@
1
+ ---
2
+ title: Button
3
+ sidebar_icon: mouse-pointer-click
4
+ ---
5
+
6
+ import { Button } from "@lukoweb/apitogo/ui/Button";
7
+ import { PopcornIcon } from "@lukoweb/apitogo/icons";
8
+
9
+ A flexible button component with multiple variants and sizes for different use cases.
10
+
11
+ ## Import
12
+
13
+ ```tsx
14
+ import { Button } from "@lukoweb/apitogo/ui/Button";
15
+ ```
16
+
17
+ ## Variants
18
+
19
+ ### Default
20
+
21
+ <Button variant="default">Default Button</Button>
22
+
23
+ ```tsx
24
+ <Button variant="default">Default Button</Button>
25
+ ```
26
+
27
+ ### Destructive
28
+
29
+ <Button variant="destructive">Delete</Button>
30
+
31
+ ```tsx
32
+ <Button variant="destructive">Delete</Button>
33
+ ```
34
+
35
+ ### Outline
36
+
37
+ <Button variant="outline">Outline Button</Button>
38
+
39
+ ```tsx
40
+ <Button variant="outline">Outline Button</Button>
41
+ ```
42
+
43
+ ### Secondary
44
+
45
+ <Button variant="secondary">Secondary</Button>
46
+
47
+ ```tsx
48
+ <Button variant="secondary">Secondary</Button>
49
+ ```
50
+
51
+ ### Ghost
52
+
53
+ <Button variant="ghost">Ghost Button</Button>
54
+
55
+ ```tsx
56
+ <Button variant="ghost">Ghost Button</Button>
57
+ ```
58
+
59
+ ### Link
60
+
61
+ <Button variant="link">Link Button</Button>
62
+
63
+ ```tsx
64
+ <Button variant="link">Link Button</Button>
65
+ ```
66
+
67
+ ## Sizes
68
+
69
+ ### Default Size
70
+
71
+ <Button size="default">Default Size</Button>
72
+
73
+ ```tsx
74
+ <Button size="default">Default Size</Button>
75
+ ```
76
+
77
+ ### Small
78
+
79
+ <Button size="sm">Small Button</Button>
80
+
81
+ ```tsx
82
+ <Button size="sm">Small Button</Button>
83
+ ```
84
+
85
+ ### Large
86
+
87
+ <Button size="lg">Large Button</Button>
88
+
89
+ ```tsx
90
+ <Button size="lg">Large Button</Button>
91
+ ```
92
+
93
+ ### Extra Large
94
+
95
+ <Button size="xl">Extra Large</Button>
96
+
97
+ ```tsx
98
+ <Button size="xl">Extra Large</Button>
99
+ ```
100
+
101
+ ### Icon
102
+
103
+ <Button size="icon">
104
+ <PopcornIcon size={16} />
105
+ </Button>
106
+
107
+ ```tsx
108
+ <Button size="icon">
109
+ <PopcornIcon size={16} />
110
+ </Button>
111
+ ```
112
+
113
+ ## As Child
114
+
115
+ Use the `asChild` prop to render the button as a different element while maintaining button styling:
116
+
117
+ ```tsx
118
+ <Button asChild>
119
+ <a href="/link">Link as Button</a>
120
+ </Button>
121
+ ```
122
+
123
+ ## Custom Styling
124
+
125
+ The Button component accepts all standard button HTML attributes and can be customized with
126
+ additional className:
127
+
128
+ ```tsx
129
+ <Button className="w-full" variant="outline">
130
+ Full Width Button
131
+ </Button>
132
+ ```