zudoku 0.0.0-reset-hash-value.ac516c6d → 0.0.0-z06bf8c86

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 (829) hide show
  1. package/client.d.ts +8 -0
  2. package/dist/app/entry.server.js +14 -1
  3. package/dist/app/entry.server.js.map +1 -1
  4. package/dist/app/main.d.ts +91 -1
  5. package/dist/app/main.js +5 -1
  6. package/dist/app/main.js.map +1 -1
  7. package/dist/app/sentry.js +1 -1
  8. package/dist/cli/common/version-check.js +12 -3
  9. package/dist/cli/common/version-check.js.map +1 -1
  10. package/dist/config/config.d.ts +15 -44
  11. package/dist/config/loader.js +3 -1
  12. package/dist/config/loader.js.map +1 -1
  13. package/dist/config/validators/BuildSchema.d.ts +5 -4
  14. package/dist/config/validators/BuildSchema.js +23 -5
  15. package/dist/config/validators/BuildSchema.js.map +1 -1
  16. package/dist/config/validators/InputNavigationSchema.d.ts +126 -124
  17. package/dist/config/validators/InputNavigationSchema.js +1 -0
  18. package/dist/config/validators/InputNavigationSchema.js.map +1 -1
  19. package/dist/config/validators/NavigationSchema.js +8 -5
  20. package/dist/config/validators/NavigationSchema.js.map +1 -1
  21. package/dist/config/validators/ProtectedRoutesSchema.d.ts +1 -1
  22. package/dist/config/validators/validate.d.ts +264 -23
  23. package/dist/config/validators/validate.js +56 -11
  24. package/dist/config/validators/validate.js.map +1 -1
  25. package/dist/config/validators/validate.test.js +43 -0
  26. package/dist/config/validators/validate.test.js.map +1 -1
  27. package/dist/flat-config.d.ts +59 -23
  28. package/dist/index.d.ts +2 -1
  29. package/dist/index.js +2 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/lib/auth/issuer.js +3 -0
  32. package/dist/lib/auth/issuer.js.map +1 -1
  33. package/dist/lib/authentication/authentication.d.ts +19 -10
  34. package/dist/lib/authentication/components/CallbackHandler.js +1 -1
  35. package/dist/lib/authentication/components/CallbackHandler.js.map +1 -1
  36. package/dist/lib/authentication/components/OAuthErrorPage.js +1 -1
  37. package/dist/lib/authentication/components/OAuthErrorPage.js.map +1 -1
  38. package/dist/lib/authentication/components/SignIn.js +8 -5
  39. package/dist/lib/authentication/components/SignIn.js.map +1 -1
  40. package/dist/lib/authentication/components/SignOut.js +6 -6
  41. package/dist/lib/authentication/components/SignOut.js.map +1 -1
  42. package/dist/lib/authentication/components/SignUp.js +7 -5
  43. package/dist/lib/authentication/components/SignUp.js.map +1 -1
  44. package/dist/lib/authentication/hook.d.ts +5 -2
  45. package/dist/lib/authentication/hook.js +22 -8
  46. package/dist/lib/authentication/hook.js.map +1 -1
  47. package/dist/lib/authentication/providers/auth0.js +18 -9
  48. package/dist/lib/authentication/providers/auth0.js.map +1 -1
  49. package/dist/lib/authentication/providers/azureb2c.d.ts +4 -4
  50. package/dist/lib/authentication/providers/azureb2c.js +3 -3
  51. package/dist/lib/authentication/providers/azureb2c.js.map +1 -1
  52. package/dist/lib/authentication/providers/clerk.js +2 -24
  53. package/dist/lib/authentication/providers/clerk.js.map +1 -1
  54. package/dist/lib/authentication/providers/firebase.d.ts +4 -0
  55. package/dist/lib/authentication/providers/firebase.js +273 -0
  56. package/dist/lib/authentication/providers/firebase.js.map +1 -0
  57. package/dist/lib/authentication/providers/openid.d.ts +7 -7
  58. package/dist/lib/authentication/providers/openid.js +3 -3
  59. package/dist/lib/authentication/providers/openid.js.map +1 -1
  60. package/dist/lib/authentication/providers/supabase/SupabaseAuthUI.d.ts +8 -0
  61. package/dist/lib/authentication/providers/supabase/SupabaseAuthUI.js +39 -0
  62. package/dist/lib/authentication/providers/supabase/SupabaseAuthUI.js.map +1 -0
  63. package/dist/lib/authentication/providers/supabase.js +36 -46
  64. package/dist/lib/authentication/providers/supabase.js.map +1 -1
  65. package/dist/lib/authentication/state.d.ts +1 -5
  66. package/dist/lib/authentication/state.js +2 -14
  67. package/dist/lib/authentication/state.js.map +1 -1
  68. package/dist/lib/authentication/ui/EmailVerificationUi.d.ts +4 -0
  69. package/dist/lib/authentication/ui/EmailVerificationUi.js +34 -0
  70. package/dist/lib/authentication/ui/EmailVerificationUi.js.map +1 -0
  71. package/dist/lib/authentication/ui/ZudokuAuthUi.d.ts +29 -0
  72. package/dist/lib/authentication/ui/ZudokuAuthUi.js +160 -0
  73. package/dist/lib/authentication/ui/ZudokuAuthUi.js.map +1 -0
  74. package/dist/lib/authentication/ui/icons/Apple.d.ts +3 -0
  75. package/dist/lib/authentication/ui/icons/Apple.js +4 -0
  76. package/dist/lib/authentication/ui/icons/Apple.js.map +1 -0
  77. package/dist/lib/authentication/ui/icons/Facebook.d.ts +3 -0
  78. package/dist/lib/authentication/ui/icons/Facebook.js +4 -0
  79. package/dist/lib/authentication/ui/icons/Facebook.js.map +1 -0
  80. package/dist/lib/authentication/ui/icons/Github.d.ts +3 -0
  81. package/dist/lib/authentication/ui/icons/Github.js +4 -0
  82. package/dist/lib/authentication/ui/icons/Github.js.map +1 -0
  83. package/dist/lib/authentication/ui/icons/Google.d.ts +3 -0
  84. package/dist/lib/authentication/ui/icons/Google.js +4 -0
  85. package/dist/lib/authentication/ui/icons/Google.js.map +1 -0
  86. package/dist/lib/authentication/ui/icons/Microsoft.d.ts +3 -0
  87. package/dist/lib/authentication/ui/icons/Microsoft.js +4 -0
  88. package/dist/lib/authentication/ui/icons/Microsoft.js.map +1 -0
  89. package/dist/lib/authentication/ui/icons/X.d.ts +3 -0
  90. package/dist/lib/authentication/ui/icons/X.js +4 -0
  91. package/dist/lib/authentication/ui/icons/X.js.map +1 -0
  92. package/dist/lib/authentication/utils/relativeRedirectUrl.d.ts +1 -0
  93. package/dist/lib/authentication/utils/relativeRedirectUrl.js +8 -0
  94. package/dist/lib/authentication/utils/relativeRedirectUrl.js.map +1 -0
  95. package/dist/lib/components/Autocomplete.d.ts +3 -1
  96. package/dist/lib/components/Autocomplete.js +6 -2
  97. package/dist/lib/components/Autocomplete.js.map +1 -1
  98. package/dist/lib/components/Heading.d.ts +1 -1
  99. package/dist/lib/components/Layout.js +3 -2
  100. package/dist/lib/components/Layout.js.map +1 -1
  101. package/dist/lib/components/Mermaid.d.ts +7 -0
  102. package/dist/lib/components/Mermaid.js +42 -0
  103. package/dist/lib/components/Mermaid.js.map +1 -0
  104. package/dist/lib/components/PagefindSearchMeta.d.ts +8 -0
  105. package/dist/lib/components/PagefindSearchMeta.js +7 -0
  106. package/dist/lib/components/PagefindSearchMeta.js.map +1 -0
  107. package/dist/lib/components/Pagination.js +2 -2
  108. package/dist/lib/components/Pagination.js.map +1 -1
  109. package/dist/lib/components/Zudoku.js +5 -8
  110. package/dist/lib/components/Zudoku.js.map +1 -1
  111. package/dist/lib/components/index.d.ts +7 -2
  112. package/dist/lib/components/index.js +4 -0
  113. package/dist/lib/components/index.js.map +1 -1
  114. package/dist/lib/components/navigation/NavigationItem.js +4 -4
  115. package/dist/lib/components/navigation/NavigationItem.js.map +1 -1
  116. package/dist/lib/components/navigation/Toc.js +1 -1
  117. package/dist/lib/components/navigation/Toc.js.map +1 -1
  118. package/dist/lib/core/RouteGuard.d.ts +1 -1
  119. package/dist/lib/core/RouteGuard.js +22 -25
  120. package/dist/lib/core/RouteGuard.js.map +1 -1
  121. package/dist/lib/core/ZudokuContext.d.ts +1 -0
  122. package/dist/lib/core/ZudokuContext.js +2 -0
  123. package/dist/lib/core/ZudokuContext.js.map +1 -1
  124. package/dist/lib/core/__internal.d.ts +1 -1
  125. package/dist/lib/core/plugins.d.ts +14 -4
  126. package/dist/lib/core/plugins.js +1 -0
  127. package/dist/lib/core/plugins.js.map +1 -1
  128. package/dist/lib/core/react-query.d.ts +1 -0
  129. package/dist/lib/core/react-query.js +2 -0
  130. package/dist/lib/core/react-query.js.map +1 -0
  131. package/dist/lib/core/transform-config.d.ts +2 -0
  132. package/dist/lib/core/transform-config.js +22 -0
  133. package/dist/lib/core/transform-config.js.map +1 -0
  134. package/dist/lib/errors/ErrorAlert.js +1 -1
  135. package/dist/lib/errors/ErrorMessage.d.ts +3 -0
  136. package/dist/lib/errors/ErrorMessage.js +16 -0
  137. package/dist/lib/errors/ErrorMessage.js.map +1 -0
  138. package/dist/lib/errors/RouterError.d.ts +3 -1
  139. package/dist/lib/errors/RouterError.js +3 -2
  140. package/dist/lib/errors/RouterError.js.map +1 -1
  141. package/dist/lib/hooks/index.d.ts +4 -2
  142. package/dist/lib/oas/graphql/circular.d.ts +2 -0
  143. package/dist/lib/oas/graphql/circular.js +32 -10
  144. package/dist/lib/oas/graphql/circular.js.map +1 -1
  145. package/dist/lib/oas/graphql/circular.test.d.ts +1 -0
  146. package/dist/lib/oas/graphql/circular.test.js +152 -0
  147. package/dist/lib/oas/graphql/circular.test.js.map +1 -0
  148. package/dist/lib/oas/graphql/index.js +7 -3
  149. package/dist/lib/oas/graphql/index.js.map +1 -1
  150. package/dist/lib/oas/parser/index.d.ts +1 -0
  151. package/dist/lib/oas/parser/index.js +7 -3
  152. package/dist/lib/oas/parser/index.js.map +1 -1
  153. package/dist/lib/plugins/api-keys/ProtectedRoute.js +4 -1
  154. package/dist/lib/plugins/api-keys/ProtectedRoute.js.map +1 -1
  155. package/dist/lib/plugins/api-keys/SettingsApiKeys.js +9 -172
  156. package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
  157. package/dist/lib/plugins/api-keys/index.d.ts +11 -4
  158. package/dist/lib/plugins/api-keys/index.js +36 -22
  159. package/dist/lib/plugins/api-keys/index.js.map +1 -1
  160. package/dist/lib/plugins/api-keys/settings/ApiKeyItem.d.ts +12 -0
  161. package/dist/lib/plugins/api-keys/settings/ApiKeyItem.js +133 -0
  162. package/dist/lib/plugins/api-keys/settings/ApiKeyItem.js.map +1 -0
  163. package/dist/lib/plugins/api-keys/settings/ApiKeyList.d.ts +4 -0
  164. package/dist/lib/plugins/api-keys/settings/ApiKeyList.js +33 -0
  165. package/dist/lib/plugins/api-keys/settings/ApiKeyList.js.map +1 -0
  166. package/dist/lib/plugins/api-keys/settings/RevealApiKey.d.ts +6 -0
  167. package/dist/lib/plugins/api-keys/settings/RevealApiKey.js +39 -0
  168. package/dist/lib/plugins/api-keys/settings/RevealApiKey.js.map +1 -0
  169. package/dist/lib/plugins/markdown/MdxPage.d.ts +2 -1
  170. package/dist/lib/plugins/markdown/MdxPage.js +3 -2
  171. package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
  172. package/dist/lib/plugins/markdown/index.d.ts +1 -0
  173. package/dist/lib/plugins/markdown/index.js +1 -1
  174. package/dist/lib/plugins/markdown/index.js.map +1 -1
  175. package/dist/lib/plugins/openapi/CollapsibleCode.d.ts +1 -0
  176. package/dist/lib/plugins/openapi/CollapsibleCode.js +2 -1
  177. package/dist/lib/plugins/openapi/CollapsibleCode.js.map +1 -1
  178. package/dist/lib/plugins/openapi/DownloadSchemaButton.d.ts +3 -0
  179. package/dist/lib/plugins/openapi/DownloadSchemaButton.js +47 -0
  180. package/dist/lib/plugins/openapi/DownloadSchemaButton.js.map +1 -0
  181. package/dist/lib/plugins/openapi/Endpoint.js +3 -6
  182. package/dist/lib/plugins/openapi/Endpoint.js.map +1 -1
  183. package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.d.ts +5 -0
  184. package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.js +10 -0
  185. package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.js.map +1 -0
  186. package/dist/lib/plugins/openapi/OasProvider.js +26 -13
  187. package/dist/lib/plugins/openapi/OasProvider.js.map +1 -1
  188. package/dist/lib/plugins/openapi/OperationList.js +15 -5
  189. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  190. package/dist/lib/plugins/openapi/OperationListItem.d.ts +2 -1
  191. package/dist/lib/plugins/openapi/OperationListItem.js +4 -3
  192. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
  193. package/dist/lib/plugins/openapi/ParamInfos.js +1 -0
  194. package/dist/lib/plugins/openapi/ParamInfos.js.map +1 -1
  195. package/dist/lib/plugins/openapi/ParameterList.js +7 -4
  196. package/dist/lib/plugins/openapi/ParameterList.js.map +1 -1
  197. package/dist/lib/plugins/openapi/ParameterListItem.js +17 -6
  198. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  199. package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +9 -2
  200. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +5 -2
  201. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
  202. package/dist/lib/plugins/openapi/ResponsesSidecarBox.d.ts +4 -2
  203. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +26 -4
  204. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
  205. package/dist/lib/plugins/openapi/SchemaList.js +2 -1
  206. package/dist/lib/plugins/openapi/SchemaList.js.map +1 -1
  207. package/dist/lib/plugins/openapi/Sidecar.d.ts +2 -2
  208. package/dist/lib/plugins/openapi/Sidecar.js +64 -28
  209. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  210. package/dist/lib/plugins/openapi/SidecarBox.js +4 -4
  211. package/dist/lib/plugins/openapi/SidecarBox.js.map +1 -1
  212. package/dist/lib/plugins/openapi/SidecarExamples.d.ts +9 -2
  213. package/dist/lib/plugins/openapi/SidecarExamples.js +24 -43
  214. package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
  215. package/dist/lib/plugins/openapi/components/ConstValue.js +1 -1
  216. package/dist/lib/plugins/openapi/components/ConstValue.js.map +1 -1
  217. package/dist/lib/plugins/openapi/components/EnumValues.js +1 -1
  218. package/dist/lib/plugins/openapi/components/EnumValues.js.map +1 -1
  219. package/dist/lib/plugins/openapi/components/NonHighlightedCode.d.ts +4 -0
  220. package/dist/lib/plugins/openapi/components/NonHighlightedCode.js +5 -0
  221. package/dist/lib/plugins/openapi/components/NonHighlightedCode.js.map +1 -0
  222. package/dist/lib/plugins/openapi/components/ResponseContent.js +5 -6
  223. package/dist/lib/plugins/openapi/components/ResponseContent.js.map +1 -1
  224. package/dist/lib/plugins/openapi/index.js +15 -14
  225. package/dist/lib/plugins/openapi/index.js.map +1 -1
  226. package/dist/lib/plugins/openapi/interfaces.d.ts +32 -13
  227. package/dist/lib/plugins/openapi/playground/BodyPanel.js +67 -15
  228. package/dist/lib/plugins/openapi/playground/BodyPanel.js.map +1 -1
  229. package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js +2 -2
  230. package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js.map +1 -1
  231. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js +1 -1
  232. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js.map +1 -1
  233. package/dist/lib/plugins/openapi/playground/Headers.js +23 -83
  234. package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
  235. package/dist/lib/plugins/openapi/playground/ParamsGrid.d.ts +10 -2
  236. package/dist/lib/plugins/openapi/playground/ParamsGrid.js +8 -1
  237. package/dist/lib/plugins/openapi/playground/ParamsGrid.js.map +1 -1
  238. package/dist/lib/plugins/openapi/playground/PathParams.js +2 -3
  239. package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
  240. package/dist/lib/plugins/openapi/playground/Playground.d.ts +7 -0
  241. package/dist/lib/plugins/openapi/playground/Playground.js +70 -28
  242. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  243. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +3 -2
  244. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
  245. package/dist/lib/plugins/openapi/playground/QueryParams.js +16 -40
  246. package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
  247. package/dist/lib/plugins/openapi/playground/RequestLoginDialog.d.ts +2 -1
  248. package/dist/lib/plugins/openapi/playground/RequestLoginDialog.js +10 -2
  249. package/dist/lib/plugins/openapi/playground/RequestLoginDialog.js.map +1 -1
  250. package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.d.ts +8 -0
  251. package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.js +19 -0
  252. package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.js.map +1 -0
  253. package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js +1 -1
  254. package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js.map +1 -1
  255. package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.d.ts +1 -0
  256. package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.js +540 -0
  257. package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.js.map +1 -0
  258. package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.d.ts +40 -0
  259. package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.js +205 -0
  260. package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.js.map +1 -0
  261. package/dist/lib/plugins/openapi/playground/result-panel/Highlight.d.ts +1 -1
  262. package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.js +1 -1
  263. package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.js.map +1 -1
  264. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +23 -21
  265. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
  266. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js +1 -1
  267. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js.map +1 -1
  268. package/dist/lib/plugins/openapi/playground/useRememberSkipLoginDialog.js +2 -0
  269. package/dist/lib/plugins/openapi/playground/useRememberSkipLoginDialog.js.map +1 -1
  270. package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js +1 -1
  271. package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js.map +1 -1
  272. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js +17 -8
  273. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -1
  274. package/dist/lib/plugins/openapi/schema/SchemaView.d.ts +1 -1
  275. package/dist/lib/plugins/openapi/schema/SchemaView.js +31 -16
  276. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
  277. package/dist/lib/plugins/openapi/schema/UnionView.js +2 -5
  278. package/dist/lib/plugins/openapi/schema/UnionView.js.map +1 -1
  279. package/dist/lib/plugins/openapi/schema/union-helpers.js +0 -1
  280. package/dist/lib/plugins/openapi/schema/union-helpers.js.map +1 -1
  281. package/dist/lib/plugins/openapi/schema/utils.d.ts +2 -2
  282. package/dist/lib/plugins/openapi/schema/utils.js +11 -3
  283. package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
  284. package/dist/lib/plugins/openapi/util/createHttpSnippet.js +24 -1
  285. package/dist/lib/plugins/openapi/util/createHttpSnippet.js.map +1 -1
  286. package/dist/lib/plugins/openapi/util/generateSchemaExample.js +9 -11
  287. package/dist/lib/plugins/openapi/util/generateSchemaExample.js.map +1 -1
  288. package/dist/lib/plugins/openapi/util/getRoutes.d.ts +9 -1
  289. package/dist/lib/plugins/openapi/util/getRoutes.js +30 -2
  290. package/dist/lib/plugins/openapi/util/getRoutes.js.map +1 -1
  291. package/dist/lib/plugins/search-pagefind/IndexingDialog.d.ts +3 -0
  292. package/dist/lib/plugins/search-pagefind/IndexingDialog.js +64 -0
  293. package/dist/lib/plugins/search-pagefind/IndexingDialog.js.map +1 -0
  294. package/dist/lib/plugins/search-pagefind/PagefindSearch.js +22 -5
  295. package/dist/lib/plugins/search-pagefind/PagefindSearch.js.map +1 -1
  296. package/dist/lib/plugins/search-pagefind/ResultList.js +5 -4
  297. package/dist/lib/plugins/search-pagefind/ResultList.js.map +1 -1
  298. package/dist/lib/shiki.d.ts +2 -2
  299. package/dist/lib/shiki.js +31 -14
  300. package/dist/lib/shiki.js.map +1 -1
  301. package/dist/lib/ui/Badge.d.ts +3 -3
  302. package/dist/lib/ui/Badge.js +9 -7
  303. package/dist/lib/ui/Badge.js.map +1 -1
  304. package/dist/lib/ui/Button.d.ts +2 -2
  305. package/dist/lib/ui/Button.js +10 -8
  306. package/dist/lib/ui/Button.js.map +1 -1
  307. package/dist/lib/ui/ButtonGroup.d.ts +11 -0
  308. package/dist/lib/ui/ButtonGroup.js +28 -0
  309. package/dist/lib/ui/ButtonGroup.js.map +1 -0
  310. package/dist/lib/ui/Callout.d.ts +5 -5
  311. package/dist/lib/ui/Callout.js +5 -5
  312. package/dist/lib/ui/Callout.js.map +1 -1
  313. package/dist/lib/ui/Checkbox.d.ts +2 -2
  314. package/dist/lib/ui/Checkbox.js +4 -4
  315. package/dist/lib/ui/Checkbox.js.map +1 -1
  316. package/dist/lib/ui/CodeBlock.d.ts +0 -1
  317. package/dist/lib/ui/CodeBlock.js +1 -1
  318. package/dist/lib/ui/CodeBlock.js.map +1 -1
  319. package/dist/lib/ui/Collapsible.d.ts +4 -4
  320. package/dist/lib/ui/Collapsible.js +11 -4
  321. package/dist/lib/ui/Collapsible.js.map +1 -1
  322. package/dist/lib/ui/Command.js +2 -2
  323. package/dist/lib/ui/Command.js.map +1 -1
  324. package/dist/lib/ui/Dialog.d.ts +12 -18
  325. package/dist/lib/ui/Dialog.js +30 -17
  326. package/dist/lib/ui/Dialog.js.map +1 -1
  327. package/dist/lib/ui/DropdownMenu.d.ts +21 -23
  328. package/dist/lib/ui/DropdownMenu.js +47 -32
  329. package/dist/lib/ui/DropdownMenu.js.map +1 -1
  330. package/dist/lib/ui/EmbeddedCodeBlock.d.ts +3 -2
  331. package/dist/lib/ui/EmbeddedCodeBlock.js +4 -3
  332. package/dist/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  333. package/dist/lib/ui/Frame.d.ts +8 -0
  334. package/dist/lib/ui/Frame.js +22 -0
  335. package/dist/lib/ui/Frame.js.map +1 -0
  336. package/dist/lib/ui/Item.d.ts +23 -0
  337. package/dist/lib/ui/Item.js +67 -0
  338. package/dist/lib/ui/Item.js.map +1 -0
  339. package/dist/lib/ui/Kbd.d.ts +3 -0
  340. package/dist/lib/ui/Kbd.js +10 -0
  341. package/dist/lib/ui/Kbd.js.map +1 -0
  342. package/dist/lib/ui/NativeSelect.d.ts +5 -0
  343. package/dist/lib/ui/NativeSelect.js +14 -0
  344. package/dist/lib/ui/NativeSelect.js.map +1 -0
  345. package/dist/lib/ui/ReactComponentDoc.d.ts +1 -1
  346. package/dist/lib/ui/ReactComponentDoc.js +2 -2
  347. package/dist/lib/ui/ReactComponentDoc.js.map +1 -1
  348. package/dist/lib/ui/Select.d.ts +13 -11
  349. package/dist/lib/ui/Select.js +34 -23
  350. package/dist/lib/ui/Select.js.map +1 -1
  351. package/dist/lib/ui/Separator.d.ts +4 -0
  352. package/dist/lib/ui/Separator.js +8 -0
  353. package/dist/lib/ui/Separator.js.map +1 -0
  354. package/dist/lib/ui/SyntaxHighlight.d.ts +1 -0
  355. package/dist/lib/ui/SyntaxHighlight.js.map +1 -1
  356. package/dist/lib/ui/Tooltip.d.ts +7 -7
  357. package/dist/lib/ui/Tooltip.js +16 -10
  358. package/dist/lib/ui/Tooltip.js.map +1 -1
  359. package/dist/lib/util/MdxComponents.d.ts +3 -1
  360. package/dist/lib/util/MdxComponents.js +5 -2
  361. package/dist/lib/util/MdxComponents.js.map +1 -1
  362. package/dist/lib/util/createVariantComponent.d.ts +5 -2
  363. package/dist/lib/util/createVariantComponent.js +5 -2
  364. package/dist/lib/util/createVariantComponent.js.map +1 -1
  365. package/dist/lib/util/flattenAllOf.d.ts +4 -0
  366. package/dist/lib/util/flattenAllOf.js +88 -0
  367. package/dist/lib/util/flattenAllOf.js.map +1 -0
  368. package/dist/lib/util/flattenAllOf.test.d.ts +1 -0
  369. package/dist/lib/util/flattenAllOf.test.js +587 -0
  370. package/dist/lib/util/flattenAllOf.test.js.map +1 -0
  371. package/dist/lib/util/invariant.d.ts +1 -1
  372. package/dist/lib/util/invariant.js +2 -2
  373. package/dist/lib/util/invariant.js.map +1 -1
  374. package/dist/lib/util/readFrontmatter.d.ts +6 -0
  375. package/dist/lib/util/readFrontmatter.js +12 -0
  376. package/dist/lib/util/readFrontmatter.js.map +1 -0
  377. package/dist/lib/util/syncZustandState.d.ts +5 -0
  378. package/dist/lib/util/syncZustandState.js +14 -0
  379. package/dist/lib/util/syncZustandState.js.map +1 -0
  380. package/dist/vite/api/SchemaManager.d.ts +20 -2
  381. package/dist/vite/api/SchemaManager.js +79 -31
  382. package/dist/vite/api/SchemaManager.js.map +1 -1
  383. package/dist/vite/api/SchemaManager.test.js +113 -2
  384. package/dist/vite/api/SchemaManager.test.js.map +1 -1
  385. package/dist/vite/config.js +13 -1
  386. package/dist/vite/config.js.map +1 -1
  387. package/dist/vite/dev-server.js +25 -0
  388. package/dist/vite/dev-server.js.map +1 -1
  389. package/dist/vite/error-handler.js +1 -5
  390. package/dist/vite/error-handler.js.map +1 -1
  391. package/dist/vite/mdx/remark-last-modified.js +57 -3
  392. package/dist/vite/mdx/remark-last-modified.js.map +1 -1
  393. package/dist/vite/mdx/remark-link-rewrite.js +1 -1
  394. package/dist/vite/pagefind-dev-index.d.ts +16 -0
  395. package/dist/vite/pagefind-dev-index.js +68 -0
  396. package/dist/vite/pagefind-dev-index.js.map +1 -0
  397. package/dist/vite/plugin-api-keys.js +5 -1
  398. package/dist/vite/plugin-api-keys.js.map +1 -1
  399. package/dist/vite/plugin-api.js +57 -8
  400. package/dist/vite/plugin-api.js.map +1 -1
  401. package/dist/vite/plugin-docs.js +1 -1
  402. package/dist/vite/plugin-docs.js.map +1 -1
  403. package/dist/vite/plugin-frontmatter.js +3 -5
  404. package/dist/vite/plugin-frontmatter.js.map +1 -1
  405. package/dist/vite/plugin-markdown-export.js +8 -7
  406. package/dist/vite/plugin-markdown-export.js.map +1 -1
  407. package/dist/vite/plugin-mdx.js +36 -30
  408. package/dist/vite/plugin-mdx.js.map +1 -1
  409. package/dist/vite/plugin-theme.js +10 -1
  410. package/dist/vite/plugin-theme.js.map +1 -1
  411. package/dist/vite/prerender/prerender.js +1 -19
  412. package/dist/vite/prerender/prerender.js.map +1 -1
  413. package/dist/vite/prerender/utils.d.ts +2 -0
  414. package/dist/vite/prerender/utils.js +30 -0
  415. package/dist/vite/prerender/utils.js.map +1 -0
  416. package/dist/vite/prerender/worker.js +3 -0
  417. package/dist/vite/prerender/worker.js.map +1 -1
  418. package/dist/vite/zuplo.d.ts +13 -0
  419. package/dist/vite/zuplo.js +15 -0
  420. package/dist/vite/zuplo.js.map +1 -0
  421. package/lib/ActionButton-B0CXL1Lq.js +25 -0
  422. package/lib/ActionButton-B0CXL1Lq.js.map +1 -0
  423. package/lib/Button-GUVe7pmt.js +54 -0
  424. package/lib/Button-GUVe7pmt.js.map +1 -0
  425. package/lib/{Card-KFniaZn5.js → Card-DCdq37aA.js} +2 -2
  426. package/lib/{Card-KFniaZn5.js.map → Card-DCdq37aA.js.map} +1 -1
  427. package/lib/ClaudeLogo-DJ9bU-sO.js +69 -0
  428. package/lib/ClaudeLogo-DJ9bU-sO.js.map +1 -0
  429. package/lib/{Command-CJY6q3PF.js → Command-N6VujV30.js} +26 -26
  430. package/lib/Command-N6VujV30.js.map +1 -0
  431. package/lib/Dialog-hlvmmQ_c.js +144 -0
  432. package/lib/Dialog-hlvmmQ_c.js.map +1 -0
  433. package/lib/{Drawer-Ci7XwhqT.js → Drawer-Ch7927PF.js} +7 -7
  434. package/lib/{Drawer-Ci7XwhqT.js.map → Drawer-Ch7927PF.js.map} +1 -1
  435. package/lib/DropdownMenu-DN0jNrjj.js +104 -0
  436. package/lib/DropdownMenu-DN0jNrjj.js.map +1 -0
  437. package/lib/Frame-DKlOmSkU.js +205 -0
  438. package/lib/Frame-DKlOmSkU.js.map +1 -0
  439. package/lib/HydrationBoundary-CNF2ZV3E.js +601 -0
  440. package/lib/HydrationBoundary-CNF2ZV3E.js.map +1 -0
  441. package/lib/IndexingDialog-D0YdGfbn.js +100 -0
  442. package/lib/IndexingDialog-D0YdGfbn.js.map +1 -0
  443. package/lib/Input-Cx-GeKoF.js +22 -0
  444. package/lib/Input-Cx-GeKoF.js.map +1 -0
  445. package/lib/MdxPage-stpAoBtx.js +210 -0
  446. package/lib/MdxPage-stpAoBtx.js.map +1 -0
  447. package/lib/Mermaid-Koc3z8mU.js +102 -0
  448. package/lib/Mermaid-Koc3z8mU.js.map +1 -0
  449. package/lib/{OAuthErrorPage-DJUOdr6Q.js → OAuthErrorPage-DJ811Bn_.js} +16 -16
  450. package/lib/OAuthErrorPage-DJ811Bn_.js.map +1 -0
  451. package/lib/OasProvider-CS_ASmBB.js +48 -0
  452. package/lib/OasProvider-CS_ASmBB.js.map +1 -0
  453. package/lib/OperationList-Dq_AB4W9.js +5820 -0
  454. package/lib/OperationList-Dq_AB4W9.js.map +1 -0
  455. package/lib/RouteGuard--A04ESy8.js +77 -0
  456. package/lib/RouteGuard--A04ESy8.js.map +1 -0
  457. package/lib/{SchemaList-1eLKXqn8.js → SchemaList-BJZJv1gD.js} +28 -27
  458. package/lib/SchemaList-BJZJv1gD.js.map +1 -0
  459. package/lib/SchemaView-U4JMYB3N.js +438 -0
  460. package/lib/SchemaView-U4JMYB3N.js.map +1 -0
  461. package/lib/Secret-BDBqq4p3.js +243 -0
  462. package/lib/Secret-BDBqq4p3.js.map +1 -0
  463. package/lib/Separator-BXt1LYnm.js +27 -0
  464. package/lib/Separator-BXt1LYnm.js.map +1 -0
  465. package/lib/SignUp-DCBViNUi.js +50 -0
  466. package/lib/SignUp-DCBViNUi.js.map +1 -0
  467. package/lib/{SyntaxHighlight-B0laqAqK.js → SyntaxHighlight-Dshjn3Zf.js} +1784 -1699
  468. package/lib/SyntaxHighlight-Dshjn3Zf.js.map +1 -0
  469. package/lib/{Toc-KzXCRqrX.js → Toc-Cgz6CPiE.js} +6 -6
  470. package/lib/Toc-Cgz6CPiE.js.map +1 -0
  471. package/lib/ZudokuContext-BZB1TWdT.js +387 -0
  472. package/lib/ZudokuContext-BZB1TWdT.js.map +1 -0
  473. package/lib/___vite-browser-external_commonjs-proxy-BttVsNON.js +9 -0
  474. package/lib/___vite-browser-external_commonjs-proxy-BttVsNON.js.map +1 -0
  475. package/lib/chunk-EPOLDU6W-C6C8jAwd.js +8558 -0
  476. package/lib/chunk-EPOLDU6W-C6C8jAwd.js.map +1 -0
  477. package/lib/{circular-D6wbrxuf.js → circular-BmMJjG1v.js} +6459 -6030
  478. package/lib/circular-BmMJjG1v.js.map +1 -0
  479. package/lib/{cn-dYga0KKN.js → cn-5-Gd1Dss.js} +531 -498
  480. package/lib/cn-5-Gd1Dss.js.map +1 -0
  481. package/lib/createServer-CLSZ7hWJ.js +16693 -0
  482. package/lib/createServer-CLSZ7hWJ.js.map +1 -0
  483. package/lib/createVariantComponent-Dc0vtOvr.js +18 -0
  484. package/lib/createVariantComponent-Dc0vtOvr.js.map +1 -0
  485. package/lib/{errors-XqO6MsfU.js → errors-b9I-fAOY.js} +3 -3
  486. package/lib/{errors-XqO6MsfU.js.map → errors-b9I-fAOY.js.map} +1 -1
  487. package/lib/firebase-BCXX7Qv5.js +7614 -0
  488. package/lib/firebase-BCXX7Qv5.js.map +1 -0
  489. package/lib/hook-BGlHBdET.js +52 -0
  490. package/lib/hook-BGlHBdET.js.map +1 -0
  491. package/lib/{ErrorAlert-VBJ8aHH7.js → index-CL8eDnQW.js} +5503 -4505
  492. package/lib/index-CL8eDnQW.js.map +1 -0
  493. package/lib/index-CrcNWbel.js.map +1 -1
  494. package/lib/index-DBjOT2H1.js +133 -0
  495. package/lib/index-DBjOT2H1.js.map +1 -0
  496. package/lib/index-O9RHI87z.js +3680 -0
  497. package/lib/index-O9RHI87z.js.map +1 -0
  498. package/lib/{index-C5L4favO.js → index-UOLtazB8.js} +2 -2
  499. package/lib/{index-C5L4favO.js.map → index-UOLtazB8.js.map} +1 -1
  500. package/lib/index.esm-BYObtETB.js.map +1 -1
  501. package/lib/{index.esm-BnYHxCYC.js → index.esm-B_0dvNjB.js} +20 -20
  502. package/lib/{index.esm-BnYHxCYC.js.map → index.esm-B_0dvNjB.js.map} +1 -1
  503. package/lib/index.esm-C5CBsVzN.js +34 -0
  504. package/lib/index.esm-C5CBsVzN.js.map +1 -0
  505. package/lib/{invariant-Bm-FVUQE.js → invariant-BJAl77rw.js} +6 -6
  506. package/lib/invariant-BJAl77rw.js.map +1 -0
  507. package/lib/jsx-runtime-BzflLqGi.js.map +1 -1
  508. package/lib/{mutation-CdGPxHNX.js → mutation-BISOc7OM.js} +70 -44
  509. package/lib/mutation-BISOc7OM.js.map +1 -0
  510. package/lib/ui/Accordion.js +1 -1
  511. package/lib/ui/ActionButton.js +2 -2
  512. package/lib/ui/Alert.js +1 -1
  513. package/lib/ui/AlertDialog.js +1 -1
  514. package/lib/ui/Badge.js +27 -13
  515. package/lib/ui/Badge.js.map +1 -1
  516. package/lib/ui/Breadcrumb.js +1 -1
  517. package/lib/ui/Button.js +28 -25
  518. package/lib/ui/Button.js.map +1 -1
  519. package/lib/ui/ButtonGroup.js +77 -0
  520. package/lib/ui/ButtonGroup.js.map +1 -0
  521. package/lib/ui/Callout.js +19 -19
  522. package/lib/ui/Callout.js.map +1 -1
  523. package/lib/ui/Card.js +1 -1
  524. package/lib/ui/Carousel.js +1 -1
  525. package/lib/ui/Carousel.js.map +1 -1
  526. package/lib/ui/Checkbox.js +29 -26
  527. package/lib/ui/Checkbox.js.map +1 -1
  528. package/lib/ui/CodeBlock.js +217 -7
  529. package/lib/ui/CodeBlock.js.map +1 -1
  530. package/lib/ui/Collapsible.js +32 -5
  531. package/lib/ui/Collapsible.js.map +1 -1
  532. package/lib/ui/Command.js +5 -5
  533. package/lib/ui/Command.js.map +1 -1
  534. package/lib/ui/Dialog.js +136 -106
  535. package/lib/ui/Dialog.js.map +1 -1
  536. package/lib/ui/Drawer.js +3 -3
  537. package/lib/ui/DropdownMenu.js +227 -140
  538. package/lib/ui/DropdownMenu.js.map +1 -1
  539. package/lib/ui/EmbeddedCodeBlock.js +36 -32
  540. package/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  541. package/lib/ui/Form.js +1 -1
  542. package/lib/ui/Frame.js +81 -0
  543. package/lib/ui/Frame.js.map +1 -0
  544. package/lib/ui/HoverCard.js +1 -1
  545. package/lib/ui/Input.js +1 -1
  546. package/lib/ui/Item.js +188 -0
  547. package/lib/ui/Item.js.map +1 -0
  548. package/lib/ui/Kbd.js +32 -0
  549. package/lib/ui/Kbd.js.map +1 -0
  550. package/lib/ui/Label.js +1 -1
  551. package/lib/ui/NativeSelect.js +57 -0
  552. package/lib/ui/NativeSelect.js.map +1 -0
  553. package/lib/ui/Pagination.js +1 -1
  554. package/lib/ui/Popover.js +1 -1
  555. package/lib/ui/Progress.js +1 -1
  556. package/lib/ui/RadioGroup.js +1 -1
  557. package/lib/ui/ReactComponentDoc.js +13 -13
  558. package/lib/ui/ReactComponentDoc.js.map +1 -1
  559. package/lib/ui/ScrollArea.js +1 -1
  560. package/lib/ui/Secret.js +1 -1
  561. package/lib/ui/Select.js +166 -116
  562. package/lib/ui/Select.js.map +1 -1
  563. package/lib/ui/Separator.js +27 -0
  564. package/lib/ui/Separator.js.map +1 -0
  565. package/lib/ui/Skeleton.js +1 -1
  566. package/lib/ui/Slider.js +1 -1
  567. package/lib/ui/Switch.js +1 -1
  568. package/lib/ui/SyntaxHighlight.js +4 -4
  569. package/lib/ui/Tabs.js +11 -11
  570. package/lib/ui/Textarea.js +1 -1
  571. package/lib/ui/Toggle.js +1 -1
  572. package/lib/ui/ToggleGroup.js +1 -1
  573. package/lib/ui/Tooltip.js +55 -28
  574. package/lib/ui/Tooltip.js.map +1 -1
  575. package/lib/ui/Value.js +1 -1
  576. package/lib/ui/util.js +1 -1
  577. package/lib/useMutation-CFMGlAMW.js +119 -0
  578. package/lib/useMutation-CFMGlAMW.js.map +1 -0
  579. package/lib/useSuspenseQuery-CSB_rVek.js +1226 -0
  580. package/lib/useSuspenseQuery-CSB_rVek.js.map +1 -0
  581. package/lib/zudoku.__internal.js +826 -1325
  582. package/lib/zudoku.__internal.js.map +1 -1
  583. package/lib/zudoku.auth-auth0.js +19 -19
  584. package/lib/zudoku.auth-auth0.js.map +1 -1
  585. package/lib/zudoku.auth-azureb2c.js +28 -28
  586. package/lib/zudoku.auth-azureb2c.js.map +1 -1
  587. package/lib/zudoku.auth-clerk.js +41 -64
  588. package/lib/zudoku.auth-clerk.js.map +1 -1
  589. package/lib/zudoku.auth-firebase.js +10 -0
  590. package/lib/zudoku.auth-firebase.js.map +1 -0
  591. package/lib/zudoku.auth-openid.js +52 -55
  592. package/lib/zudoku.auth-openid.js.map +1 -1
  593. package/lib/zudoku.auth-supabase.js +107 -60
  594. package/lib/zudoku.auth-supabase.js.map +1 -1
  595. package/lib/zudoku.components.js +23 -21
  596. package/lib/zudoku.hooks.js +11 -24
  597. package/lib/zudoku.hooks.js.map +1 -1
  598. package/lib/zudoku.mermaid.js +10 -0
  599. package/lib/zudoku.mermaid.js.map +1 -0
  600. package/lib/zudoku.plugin-api-catalog.js +8 -8
  601. package/lib/zudoku.plugin-api-keys.js +607 -543
  602. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  603. package/lib/zudoku.plugin-custom-pages.js +1 -1
  604. package/lib/zudoku.plugin-markdown.js +10 -9
  605. package/lib/zudoku.plugin-markdown.js.map +1 -1
  606. package/lib/zudoku.plugin-openapi.js +6 -7
  607. package/lib/zudoku.plugin-openapi.js.map +1 -1
  608. package/lib/zudoku.plugin-redirect.js +1 -1
  609. package/lib/zudoku.plugin-search-pagefind.js +185 -226
  610. package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
  611. package/lib/zudoku.plugins.js +9 -8
  612. package/lib/zudoku.plugins.js.map +1 -1
  613. package/lib/zudoku.react-query.js +440 -0
  614. package/lib/zudoku.react-query.js.map +1 -0
  615. package/lib/zudoku.router.js +1130 -1404
  616. package/lib/zudoku.router.js.map +1 -1
  617. package/package.json +77 -45
  618. package/src/app/entry.server.tsx +16 -6
  619. package/src/app/main.css +61 -9
  620. package/src/app/main.tsx +5 -1
  621. package/src/app/sentry.ts +1 -1
  622. package/src/lib/auth/issuer.ts +3 -0
  623. package/src/lib/authentication/authentication.ts +29 -5
  624. package/src/lib/authentication/components/CallbackHandler.tsx +1 -1
  625. package/src/lib/authentication/components/OAuthErrorPage.tsx +1 -1
  626. package/src/lib/authentication/components/SignIn.tsx +10 -5
  627. package/src/lib/authentication/components/SignOut.tsx +7 -6
  628. package/src/lib/authentication/components/SignUp.tsx +8 -8
  629. package/src/lib/authentication/hook.ts +37 -10
  630. package/src/lib/authentication/providers/auth0.tsx +23 -11
  631. package/src/lib/authentication/providers/azureb2c.tsx +10 -3
  632. package/src/lib/authentication/providers/clerk.tsx +9 -28
  633. package/src/lib/authentication/providers/firebase.tsx +376 -0
  634. package/src/lib/authentication/providers/openid.tsx +18 -15
  635. package/src/lib/authentication/providers/supabase/SupabaseAuthUI.tsx +75 -0
  636. package/src/lib/authentication/providers/supabase.tsx +61 -59
  637. package/src/lib/authentication/state.ts +3 -23
  638. package/src/lib/authentication/ui/EmailVerificationUi.tsx +129 -0
  639. package/src/lib/authentication/ui/ZudokuAuthUi.tsx +477 -0
  640. package/src/lib/authentication/ui/icons/Apple.tsx +10 -0
  641. package/src/lib/authentication/ui/icons/Facebook.tsx +15 -0
  642. package/src/lib/authentication/ui/icons/Github.tsx +16 -0
  643. package/src/lib/authentication/ui/icons/Google.tsx +16 -0
  644. package/src/lib/authentication/ui/icons/Microsoft.tsx +12 -0
  645. package/src/lib/authentication/ui/icons/X.tsx +10 -0
  646. package/src/lib/authentication/utils/relativeRedirectUrl.ts +12 -0
  647. package/src/lib/components/Autocomplete.tsx +11 -2
  648. package/src/lib/components/Layout.tsx +3 -2
  649. package/src/lib/components/Mermaid.tsx +68 -0
  650. package/src/lib/components/PagefindSearchMeta.tsx +14 -0
  651. package/src/lib/components/Pagination.tsx +4 -5
  652. package/src/lib/components/Zudoku.tsx +7 -10
  653. package/src/lib/components/index.ts +4 -0
  654. package/src/lib/components/navigation/NavigationItem.tsx +16 -23
  655. package/src/lib/components/navigation/Toc.tsx +3 -3
  656. package/src/lib/core/RouteGuard.tsx +69 -43
  657. package/src/lib/core/ZudokuContext.ts +3 -0
  658. package/src/lib/core/plugins.ts +23 -3
  659. package/src/lib/core/react-query.ts +1 -0
  660. package/src/lib/core/transform-config.ts +29 -0
  661. package/src/lib/errors/ErrorAlert.tsx +1 -1
  662. package/src/lib/errors/ErrorMessage.tsx +38 -0
  663. package/src/lib/errors/RouterError.tsx +7 -2
  664. package/src/lib/oas/graphql/circular.test.ts +186 -0
  665. package/src/lib/oas/graphql/circular.ts +49 -10
  666. package/src/lib/oas/graphql/index.ts +7 -3
  667. package/src/lib/oas/parser/index.ts +10 -3
  668. package/src/lib/plugins/api-keys/ProtectedRoute.tsx +11 -7
  669. package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +36 -476
  670. package/src/lib/plugins/api-keys/index.tsx +76 -32
  671. package/src/lib/plugins/api-keys/settings/ApiKeyItem.tsx +342 -0
  672. package/src/lib/plugins/api-keys/settings/ApiKeyList.tsx +67 -0
  673. package/src/lib/plugins/api-keys/settings/RevealApiKey.tsx +124 -0
  674. package/src/lib/plugins/markdown/MdxPage.tsx +4 -1
  675. package/src/lib/plugins/markdown/index.tsx +2 -0
  676. package/src/lib/plugins/openapi/CollapsibleCode.tsx +5 -3
  677. package/src/lib/plugins/openapi/DownloadSchemaButton.tsx +115 -0
  678. package/src/lib/plugins/openapi/Endpoint.tsx +20 -27
  679. package/src/lib/plugins/openapi/GeneratedExampleSidecarBox.tsx +52 -0
  680. package/src/lib/plugins/openapi/OasProvider.tsx +38 -17
  681. package/src/lib/plugins/openapi/OperationList.tsx +46 -21
  682. package/src/lib/plugins/openapi/OperationListItem.tsx +15 -12
  683. package/src/lib/plugins/openapi/ParamInfos.tsx +1 -0
  684. package/src/lib/plugins/openapi/ParameterList.tsx +37 -23
  685. package/src/lib/plugins/openapi/ParameterListItem.tsx +105 -54
  686. package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +48 -7
  687. package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +101 -33
  688. package/src/lib/plugins/openapi/SchemaList.tsx +4 -0
  689. package/src/lib/plugins/openapi/Sidecar.tsx +148 -67
  690. package/src/lib/plugins/openapi/SidecarBox.tsx +26 -4
  691. package/src/lib/plugins/openapi/SidecarExamples.tsx +91 -79
  692. package/src/lib/plugins/openapi/components/ConstValue.tsx +1 -1
  693. package/src/lib/plugins/openapi/components/EnumValues.tsx +2 -2
  694. package/src/lib/plugins/openapi/components/NonHighlightedCode.tsx +22 -0
  695. package/src/lib/plugins/openapi/components/ResponseContent.tsx +63 -53
  696. package/src/lib/plugins/openapi/index.tsx +25 -36
  697. package/src/lib/plugins/openapi/interfaces.ts +33 -7
  698. package/src/lib/plugins/openapi/playground/BodyPanel.tsx +246 -30
  699. package/src/lib/plugins/openapi/playground/CollapsibleHeader.tsx +10 -6
  700. package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +3 -2
  701. package/src/lib/plugins/openapi/playground/Headers.tsx +103 -219
  702. package/src/lib/plugins/openapi/playground/ParamsGrid.tsx +33 -1
  703. package/src/lib/plugins/openapi/playground/PathParams.tsx +26 -34
  704. package/src/lib/plugins/openapi/playground/Playground.tsx +88 -35
  705. package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +10 -31
  706. package/src/lib/plugins/openapi/playground/QueryParams.tsx +82 -136
  707. package/src/lib/plugins/openapi/playground/RequestLoginDialog.tsx +20 -1
  708. package/src/lib/plugins/openapi/playground/request-panel/MultipartField.tsx +91 -0
  709. package/src/lib/plugins/openapi/playground/request-panel/UrlQueryParams.tsx +1 -1
  710. package/src/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.tsx +872 -0
  711. package/src/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.ts +349 -0
  712. package/src/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.tsx +2 -2
  713. package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +102 -62
  714. package/src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx +1 -1
  715. package/src/lib/plugins/openapi/playground/useRememberSkipLoginDialog.tsx +3 -0
  716. package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +1 -1
  717. package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +89 -55
  718. package/src/lib/plugins/openapi/schema/SchemaView.tsx +100 -60
  719. package/src/lib/plugins/openapi/schema/UnionView.tsx +6 -17
  720. package/src/lib/plugins/openapi/schema/union-helpers.ts +0 -1
  721. package/src/lib/plugins/openapi/schema/utils.ts +20 -6
  722. package/src/lib/plugins/openapi/util/createHttpSnippet.ts +29 -1
  723. package/src/lib/plugins/openapi/util/generateSchemaExample.ts +11 -11
  724. package/src/lib/plugins/openapi/util/getRoutes.tsx +38 -3
  725. package/src/lib/plugins/search-pagefind/IndexingDialog.tsx +163 -0
  726. package/src/lib/plugins/search-pagefind/PagefindSearch.tsx +61 -22
  727. package/src/lib/plugins/search-pagefind/ResultList.tsx +8 -3
  728. package/src/lib/shiki.ts +37 -14
  729. package/src/lib/ui/Badge.tsx +21 -12
  730. package/src/lib/ui/Button.tsx +11 -9
  731. package/src/lib/ui/ButtonGroup.tsx +82 -0
  732. package/src/lib/ui/Callout.tsx +10 -5
  733. package/src/lib/ui/Checkbox.tsx +23 -24
  734. package/src/lib/ui/CodeBlock.tsx +3 -4
  735. package/src/lib/ui/Collapsible.tsx +26 -4
  736. package/src/lib/ui/Command.tsx +3 -3
  737. package/src/lib/ui/Dialog.tsx +112 -106
  738. package/src/lib/ui/DropdownMenu.tsx +226 -170
  739. package/src/lib/ui/EmbeddedCodeBlock.tsx +24 -19
  740. package/src/lib/ui/Frame.tsx +81 -0
  741. package/src/lib/ui/Item.tsx +192 -0
  742. package/src/lib/ui/Kbd.tsx +28 -0
  743. package/src/lib/ui/NativeSelect.tsx +47 -0
  744. package/src/lib/ui/ReactComponentDoc.tsx +17 -17
  745. package/src/lib/ui/Select.tsx +153 -126
  746. package/src/lib/ui/Separator.tsx +25 -0
  747. package/src/lib/ui/SyntaxHighlight.tsx +6 -1
  748. package/src/lib/ui/Tooltip.tsx +54 -32
  749. package/src/lib/util/MdxComponents.tsx +5 -5
  750. package/src/lib/util/createVariantComponent.tsx +31 -5
  751. package/src/lib/util/flattenAllOf.test.ts +689 -0
  752. package/src/lib/util/flattenAllOf.ts +122 -0
  753. package/src/lib/util/invariant.ts +2 -1
  754. package/src/lib/util/readFrontmatter.ts +13 -0
  755. package/src/lib/util/syncZustandState.ts +22 -0
  756. package/src/shiki/langs/c3.js +1 -0
  757. package/src/shiki/langs/gn.js +1 -0
  758. package/src/shiki/langs/markdown-nix.js +1 -0
  759. package/src/shiki/langs/moonbit.js +1 -0
  760. package/src/shiki/langs/openscad.js +1 -0
  761. package/dist/lib/plugins/openapi/playground/InlineInput.d.ts +0 -4
  762. package/dist/lib/plugins/openapi/playground/InlineInput.js +0 -3
  763. package/dist/lib/plugins/openapi/playground/InlineInput.js.map +0 -1
  764. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.d.ts +0 -5
  765. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.js +0 -7
  766. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.js.map +0 -1
  767. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.d.ts +0 -4
  768. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.js +0 -10
  769. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.js.map +0 -1
  770. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.d.ts +0 -5
  771. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.js +0 -16
  772. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.js.map +0 -1
  773. package/dist/vite/create-pagefind-index.d.ts +0 -4
  774. package/dist/vite/create-pagefind-index.js +0 -12
  775. package/dist/vite/create-pagefind-index.js.map +0 -1
  776. package/lib/Button-DmS4u8Lj.js +0 -51
  777. package/lib/Button-DmS4u8Lj.js.map +0 -1
  778. package/lib/CodeBlock-CanTUJLl.js +0 -221
  779. package/lib/CodeBlock-CanTUJLl.js.map +0 -1
  780. package/lib/Command-CJY6q3PF.js.map +0 -1
  781. package/lib/Dialog-BOl0QB3n.js +0 -114
  782. package/lib/Dialog-BOl0QB3n.js.map +0 -1
  783. package/lib/DropdownMenu-BZ2NKQ3K.js +0 -126
  784. package/lib/DropdownMenu-BZ2NKQ3K.js.map +0 -1
  785. package/lib/ErrorAlert-VBJ8aHH7.js.map +0 -1
  786. package/lib/MdxPage-DFRNwSsc.js +0 -239
  787. package/lib/MdxPage-DFRNwSsc.js.map +0 -1
  788. package/lib/OAuthErrorPage-DJUOdr6Q.js.map +0 -1
  789. package/lib/OasProvider-BMUgPYQU.js +0 -36
  790. package/lib/OasProvider-BMUgPYQU.js.map +0 -1
  791. package/lib/OperationList-DVig5I94.js +0 -5446
  792. package/lib/OperationList-DVig5I94.js.map +0 -1
  793. package/lib/Pagination-CT4VUR6u.js +0 -37
  794. package/lib/Pagination-CT4VUR6u.js.map +0 -1
  795. package/lib/RouteGuard-BPWQlxy5.js +0 -56
  796. package/lib/RouteGuard-BPWQlxy5.js.map +0 -1
  797. package/lib/RouterError-fm21cqlj.js +0 -41
  798. package/lib/RouterError-fm21cqlj.js.map +0 -1
  799. package/lib/SchemaList-1eLKXqn8.js.map +0 -1
  800. package/lib/SchemaView-fq3uKfOA.js +0 -458
  801. package/lib/SchemaView-fq3uKfOA.js.map +0 -1
  802. package/lib/Select-CPoGZU_V.js +0 -372
  803. package/lib/Select-CPoGZU_V.js.map +0 -1
  804. package/lib/SignUp-BraHuRN_.js +0 -56
  805. package/lib/SignUp-BraHuRN_.js.map +0 -1
  806. package/lib/SyntaxHighlight-B0laqAqK.js.map +0 -1
  807. package/lib/Toc-KzXCRqrX.js.map +0 -1
  808. package/lib/ZudokuContext-BXTZApgy.js +0 -1506
  809. package/lib/ZudokuContext-BXTZApgy.js.map +0 -1
  810. package/lib/chunk-PVWAREVJ-BO6B-RAk.js +0 -7965
  811. package/lib/chunk-PVWAREVJ-BO6B-RAk.js.map +0 -1
  812. package/lib/circular-D6wbrxuf.js.map +0 -1
  813. package/lib/cn-dYga0KKN.js.map +0 -1
  814. package/lib/createServer-C5aY10Bc.js +0 -12559
  815. package/lib/createServer-C5aY10Bc.js.map +0 -1
  816. package/lib/hook-CAebs2rv.js +0 -31
  817. package/lib/hook-CAebs2rv.js.map +0 -1
  818. package/lib/index-BPSpOxTK.js +0 -1058
  819. package/lib/index-BPSpOxTK.js.map +0 -1
  820. package/lib/index-Bb9AsFlk.js +0 -3318
  821. package/lib/index-Bb9AsFlk.js.map +0 -1
  822. package/lib/invariant-Bm-FVUQE.js.map +0 -1
  823. package/lib/mutation-CdGPxHNX.js.map +0 -1
  824. package/lib/useExposedProps-Cd7Yg_uG.js +0 -113
  825. package/lib/useExposedProps-Cd7Yg_uG.js.map +0 -1
  826. package/src/lib/plugins/openapi/playground/InlineInput.tsx +0 -6
  827. package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.tsx +0 -36
  828. package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.tsx +0 -25
  829. package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.tsx +0 -42
@@ -0,0 +1,163 @@
1
+ import { DialogTrigger } from "@radix-ui/react-dialog";
2
+ import {
3
+ type PropsWithChildren,
4
+ useCallback,
5
+ useEffect,
6
+ useState,
7
+ } from "react";
8
+ import { Button } from "zudoku/ui/Button.js";
9
+ import {
10
+ Dialog,
11
+ DialogContent,
12
+ DialogDescription,
13
+ DialogFooter,
14
+ DialogHeader,
15
+ DialogTitle,
16
+ } from "zudoku/ui/Dialog.js";
17
+
18
+ type IndexingState =
19
+ | { status: "idle" }
20
+ | { status: "indexing"; total: number; current: number; path: string }
21
+ | { status: "complete"; indexed: number }
22
+ | { status: "error"; message: string };
23
+
24
+ const ProgressBar = ({
25
+ total,
26
+ current,
27
+ barLength = 25,
28
+ emptyChar = "░",
29
+ filledChar = "█",
30
+ }: {
31
+ total: number;
32
+ current: number;
33
+ barLength?: number;
34
+ emptyChar?: string;
35
+ filledChar?: string;
36
+ }) => {
37
+ const percent = Math.round((current / total) * 100);
38
+ const filled = Math.round((percent / 100) * barLength);
39
+ const empty = barLength - filled;
40
+
41
+ return (
42
+ <>
43
+ {filledChar.repeat(filled)}
44
+ {emptyChar.repeat(empty)} {percent}% ({current}/{total})
45
+ </>
46
+ );
47
+ };
48
+
49
+ const IndexingDialog = ({ children }: PropsWithChildren) => {
50
+ const [indexingState, setIndexingState] = useState<IndexingState>({
51
+ status: "idle",
52
+ });
53
+
54
+ const startIndexing = useCallback(() => {
55
+ setIndexingState({ status: "indexing", total: 0, current: 0, path: "" });
56
+
57
+ const eventSource = new EventSource("/__z/pagefind-reindex");
58
+
59
+ eventSource.onmessage = (event) => {
60
+ const data = JSON.parse(event.data);
61
+
62
+ if (data.type === "progress") {
63
+ setIndexingState({
64
+ status: "indexing",
65
+ total: data.total,
66
+ current: data.current,
67
+ path: data.path,
68
+ });
69
+ } else if (data.type === "complete") {
70
+ eventSource.close();
71
+ if (data.success) {
72
+ setIndexingState({ status: "complete", indexed: data.indexed });
73
+ } else {
74
+ setIndexingState({
75
+ status: "error",
76
+ message: data.error ?? "Indexing failed",
77
+ });
78
+ }
79
+ }
80
+ };
81
+
82
+ eventSource.onerror = () => {
83
+ eventSource.close();
84
+ setIndexingState({
85
+ status: "error",
86
+ message: "Connection lost during indexing",
87
+ });
88
+ };
89
+
90
+ return () => eventSource.close();
91
+ }, []);
92
+
93
+ useEffect(() => {
94
+ if (indexingState.status !== "idle") return;
95
+ return startIndexing();
96
+ }, [indexingState.status, startIndexing]);
97
+
98
+ const handleDone = () => {
99
+ if (indexingState.status !== "complete") return;
100
+ window.location.reload();
101
+ };
102
+
103
+ return (
104
+ <Dialog>
105
+ <DialogTrigger asChild>{children}</DialogTrigger>
106
+ <DialogContent
107
+ className="max-w-sm! top-1/3"
108
+ showCloseButton={false}
109
+ onInteractOutside={(e) => e.preventDefault()}
110
+ >
111
+ <DialogHeader>
112
+ <DialogTitle>
113
+ {indexingState.status === "indexing" && "Building Search Index"}
114
+ {indexingState.status === "complete" && "Indexing Complete"}
115
+ {indexingState.status === "error" && "Indexing Failed"}
116
+ {indexingState.status === "idle" && "Build Search Index"}
117
+ </DialogTitle>
118
+ <DialogDescription>
119
+ {indexingState.status === "indexing" && (
120
+ <>
121
+ {indexingState.total > 0 && (
122
+ <div className="font-mono text-sm mb-2">
123
+ <ProgressBar {...indexingState} />
124
+ </div>
125
+ )}
126
+ {indexingState.path && (
127
+ <span className="block text-xs truncate">
128
+ {indexingState.path}
129
+ </span>
130
+ )}
131
+ </>
132
+ )}
133
+ {indexingState.status === "complete" && (
134
+ <>Successfully indexed {indexingState.indexed} pages.</>
135
+ )}
136
+ {indexingState.status === "error" && (
137
+ <span className="text-destructive">{indexingState.message}</span>
138
+ )}
139
+ </DialogDescription>
140
+ </DialogHeader>
141
+ <DialogFooter>
142
+ <div className="flex justify-end gap-2">
143
+ {indexingState.status === "complete" && (
144
+ <Button size="sm" onClick={handleDone}>
145
+ Close and reload
146
+ </Button>
147
+ )}
148
+ {indexingState.status === "error" && (
149
+ <>
150
+ <Button variant="outline" onClick={handleDone}>
151
+ Cancel
152
+ </Button>
153
+ <Button onClick={startIndexing}>Retry</Button>
154
+ </>
155
+ )}
156
+ </div>
157
+ </DialogFooter>
158
+ </DialogContent>
159
+ </Dialog>
160
+ );
161
+ };
162
+
163
+ export default IndexingDialog;
@@ -1,14 +1,15 @@
1
1
  import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
2
2
  import { keepPreviousData, useQuery } from "@tanstack/react-query";
3
- import { useRef, useState } from "react";
3
+ import { ListPlusIcon } from "lucide-react";
4
+ import { lazy, useEffect, useRef, useState } from "react";
4
5
  import { Button } from "zudoku/ui/Button.js";
5
- import { Callout } from "zudoku/ui/Callout.js";
6
6
  import {
7
7
  CommandDialog,
8
8
  CommandEmpty,
9
9
  CommandInput,
10
10
  } from "zudoku/ui/Command.js";
11
11
  import { DialogTitle } from "zudoku/ui/Dialog.js";
12
+ import { Kbd, KbdGroup } from "zudoku/ui/Kbd.js";
12
13
  import { useAuthState } from "../../authentication/state.js";
13
14
  import { useZudoku } from "../../components/context/ZudokuContext.js";
14
15
  import { SEARCH_PROTECTED_SECTION } from "../../core/RouteGuard.js";
@@ -18,6 +19,8 @@ import type { PagefindOptions } from "./index.js";
18
19
  import { ResultList } from "./ResultList.js";
19
20
  import type { Pagefind } from "./types.js";
20
21
 
22
+ const IndexingDialog = lazy(() => import("./IndexingDialog.js"));
23
+
21
24
  const DEFAULT_RANKING = {
22
25
  // Slightly lower than default because API docs tend to have repetitive terms (parameter names, HTTP methods, etc.)
23
26
  termFrequency: 0.8,
@@ -81,6 +84,7 @@ export const PagefindSearch = ({
81
84
  }) => {
82
85
  const { pagefind, error, isError } = usePagefind(options);
83
86
  const [searchTerm, setSearchTerm] = useState("");
87
+ const [selectedValue, setSelectedValue] = useState<string>("");
84
88
  const auth = useAuthState();
85
89
  const context = useZudoku();
86
90
  const inputRef = useRef<HTMLInputElement>(null);
@@ -100,9 +104,24 @@ export const PagefindSearch = ({
100
104
  enabled: !!pagefind && !!searchTerm,
101
105
  });
102
106
 
107
+ useEffect(() => {
108
+ if (!searchResults?.length) return;
109
+
110
+ const firstResult = searchResults.at(0);
111
+ if (!firstResult) return;
112
+
113
+ const firstValue = `${firstResult.meta.title}-${firstResult.url}`;
114
+ setSelectedValue(firstValue);
115
+ }, [searchResults]);
116
+
103
117
  return (
104
118
  <CommandDialog
105
- command={{ shouldFilter: false }}
119
+ command={{
120
+ shouldFilter: false,
121
+ loop: true,
122
+ value: selectedValue,
123
+ onValueChange: setSelectedValue,
124
+ }}
106
125
  content={{ className: "max-w-[750px]" }}
107
126
  open={isOpen}
108
127
  onOpenChange={onClose}
@@ -135,28 +154,48 @@ export const PagefindSearch = ({
135
154
  "Start typing to search"
136
155
  )}
137
156
  </CommandEmpty>
138
- {isError ? (
157
+ {isError && error.message !== "NOT_BUILT_YET" ? (
139
158
  <div className="p-4 text-sm">
140
- {error.message === "NOT_BUILT_YET" ? (
141
- <Callout type="info">
142
- Search is currently not available in development mode by default.
143
- <br />
144
- To still use search in development, run <code>zudoku build</code>{" "}
145
- and copy the <code>dist/pagefind</code> directory to your{" "}
146
- <code>public</code> directory.
147
- </Callout>
148
- ) : (
149
- "An error occurred while loading search."
150
- )}
159
+ An error occurred while loading search.
151
160
  </div>
152
161
  ) : (
153
- <ResultList
154
- basePath={context.options.basePath}
155
- searchResults={searchResults ?? []}
156
- searchTerm={searchTerm}
157
- onClose={onClose}
158
- maxSubResults={options.maxSubResults}
159
- />
162
+ <>
163
+ <ResultList
164
+ basePath={context.options.basePath}
165
+ searchResults={searchResults ?? []}
166
+ searchTerm={searchTerm}
167
+ onClose={onClose}
168
+ maxSubResults={options.maxSubResults}
169
+ />
170
+ <div className="flex justify-between p-2 items-center">
171
+ <div className="flex items-center text-xs text-muted-foreground">
172
+ <KbdGroup className="ms-0 me-1">
173
+ <Kbd>↑</Kbd>
174
+ <Kbd>↓</Kbd>
175
+ </KbdGroup>
176
+ Navigate
177
+ <KbdGroup className="ms-4 me-1">
178
+ <Kbd>↵</Kbd>
179
+ </KbdGroup>
180
+ Select
181
+ <KbdGroup className="ms-4 me-1">
182
+ <Kbd>Esc</Kbd>
183
+ </KbdGroup>
184
+ Close dialog
185
+ </div>
186
+ {import.meta.env.DEV && (
187
+ <IndexingDialog>
188
+ <Button
189
+ variant="outline"
190
+ className="h-7 text-xs text-muted-foreground"
191
+ >
192
+ <ListPlusIcon />
193
+ Build Search Index
194
+ </Button>
195
+ </IndexingDialog>
196
+ )}
197
+ </div>
198
+ </>
160
199
  )}
161
200
  </CommandDialog>
162
201
  );
@@ -35,9 +35,9 @@ export const ResultList = ({
35
35
  const navigate = useNavigate();
36
36
  const commandListRef = useRef<HTMLDivElement | null>(null);
37
37
 
38
- // biome-ignore lint/correctness/useExhaustiveDependencies: Only scroll to top when search term changes
39
38
  useLayoutEffect(() => {
40
- requestIdleCallback(() => {
39
+ if (!searchTerm) return;
40
+ requestAnimationFrame(() => {
41
41
  commandListRef.current?.scrollTo({ top: 0 });
42
42
  });
43
43
  }, [searchTerm]);
@@ -77,6 +77,11 @@ export const ResultList = ({
77
77
  ) : (
78
78
  <FileTextIcon />
79
79
  )}
80
+ {result.meta.category && (
81
+ <span className="text-muted-foreground">
82
+ {result.meta.category} &rsaquo;{" "}
83
+ </span>
84
+ )}
80
85
  {result.meta.title}
81
86
  </Link>
82
87
  </CommandItem>
@@ -98,7 +103,7 @@ export const ResultList = ({
98
103
  <div className="flex flex-col items-start gap-2 ms-2.5 ps-5 border-l border-muted-foreground/50">
99
104
  <span className="font-bold">{subResult.title}</span>
100
105
  <span
101
- className="text-[13px] [&_mark]:bg-primary [&_mark]:text-primary-foreground"
106
+ className="line-clamp-2 text-[13px] [&_mark]:bg-primary [&_mark]:text-primary-foreground"
102
107
  // biome-ignore lint/security/noDangerouslySetInnerHtml: Pagefind provides sanitized HTML
103
108
  dangerouslySetInnerHTML={{ __html: subResult.excerpt }}
104
109
  />
package/src/lib/shiki.ts CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  } from "@shikijs/transformers";
8
8
  import type { Root } from "hast";
9
9
  import { toJsxRuntime } from "hast-util-to-jsx-runtime";
10
- import { Fragment, type JSX } from "react";
10
+ import { createElement, Fragment } from "react";
11
11
  import { jsx, jsxs } from "react/jsx-runtime";
12
12
  import type {
13
13
  BundledLanguage,
@@ -21,19 +21,31 @@ import type { Pluggable } from "unified";
21
21
  import { visit } from "unist-util-visit";
22
22
  import { cn } from "./util/cn.js";
23
23
 
24
+ export const HIGHLIGHT_CODE_BLOCK_CLASS =
25
+ "overflow-x-auto scrollbar not-inline";
26
+
24
27
  const engine = createJavaScriptRegexEngine({ forgiving: true });
25
- export const highlighter = await createHighlighterCore({
26
- engine,
27
- langAlias: {
28
- markup: "html",
29
- svg: "xml",
30
- mathml: "xml",
31
- atom: "xml",
32
- ssml: "xml",
33
- rss: "xml",
34
- webmanifest: "json",
35
- },
36
- });
28
+
29
+ const shikiPromise = import.meta.hot?.data.shiki
30
+ ? import.meta.hot.data.shiki
31
+ : createHighlighterCore({
32
+ engine,
33
+ langAlias: {
34
+ markup: "html",
35
+ svg: "xml",
36
+ mathml: "xml",
37
+ atom: "xml",
38
+ ssml: "xml",
39
+ rss: "xml",
40
+ webmanifest: "json",
41
+ },
42
+ });
43
+
44
+ if (import.meta.hot) {
45
+ import.meta.hot.data.shiki = shikiPromise;
46
+ }
47
+
48
+ export const highlighter = await shikiPromise;
37
49
 
38
50
  type ThemesRecord = CodeOptionsMultipleThemes<BundledTheme>["themes"];
39
51
 
@@ -143,5 +155,16 @@ export const highlight = (
143
155
  themes,
144
156
  });
145
157
 
146
- return toJsxRuntime(value, { Fragment, jsx, jsxs }) as JSX.Element;
158
+ return toJsxRuntime(value, {
159
+ Fragment,
160
+ jsx,
161
+ jsxs,
162
+ components: {
163
+ code: (props) =>
164
+ createElement("code", {
165
+ ...props,
166
+ className: cn(props.className, HIGHLIGHT_CODE_BLOCK_CLASS),
167
+ }),
168
+ },
169
+ });
147
170
  };
@@ -1,21 +1,22 @@
1
+ import { Slot } from "@radix-ui/react-slot";
1
2
  import { cva, type VariantProps } from "class-variance-authority";
2
3
  import type * as React from "react";
3
-
4
4
  import { cn } from "../util/cn.js";
5
5
 
6
6
  const badgeVariants = cva(
7
- "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-medium transition-colors focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2",
7
+ "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
8
8
  {
9
9
  variants: {
10
10
  variant: {
11
11
  default:
12
- "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
12
+ "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
13
13
  secondary:
14
- "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
15
- muted: "bg-muted text-muted-foreground ",
14
+ "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
16
15
  destructive:
17
- "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
18
- outline: "text-foreground",
16
+ "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
17
+ outline:
18
+ "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
19
+ muted: "bg-muted text-muted-foreground ",
19
20
  },
20
21
  },
21
22
  defaultVariants: {
@@ -24,13 +25,21 @@ const badgeVariants = cva(
24
25
  },
25
26
  );
26
27
 
27
- export interface BadgeProps
28
- extends React.HTMLAttributes<HTMLDivElement>,
29
- VariantProps<typeof badgeVariants> {}
28
+ function Badge({
29
+ className,
30
+ variant,
31
+ asChild = false,
32
+ ...props
33
+ }: React.ComponentProps<"span"> &
34
+ VariantProps<typeof badgeVariants> & { asChild?: boolean }) {
35
+ const Comp = asChild ? Slot : "span";
30
36
 
31
- function Badge({ className, variant, ...props }: BadgeProps) {
32
37
  return (
33
- <div className={cn(badgeVariants({ variant }), className)} {...props} />
38
+ <Comp
39
+ data-slot="badge"
40
+ className={cn(badgeVariants({ variant }), className)}
41
+ {...props}
42
+ />
34
43
  );
35
44
  }
36
45
 
@@ -4,21 +4,19 @@ import * as React from "react";
4
4
  import { cn } from "../util/cn.js";
5
5
 
6
6
  export const buttonVariants = cva(
7
- "not-prose inline-flex shrink-0 items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
7
+ "not-prose inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
8
8
  {
9
9
  variants: {
10
10
  variant: {
11
- default:
12
- "bg-primary text-primary-foreground shadow-sm hover:bg-primary/90",
11
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
13
12
  destructive:
14
- "bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90",
13
+ "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
15
14
  outline:
16
- "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",
15
+ "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
17
16
  secondary:
18
- "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
19
- ghost: "hover:bg-accent hover:text-accent-foreground",
20
- "ghost-destructive":
21
- "text-destructive hover:bg-destructive hover:text-destructive-foreground",
17
+ "bg-secondary text-secondary-foreground hover:bg-secondary/80",
18
+ ghost:
19
+ "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
22
20
  link: "text-primary underline-offset-4 hover:underline",
23
21
  expand:
24
22
  "flex gap-1.5 border bg-transparent rounded-xl text-muted-foreground hover:text-foreground",
@@ -29,7 +27,10 @@ export const buttonVariants = cva(
29
27
  lg: "h-10 rounded-md px-8",
30
28
  xl: "h-14 rounded-lg px-10 text-lg",
31
29
  icon: "size-9",
30
+ "icon-xxs": "size-5",
32
31
  "icon-xs": "size-7",
32
+ "icon-sm": "size-8",
33
+ "icon-lg": "size-10",
33
34
  },
34
35
  },
35
36
  defaultVariants: {
@@ -50,6 +51,7 @@ export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
50
51
  const Comp = asChild ? Slot : "button";
51
52
  return (
52
53
  <Comp
54
+ type={asChild ? undefined : "button"}
53
55
  className={cn(buttonVariants({ variant, size, className }))}
54
56
  ref={ref}
55
57
  {...props}
@@ -0,0 +1,82 @@
1
+ import { Slot } from "@radix-ui/react-slot";
2
+ import { cva, type VariantProps } from "class-variance-authority";
3
+ import { cn } from "../util/cn.js";
4
+ import { Separator } from "./Separator.js";
5
+
6
+ const buttonGroupVariants = cva(
7
+ "flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md has-[>[data-slot=button-group]]:gap-2",
8
+ {
9
+ variants: {
10
+ orientation: {
11
+ horizontal:
12
+ "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
13
+ vertical:
14
+ "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none",
15
+ },
16
+ },
17
+ defaultVariants: {
18
+ orientation: "horizontal",
19
+ },
20
+ },
21
+ );
22
+
23
+ function ButtonGroup({
24
+ className,
25
+ orientation,
26
+ ...props
27
+ }: React.ComponentProps<"div"> & VariantProps<typeof buttonGroupVariants>) {
28
+ return (
29
+ <div
30
+ role="group"
31
+ data-slot="button-group"
32
+ data-orientation={orientation}
33
+ className={cn(buttonGroupVariants({ orientation }), className)}
34
+ {...props}
35
+ />
36
+ );
37
+ }
38
+
39
+ function ButtonGroupText({
40
+ className,
41
+ asChild = false,
42
+ ...props
43
+ }: React.ComponentProps<"div"> & {
44
+ asChild?: boolean;
45
+ }) {
46
+ const Comp = asChild ? Slot : "div";
47
+
48
+ return (
49
+ <Comp
50
+ className={cn(
51
+ "bg-muted flex items-center gap-2 rounded-md border px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
52
+ className,
53
+ )}
54
+ {...props}
55
+ />
56
+ );
57
+ }
58
+
59
+ function ButtonGroupSeparator({
60
+ className,
61
+ orientation = "vertical",
62
+ ...props
63
+ }: React.ComponentProps<typeof Separator>) {
64
+ return (
65
+ <Separator
66
+ data-slot="button-group-separator"
67
+ orientation={orientation}
68
+ className={cn(
69
+ "bg-input relative m-0! self-stretch data-[orientation=vertical]:h-auto",
70
+ className,
71
+ )}
72
+ {...props}
73
+ />
74
+ );
75
+ }
76
+
77
+ export {
78
+ ButtonGroup,
79
+ ButtonGroupSeparator,
80
+ ButtonGroupText,
81
+ buttonGroupVariants,
82
+ };
@@ -14,7 +14,8 @@ const stylesMap = {
14
14
  bg: "bg-gray-100 dark:bg-zinc-800/50",
15
15
  iconColor: "text-gray-600 dark:text-zinc-300",
16
16
  titleColor: "text-gray-600 dark:text-zinc-300",
17
- textColor: "text-gray-600 dark:text-zinc-300",
17
+ textColor:
18
+ "text-gray-600 dark:text-zinc-300 [&_a]:hover:text-gray-700 [&_a]:dark:hover:text-zinc-400",
18
19
  Icon: InfoIcon as LucideIcon,
19
20
  },
20
21
  tip: {
@@ -22,7 +23,8 @@ const stylesMap = {
22
23
  bg: "bg-green-200/25 dark:bg-green-950/70",
23
24
  iconColor: "text-green-600 dark:text-green-200",
24
25
  titleColor: "text-green-700 dark:text-green-200",
25
- textColor: "text-green-600 dark:text-green-50",
26
+ textColor:
27
+ "text-green-600 dark:text-green-50 [&_a]:hover:text-green-700 [&_a]:dark:hover:text-green-300",
26
28
  Icon: LightbulbIcon as LucideIcon,
27
29
  },
28
30
  info: {
@@ -30,7 +32,8 @@ const stylesMap = {
30
32
  bg: "bg-blue-50 dark:bg-blue-950/40",
31
33
  iconColor: "text-blue-400 dark:text-blue-200",
32
34
  titleColor: "text-blue-700 dark:text-blue-200",
33
- textColor: "text-blue-600 dark:text-blue-100",
35
+ textColor:
36
+ "text-blue-600 dark:text-blue-100 [&_a]:hover:text-blue-800 [&_a]:dark:hover:text-blue-300",
34
37
  Icon: InfoIcon as LucideIcon,
35
38
  },
36
39
  caution: {
@@ -38,7 +41,8 @@ const stylesMap = {
38
41
  bg: "bg-yellow-100/60 dark:bg-yellow-400/10",
39
42
  iconColor: "text-yellow-500 dark:text-yellow-300",
40
43
  titleColor: "text-yellow-600 dark:text-yellow-300",
41
- textColor: "text-yellow-700 dark:text-yellow-200",
44
+ textColor:
45
+ "text-yellow-700 dark:text-yellow-200 [&_a]:hover:text-yellow-800 [&_a]:dark:hover:text-yellow-300",
42
46
  Icon: AlertTriangleIcon as LucideIcon,
43
47
  },
44
48
  danger: {
@@ -46,7 +50,8 @@ const stylesMap = {
46
50
  bg: "bg-rose-50 dark:bg-rose-950/40",
47
51
  iconColor: "text-rose-400 dark:text-rose-300",
48
52
  titleColor: "text-rose-800 dark:text-rose-300",
49
- textColor: "text-rose-700 dark:text-rose-100",
53
+ textColor:
54
+ "text-rose-700 dark:text-rose-100 [&_a]:hover:text-rose-800 [&_a]:dark:hover:text-rose-300",
50
55
  Icon: ShieldAlertIcon as LucideIcon,
51
56
  },
52
57
  } as const;