zudoku 0.0.0-z7b86faab → 0.0.0-z8ac421f0

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 (321) hide show
  1. package/dist/app/main.js +1 -1
  2. package/dist/app/main.js.map +1 -1
  3. package/dist/config/create-plugin.d.ts +2 -0
  4. package/dist/config/create-plugin.js +55 -0
  5. package/dist/config/create-plugin.js.map +1 -0
  6. package/dist/config/loader.js +2 -2
  7. package/dist/config/loader.js.map +1 -1
  8. package/dist/config/validators/InputNavigationSchema.d.ts +174 -124
  9. package/dist/config/validators/InputNavigationSchema.js +17 -0
  10. package/dist/config/validators/InputNavigationSchema.js.map +1 -1
  11. package/dist/config/validators/NavigationSchema.d.ts +10 -2
  12. package/dist/config/validators/NavigationSchema.js +7 -0
  13. package/dist/config/validators/NavigationSchema.js.map +1 -1
  14. package/dist/config/validators/ProtectedRoutesSchema.d.ts +1 -1
  15. package/dist/config/validators/validate.d.ts +6 -5
  16. package/dist/config/validators/validate.js +2 -0
  17. package/dist/config/validators/validate.js.map +1 -1
  18. package/dist/flat-config.d.ts +36 -24
  19. package/dist/index.d.ts +2 -1
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/components/Bootstrap.js +1 -2
  23. package/dist/lib/components/Bootstrap.js.map +1 -1
  24. package/dist/lib/components/Heading.d.ts +1 -1
  25. package/dist/lib/components/MobileTopNavigation.js +2 -1
  26. package/dist/lib/components/MobileTopNavigation.js.map +1 -1
  27. package/dist/lib/components/Slot.test.js +1 -1
  28. package/dist/lib/components/Slot.test.js.map +1 -1
  29. package/dist/lib/components/TopNavigation.d.ts +7 -1
  30. package/dist/lib/components/TopNavigation.js +7 -2
  31. package/dist/lib/components/TopNavigation.js.map +1 -1
  32. package/dist/lib/components/Zudoku.d.ts +4 -1
  33. package/dist/lib/components/Zudoku.js +4 -7
  34. package/dist/lib/components/Zudoku.js.map +1 -1
  35. package/dist/lib/components/context/ZudokuContext.d.ts +9 -4
  36. package/dist/lib/components/context/ZudokuContext.js +4 -2
  37. package/dist/lib/components/context/ZudokuContext.js.map +1 -1
  38. package/dist/lib/components/context/ZudokuProvider.js +1 -1
  39. package/dist/lib/components/context/ZudokuProvider.js.map +1 -1
  40. package/dist/lib/components/context/ZudokuReactContext.d.ts +11 -0
  41. package/dist/lib/components/context/ZudokuReactContext.js +4 -0
  42. package/dist/lib/components/context/ZudokuReactContext.js.map +1 -0
  43. package/dist/lib/components/index.d.ts +18 -74
  44. package/dist/lib/components/index.js +19 -36
  45. package/dist/lib/components/index.js.map +1 -1
  46. package/dist/lib/components/navigation/Navigation.js +4 -3
  47. package/dist/lib/components/navigation/Navigation.js.map +1 -1
  48. package/dist/lib/components/navigation/NavigationCategory.js +8 -0
  49. package/dist/lib/components/navigation/NavigationCategory.js.map +1 -1
  50. package/dist/lib/components/navigation/NavigationFilterContext.d.ts +8 -0
  51. package/dist/lib/components/navigation/NavigationFilterContext.js +12 -0
  52. package/dist/lib/components/navigation/NavigationFilterContext.js.map +1 -0
  53. package/dist/lib/components/navigation/NavigationFilterInput.d.ts +3 -0
  54. package/dist/lib/components/navigation/NavigationFilterInput.js +9 -0
  55. package/dist/lib/components/navigation/NavigationFilterInput.js.map +1 -0
  56. package/dist/lib/components/navigation/NavigationItem.js +11 -1
  57. package/dist/lib/components/navigation/NavigationItem.js.map +1 -1
  58. package/dist/lib/components/navigation/utils.d.ts +2 -1
  59. package/dist/lib/components/navigation/utils.js +22 -1
  60. package/dist/lib/components/navigation/utils.js.map +1 -1
  61. package/dist/lib/core/ZudokuContext.d.ts +2 -1
  62. package/dist/lib/core/ZudokuContext.js +3 -1
  63. package/dist/lib/core/ZudokuContext.js.map +1 -1
  64. package/dist/lib/core/__internal.d.ts +1 -0
  65. package/dist/lib/core/__internal.js +2 -0
  66. package/dist/lib/core/__internal.js.map +1 -1
  67. package/dist/lib/core/plugins.d.ts +5 -1
  68. package/dist/lib/core/plugins.js.map +1 -1
  69. package/dist/lib/core/transform-config.d.ts +4 -2
  70. package/dist/lib/core/transform-config.js +33 -13
  71. package/dist/lib/core/transform-config.js.map +1 -1
  72. package/dist/lib/core/transform-config.test.d.ts +1 -0
  73. package/dist/lib/core/transform-config.test.js +83 -0
  74. package/dist/lib/core/transform-config.test.js.map +1 -0
  75. package/dist/lib/errors/ErrorAlert.js +1 -2
  76. package/dist/lib/errors/ErrorAlert.js.map +1 -1
  77. package/dist/lib/hooks/index.d.ts +7 -30
  78. package/dist/lib/hooks/index.js +7 -15
  79. package/dist/lib/hooks/index.js.map +1 -1
  80. package/dist/lib/hooks/useEvent.test.js +1 -1
  81. package/dist/lib/hooks/useEvent.test.js.map +1 -1
  82. package/dist/lib/oas/graphql/circular.d.ts +1 -1
  83. package/dist/lib/oas/graphql/circular.js +18 -35
  84. package/dist/lib/oas/graphql/circular.js.map +1 -1
  85. package/dist/lib/oas/graphql/circular.test.js +33 -2
  86. package/dist/lib/oas/graphql/circular.test.js.map +1 -1
  87. package/dist/lib/oas/parser/index.js +14 -5
  88. package/dist/lib/oas/parser/index.js.map +1 -1
  89. package/dist/lib/plugins/openapi/ParamInfos.js +8 -5
  90. package/dist/lib/plugins/openapi/ParamInfos.js.map +1 -1
  91. package/dist/lib/plugins/openapi/ParameterListItem.js +1 -1
  92. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  93. package/dist/lib/plugins/openapi/playground/fileUtils.d.ts +1 -0
  94. package/dist/lib/plugins/openapi/playground/fileUtils.js +3 -0
  95. package/dist/lib/plugins/openapi/playground/fileUtils.js.map +1 -1
  96. package/dist/lib/plugins/openapi/playground/result-panel/AudioPlayer.d.ts +6 -0
  97. package/dist/lib/plugins/openapi/playground/result-panel/AudioPlayer.js +20 -0
  98. package/dist/lib/plugins/openapi/playground/result-panel/AudioPlayer.js.map +1 -0
  99. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +7 -2
  100. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
  101. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js +2 -2
  102. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -1
  103. package/dist/lib/ui/Alert.d.ts +3 -2
  104. package/dist/lib/ui/Alert.js +9 -5
  105. package/dist/lib/ui/Alert.js.map +1 -1
  106. package/dist/lib/ui/InputGroup.d.ts +16 -0
  107. package/dist/lib/ui/InputGroup.js +65 -0
  108. package/dist/lib/ui/InputGroup.js.map +1 -0
  109. package/dist/lib/ui/Secret.js +2 -2
  110. package/dist/lib/ui/Secret.js.map +1 -1
  111. package/dist/lib/util/flattenAllOf.d.ts +0 -2
  112. package/dist/lib/util/flattenAllOf.js +6 -46
  113. package/dist/lib/util/flattenAllOf.js.map +1 -1
  114. package/dist/lib/util/flattenAllOf.test.js +28 -1
  115. package/dist/lib/util/flattenAllOf.test.js.map +1 -1
  116. package/dist/lib/util/flattenAllOfProcessor.d.ts +2 -0
  117. package/dist/lib/util/flattenAllOfProcessor.js +48 -0
  118. package/dist/lib/util/flattenAllOfProcessor.js.map +1 -0
  119. package/dist/lib/util/readFrontmatter.js +2 -1
  120. package/dist/lib/util/readFrontmatter.js.map +1 -1
  121. package/dist/vite/api/SchemaManager.js +1 -1
  122. package/dist/vite/api/SchemaManager.js.map +1 -1
  123. package/dist/vite/api/SchemaManager.test.js +1 -1
  124. package/dist/vite/api/SchemaManager.test.js.map +1 -1
  125. package/dist/vite/build.js +91 -73
  126. package/dist/vite/build.js.map +1 -1
  127. package/dist/vite/config.js +5 -2
  128. package/dist/vite/config.js.map +1 -1
  129. package/dist/vite/mdx/remark-inject-filepath.js +5 -1
  130. package/dist/vite/mdx/remark-inject-filepath.js.map +1 -1
  131. package/dist/vite/mdx/remark-link-rewrite.js +3 -2
  132. package/dist/vite/mdx/remark-link-rewrite.js.map +1 -1
  133. package/dist/vite/plugin-config.js +16 -4
  134. package/dist/vite/plugin-config.js.map +1 -1
  135. package/dist/vite/plugin-docs.js +9 -7
  136. package/dist/vite/plugin-docs.js.map +1 -1
  137. package/dist/vite/plugin-markdown-export.js +4 -2
  138. package/dist/vite/plugin-markdown-export.js.map +1 -1
  139. package/dist/vite/plugin-theme.js +2 -1
  140. package/dist/vite/plugin-theme.js.map +1 -1
  141. package/dist/vite/prerender/prerender.js +3 -1
  142. package/dist/vite/prerender/prerender.js.map +1 -1
  143. package/dist/vite/prerender/worker.js +3 -1
  144. package/dist/vite/prerender/worker.js.map +1 -1
  145. package/lib/{ClaudeLogo-DJ9bU-sO.js → ClaudeLogo-Br8C_vTq.js} +26 -22
  146. package/lib/{ClaudeLogo-DJ9bU-sO.js.map → ClaudeLogo-Br8C_vTq.js.map} +1 -1
  147. package/lib/Drawer-Ch7927PF.js.map +1 -1
  148. package/lib/{HydrationBoundary-CNF2ZV3E.js → HydrationBoundary-CJu4vUlG.js} +6 -6
  149. package/lib/{HydrationBoundary-CNF2ZV3E.js.map → HydrationBoundary-CJu4vUlG.js.map} +1 -1
  150. package/lib/{MdxPage-stpAoBtx.js → MdxPage-C0QFAsgv.js} +8 -8
  151. package/lib/{MdxPage-stpAoBtx.js.map → MdxPage-C0QFAsgv.js.map} +1 -1
  152. package/lib/Mermaid-Chx5BPHn.js +104 -0
  153. package/lib/Mermaid-Chx5BPHn.js.map +1 -0
  154. package/lib/{OAuthErrorPage-DJ811Bn_.js → OAuthErrorPage-CFz_gBFx.js} +22 -19
  155. package/lib/{OAuthErrorPage-DJ811Bn_.js.map → OAuthErrorPage-CFz_gBFx.js.map} +1 -1
  156. package/lib/{OasProvider-CS_ASmBB.js → OasProvider-BwIOIlky.js} +3 -3
  157. package/lib/{OasProvider-CS_ASmBB.js.map → OasProvider-BwIOIlky.js.map} +1 -1
  158. package/lib/OperationList-DYRzbPJu.js +5908 -0
  159. package/lib/OperationList-DYRzbPJu.js.map +1 -0
  160. package/lib/{RouteGuard--A04ESy8.js → RouteGuard-CVs3yvEs.js} +5 -5
  161. package/lib/{RouteGuard--A04ESy8.js.map → RouteGuard-CVs3yvEs.js.map} +1 -1
  162. package/lib/{SchemaList-BJZJv1gD.js → SchemaList-D4FEyoDV.js} +8 -8
  163. package/lib/{SchemaList-BJZJv1gD.js.map → SchemaList-D4FEyoDV.js.map} +1 -1
  164. package/lib/{SchemaView-U4JMYB3N.js → SchemaView-ScvkhsYE.js} +116 -110
  165. package/lib/SchemaView-ScvkhsYE.js.map +1 -0
  166. package/lib/{Secret-BDBqq4p3.js → Secret-DUpgv4V3.js} +92 -72
  167. package/lib/Secret-DUpgv4V3.js.map +1 -0
  168. package/lib/{SignUp-DCBViNUi.js → SignUp-Dug1jAGC.js} +31 -26
  169. package/lib/{SignUp-DCBViNUi.js.map → SignUp-Dug1jAGC.js.map} +1 -1
  170. package/lib/{SyntaxHighlight-Dshjn3Zf.js → SyntaxHighlight-BMu0b_hF.js} +9 -9
  171. package/lib/{SyntaxHighlight-Dshjn3Zf.js.map → SyntaxHighlight-BMu0b_hF.js.map} +1 -1
  172. package/lib/{Toc-Cgz6CPiE.js → Toc-BiJ2YL0O.js} +2 -2
  173. package/lib/{Toc-Cgz6CPiE.js.map → Toc-BiJ2YL0O.js.map} +1 -1
  174. package/lib/{index-CL8eDnQW.js → Zudoku-iyiXgWFY.js} +2996 -2859
  175. package/lib/Zudoku-iyiXgWFY.js.map +1 -0
  176. package/lib/ZudokuContext-CYyb_PB_.js +175 -0
  177. package/lib/ZudokuContext-CYyb_PB_.js.map +1 -0
  178. package/lib/ZudokuReactContext-DGJAP1sN.js +222 -0
  179. package/lib/ZudokuReactContext-DGJAP1sN.js.map +1 -0
  180. package/lib/chunk-EPOLDU6W-C6C8jAwd.js.map +1 -1
  181. package/lib/{circular-BmMJjG1v.js → circular-BOpxmAie.js} +1327 -1346
  182. package/lib/{circular-BmMJjG1v.js.map → circular-BOpxmAie.js.map} +1 -1
  183. package/lib/createServer-BunbJzB5.js +13038 -0
  184. package/lib/createServer-BunbJzB5.js.map +1 -0
  185. package/lib/{errors-b9I-fAOY.js → errors-B77S9iOc.js} +3 -3
  186. package/lib/{errors-b9I-fAOY.js.map → errors-B77S9iOc.js.map} +1 -1
  187. package/lib/{firebase-BCXX7Qv5.js → firebase-C7XKRGLf.js} +26 -25
  188. package/lib/{firebase-BCXX7Qv5.js.map → firebase-C7XKRGLf.js.map} +1 -1
  189. package/lib/{hook-BGlHBdET.js → hook-Dz_n9SoE.js} +16 -15
  190. package/lib/{hook-BGlHBdET.js.map → hook-Dz_n9SoE.js.map} +1 -1
  191. package/lib/{index-UOLtazB8.js → index-BDp2MTiq.js} +2 -2
  192. package/lib/{index-UOLtazB8.js.map → index-BDp2MTiq.js.map} +1 -1
  193. package/lib/{index-O9RHI87z.js → index-Bx29qHVi.js} +589 -551
  194. package/lib/index-Bx29qHVi.js.map +1 -0
  195. package/lib/index-CrcNWbel.js.map +1 -1
  196. package/lib/index-DAWHN3cH.js +86 -0
  197. package/lib/index-DAWHN3cH.js.map +1 -0
  198. package/lib/index.esm-BYObtETB.js.map +1 -1
  199. package/lib/{index.esm-B_0dvNjB.js → index.esm-Ca5zvoff.js} +20 -20
  200. package/lib/{index.esm-B_0dvNjB.js.map → index.esm-Ca5zvoff.js.map} +1 -1
  201. package/lib/{index.esm-C5CBsVzN.js → index.esm-Cth49JBv.js} +2 -2
  202. package/lib/index.esm-Cth49JBv.js.map +1 -0
  203. package/lib/{invariant-BJAl77rw.js → invariant-B_t_F2s_.js} +3 -3
  204. package/lib/{invariant-BJAl77rw.js.map → invariant-B_t_F2s_.js.map} +1 -1
  205. package/lib/jsx-runtime-BzflLqGi.js.map +1 -1
  206. package/lib/{mutation-BISOc7OM.js → mutation-B7eFBLZY.js} +2 -2
  207. package/lib/{mutation-BISOc7OM.js.map → mutation-B7eFBLZY.js.map} +1 -1
  208. package/lib/ui/Alert.js +32 -20
  209. package/lib/ui/Alert.js.map +1 -1
  210. package/lib/ui/Carousel.js.map +1 -1
  211. package/lib/ui/InputGroup.js +155 -0
  212. package/lib/ui/InputGroup.js.map +1 -0
  213. package/lib/ui/Secret.js +2 -2
  214. package/lib/ui/Secret.js.map +1 -1
  215. package/lib/ui/SyntaxHighlight.js +3 -3
  216. package/lib/useExposedProps-CzTDfXfq.js +30 -0
  217. package/lib/useExposedProps-CzTDfXfq.js.map +1 -0
  218. package/lib/{useMutation-CFMGlAMW.js → useMutation-CErliDZ9.js} +5 -5
  219. package/lib/{useMutation-CFMGlAMW.js.map → useMutation-CErliDZ9.js.map} +1 -1
  220. package/lib/{useSuspenseQuery-CSB_rVek.js → useQuery-ht7aWJ3S.js} +432 -446
  221. package/lib/useQuery-ht7aWJ3S.js.map +1 -0
  222. package/lib/useSuspenseQuery-DQH4Bmc2.js +18 -0
  223. package/lib/useSuspenseQuery-DQH4Bmc2.js.map +1 -0
  224. package/lib/zudoku.__internal.js +1519 -1033
  225. package/lib/zudoku.__internal.js.map +1 -1
  226. package/lib/zudoku.auth-auth0.js +6 -5
  227. package/lib/zudoku.auth-auth0.js.map +1 -1
  228. package/lib/zudoku.auth-azureb2c.js +14 -13
  229. package/lib/zudoku.auth-azureb2c.js.map +1 -1
  230. package/lib/zudoku.auth-clerk.js +2 -2
  231. package/lib/zudoku.auth-firebase.js +5 -5
  232. package/lib/zudoku.auth-openid.js +8 -7
  233. package/lib/zudoku.auth-openid.js.map +1 -1
  234. package/lib/zudoku.auth-supabase.js +4 -4
  235. package/lib/zudoku.components.js +31 -29
  236. package/lib/zudoku.components.js.map +1 -1
  237. package/lib/zudoku.hooks.js +24 -11
  238. package/lib/zudoku.hooks.js.map +1 -1
  239. package/lib/zudoku.mermaid.js +5 -4
  240. package/lib/zudoku.mermaid.js.map +1 -1
  241. package/lib/zudoku.plugin-api-catalog.js +41 -36
  242. package/lib/zudoku.plugin-api-catalog.js.map +1 -1
  243. package/lib/zudoku.plugin-api-keys.js +156 -153
  244. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  245. package/lib/zudoku.plugin-custom-pages.js +1 -1
  246. package/lib/zudoku.plugin-markdown.js +1 -1
  247. package/lib/zudoku.plugin-openapi.js +2 -2
  248. package/lib/zudoku.plugin-search-pagefind.js +19 -18
  249. package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
  250. package/lib/zudoku.plugins.js.map +1 -1
  251. package/lib/zudoku.react-query.js +26 -25
  252. package/lib/zudoku.react-query.js.map +1 -1
  253. package/lib/zudoku.router.js.map +1 -1
  254. package/package.json +17 -10
  255. package/src/app/defaultTheme.css +4 -0
  256. package/src/app/main.css +2 -0
  257. package/src/app/main.tsx +1 -1
  258. package/src/lib/components/Bootstrap.tsx +1 -4
  259. package/src/lib/components/MobileTopNavigation.tsx +13 -8
  260. package/src/lib/components/Slot.test.tsx +1 -1
  261. package/src/lib/components/TopNavigation.tsx +25 -7
  262. package/src/lib/components/Zudoku.tsx +18 -14
  263. package/src/lib/components/context/ZudokuContext.ts +3 -6
  264. package/src/lib/components/context/ZudokuProvider.tsx +1 -1
  265. package/src/lib/components/context/ZudokuReactContext.tsx +17 -0
  266. package/src/lib/components/index.ts +19 -39
  267. package/src/lib/components/navigation/Navigation.tsx +4 -3
  268. package/src/lib/components/navigation/NavigationCategory.tsx +9 -0
  269. package/src/lib/components/navigation/NavigationFilterContext.tsx +28 -0
  270. package/src/lib/components/navigation/NavigationFilterInput.tsx +35 -0
  271. package/src/lib/components/navigation/NavigationItem.tsx +17 -1
  272. package/src/lib/components/navigation/utils.ts +32 -1
  273. package/src/lib/core/ZudokuContext.ts +7 -1
  274. package/src/lib/core/__internal.tsx +2 -0
  275. package/src/lib/core/plugins.ts +7 -3
  276. package/src/lib/core/transform-config.test.tsx +99 -0
  277. package/src/lib/core/transform-config.ts +57 -19
  278. package/src/lib/errors/ErrorAlert.tsx +1 -6
  279. package/src/lib/hooks/index.ts +7 -16
  280. package/src/lib/hooks/useEvent.test.tsx +1 -1
  281. package/src/lib/oas/graphql/circular.test.ts +37 -2
  282. package/src/lib/oas/graphql/circular.ts +25 -51
  283. package/src/lib/oas/parser/index.ts +17 -6
  284. package/src/lib/plugins/openapi/ParamInfos.tsx +10 -5
  285. package/src/lib/plugins/openapi/ParameterListItem.tsx +1 -0
  286. package/src/lib/plugins/openapi/playground/fileUtils.ts +4 -0
  287. package/src/lib/plugins/openapi/playground/result-panel/AudioPlayer.tsx +50 -0
  288. package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +33 -17
  289. package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +2 -0
  290. package/src/lib/ui/Alert.tsx +17 -5
  291. package/src/lib/ui/InputGroup.tsx +168 -0
  292. package/src/lib/ui/Secret.tsx +2 -2
  293. package/src/lib/util/flattenAllOf.test.ts +34 -1
  294. package/src/lib/util/flattenAllOf.ts +7 -57
  295. package/src/lib/util/flattenAllOfProcessor.ts +58 -0
  296. package/src/lib/util/readFrontmatter.ts +2 -1
  297. package/src/zuplo/enrich-with-zuplo-mcp.ts +168 -0
  298. package/src/zuplo/enrich-with-zuplo.ts +254 -0
  299. package/src/zuplo/policy-types.ts +46 -0
  300. package/src/zuplo/with-zuplo-processors.ts +35 -0
  301. package/src/zuplo/with-zuplo.ts +14 -0
  302. package/lib/Mermaid-Koc3z8mU.js +0 -102
  303. package/lib/Mermaid-Koc3z8mU.js.map +0 -1
  304. package/lib/OperationList-Dq_AB4W9.js +0 -5820
  305. package/lib/OperationList-Dq_AB4W9.js.map +0 -1
  306. package/lib/SchemaView-U4JMYB3N.js.map +0 -1
  307. package/lib/Secret-BDBqq4p3.js.map +0 -1
  308. package/lib/Separator-BXt1LYnm.js +0 -27
  309. package/lib/Separator-BXt1LYnm.js.map +0 -1
  310. package/lib/ZudokuContext-BZB1TWdT.js +0 -387
  311. package/lib/ZudokuContext-BZB1TWdT.js.map +0 -1
  312. package/lib/___vite-browser-external_commonjs-proxy-BttVsNON.js +0 -9
  313. package/lib/___vite-browser-external_commonjs-proxy-BttVsNON.js.map +0 -1
  314. package/lib/createServer-CLSZ7hWJ.js +0 -16693
  315. package/lib/createServer-CLSZ7hWJ.js.map +0 -1
  316. package/lib/index-CL8eDnQW.js.map +0 -1
  317. package/lib/index-DBjOT2H1.js +0 -133
  318. package/lib/index-DBjOT2H1.js.map +0 -1
  319. package/lib/index-O9RHI87z.js.map +0 -1
  320. package/lib/index.esm-C5CBsVzN.js.map +0 -1
  321. package/lib/useSuspenseQuery-CSB_rVek.js.map +0 -1
@@ -0,0 +1,155 @@
1
+ import { j as r } from "../jsx-runtime-BzflLqGi.js";
2
+ import { c as e } from "../index-DI5SPFK9.js";
3
+ import { c as n } from "../cn-5-Gd1Dss.js";
4
+ import { Button as u } from "./Button.js";
5
+ import { Input as p } from "./Input.js";
6
+ import { Textarea as l } from "./Textarea.js";
7
+ function v({ className: a, ...t }) {
8
+ return /* @__PURE__ */ r.jsx(
9
+ "div",
10
+ {
11
+ "data-slot": "input-group",
12
+ role: "group",
13
+ className: n(
14
+ "group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none",
15
+ "h-9 min-w-0 has-[>textarea]:h-auto",
16
+ // Variants based on alignment.
17
+ "has-[>[data-align=inline-start]]:[&>input]:pl-2",
18
+ "has-[>[data-align=inline-end]]:[&>input]:pr-2",
19
+ "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3",
20
+ "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3",
21
+ // Focus state.
22
+ "has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]",
23
+ // Error state.
24
+ "has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",
25
+ a
26
+ ),
27
+ ...t
28
+ }
29
+ );
30
+ }
31
+ const d = e(
32
+ "text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50",
33
+ {
34
+ variants: {
35
+ align: {
36
+ "inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
37
+ "inline-end": "order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]",
38
+ "block-start": "order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5",
39
+ "block-end": "order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5"
40
+ }
41
+ },
42
+ defaultVariants: {
43
+ align: "inline-start"
44
+ }
45
+ }
46
+ );
47
+ function k({
48
+ className: a,
49
+ align: t = "inline-start",
50
+ ...o
51
+ }) {
52
+ return (
53
+ // biome-ignore lint/a11y/useKeyWithClickEvents: Focus management
54
+ /* @__PURE__ */ r.jsx(
55
+ "div",
56
+ {
57
+ role: "group",
58
+ "data-slot": "input-group-addon",
59
+ "data-align": t,
60
+ className: n(d({ align: t }), a),
61
+ onClick: (s) => {
62
+ s.target.closest("button") || s.currentTarget.parentElement?.querySelector("input")?.focus();
63
+ },
64
+ ...o
65
+ }
66
+ )
67
+ );
68
+ }
69
+ const c = e(
70
+ "text-sm shadow-none flex gap-2 items-center",
71
+ {
72
+ variants: {
73
+ size: {
74
+ xs: "h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2",
75
+ sm: "h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5",
76
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
77
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
78
+ }
79
+ },
80
+ defaultVariants: {
81
+ size: "xs"
82
+ }
83
+ }
84
+ );
85
+ function j({
86
+ className: a,
87
+ type: t = "button",
88
+ variant: o = "ghost",
89
+ size: s = "xs",
90
+ ...i
91
+ }) {
92
+ return /* @__PURE__ */ r.jsx(
93
+ u,
94
+ {
95
+ type: t,
96
+ "data-size": s,
97
+ variant: o,
98
+ className: n(c({ size: s }), a),
99
+ ...i
100
+ }
101
+ );
102
+ }
103
+ function z({ className: a, ...t }) {
104
+ return /* @__PURE__ */ r.jsx(
105
+ "span",
106
+ {
107
+ className: n(
108
+ "text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
109
+ a
110
+ ),
111
+ ...t
112
+ }
113
+ );
114
+ }
115
+ function w({
116
+ className: a,
117
+ ...t
118
+ }) {
119
+ return /* @__PURE__ */ r.jsx(
120
+ p,
121
+ {
122
+ "data-slot": "input-group-control",
123
+ className: n(
124
+ "flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent",
125
+ a
126
+ ),
127
+ ...t
128
+ }
129
+ );
130
+ }
131
+ function G({
132
+ className: a,
133
+ ...t
134
+ }) {
135
+ return /* @__PURE__ */ r.jsx(
136
+ l,
137
+ {
138
+ "data-slot": "input-group-control",
139
+ className: n(
140
+ "flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent",
141
+ a
142
+ ),
143
+ ...t
144
+ }
145
+ );
146
+ }
147
+ export {
148
+ v as InputGroup,
149
+ k as InputGroupAddon,
150
+ j as InputGroupButton,
151
+ w as InputGroupInput,
152
+ z as InputGroupText,
153
+ G as InputGroupTextarea
154
+ };
155
+ //# sourceMappingURL=InputGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputGroup.js","sources":["../../src/lib/ui/InputGroup.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\nimport { Button } from \"./Button.js\";\nimport { Input } from \"./Input.js\";\nimport { Textarea } from \"./Textarea.js\";\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none\",\n \"h-9 min-w-0 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\",\n\n className,\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\":\n \"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n },\n);\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n // biome-ignore lint/a11y/useKeyWithClickEvents: Focus management\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return;\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\n \"text-sm shadow-none flex gap-2 items-center\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2\",\n sm: \"h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n },\n);\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n};\n"],"names":["InputGroup","className","props","jsx","cn","inputGroupAddonVariants","cva","InputGroupAddon","align","e","inputGroupButtonVariants","InputGroupButton","type","variant","size","Button","InputGroupText","InputGroupInput","Input","InputGroupTextarea","Textarea"],"mappings":"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"}
package/lib/ui/Secret.js CHANGED
@@ -80,7 +80,7 @@ const N = ({
80
80
  onClick: () => {
81
81
  f((h) => !h), d?.(!t);
82
82
  },
83
- size: "icon",
83
+ size: "icon-sm",
84
84
  children: t ? /* @__PURE__ */ e.jsx(u, { size: 16 }) : /* @__PURE__ */ e.jsx(b, { size: 16 })
85
85
  }
86
86
  ),
@@ -91,7 +91,7 @@ const N = ({
91
91
  onClick: () => {
92
92
  g(o), r?.(o);
93
93
  },
94
- size: "icon",
94
+ size: "icon-sm",
95
95
  children: j ? /* @__PURE__ */ e.jsx(y, { size: 16 }) : /* @__PURE__ */ e.jsx(k, { size: 16 })
96
96
  }
97
97
  )
@@ -1 +1 @@
1
- {"version":3,"file":"Secret.js","sources":["../../src/lib/ui/Secret.tsx"],"sourcesContent":["import { CheckIcon, CopyIcon, EyeIcon, EyeOffIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { cn } from \"../util/cn.js\";\nimport { useCopyToClipboard } from \"../util/useCopyToClipboard.js\";\nimport { Button } from \"./Button.js\";\n\ntype Status = \"active\" | \"expired\" | \"expiring\" | \"revoked\" | \"none\";\n\nexport const SecretText = ({\n secret,\n revealed = false,\n previewChars = 5,\n className,\n}: {\n secret: string;\n revealed?: boolean;\n previewChars?: number;\n className?: string;\n}) => {\n return (\n <span className={cn(\"w-full truncate\", className)}>\n <div\n className={cn(\n \"w-40 inline-block md:w-fit\",\n revealed ? \"\" : \"opacity-50\",\n )}\n >\n {revealed\n ? secret.slice(0, previewChars === 0 ? secret.length : -previewChars)\n : \"•••• \".repeat(\n secret.slice(\n 0,\n previewChars === 0 ? secret.length : -previewChars,\n ).length / 5,\n ) +\n \"•\".repeat(\n secret.slice(\n 0,\n previewChars === 0 ? secret.length : -previewChars,\n ).length % 5,\n )}\n </div>\n {previewChars > 0 && <span>{secret.slice(-previewChars)}</span>}\n </span>\n );\n};\n\nexport const Secret = ({\n secret,\n preview = 5,\n className,\n status,\n onCopy,\n revealed: controlledRevealed,\n onReveal,\n noReveal: disabledReveal,\n}: {\n revealed?: boolean;\n noReveal?: boolean;\n secret: string;\n status?: Status;\n className?: string;\n preview?: number;\n onCopy?: (secret: string) => void;\n onReveal?: (revealed: boolean) => void;\n}) => {\n const previewChars = Math.abs(preview);\n const [isRevealed, setRevealed] = useState(false);\n const [isCopied, copyToClipboard] = useCopyToClipboard();\n\n const revealed = controlledRevealed ?? isRevealed;\n\n return (\n <div\n className={cn(\n \"flex gap-2 items-center text-sm border rounded-md px-1\",\n className,\n )}\n >\n <div className=\"font-mono w-full h-9 items-center flex px-2 text-xs gap-2\">\n {status && (\n <div\n className={cn(\n \"rounded-full shrink-0 w-2 h-2 mr-2\",\n status === \"active\" && \"bg-emerald-400\",\n status === \"expired\" && \"bg-neutral-200\",\n status === \"expiring\" && \"bg-yellow-400\",\n status === \"revoked\" && \"bg-red-400\",\n status === \"none\" && \"opacity-0\",\n )}\n />\n )}\n <SecretText\n secret={secret}\n revealed={revealed}\n previewChars={previewChars}\n />\n </div>\n {disabledReveal !== true && (\n <Button\n variant=\"ghost\"\n onClick={() => {\n setRevealed((prev) => !prev);\n onReveal?.(!revealed);\n }}\n size=\"icon\"\n >\n {revealed ? <EyeOffIcon size={16} /> : <EyeIcon size={16} />}\n </Button>\n )}\n <Button\n variant=\"ghost\"\n onClick={() => {\n copyToClipboard(secret);\n onCopy?.(secret);\n }}\n size=\"icon\"\n >\n {isCopied ? <CheckIcon size={16} /> : <CopyIcon size={16} />}\n </Button>\n </div>\n );\n};\n"],"names":["SecretText","secret","revealed","previewChars","className","cn","jsx","Secret","preview","status","onCopy","controlledRevealed","onReveal","disabledReveal","isRevealed","setRevealed","useState","isCopied","copyToClipboard","useCopyToClipboard","jsxs","Button","prev","EyeOffIcon","EyeIcon","CheckIcon","CopyIcon"],"mappings":"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"}
1
+ {"version":3,"file":"Secret.js","sources":["../../src/lib/ui/Secret.tsx"],"sourcesContent":["import { CheckIcon, CopyIcon, EyeIcon, EyeOffIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { cn } from \"../util/cn.js\";\nimport { useCopyToClipboard } from \"../util/useCopyToClipboard.js\";\nimport { Button } from \"./Button.js\";\n\ntype Status = \"active\" | \"expired\" | \"expiring\" | \"revoked\" | \"none\";\n\nexport const SecretText = ({\n secret,\n revealed = false,\n previewChars = 5,\n className,\n}: {\n secret: string;\n revealed?: boolean;\n previewChars?: number;\n className?: string;\n}) => {\n return (\n <span className={cn(\"w-full truncate\", className)}>\n <div\n className={cn(\n \"w-40 inline-block md:w-fit\",\n revealed ? \"\" : \"opacity-50\",\n )}\n >\n {revealed\n ? secret.slice(0, previewChars === 0 ? secret.length : -previewChars)\n : \"•••• \".repeat(\n secret.slice(\n 0,\n previewChars === 0 ? secret.length : -previewChars,\n ).length / 5,\n ) +\n \"•\".repeat(\n secret.slice(\n 0,\n previewChars === 0 ? secret.length : -previewChars,\n ).length % 5,\n )}\n </div>\n {previewChars > 0 && <span>{secret.slice(-previewChars)}</span>}\n </span>\n );\n};\n\nexport const Secret = ({\n secret,\n preview = 5,\n className,\n status,\n onCopy,\n revealed: controlledRevealed,\n onReveal,\n noReveal: disabledReveal,\n}: {\n revealed?: boolean;\n noReveal?: boolean;\n secret: string;\n status?: Status;\n className?: string;\n preview?: number;\n onCopy?: (secret: string) => void;\n onReveal?: (revealed: boolean) => void;\n}) => {\n const previewChars = Math.abs(preview);\n const [isRevealed, setRevealed] = useState(false);\n const [isCopied, copyToClipboard] = useCopyToClipboard();\n\n const revealed = controlledRevealed ?? isRevealed;\n\n return (\n <div\n className={cn(\n \"flex gap-2 items-center text-sm border rounded-md px-1\",\n className,\n )}\n >\n <div className=\"font-mono w-full h-9 items-center flex px-2 text-xs gap-2\">\n {status && (\n <div\n className={cn(\n \"rounded-full shrink-0 w-2 h-2 mr-2\",\n status === \"active\" && \"bg-emerald-400\",\n status === \"expired\" && \"bg-neutral-200\",\n status === \"expiring\" && \"bg-yellow-400\",\n status === \"revoked\" && \"bg-red-400\",\n status === \"none\" && \"opacity-0\",\n )}\n />\n )}\n <SecretText\n secret={secret}\n revealed={revealed}\n previewChars={previewChars}\n />\n </div>\n {disabledReveal !== true && (\n <Button\n variant=\"ghost\"\n onClick={() => {\n setRevealed((prev) => !prev);\n onReveal?.(!revealed);\n }}\n size=\"icon-sm\"\n >\n {revealed ? <EyeOffIcon size={16} /> : <EyeIcon size={16} />}\n </Button>\n )}\n <Button\n variant=\"ghost\"\n onClick={() => {\n copyToClipboard(secret);\n onCopy?.(secret);\n }}\n size=\"icon-sm\"\n >\n {isCopied ? <CheckIcon size={16} /> : <CopyIcon size={16} />}\n </Button>\n </div>\n );\n};\n"],"names":["SecretText","secret","revealed","previewChars","className","cn","jsx","Secret","preview","status","onCopy","controlledRevealed","onReveal","disabledReveal","isRevealed","setRevealed","useState","isCopied","copyToClipboard","useCopyToClipboard","jsxs","Button","prev","EyeOffIcon","EyeIcon","CheckIcon","CopyIcon"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import "../jsx-runtime-BzflLqGi.js";
2
2
  import "react";
3
- import "../ZudokuContext-BZB1TWdT.js";
4
- import { S as h } from "../SyntaxHighlight-Dshjn3Zf.js";
5
- import "../invariant-BJAl77rw.js";
3
+ import "../ZudokuContext-CYyb_PB_.js";
4
+ import { S as h } from "../SyntaxHighlight-BMu0b_hF.js";
5
+ import "../invariant-B_t_F2s_.js";
6
6
  import "./CodeBlock.js";
7
7
  import "./EmbeddedCodeBlock.js";
8
8
  export {
@@ -0,0 +1,30 @@
1
+ import e from "react";
2
+ import { a as u, u as m, b as f, d as i } from "./chunk-EPOLDU6W-C6C8jAwd.js";
3
+ const o = {}, a = e.createContext(o);
4
+ function l(t) {
5
+ const n = e.useContext(a);
6
+ return e.useMemo(
7
+ function() {
8
+ return typeof t == "function" ? t(n) : { ...n, ...t };
9
+ },
10
+ [n, t]
11
+ );
12
+ }
13
+ function d(t) {
14
+ let n;
15
+ return t.disableParentContext ? n = typeof t.components == "function" ? t.components(o) : t.components || o : n = l(t.components), e.createElement(
16
+ a.Provider,
17
+ { value: n },
18
+ t.children
19
+ );
20
+ }
21
+ const x = () => {
22
+ const t = u(), n = m(), [s, c] = f(), r = i();
23
+ return { location: t, navigate: n, params: r, searchParams: s, setSearchParams: c };
24
+ };
25
+ export {
26
+ d as M,
27
+ x as a,
28
+ l as u
29
+ };
30
+ //# sourceMappingURL=useExposedProps-CzTDfXfq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useExposedProps-CzTDfXfq.js","sources":["../../../node_modules/.pnpm/@mdx-js+react@3.1.1_@types+react@19.2.10_react@19.2.4/node_modules/@mdx-js/react/lib/index.js","../src/lib/util/useExposedProps.tsx"],"sourcesContent":["/**\n * @import {MDXComponents} from 'mdx/types.js'\n * @import {Component, ReactElement, ReactNode} from 'react'\n */\n\n/**\n * @callback MergeComponents\n * Custom merge function.\n * @param {Readonly<MDXComponents>} currentComponents\n * Current components from the context.\n * @returns {MDXComponents}\n * Additional components.\n *\n * @typedef Props\n * Configuration for `MDXProvider`.\n * @property {ReactNode | null | undefined} [children]\n * Children (optional).\n * @property {Readonly<MDXComponents> | MergeComponents | null | undefined} [components]\n * Additional components to use or a function that creates them (optional).\n * @property {boolean | null | undefined} [disableParentContext=false]\n * Turn off outer component context (default: `false`).\n */\n\nimport React from 'react'\n\n/** @type {Readonly<MDXComponents>} */\nconst emptyComponents = {}\n\nconst MDXContext = React.createContext(emptyComponents)\n\n/**\n * Get current components from the MDX Context.\n *\n * @param {Readonly<MDXComponents> | MergeComponents | null | undefined} [components]\n * Additional components to use or a function that creates them (optional).\n * @returns {MDXComponents}\n * Current components.\n */\nexport function useMDXComponents(components) {\n const contextComponents = React.useContext(MDXContext)\n\n // Memoize to avoid unnecessary top-level context changes\n return React.useMemo(\n function () {\n // Custom merge via a function prop\n if (typeof components === 'function') {\n return components(contextComponents)\n }\n\n return {...contextComponents, ...components}\n },\n [contextComponents, components]\n )\n}\n\n/**\n * Provider for MDX context.\n *\n * @param {Readonly<Props>} properties\n * Properties.\n * @returns {ReactElement}\n * Element.\n * @satisfies {Component}\n */\nexport function MDXProvider(properties) {\n /** @type {Readonly<MDXComponents>} */\n let allComponents\n\n if (properties.disableParentContext) {\n allComponents =\n typeof properties.components === 'function'\n ? properties.components(emptyComponents)\n : properties.components || emptyComponents\n } else {\n allComponents = useMDXComponents(properties.components)\n }\n\n return React.createElement(\n MDXContext.Provider,\n {value: allComponents},\n properties.children\n )\n}\n","import {\n type Location,\n type NavigateFunction,\n type Params,\n type SetURLSearchParams,\n useLocation,\n useNavigate,\n useParams,\n useSearchParams,\n} from \"react-router\";\n\nexport type ExposedComponentProps = {\n location: Location;\n navigate: NavigateFunction;\n searchParams: URLSearchParams;\n setSearchParams: SetURLSearchParams;\n params: Params;\n};\n\nexport const useExposedProps = (): ExposedComponentProps => {\n const location = useLocation();\n const navigate = useNavigate();\n const [searchParams, setSearchParams] = useSearchParams();\n const params = useParams();\n\n return { location, navigate, params, searchParams, setSearchParams };\n};\n"],"names":["emptyComponents","MDXContext","React","useMDXComponents","components","contextComponents","MDXProvider","properties","allComponents","useExposedProps","location","useLocation","navigate","useNavigate","searchParams","setSearchParams","useSearchParams","params","useParams"],"mappings":";;AA0BA,MAAMA,IAAkB,CAAA,GAElBC,IAAaC,EAAM,cAAcF,CAAe;AAU/C,SAASG,EAAiBC,GAAY;AAC3C,QAAMC,IAAoBH,EAAM,WAAWD,CAAU;AAGrD,SAAOC,EAAM;AAAA,IACX,WAAY;AAEV,aAAI,OAAOE,KAAe,aACjBA,EAAWC,CAAiB,IAG9B,EAAC,GAAGA,GAAmB,GAAGD,EAAU;AAAA,IAC7C;AAAA,IACA,CAACC,GAAmBD,CAAU;AAAA,EAClC;AACA;AAWO,SAASE,EAAYC,GAAY;AAEtC,MAAIC;AAEJ,SAAID,EAAW,uBACbC,IACE,OAAOD,EAAW,cAAe,aAC7BA,EAAW,WAAWP,CAAe,IACrCO,EAAW,cAAcP,IAE/BQ,IAAgBL,EAAiBI,EAAW,UAAU,GAGjDL,EAAM;AAAA,IACXD,EAAW;AAAA,IACX,EAAC,OAAOO,EAAa;AAAA,IACrBD,EAAW;AAAA,EACf;AACA;AC/DO,MAAME,IAAkB,MAA6B;AAC1D,QAAMC,IAAWC,EAAA,GACXC,IAAWC,EAAA,GACX,CAACC,GAAcC,CAAe,IAAIC,EAAA,GAClCC,IAASC,EAAA;AAEf,SAAO,EAAE,UAAAR,GAAU,UAAAE,GAAU,QAAAK,GAAQ,cAAAH,GAAc,iBAAAC,EAAA;AACrD;","x_google_ignoreList":[0]}
@@ -1,6 +1,6 @@
1
1
  import * as o from "react";
2
- import { g as l } from "./mutation-BISOc7OM.js";
3
- import { S as p, s as d, h as a, n as h, a as b, b as m, d as f } from "./useSuspenseQuery-CSB_rVek.js";
2
+ import { g as l } from "./mutation-B7eFBLZY.js";
3
+ import { S as p, a as b, h as a, n as h, b as d, e as m, f } from "./useQuery-ht7aWJ3S.js";
4
4
  var v = class extends p {
5
5
  #s;
6
6
  #i = void 0;
@@ -14,7 +14,7 @@ var v = class extends p {
14
14
  }
15
15
  setOptions(t) {
16
16
  const s = this.options;
17
- this.options = this.#s.defaultMutationOptions(t), d(this.options, s) || this.#s.getMutationCache().notify({
17
+ this.options = this.#s.defaultMutationOptions(t), b(this.options, s) || this.#s.getMutationCache().notify({
18
18
  type: "observerOptionsUpdated",
19
19
  mutation: this.#t,
20
20
  observer: this
@@ -86,7 +86,7 @@ var v = class extends p {
86
86
  }
87
87
  };
88
88
  function M(t, s) {
89
- const i = b(s), [e] = o.useState(
89
+ const i = d(s), [e] = o.useState(
90
90
  () => new v(
91
91
  i,
92
92
  t
@@ -116,4 +116,4 @@ export {
116
116
  v as M,
117
117
  M as u
118
118
  };
119
- //# sourceMappingURL=useMutation-CFMGlAMW.js.map
119
+ //# sourceMappingURL=useMutation-CErliDZ9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMutation-CFMGlAMW.js","sources":["../../../node_modules/.pnpm/@tanstack+query-core@5.90.12/node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../../node_modules/.pnpm/@tanstack+react-query@5.90.12_react@19.2.3/node_modules/@tanstack/react-query/build/modern/useMutation.js"],"sourcesContent":["// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n #client;\n #currentResult = void 0;\n #currentMutation;\n #mutateOptions;\n constructor(client, options) {\n super();\n this.#client = client;\n this.setOptions(options);\n this.bindMethods();\n this.#updateResult();\n }\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n this.options = this.#client.defaultMutationOptions(options);\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: \"observerOptionsUpdated\",\n mutation: this.#currentMutation,\n observer: this\n });\n }\n if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n this.reset();\n } else if (this.#currentMutation?.state.status === \"pending\") {\n this.#currentMutation.setOptions(this.options);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this);\n }\n }\n onMutationUpdate(action) {\n this.#updateResult();\n this.#notify(action);\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n reset() {\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = void 0;\n this.#updateResult();\n this.#notify();\n }\n mutate(variables, options) {\n this.#mutateOptions = options;\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n this.#currentMutation.addObserver(this);\n return this.#currentMutation.execute(variables);\n }\n #updateResult() {\n const state = this.#currentMutation?.state ?? getDefaultState();\n this.#currentResult = {\n ...state,\n isPending: state.status === \"pending\",\n isSuccess: state.status === \"success\",\n isError: state.status === \"error\",\n isIdle: state.status === \"idle\",\n mutate: this.mutate,\n reset: this.reset\n };\n }\n #notify(action) {\n notifyManager.batch(() => {\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables;\n const onMutateResult = this.#currentResult.context;\n const context = {\n client: this.#client,\n meta: this.options.meta,\n mutationKey: this.options.mutationKey\n };\n if (action?.type === \"success\") {\n this.#mutateOptions.onSuccess?.(\n action.data,\n variables,\n onMutateResult,\n context\n );\n this.#mutateOptions.onSettled?.(\n action.data,\n null,\n variables,\n onMutateResult,\n context\n );\n } else if (action?.type === \"error\") {\n this.#mutateOptions.onError?.(\n action.error,\n variables,\n onMutateResult,\n context\n );\n this.#mutateOptions.onSettled?.(\n void 0,\n action.error,\n variables,\n onMutateResult,\n context\n );\n }\n }\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n });\n }\n};\nexport {\n MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","\"use client\";\n\n// src/useMutation.ts\nimport * as React from \"react\";\nimport {\n MutationObserver,\n noop,\n notifyManager,\n shouldThrowError\n} from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nfunction useMutation(options, queryClient) {\n const client = useQueryClient(queryClient);\n const [observer] = React.useState(\n () => new MutationObserver(\n client,\n options\n )\n );\n React.useEffect(() => {\n observer.setOptions(options);\n }, [observer, options]);\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n const mutate = React.useCallback(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop);\n },\n [observer]\n );\n if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {\n throw result.error;\n }\n return { ...result, mutate, mutateAsync: result.mutate };\n}\nexport {\n useMutation\n};\n//# sourceMappingURL=useMutation.js.map"],"names":["MutationObserver","Subscribable","#client","#currentResult","#currentMutation","#mutateOptions","client","options","#updateResult","prevOptions","shallowEqualObjects","hashKey","action","#notify","variables","state","getDefaultState","notifyManager","onMutateResult","context","listener","useMutation","queryClient","useQueryClient","observer","React","result","onStoreChange","mutate","mutateOptions","noop","shouldThrowError"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"useMutation-CErliDZ9.js","sources":["../../../node_modules/.pnpm/@tanstack+query-core@5.90.12/node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../../node_modules/.pnpm/@tanstack+react-query@5.90.12_react@19.2.4/node_modules/@tanstack/react-query/build/modern/useMutation.js"],"sourcesContent":["// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n #client;\n #currentResult = void 0;\n #currentMutation;\n #mutateOptions;\n constructor(client, options) {\n super();\n this.#client = client;\n this.setOptions(options);\n this.bindMethods();\n this.#updateResult();\n }\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n this.options = this.#client.defaultMutationOptions(options);\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: \"observerOptionsUpdated\",\n mutation: this.#currentMutation,\n observer: this\n });\n }\n if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n this.reset();\n } else if (this.#currentMutation?.state.status === \"pending\") {\n this.#currentMutation.setOptions(this.options);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this);\n }\n }\n onMutationUpdate(action) {\n this.#updateResult();\n this.#notify(action);\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n reset() {\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = void 0;\n this.#updateResult();\n this.#notify();\n }\n mutate(variables, options) {\n this.#mutateOptions = options;\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n this.#currentMutation.addObserver(this);\n return this.#currentMutation.execute(variables);\n }\n #updateResult() {\n const state = this.#currentMutation?.state ?? getDefaultState();\n this.#currentResult = {\n ...state,\n isPending: state.status === \"pending\",\n isSuccess: state.status === \"success\",\n isError: state.status === \"error\",\n isIdle: state.status === \"idle\",\n mutate: this.mutate,\n reset: this.reset\n };\n }\n #notify(action) {\n notifyManager.batch(() => {\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables;\n const onMutateResult = this.#currentResult.context;\n const context = {\n client: this.#client,\n meta: this.options.meta,\n mutationKey: this.options.mutationKey\n };\n if (action?.type === \"success\") {\n this.#mutateOptions.onSuccess?.(\n action.data,\n variables,\n onMutateResult,\n context\n );\n this.#mutateOptions.onSettled?.(\n action.data,\n null,\n variables,\n onMutateResult,\n context\n );\n } else if (action?.type === \"error\") {\n this.#mutateOptions.onError?.(\n action.error,\n variables,\n onMutateResult,\n context\n );\n this.#mutateOptions.onSettled?.(\n void 0,\n action.error,\n variables,\n onMutateResult,\n context\n );\n }\n }\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n });\n }\n};\nexport {\n MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","\"use client\";\n\n// src/useMutation.ts\nimport * as React from \"react\";\nimport {\n MutationObserver,\n noop,\n notifyManager,\n shouldThrowError\n} from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nfunction useMutation(options, queryClient) {\n const client = useQueryClient(queryClient);\n const [observer] = React.useState(\n () => new MutationObserver(\n client,\n options\n )\n );\n React.useEffect(() => {\n observer.setOptions(options);\n }, [observer, options]);\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n const mutate = React.useCallback(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop);\n },\n [observer]\n );\n if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {\n throw result.error;\n }\n return { ...result, mutate, mutateAsync: result.mutate };\n}\nexport {\n useMutation\n};\n//# sourceMappingURL=useMutation.js.map"],"names":["MutationObserver","Subscribable","#client","#currentResult","#currentMutation","#mutateOptions","client","options","#updateResult","prevOptions","shallowEqualObjects","hashKey","action","#notify","variables","state","getDefaultState","notifyManager","onMutateResult","context","listener","useMutation","queryClient","useQueryClient","observer","React","result","onStoreChange","mutate","mutateOptions","noop","shouldThrowError"],"mappings":"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","x_google_ignoreList":[0,1]}