zudoku 0.0.0-f417aae → 0.0.0-f471fb8

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 (1293) hide show
  1. package/README.md +1 -1
  2. package/cli.js +5 -2
  3. package/client.d.ts +7 -0
  4. package/dist/app/demo.js +1 -4
  5. package/dist/app/demo.js.map +1 -1
  6. package/dist/app/entry.client.d.ts +6 -0
  7. package/dist/app/entry.client.js +17 -3
  8. package/dist/app/entry.client.js.map +1 -1
  9. package/dist/app/entry.server.d.ts +6 -4
  10. package/dist/app/entry.server.js +21 -14
  11. package/dist/app/entry.server.js.map +1 -1
  12. package/dist/app/main.d.ts +3 -2
  13. package/dist/app/main.js +29 -31
  14. package/dist/app/main.js.map +1 -1
  15. package/dist/app/sentry.d.ts +3 -0
  16. package/dist/app/sentry.js +19 -0
  17. package/dist/app/sentry.js.map +1 -0
  18. package/dist/app/standalone.js +1 -4
  19. package/dist/app/standalone.js.map +1 -1
  20. package/dist/app/tailwind.d.ts +2 -1
  21. package/dist/app/tailwind.js +80 -48
  22. package/dist/app/tailwind.js.map +1 -1
  23. package/dist/cli/build/handler.d.ts +1 -3
  24. package/dist/cli/build/handler.js +7 -0
  25. package/dist/cli/build/handler.js.map +1 -1
  26. package/dist/cli/cli.js +6 -4
  27. package/dist/cli/cli.js.map +1 -1
  28. package/dist/cli/cmds/build.d.ts +11 -3
  29. package/dist/cli/cmds/build.js +21 -13
  30. package/dist/cli/cmds/build.js.map +1 -1
  31. package/dist/cli/cmds/dev.d.ts +1 -1
  32. package/dist/cli/cmds/dev.js +12 -1
  33. package/dist/cli/cmds/dev.js.map +1 -1
  34. package/dist/cli/cmds/preview.d.ts +16 -0
  35. package/dist/cli/cmds/preview.js +25 -0
  36. package/dist/cli/cmds/preview.js.map +1 -0
  37. package/dist/cli/common/logger.js +9 -0
  38. package/dist/cli/common/logger.js.map +1 -1
  39. package/dist/cli/common/machine-id/lib.js.map +1 -1
  40. package/dist/cli/common/outdated.js +2 -1
  41. package/dist/cli/common/outdated.js.map +1 -1
  42. package/dist/cli/common/output.js.map +1 -1
  43. package/dist/cli/common/utils/box.js.map +1 -1
  44. package/dist/cli/common/utils/ports.d.ts +1 -1
  45. package/dist/cli/common/utils/ports.js +16 -15
  46. package/dist/cli/common/utils/ports.js.map +1 -1
  47. package/dist/cli/dev/handler.d.ts +1 -0
  48. package/dist/cli/dev/handler.js +14 -12
  49. package/dist/cli/dev/handler.js.map +1 -1
  50. package/dist/cli/dev/pagefind-command.d.ts +3 -0
  51. package/dist/cli/dev/pagefind-command.js +59 -0
  52. package/dist/cli/dev/pagefind-command.js.map +1 -0
  53. package/dist/cli/preview/handler.d.ts +3 -0
  54. package/dist/cli/preview/handler.js +35 -0
  55. package/dist/cli/preview/handler.js.map +1 -0
  56. package/dist/codegen.d.ts +3 -0
  57. package/dist/codegen.js +45 -0
  58. package/dist/codegen.js.map +1 -0
  59. package/dist/config/common.d.ts +10 -0
  60. package/dist/config/common.js +2 -0
  61. package/dist/config/common.js.map +1 -0
  62. package/dist/config/config.d.ts +17 -15
  63. package/dist/config/loader.d.ts +20 -0
  64. package/dist/config/loader.js +149 -0
  65. package/dist/config/loader.js.map +1 -0
  66. package/dist/config/validators/InputSidebarSchema.d.ts +52 -36
  67. package/dist/config/validators/InputSidebarSchema.js +11 -1
  68. package/dist/config/validators/InputSidebarSchema.js.map +1 -1
  69. package/dist/config/validators/SidebarSchema.d.ts +24 -1
  70. package/dist/config/validators/SidebarSchema.js +76 -39
  71. package/dist/config/validators/SidebarSchema.js.map +1 -1
  72. package/dist/config/validators/common.d.ts +6849 -0
  73. package/dist/config/validators/common.js +364 -0
  74. package/dist/config/validators/common.js.map +1 -0
  75. package/dist/config/validators/icon-types.d.ts +1 -0
  76. package/dist/config/validators/icon-types.js +2 -0
  77. package/dist/config/validators/icon-types.js.map +1 -0
  78. package/dist/config/validators/validate.d.ts +1628 -571
  79. package/dist/config/validators/validate.js +9 -226
  80. package/dist/config/validators/validate.js.map +1 -1
  81. package/dist/index.d.ts +5 -1
  82. package/dist/index.js +2 -1
  83. package/dist/index.js.map +1 -1
  84. package/dist/lib/MissingIcon.d.ts +2 -0
  85. package/dist/lib/MissingIcon.js +7 -0
  86. package/dist/lib/MissingIcon.js.map +1 -0
  87. package/dist/lib/authentication/AuthenticationPlugin.d.ts +4 -2
  88. package/dist/lib/authentication/AuthenticationPlugin.js +3 -0
  89. package/dist/lib/authentication/AuthenticationPlugin.js.map +1 -1
  90. package/dist/lib/authentication/authentication.d.ts +4 -3
  91. package/dist/lib/authentication/components/CallbackHandler.js +1 -1
  92. package/dist/lib/authentication/components/CallbackHandler.js.map +1 -1
  93. package/dist/lib/authentication/components/SignIn.js +1 -1
  94. package/dist/lib/authentication/components/SignIn.js.map +1 -1
  95. package/dist/lib/authentication/components/SignOut.js +2 -2
  96. package/dist/lib/authentication/components/SignOut.js.map +1 -1
  97. package/dist/lib/authentication/hook.d.ts +6 -4
  98. package/dist/lib/authentication/hook.js +12 -4
  99. package/dist/lib/authentication/hook.js.map +1 -1
  100. package/dist/lib/authentication/providers/auth0.d.ts +2 -2
  101. package/dist/lib/authentication/providers/auth0.js +14 -12
  102. package/dist/lib/authentication/providers/auth0.js.map +1 -1
  103. package/dist/lib/authentication/providers/clerk.d.ts +2 -2
  104. package/dist/lib/authentication/providers/clerk.js +54 -12
  105. package/dist/lib/authentication/providers/clerk.js.map +1 -1
  106. package/dist/lib/authentication/providers/openid.d.ts +12 -4
  107. package/dist/lib/authentication/providers/openid.js +54 -44
  108. package/dist/lib/authentication/providers/openid.js.map +1 -1
  109. package/dist/lib/authentication/providers/supabase.d.ts +4 -0
  110. package/dist/lib/authentication/providers/supabase.js +117 -0
  111. package/dist/lib/authentication/providers/supabase.js.map +1 -0
  112. package/dist/lib/authentication/state.d.ts +23 -19
  113. package/dist/lib/authentication/state.js +34 -7
  114. package/dist/lib/authentication/state.js.map +1 -1
  115. package/dist/lib/authentication/use-broadcast/shared.d.ts +48 -0
  116. package/dist/lib/authentication/use-broadcast/shared.js +243 -0
  117. package/dist/lib/authentication/use-broadcast/shared.js.map +1 -0
  118. package/dist/lib/authentication/use-broadcast/useBroadcast.d.ts +24 -0
  119. package/dist/lib/authentication/use-broadcast/useBroadcast.js +106 -0
  120. package/dist/lib/authentication/use-broadcast/useBroadcast.js.map +1 -0
  121. package/dist/lib/components/AnchorLink.d.ts +2 -2
  122. package/dist/lib/components/AnchorLink.js +9 -5
  123. package/dist/lib/components/AnchorLink.js.map +1 -1
  124. package/dist/lib/components/Autocomplete.d.ts +13 -0
  125. package/dist/lib/components/Autocomplete.js +47 -0
  126. package/dist/lib/components/Autocomplete.js.map +1 -0
  127. package/dist/lib/components/Banner.js +1 -1
  128. package/dist/lib/components/Banner.js.map +1 -1
  129. package/dist/lib/components/Bootstrap.d.ts +4 -3
  130. package/dist/lib/components/Bootstrap.js +12 -6
  131. package/dist/lib/components/Bootstrap.js.map +1 -1
  132. package/dist/lib/components/ClientOnly.d.ts +4 -2
  133. package/dist/lib/components/ClientOnly.js +1 -1
  134. package/dist/lib/components/ClientOnly.js.map +1 -1
  135. package/dist/lib/components/DeveloperHint.js +2 -1
  136. package/dist/lib/components/DeveloperHint.js.map +1 -1
  137. package/dist/lib/components/Header.js +22 -11
  138. package/dist/lib/components/Header.js.map +1 -1
  139. package/dist/lib/components/Heading.d.ts +4 -4
  140. package/dist/lib/components/Heading.js +1 -1
  141. package/dist/lib/components/Heading.js.map +1 -1
  142. package/dist/lib/components/InlineCode.d.ts +2 -1
  143. package/dist/lib/components/InlineCode.js +2 -9
  144. package/dist/lib/components/InlineCode.js.map +1 -1
  145. package/dist/lib/components/Layout.js +8 -21
  146. package/dist/lib/components/Layout.js.map +1 -1
  147. package/dist/lib/components/Main.d.ts +2 -0
  148. package/dist/lib/components/Main.js +17 -0
  149. package/dist/lib/components/Main.js.map +1 -0
  150. package/dist/lib/components/Markdown.d.ts +2 -2
  151. package/dist/lib/components/Markdown.js +4 -2
  152. package/dist/lib/components/Markdown.js.map +1 -1
  153. package/dist/lib/components/MobileTopNavigation.js +6 -7
  154. package/dist/lib/components/MobileTopNavigation.js.map +1 -1
  155. package/dist/lib/components/NotFoundPage.js +1 -1
  156. package/dist/lib/components/NotFoundPage.js.map +1 -1
  157. package/dist/lib/components/Pagination.d.ts +10 -0
  158. package/dist/lib/components/Pagination.js +10 -0
  159. package/dist/lib/components/Pagination.js.map +1 -0
  160. package/dist/lib/components/PathRenderer.d.ts +11 -0
  161. package/dist/lib/components/PathRenderer.js +28 -0
  162. package/dist/lib/components/PathRenderer.js.map +1 -0
  163. package/dist/lib/components/ReactMarkdown.d.ts +29 -0
  164. package/dist/lib/components/ReactMarkdown.js +182 -0
  165. package/dist/lib/components/ReactMarkdown.js.map +1 -0
  166. package/dist/lib/components/Search.d.ts +3 -1
  167. package/dist/lib/components/Search.js +3 -3
  168. package/dist/lib/components/Search.js.map +1 -1
  169. package/dist/lib/components/SlotletProvider.d.ts +3 -2
  170. package/dist/lib/components/SlotletProvider.js.map +1 -1
  171. package/dist/lib/components/StatusPage.d.ts +7 -0
  172. package/dist/lib/components/StatusPage.js +71 -0
  173. package/dist/lib/components/StatusPage.js.map +1 -0
  174. package/dist/lib/components/ThemeSwitch.d.ts +1 -0
  175. package/dist/lib/components/ThemeSwitch.js +16 -0
  176. package/dist/lib/components/ThemeSwitch.js.map +1 -0
  177. package/dist/lib/components/TopNavigation.d.ts +3 -1
  178. package/dist/lib/components/TopNavigation.js +53 -8
  179. package/dist/lib/components/TopNavigation.js.map +1 -1
  180. package/dist/lib/components/{DevPortal.d.ts → Zudoku.d.ts} +3 -3
  181. package/dist/lib/components/{DevPortal.js → Zudoku.js} +21 -18
  182. package/dist/lib/components/Zudoku.js.map +1 -0
  183. package/dist/lib/components/cache.d.ts +13 -0
  184. package/dist/lib/components/cache.js +20 -0
  185. package/dist/lib/components/cache.js.map +1 -0
  186. package/dist/lib/components/context/RouterEventsEmitter.d.ts +1 -0
  187. package/dist/lib/components/context/RouterEventsEmitter.js +17 -0
  188. package/dist/lib/components/context/RouterEventsEmitter.js.map +1 -0
  189. package/dist/lib/components/context/ViewportAnchorContext.d.ts +2 -4
  190. package/dist/lib/components/context/ViewportAnchorContext.js +21 -14
  191. package/dist/lib/components/context/ViewportAnchorContext.js.map +1 -1
  192. package/dist/lib/components/context/ZudokuContext.d.ts +10 -16
  193. package/dist/lib/components/context/ZudokuContext.js +41 -27
  194. package/dist/lib/components/context/ZudokuContext.js.map +1 -1
  195. package/dist/lib/components/context/ZudokuProvider.d.ts +2 -2
  196. package/dist/lib/components/context/ZudokuProvider.js.map +1 -1
  197. package/dist/lib/components/index.d.ts +43 -16
  198. package/dist/lib/components/index.js +19 -7
  199. package/dist/lib/components/index.js.map +1 -1
  200. package/dist/lib/components/navigation/Sidebar.d.ts +5 -1
  201. package/dist/lib/components/navigation/Sidebar.js +8 -5
  202. package/dist/lib/components/navigation/Sidebar.js.map +1 -1
  203. package/dist/lib/components/navigation/SidebarBadge.d.ts +6 -3
  204. package/dist/lib/components/navigation/SidebarBadge.js +13 -11
  205. package/dist/lib/components/navigation/SidebarBadge.js.map +1 -1
  206. package/dist/lib/components/navigation/SidebarCategory.d.ts +3 -3
  207. package/dist/lib/components/navigation/SidebarCategory.js +27 -24
  208. package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
  209. package/dist/lib/components/navigation/SidebarItem.d.ts +3 -4
  210. package/dist/lib/components/navigation/SidebarItem.js +19 -19
  211. package/dist/lib/components/navigation/SidebarItem.js.map +1 -1
  212. package/dist/lib/components/navigation/SidebarWrapper.d.ts +8 -6
  213. package/dist/lib/components/navigation/SidebarWrapper.js +1 -2
  214. package/dist/lib/components/navigation/SidebarWrapper.js.map +1 -1
  215. package/dist/lib/{plugins/markdown → components/navigation}/Toc.js +5 -7
  216. package/dist/lib/components/navigation/Toc.js.map +1 -0
  217. package/dist/lib/components/navigation/utils.js +11 -15
  218. package/dist/lib/components/navigation/utils.js.map +1 -1
  219. package/dist/lib/core/RouteGuard.d.ts +1 -0
  220. package/dist/lib/core/RouteGuard.js +46 -0
  221. package/dist/lib/core/RouteGuard.js.map +1 -0
  222. package/dist/lib/core/{DevPortalContext.d.ts → ZudokuContext.d.ts} +37 -20
  223. package/dist/lib/core/ZudokuContext.js +69 -0
  224. package/dist/lib/core/ZudokuContext.js.map +1 -0
  225. package/dist/lib/core/plugins.d.ts +32 -17
  226. package/dist/lib/core/plugins.js +3 -0
  227. package/dist/lib/core/plugins.js.map +1 -1
  228. package/dist/lib/errors/ErrorAlert.js +6 -1
  229. package/dist/lib/errors/ErrorAlert.js.map +1 -1
  230. package/dist/lib/errors/RouterError.js +1 -1
  231. package/dist/lib/errors/RouterError.js.map +1 -1
  232. package/dist/lib/hooks/index.d.ts +3 -0
  233. package/dist/lib/hooks/index.js +5 -0
  234. package/dist/lib/hooks/index.js.map +1 -0
  235. package/dist/lib/hooks/useEvent.d.ts +11 -0
  236. package/dist/lib/hooks/useEvent.js +19 -0
  237. package/dist/lib/hooks/useEvent.js.map +1 -0
  238. package/dist/lib/hooks/useEvent.test.js +100 -0
  239. package/dist/lib/hooks/useEvent.test.js.map +1 -0
  240. package/dist/lib/icons.d.ts +1 -0
  241. package/dist/lib/icons.js +1 -0
  242. package/dist/lib/icons.js.map +1 -1
  243. package/dist/lib/oas/graphql/circular.d.ts +3 -0
  244. package/dist/lib/oas/graphql/circular.js +38 -0
  245. package/dist/lib/oas/graphql/circular.js.map +1 -0
  246. package/dist/lib/oas/graphql/index.d.ts +25 -1
  247. package/dist/lib/oas/graphql/index.js +216 -69
  248. package/dist/lib/oas/graphql/index.js.map +1 -1
  249. package/dist/lib/oas/parser/dereference/index.js +8 -3
  250. package/dist/lib/oas/parser/dereference/index.js.map +1 -1
  251. package/dist/lib/oas/parser/index.d.ts +5 -3
  252. package/dist/lib/oas/parser/index.js +0 -22
  253. package/dist/lib/oas/parser/index.js.map +1 -1
  254. package/dist/lib/oas/parser/upgrade/index.d.ts +2 -2
  255. package/dist/lib/oas/parser/upgrade/index.js +21 -21
  256. package/dist/lib/oas/parser/upgrade/index.js.map +1 -1
  257. package/dist/lib/plugins/api-catalog/Catalog.d.ts +4 -0
  258. package/dist/lib/plugins/api-catalog/Catalog.js +26 -0
  259. package/dist/lib/plugins/api-catalog/Catalog.js.map +1 -0
  260. package/dist/lib/plugins/api-catalog/index.d.ts +31 -0
  261. package/dist/lib/plugins/api-catalog/index.js +46 -0
  262. package/dist/lib/plugins/api-catalog/index.js.map +1 -0
  263. package/dist/lib/plugins/api-keys/CreateApiKey.js +9 -5
  264. package/dist/lib/plugins/api-keys/CreateApiKey.js.map +1 -1
  265. package/dist/lib/plugins/api-keys/ProtectedRoute.js +1 -1
  266. package/dist/lib/plugins/api-keys/ProtectedRoute.js.map +1 -1
  267. package/dist/lib/plugins/api-keys/SettingsApiKeys.js +1 -1
  268. package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
  269. package/dist/lib/plugins/api-keys/index.d.ts +10 -9
  270. package/dist/lib/plugins/api-keys/index.js +4 -0
  271. package/dist/lib/plugins/api-keys/index.js.map +1 -1
  272. package/dist/lib/plugins/custom-pages/CustomPage.js +2 -2
  273. package/dist/lib/plugins/custom-pages/index.d.ts +2 -2
  274. package/dist/lib/plugins/custom-pages/index.js.map +1 -1
  275. package/dist/lib/plugins/markdown/MdxPage.d.ts +10 -2
  276. package/dist/lib/plugins/markdown/MdxPage.js +17 -4
  277. package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
  278. package/dist/lib/plugins/markdown/index.d.ts +8 -7
  279. package/dist/lib/plugins/markdown/index.js +31 -3
  280. package/dist/lib/plugins/markdown/index.js.map +1 -1
  281. package/dist/lib/plugins/markdown/resolver.d.ts +32 -0
  282. package/dist/lib/plugins/markdown/resolver.js +46 -0
  283. package/dist/lib/plugins/markdown/resolver.js.map +1 -0
  284. package/dist/lib/plugins/openapi/CollapsibleCode.d.ts +5 -0
  285. package/dist/lib/plugins/openapi/CollapsibleCode.js +25 -0
  286. package/dist/lib/plugins/openapi/CollapsibleCode.js.map +1 -0
  287. package/dist/lib/plugins/openapi/ColorizedParam.d.ts +10 -2
  288. package/dist/lib/plugins/openapi/ColorizedParam.js +29 -14
  289. package/dist/lib/plugins/openapi/ColorizedParam.js.map +1 -1
  290. package/dist/lib/plugins/openapi/Endpoint.js +13 -16
  291. package/dist/lib/plugins/openapi/Endpoint.js.map +1 -1
  292. package/dist/lib/plugins/openapi/OasProvider.d.ts +8 -0
  293. package/dist/lib/plugins/openapi/OasProvider.js +29 -0
  294. package/dist/lib/plugins/openapi/OasProvider.js.map +1 -0
  295. package/dist/lib/plugins/openapi/OperationList.d.ts +6 -3
  296. package/dist/lib/plugins/openapi/OperationList.js +105 -27
  297. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  298. package/dist/lib/plugins/openapi/OperationListItem.d.ts +5 -3
  299. package/dist/lib/plugins/openapi/OperationListItem.js +10 -5
  300. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
  301. package/dist/lib/plugins/openapi/ParamInfos.d.ts +6 -0
  302. package/dist/lib/plugins/openapi/ParamInfos.js +42 -0
  303. package/dist/lib/plugins/openapi/ParamInfos.js.map +1 -0
  304. package/dist/lib/plugins/openapi/ParameterList.d.ts +2 -1
  305. package/dist/lib/plugins/openapi/ParameterList.js +3 -2
  306. package/dist/lib/plugins/openapi/ParameterList.js.map +1 -1
  307. package/dist/lib/plugins/openapi/ParameterListItem.js +11 -1
  308. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  309. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.d.ts +4 -2
  310. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js +12 -3
  311. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js.map +1 -1
  312. package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +3 -4
  313. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +5 -9
  314. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
  315. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +7 -6
  316. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
  317. package/dist/lib/plugins/openapi/SchemaList.d.ts +1 -0
  318. package/dist/lib/plugins/openapi/SchemaList.js +52 -0
  319. package/dist/lib/plugins/openapi/SchemaList.js.map +1 -0
  320. package/dist/lib/plugins/openapi/Sidecar.d.ts +1 -1
  321. package/dist/lib/plugins/openapi/Sidecar.js +83 -64
  322. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  323. package/dist/lib/plugins/openapi/SidecarBox.js +4 -4
  324. package/dist/lib/plugins/openapi/SidecarBox.js.map +1 -1
  325. package/dist/lib/plugins/openapi/SidecarExamples.d.ts +9 -0
  326. package/dist/lib/plugins/openapi/SidecarExamples.js +68 -0
  327. package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -0
  328. package/dist/lib/plugins/openapi/SimpleSelect.js +1 -1
  329. package/dist/lib/plugins/openapi/SimpleSelect.js.map +1 -1
  330. package/dist/lib/plugins/openapi/client/GraphQLClient.d.ts +8 -0
  331. package/dist/lib/plugins/openapi/client/GraphQLClient.js +43 -0
  332. package/dist/lib/plugins/openapi/client/GraphQLClient.js.map +1 -0
  333. package/dist/lib/plugins/openapi/client/GraphQLContext.d.ts +7 -0
  334. package/dist/lib/plugins/openapi/client/GraphQLContext.js +5 -0
  335. package/dist/lib/plugins/openapi/client/GraphQLContext.js.map +1 -0
  336. package/dist/lib/plugins/openapi/client/createServer.d.ts +3 -1
  337. package/dist/lib/plugins/openapi/client/createServer.js +5 -2
  338. package/dist/lib/plugins/openapi/client/createServer.js.map +1 -1
  339. package/dist/lib/plugins/openapi/client/useCreateQuery.d.ts +9 -0
  340. package/dist/lib/plugins/openapi/client/useCreateQuery.js +14 -0
  341. package/dist/lib/plugins/openapi/client/useCreateQuery.js.map +1 -0
  342. package/dist/lib/plugins/openapi/components/EnumValues.d.ts +5 -0
  343. package/dist/lib/plugins/openapi/components/EnumValues.js +15 -0
  344. package/dist/lib/plugins/openapi/components/EnumValues.js.map +1 -0
  345. package/dist/lib/plugins/openapi/components/SelectOnClick.d.ts +5 -0
  346. package/dist/lib/plugins/openapi/components/SelectOnClick.js +16 -0
  347. package/dist/lib/plugins/openapi/components/SelectOnClick.js.map +1 -0
  348. package/dist/lib/plugins/openapi/context.d.ts +3 -3
  349. package/dist/lib/plugins/openapi/graphql/fragment-masking.d.ts +3 -3
  350. package/dist/lib/plugins/openapi/graphql/fragment-masking.js +3 -4
  351. package/dist/lib/plugins/openapi/graphql/fragment-masking.js.map +1 -1
  352. package/dist/lib/plugins/openapi/graphql/gql.d.ts +8 -46
  353. package/dist/lib/plugins/openapi/graphql/gql.js +6 -13
  354. package/dist/lib/plugins/openapi/graphql/gql.js.map +1 -1
  355. package/dist/lib/plugins/openapi/graphql/graphql.d.ts +141 -25
  356. package/dist/lib/plugins/openapi/graphql/graphql.js +238 -662
  357. package/dist/lib/plugins/openapi/graphql/graphql.js.map +1 -1
  358. package/dist/lib/plugins/openapi/index.d.ts +11 -7
  359. package/dist/lib/plugins/openapi/index.js +72 -104
  360. package/dist/lib/plugins/openapi/index.js.map +1 -1
  361. package/dist/lib/plugins/openapi/interfaces.d.ts +56 -3
  362. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.d.ts +6 -0
  363. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js +8 -0
  364. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js.map +1 -0
  365. package/dist/lib/plugins/openapi/playground/Headers.d.ts +4 -4
  366. package/dist/lib/plugins/openapi/playground/Headers.js +84 -5
  367. package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
  368. package/dist/lib/plugins/openapi/playground/IdentityDialog.d.ts +11 -0
  369. package/dist/lib/plugins/openapi/playground/IdentityDialog.js +14 -0
  370. package/dist/lib/plugins/openapi/playground/IdentityDialog.js.map +1 -0
  371. package/dist/lib/plugins/openapi/playground/IdentitySelector.d.ts +7 -0
  372. package/dist/lib/plugins/openapi/playground/IdentitySelector.js +10 -0
  373. package/dist/lib/plugins/openapi/playground/IdentitySelector.js.map +1 -0
  374. package/dist/lib/plugins/openapi/playground/ParamsGrid.d.ts +9 -0
  375. package/dist/lib/plugins/openapi/playground/ParamsGrid.js +5 -0
  376. package/dist/lib/plugins/openapi/playground/ParamsGrid.js.map +1 -0
  377. package/dist/lib/plugins/openapi/playground/PathParams.d.ts +3 -2
  378. package/dist/lib/plugins/openapi/playground/PathParams.js +5 -7
  379. package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
  380. package/dist/lib/plugins/openapi/playground/Playground.d.ts +37 -2
  381. package/dist/lib/plugins/openapi/playground/Playground.js +132 -70
  382. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  383. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +2 -2
  384. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
  385. package/dist/lib/plugins/openapi/playground/QueryParams.js +24 -18
  386. package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
  387. package/dist/lib/plugins/openapi/playground/RequestLoginDialog.d.ts +7 -0
  388. package/dist/lib/plugins/openapi/playground/RequestLoginDialog.js +8 -0
  389. package/dist/lib/plugins/openapi/playground/RequestLoginDialog.js.map +1 -0
  390. package/dist/lib/plugins/openapi/playground/SubmitButton.d.ts +7 -0
  391. package/dist/lib/plugins/openapi/playground/SubmitButton.js +22 -0
  392. package/dist/lib/plugins/openapi/playground/SubmitButton.js.map +1 -0
  393. package/dist/lib/plugins/openapi/playground/rememberedIdentity.d.ts +17 -0
  394. package/dist/lib/plugins/openapi/playground/rememberedIdentity.js +11 -0
  395. package/dist/lib/plugins/openapi/playground/rememberedIdentity.js.map +1 -0
  396. package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.d.ts +7 -0
  397. package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.js +11 -0
  398. package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.js.map +1 -0
  399. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.d.ts +8 -0
  400. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +101 -0
  401. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -0
  402. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.d.ts +9 -0
  403. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js +17 -0
  404. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js.map +1 -0
  405. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.d.ts +10 -0
  406. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.js +32 -0
  407. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.js.map +1 -0
  408. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.test.d.ts +1 -0
  409. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.test.js +56 -0
  410. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.test.js.map +1 -0
  411. package/dist/lib/plugins/openapi/post-processors/removeExtensions.d.ts +7 -0
  412. package/dist/lib/plugins/openapi/post-processors/removeExtensions.js +16 -0
  413. package/dist/lib/plugins/openapi/post-processors/removeExtensions.js.map +1 -0
  414. package/dist/lib/plugins/openapi/post-processors/removeExtensions.test.d.ts +1 -0
  415. package/dist/lib/plugins/openapi/post-processors/removeExtensions.test.js +174 -0
  416. package/dist/lib/plugins/openapi/post-processors/removeExtensions.test.js.map +1 -0
  417. package/dist/lib/plugins/openapi/post-processors/removeParameters.d.ts +10 -0
  418. package/dist/lib/plugins/openapi/post-processors/removeParameters.js +66 -0
  419. package/dist/lib/plugins/openapi/post-processors/removeParameters.js.map +1 -0
  420. package/dist/lib/plugins/openapi/post-processors/removeParameters.test.d.ts +1 -0
  421. package/dist/lib/plugins/openapi/post-processors/removeParameters.test.js +131 -0
  422. package/dist/lib/plugins/openapi/post-processors/removeParameters.test.js.map +1 -0
  423. package/dist/lib/plugins/openapi/post-processors/removePaths.d.ts +11 -0
  424. package/dist/lib/plugins/openapi/post-processors/removePaths.js +33 -0
  425. package/dist/lib/plugins/openapi/post-processors/removePaths.js.map +1 -0
  426. package/dist/lib/plugins/openapi/post-processors/removePaths.test.d.ts +1 -0
  427. package/dist/lib/plugins/openapi/post-processors/removePaths.test.js +104 -0
  428. package/dist/lib/plugins/openapi/post-processors/removePaths.test.js.map +1 -0
  429. package/dist/lib/plugins/openapi/post-processors/traverse.d.ts +1 -0
  430. package/dist/lib/plugins/openapi/post-processors/traverse.js +2 -0
  431. package/dist/lib/plugins/openapi/post-processors/traverse.js.map +1 -0
  432. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js +39 -0
  433. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -0
  434. package/dist/lib/plugins/openapi/schema/SchemaView.js +16 -8
  435. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
  436. package/dist/lib/plugins/openapi/schema/utils.d.ts +1 -0
  437. package/dist/lib/plugins/openapi/schema/utils.js +2 -0
  438. package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
  439. package/dist/lib/plugins/openapi/state.d.ts +25 -0
  440. package/dist/lib/plugins/openapi/state.js +18 -0
  441. package/dist/lib/plugins/openapi/state.js.map +1 -0
  442. package/dist/lib/plugins/openapi/util/createSidebarCategory.d.ts +9 -0
  443. package/dist/lib/plugins/openapi/util/createSidebarCategory.js +23 -0
  444. package/dist/lib/plugins/openapi/util/createSidebarCategory.js.map +1 -0
  445. package/dist/lib/plugins/openapi/util/generateSchemaExample.d.ts +0 -1
  446. package/dist/lib/plugins/openapi/util/generateSchemaExample.js +36 -39
  447. package/dist/lib/plugins/openapi/util/generateSchemaExample.js.map +1 -1
  448. package/dist/lib/plugins/openapi/util/getRoutes.d.ts +10 -0
  449. package/dist/lib/plugins/openapi/util/getRoutes.js +80 -0
  450. package/dist/lib/plugins/openapi/util/getRoutes.js.map +1 -0
  451. package/dist/lib/plugins/openapi/util/methodColorMap.d.ts +2 -0
  452. package/dist/lib/plugins/openapi/util/methodColorMap.js +10 -0
  453. package/dist/lib/plugins/openapi/util/methodColorMap.js.map +1 -0
  454. package/dist/lib/plugins/openapi/util/methodToColor.d.ts +20 -0
  455. package/dist/lib/plugins/openapi/util/methodToColor.js +24 -0
  456. package/dist/lib/plugins/openapi/util/methodToColor.js.map +1 -0
  457. package/dist/lib/plugins/openapi/util/sanitizeMarkdownForMetatag.d.ts +1 -0
  458. package/dist/lib/plugins/openapi/util/sanitizeMarkdownForMetatag.js +27 -0
  459. package/dist/lib/plugins/openapi/util/sanitizeMarkdownForMetatag.js.map +1 -0
  460. package/dist/lib/plugins/redirect/index.d.ts +4 -7
  461. package/dist/lib/plugins/redirect/index.js +2 -2
  462. package/dist/lib/plugins/redirect/index.js.map +1 -1
  463. package/dist/lib/plugins/search-inkeep/index.d.ts +24 -5
  464. package/dist/lib/plugins/search-inkeep/index.js +41 -5
  465. package/dist/lib/plugins/search-inkeep/index.js.map +1 -1
  466. package/dist/lib/plugins/search-inkeep/inkeep.d.ts +3 -4
  467. package/dist/lib/plugins/search-inkeep/inkeep.js.map +1 -1
  468. package/dist/lib/plugins/search-pagefind/PagefindSearch.d.ts +6 -0
  469. package/dist/lib/plugins/search-pagefind/PagefindSearch.js +75 -0
  470. package/dist/lib/plugins/search-pagefind/PagefindSearch.js.map +1 -0
  471. package/dist/lib/plugins/search-pagefind/ResultList.d.ts +8 -0
  472. package/dist/lib/plugins/search-pagefind/ResultList.js +38 -0
  473. package/dist/lib/plugins/search-pagefind/ResultList.js.map +1 -0
  474. package/dist/lib/plugins/search-pagefind/get-results.d.ts +10 -0
  475. package/dist/lib/plugins/search-pagefind/get-results.js +42 -0
  476. package/dist/lib/plugins/search-pagefind/get-results.js.map +1 -0
  477. package/dist/lib/plugins/search-pagefind/index.d.ts +8 -0
  478. package/dist/lib/plugins/search-pagefind/index.js +9 -0
  479. package/dist/lib/plugins/search-pagefind/index.js.map +1 -0
  480. package/dist/lib/plugins/search-pagefind/types.d.ts +85 -0
  481. package/dist/lib/plugins/search-pagefind/types.js +2 -0
  482. package/dist/lib/plugins/search-pagefind/types.js.map +1 -0
  483. package/dist/lib/ui/Accordion.d.ts +7 -0
  484. package/dist/lib/ui/Accordion.js +14 -0
  485. package/dist/lib/ui/Accordion.js.map +1 -0
  486. package/dist/lib/ui/ActionButton.d.ts +4 -0
  487. package/dist/lib/ui/ActionButton.js +10 -0
  488. package/dist/lib/ui/ActionButton.js.map +1 -0
  489. package/dist/lib/ui/Alert.d.ts +8 -0
  490. package/dist/lib/ui/Alert.js +23 -0
  491. package/dist/lib/ui/Alert.js.map +1 -0
  492. package/dist/lib/ui/AlertDialog.d.ts +20 -0
  493. package/dist/lib/ui/AlertDialog.js +27 -0
  494. package/dist/lib/ui/AlertDialog.js.map +1 -0
  495. package/dist/lib/ui/AspectRatio.d.ts +3 -0
  496. package/dist/lib/ui/AspectRatio.js +4 -0
  497. package/dist/lib/ui/AspectRatio.js.map +1 -0
  498. package/dist/lib/ui/Badge.d.ts +9 -0
  499. package/dist/lib/ui/Badge.js +22 -0
  500. package/dist/lib/ui/Badge.js.map +1 -0
  501. package/dist/lib/ui/Breadcrumb.d.ts +19 -0
  502. package/dist/lib/ui/Breadcrumb.js +24 -0
  503. package/dist/lib/ui/Breadcrumb.js.map +1 -0
  504. package/dist/lib/ui/Button.d.ts +3 -4
  505. package/dist/lib/ui/Button.js +2 -1
  506. package/dist/lib/ui/Button.js.map +1 -1
  507. package/dist/lib/ui/Callout.d.ts +2 -1
  508. package/dist/lib/ui/Callout.js +3 -2
  509. package/dist/lib/ui/Callout.js.map +1 -1
  510. package/dist/lib/ui/Card.js +1 -1
  511. package/dist/lib/ui/Card.js.map +1 -1
  512. package/dist/lib/ui/Carousel.d.ts +18 -0
  513. package/dist/lib/ui/Carousel.js +99 -0
  514. package/dist/lib/ui/Carousel.js.map +1 -0
  515. package/dist/lib/ui/Checkbox.d.ts +4 -0
  516. package/dist/lib/ui/Checkbox.js +9 -0
  517. package/dist/lib/ui/Checkbox.js.map +1 -0
  518. package/dist/lib/ui/Collapsible.d.ts +5 -0
  519. package/dist/lib/ui/Collapsible.js +6 -0
  520. package/dist/lib/ui/Collapsible.js.map +1 -0
  521. package/dist/lib/ui/Command.d.ts +94 -0
  522. package/dist/lib/ui/Command.js +35 -0
  523. package/dist/lib/ui/Command.js.map +1 -0
  524. package/dist/lib/{components → ui}/Dialog.js +2 -2
  525. package/dist/lib/ui/Dialog.js.map +1 -0
  526. package/dist/lib/ui/Form.d.ts +23 -0
  527. package/dist/lib/ui/Form.js +63 -0
  528. package/dist/lib/ui/Form.js.map +1 -0
  529. package/dist/lib/ui/HoverCard.d.ts +6 -0
  530. package/dist/lib/ui/HoverCard.js +10 -0
  531. package/dist/lib/ui/HoverCard.js.map +1 -0
  532. package/dist/lib/ui/Input.d.ts +1 -2
  533. package/dist/lib/ui/Input.js.map +1 -1
  534. package/dist/lib/ui/Label.d.ts +5 -0
  535. package/dist/lib/ui/Label.js +10 -0
  536. package/dist/lib/ui/Label.js.map +1 -0
  537. package/dist/lib/ui/Pagination.d.ts +28 -0
  538. package/dist/lib/ui/Pagination.js +24 -0
  539. package/dist/lib/ui/Pagination.js.map +1 -0
  540. package/dist/lib/ui/Popover.d.ts +6 -0
  541. package/dist/lib/ui/Popover.js +10 -0
  542. package/dist/lib/ui/Popover.js.map +1 -0
  543. package/dist/lib/ui/Progress.d.ts +4 -0
  544. package/dist/lib/ui/Progress.js +8 -0
  545. package/dist/lib/ui/Progress.js.map +1 -0
  546. package/dist/lib/ui/RadioGroup.d.ts +5 -0
  547. package/dist/lib/ui/RadioGroup.js +15 -0
  548. package/dist/lib/ui/RadioGroup.js.map +1 -0
  549. package/dist/lib/ui/ScrollArea.d.ts +5 -0
  550. package/dist/lib/ui/ScrollArea.js +12 -0
  551. package/dist/lib/ui/ScrollArea.js.map +1 -0
  552. package/dist/lib/{components → ui}/Select.js +3 -3
  553. package/dist/lib/ui/Select.js.map +1 -0
  554. package/dist/lib/ui/Skeleton.d.ts +2 -0
  555. package/dist/lib/ui/Skeleton.js +7 -0
  556. package/dist/lib/ui/Skeleton.js.map +1 -0
  557. package/dist/lib/ui/Slider.d.ts +4 -0
  558. package/dist/lib/ui/Slider.js +8 -0
  559. package/dist/lib/ui/Slider.js.map +1 -0
  560. package/dist/lib/ui/Stepper.d.ts +3 -0
  561. package/dist/lib/ui/Stepper.js +7 -0
  562. package/dist/lib/ui/Stepper.js.map +1 -0
  563. package/dist/lib/ui/Switch.d.ts +4 -0
  564. package/dist/lib/ui/Switch.js +8 -0
  565. package/dist/lib/ui/Switch.js.map +1 -0
  566. package/dist/lib/ui/SyntaxHighlight.d.ts +15 -0
  567. package/dist/lib/ui/SyntaxHighlight.js +62 -0
  568. package/dist/lib/ui/SyntaxHighlight.js.map +1 -0
  569. package/dist/lib/ui/Textarea.d.ts +4 -0
  570. package/dist/lib/ui/Textarea.js +9 -0
  571. package/dist/lib/ui/Textarea.js.map +1 -0
  572. package/dist/lib/ui/Toggle.d.ts +12 -0
  573. package/dist/lib/ui/Toggle.js +26 -0
  574. package/dist/lib/ui/Toggle.js.map +1 -0
  575. package/dist/lib/ui/ToggleGroup.d.ts +12 -0
  576. package/dist/lib/ui/ToggleGroup.js +21 -0
  577. package/dist/lib/ui/ToggleGroup.js.map +1 -0
  578. package/dist/lib/ui/Tooltip.d.ts +7 -0
  579. package/dist/lib/ui/Tooltip.js +11 -0
  580. package/dist/lib/ui/Tooltip.js.map +1 -0
  581. package/dist/lib/ui/util.d.ts +2 -0
  582. package/dist/lib/ui/util.js +3 -0
  583. package/dist/lib/ui/util.js.map +1 -0
  584. package/dist/lib/util/MdxComponents.d.ts +23 -21
  585. package/dist/lib/util/MdxComponents.js +8 -7
  586. package/dist/lib/util/MdxComponents.js.map +1 -1
  587. package/dist/lib/util/createVariantComponent.d.ts +2 -2
  588. package/dist/lib/util/joinPath.d.ts +3 -0
  589. package/dist/lib/util/joinPath.js +3 -0
  590. package/dist/lib/util/joinPath.js.map +1 -1
  591. package/dist/lib/util/joinUrl.d.ts +1 -0
  592. package/dist/lib/util/joinUrl.js +40 -0
  593. package/dist/lib/util/joinUrl.js.map +1 -0
  594. package/dist/lib/util/joinUrl.test.d.ts +1 -0
  595. package/dist/lib/util/joinUrl.test.js +43 -0
  596. package/dist/lib/util/joinUrl.test.js.map +1 -0
  597. package/dist/lib/util/scrollIntoViewIfNeeded.d.ts +1 -0
  598. package/dist/lib/util/scrollIntoViewIfNeeded.js +14 -0
  599. package/dist/lib/util/scrollIntoViewIfNeeded.js.map +1 -0
  600. package/dist/lib/util/traverse.d.ts +3 -0
  601. package/dist/lib/util/traverse.js +22 -0
  602. package/dist/lib/util/traverse.js.map +1 -0
  603. package/dist/lib/util/types.d.ts +7 -0
  604. package/dist/lib/util/types.js +2 -0
  605. package/dist/lib/util/types.js.map +1 -0
  606. package/dist/lib/util/useExposedProps.js +3 -2
  607. package/dist/lib/util/useExposedProps.js.map +1 -1
  608. package/dist/lib/util/useIsomorphicLayoutEffect.d.ts +3 -0
  609. package/dist/lib/util/useIsomorphicLayoutEffect.js +4 -0
  610. package/dist/lib/util/useIsomorphicLayoutEffect.js.map +1 -0
  611. package/dist/lib/util/useLatest.d.ts +1 -0
  612. package/dist/lib/util/useLatest.js +15 -0
  613. package/dist/lib/util/useLatest.js.map +1 -0
  614. package/dist/lib/util/useOnScreen.d.ts +5 -0
  615. package/dist/lib/util/useOnScreen.js +19 -0
  616. package/dist/lib/util/useOnScreen.js.map +1 -0
  617. package/dist/lib/util/useScrollToAnchor.d.ts +1 -0
  618. package/dist/lib/util/useScrollToAnchor.js +42 -37
  619. package/dist/lib/util/useScrollToAnchor.js.map +1 -1
  620. package/dist/lib/util/useScrollToTop.js +7 -5
  621. package/dist/lib/util/useScrollToTop.js.map +1 -1
  622. package/dist/vite/api/schema-codegen.d.ts +12 -0
  623. package/dist/vite/api/schema-codegen.js +81 -0
  624. package/dist/vite/api/schema-codegen.js.map +1 -0
  625. package/dist/vite/api/schema-codegen.test.d.ts +1 -0
  626. package/dist/vite/api/schema-codegen.test.js +313 -0
  627. package/dist/vite/api/schema-codegen.test.js.map +1 -0
  628. package/dist/vite/build.js +55 -13
  629. package/dist/vite/build.js.map +1 -1
  630. package/dist/vite/config.d.ts +7 -14
  631. package/dist/vite/config.js +122 -113
  632. package/dist/vite/config.js.map +1 -1
  633. package/dist/vite/config.test.js +11 -5
  634. package/dist/vite/config.test.js.map +1 -1
  635. package/dist/vite/create-pagefind-index.d.ts +4 -0
  636. package/dist/vite/create-pagefind-index.js +12 -0
  637. package/dist/vite/create-pagefind-index.js.map +1 -0
  638. package/dist/vite/css/collect.d.ts +2 -0
  639. package/dist/vite/css/collect.js +27 -0
  640. package/dist/vite/css/collect.js.map +1 -0
  641. package/dist/vite/css/plugin.d.ts +5 -0
  642. package/dist/vite/css/plugin.js +79 -0
  643. package/dist/vite/css/plugin.js.map +1 -0
  644. package/dist/vite/debug.d.ts +1 -0
  645. package/dist/vite/debug.js +10 -0
  646. package/dist/vite/debug.js.map +1 -0
  647. package/dist/vite/dev-server.d.ts +5 -2
  648. package/dist/vite/dev-server.js +65 -15
  649. package/dist/vite/dev-server.js.map +1 -1
  650. package/dist/vite/error-handler.d.ts +1 -1
  651. package/dist/vite/error-handler.js +1 -1
  652. package/dist/vite/error-handler.js.map +1 -1
  653. package/dist/vite/html.js +0 -2
  654. package/dist/vite/html.js.map +1 -1
  655. package/dist/vite/output.d.ts +113 -0
  656. package/dist/vite/output.js +60 -0
  657. package/dist/vite/output.js.map +1 -0
  658. package/dist/vite/plugin-api-keys.d.ts +2 -2
  659. package/dist/vite/plugin-api-keys.js +5 -5
  660. package/dist/vite/plugin-api-keys.js.map +1 -1
  661. package/dist/vite/plugin-api.d.ts +2 -2
  662. package/dist/vite/plugin-api.js +199 -32
  663. package/dist/vite/plugin-api.js.map +1 -1
  664. package/dist/vite/plugin-auth.d.ts +2 -2
  665. package/dist/vite/plugin-auth.js +7 -4
  666. package/dist/vite/plugin-auth.js.map +1 -1
  667. package/dist/vite/plugin-component.d.ts +2 -2
  668. package/dist/vite/plugin-component.js +22 -12
  669. package/dist/vite/plugin-component.js.map +1 -1
  670. package/dist/vite/plugin-config-reload.d.ts +4 -4
  671. package/dist/vite/plugin-config-reload.js +11 -7
  672. package/dist/vite/plugin-config-reload.js.map +1 -1
  673. package/dist/vite/plugin-config.d.ts +2 -3
  674. package/dist/vite/plugin-config.js +26 -3
  675. package/dist/vite/plugin-config.js.map +1 -1
  676. package/dist/vite/plugin-custom-pages.d.ts +2 -2
  677. package/dist/vite/plugin-custom-pages.js +3 -3
  678. package/dist/vite/plugin-custom-pages.js.map +1 -1
  679. package/dist/vite/plugin-docs.d.ts +3 -3
  680. package/dist/vite/plugin-docs.js +57 -29
  681. package/dist/vite/plugin-docs.js.map +1 -1
  682. package/dist/vite/plugin-docs.test.js +15 -23
  683. package/dist/vite/plugin-docs.test.js.map +1 -1
  684. package/dist/vite/plugin-frontmatter.d.ts +2 -1
  685. package/dist/vite/plugin-frontmatter.js +28 -24
  686. package/dist/vite/plugin-frontmatter.js.map +1 -1
  687. package/dist/vite/plugin-mdx.d.ts +2 -8
  688. package/dist/vite/plugin-mdx.js +89 -16
  689. package/dist/vite/plugin-mdx.js.map +1 -1
  690. package/dist/vite/plugin-redirect.d.ts +2 -2
  691. package/dist/vite/plugin-redirect.js +3 -3
  692. package/dist/vite/plugin-redirect.js.map +1 -1
  693. package/dist/vite/plugin-search.d.ts +2 -2
  694. package/dist/vite/plugin-search.js +5 -1
  695. package/dist/vite/plugin-search.js.map +1 -1
  696. package/dist/vite/plugin-sidebar.d.ts +2 -2
  697. package/dist/vite/plugin-sidebar.js +18 -8
  698. package/dist/vite/plugin-sidebar.js.map +1 -1
  699. package/dist/vite/{plugin-custom-css.d.ts → plugin-theme-css.d.ts} +3 -3
  700. package/dist/vite/plugin-theme-css.js +117 -0
  701. package/dist/vite/plugin-theme-css.js.map +1 -0
  702. package/dist/vite/plugin.d.ts +2 -3
  703. package/dist/vite/plugin.js +8 -6
  704. package/dist/vite/plugin.js.map +1 -1
  705. package/dist/vite/{prerender.d.ts → prerender/FileWritingResponse.d.ts} +8 -4
  706. package/dist/vite/prerender/FileWritingResponse.js +51 -0
  707. package/dist/vite/prerender/FileWritingResponse.js.map +1 -0
  708. package/dist/vite/prerender/prerender.d.ts +14 -0
  709. package/dist/vite/prerender/prerender.js +90 -0
  710. package/dist/vite/prerender/prerender.js.map +1 -0
  711. package/dist/vite/prerender/worker.d.ts +13 -0
  712. package/dist/vite/prerender/worker.js +31 -0
  713. package/dist/vite/prerender/worker.js.map +1 -0
  714. package/dist/vite/remarkStaticGeneration.d.ts +3 -0
  715. package/dist/vite/remarkStaticGeneration.js +125 -0
  716. package/dist/vite/remarkStaticGeneration.js.map +1 -0
  717. package/dist/vite/reporter.d.ts +3 -0
  718. package/dist/vite/reporter.js +33 -0
  719. package/dist/vite/reporter.js.map +1 -0
  720. package/dist/vite/sitemap.d.ts +1 -1
  721. package/dist/vite/sitemap.js +2 -1
  722. package/dist/vite/sitemap.js.map +1 -1
  723. package/dist/zuplo/enrich-with-zuplo.d.ts +5 -0
  724. package/dist/zuplo/enrich-with-zuplo.js +184 -0
  725. package/dist/zuplo/enrich-with-zuplo.js.map +1 -0
  726. package/dist/zuplo/env.d.ts +7 -0
  727. package/dist/zuplo/env.js +12 -0
  728. package/dist/zuplo/env.js.map +1 -0
  729. package/dist/zuplo/policy-types.d.ts +33 -0
  730. package/dist/zuplo/policy-types.js +8 -0
  731. package/dist/zuplo/policy-types.js.map +1 -0
  732. package/dist/zuplo/with-zuplo-processors.d.ts +3 -0
  733. package/dist/zuplo/with-zuplo-processors.js +26 -0
  734. package/dist/zuplo/with-zuplo-processors.js.map +1 -0
  735. package/dist/zuplo/with-zuplo.d.ts +3 -0
  736. package/dist/zuplo/with-zuplo.js +9 -0
  737. package/dist/zuplo/with-zuplo.js.map +1 -0
  738. package/lib/AuthenticationPlugin-foqdvvkf.js +58 -0
  739. package/lib/AuthenticationPlugin-foqdvvkf.js.map +1 -0
  740. package/lib/Button-Fp19CMUr.js +49 -0
  741. package/lib/Button-Fp19CMUr.js.map +1 -0
  742. package/lib/Callout-D5frCCJ0.js +229 -0
  743. package/lib/Callout-D5frCCJ0.js.map +1 -0
  744. package/lib/CategoryHeading-DpB47wvk.js +10 -0
  745. package/lib/{CategoryHeading-D2WS6sRI.js.map → CategoryHeading-DpB47wvk.js.map} +1 -1
  746. package/lib/{ClientOnly-CVN6leDu.js → ClientOnly-E7hGysn1.js} +4 -4
  747. package/lib/ClientOnly-E7hGysn1.js.map +1 -0
  748. package/lib/Dialog-Dv6WG8RN.js +98 -0
  749. package/lib/Dialog-Dv6WG8RN.js.map +1 -0
  750. package/lib/Drawer-kDAfOq_2.js +1133 -0
  751. package/lib/Drawer-kDAfOq_2.js.map +1 -0
  752. package/lib/Markdown-aF5FdsNi.js +16960 -0
  753. package/lib/Markdown-aF5FdsNi.js.map +1 -0
  754. package/lib/MdxPage-ZW1StNhp.js +83 -0
  755. package/lib/MdxPage-ZW1StNhp.js.map +1 -0
  756. package/lib/OasProvider-OlYb8W57.js +34 -0
  757. package/lib/OasProvider-OlYb8W57.js.map +1 -0
  758. package/lib/OperationList-BvfIzVRx.js +5065 -0
  759. package/lib/OperationList-BvfIzVRx.js.map +1 -0
  760. package/lib/Pagination-CYB3nVYx.js +46 -0
  761. package/lib/Pagination-CYB3nVYx.js.map +1 -0
  762. package/lib/SchemaList-Bi35O4XD.js +148 -0
  763. package/lib/SchemaList-Bi35O4XD.js.map +1 -0
  764. package/lib/SchemaView-D7MC5cjz.js +356 -0
  765. package/lib/SchemaView-D7MC5cjz.js.map +1 -0
  766. package/lib/Select-DVFRKf1R.js +223 -0
  767. package/lib/Select-DVFRKf1R.js.map +1 -0
  768. package/lib/SlotletProvider-DXvc0aY6.js +338 -0
  769. package/lib/SlotletProvider-DXvc0aY6.js.map +1 -0
  770. package/lib/Spinner-CE68iCm0.js +7 -0
  771. package/lib/Spinner-CE68iCm0.js.map +1 -0
  772. package/lib/SyntaxHighlight-BEoSoPEo.js +2890 -0
  773. package/lib/SyntaxHighlight-BEoSoPEo.js.map +1 -0
  774. package/lib/Toc-YBsgI72s.js +92 -0
  775. package/lib/Toc-YBsgI72s.js.map +1 -0
  776. package/lib/chunk-HA7DTUK3-C4gP41vD.js +1821 -0
  777. package/lib/chunk-HA7DTUK3-C4gP41vD.js.map +1 -0
  778. package/lib/circular-ByJI6Mci.js +15877 -0
  779. package/lib/circular-ByJI6Mci.js.map +1 -0
  780. package/lib/cn-qaFjX9_3.js +2279 -0
  781. package/lib/cn-qaFjX9_3.js.map +1 -0
  782. package/lib/context-DLCwaMXN.js +22 -0
  783. package/lib/context-DLCwaMXN.js.map +1 -0
  784. package/lib/createServer-mMau3eV_.js +12428 -0
  785. package/lib/createServer-mMau3eV_.js.map +1 -0
  786. package/lib/hook-CqpVYDqN.js +1483 -0
  787. package/lib/hook-CqpVYDqN.js.map +1 -0
  788. package/lib/index-Bt7MKhZq.js +2514 -0
  789. package/lib/index-Bt7MKhZq.js.map +1 -0
  790. package/lib/index-CPNSgwSb.js +36 -0
  791. package/lib/index-CPNSgwSb.js.map +1 -0
  792. package/lib/index-CXfEwK_7.js +2226 -0
  793. package/lib/index-CXfEwK_7.js.map +1 -0
  794. package/lib/{index-CkwDvuPt.js → index-Dl3Yl0yb.js} +303 -286
  795. package/lib/index-Dl3Yl0yb.js.map +1 -0
  796. package/lib/index-DwT-v3zK.js +86 -0
  797. package/lib/index-DwT-v3zK.js.map +1 -0
  798. package/lib/index-LNp6rxyU.js.map +1 -1
  799. package/lib/index-gQD2h1wX.js +447 -0
  800. package/lib/index-gQD2h1wX.js.map +1 -0
  801. package/lib/index.esm--gIChbWs.js +1207 -0
  802. package/lib/index.esm--gIChbWs.js.map +1 -0
  803. package/lib/invariant-Caa8-XvF.js.map +1 -1
  804. package/lib/jsx-runtime-CYK1ROHF.js +446 -0
  805. package/lib/jsx-runtime-CYK1ROHF.js.map +1 -0
  806. package/lib/mutation-8LjrN7uz.js +208 -0
  807. package/lib/mutation-8LjrN7uz.js.map +1 -0
  808. package/lib/objectEntries-BS7aAgOm.js +12 -0
  809. package/lib/objectEntries-BS7aAgOm.js.map +1 -0
  810. package/lib/post-processors/removeExtensions.js +11 -0
  811. package/lib/post-processors/removeExtensions.js.map +1 -0
  812. package/lib/post-processors/removeParameters.js +48 -0
  813. package/lib/post-processors/removeParameters.js.map +1 -0
  814. package/lib/post-processors/removePaths.js +28 -0
  815. package/lib/post-processors/removePaths.js.map +1 -0
  816. package/lib/post-processors/traverse.js +15 -0
  817. package/lib/post-processors/traverse.js.map +1 -0
  818. package/lib/{prism-bash.min-DadFsM4Z.js → prism-bash.min-HHIMdNJ_.js} +4 -4
  819. package/lib/{prism-bash.min-DadFsM4Z.js.map → prism-bash.min-HHIMdNJ_.js.map} +1 -1
  820. package/lib/prism-csharp.min-bQAo2pmx.js +63 -0
  821. package/lib/{prism-csharp.min-Yizuc34Y.js.map → prism-csharp.min-bQAo2pmx.js.map} +1 -1
  822. package/lib/prism-java.min-BpvsOuIa.js +35 -0
  823. package/lib/{prism-java.min-d5iT_mOd.js.map → prism-java.min-BpvsOuIa.js.map} +1 -1
  824. package/lib/prism-javascript.min-CEqHqgbm.js.map +1 -1
  825. package/lib/prism-json.min-B1GJqK1k.js.map +1 -1
  826. package/lib/prism-jsstacktrace.min-BfobCF2F.js +2 -0
  827. package/lib/prism-jsstacktrace.min-BfobCF2F.js.map +1 -0
  828. package/lib/{prism-markdown.min-F3U-vPBi.js → prism-markdown.min-C0Qn0m-5.js} +30 -30
  829. package/lib/{prism-markdown.min-F3U-vPBi.js.map → prism-markdown.min-C0Qn0m-5.js.map} +1 -1
  830. package/lib/prism-markup-BNGj0Tvm.js.map +1 -1
  831. package/lib/prism-objectivec.min-BXSWqpJJ.js.map +1 -1
  832. package/lib/prism-ruby.min-Dx9KO9ds.js +38 -0
  833. package/lib/{prism-ruby.min-C7LwcKyz.js.map → prism-ruby.min-Dx9KO9ds.js.map} +1 -1
  834. package/lib/prism-typescript.min-CD7H2IYQ.js +34 -0
  835. package/lib/{prism-typescript.min-oSVeWCAd.js.map → prism-typescript.min-CD7H2IYQ.js.map} +1 -1
  836. package/lib/ui/Accordion.js +47 -0
  837. package/lib/ui/Accordion.js.map +1 -0
  838. package/lib/ui/ActionButton.js +25 -0
  839. package/lib/ui/ActionButton.js.map +1 -0
  840. package/lib/ui/Alert.js +51 -0
  841. package/lib/ui/Alert.js.map +1 -0
  842. package/lib/ui/AlertDialog.js +114 -0
  843. package/lib/ui/AlertDialog.js.map +1 -0
  844. package/lib/ui/AspectRatio.js +6 -0
  845. package/lib/ui/AspectRatio.js.map +1 -0
  846. package/lib/ui/Badge.js +28 -0
  847. package/lib/ui/Badge.js.map +1 -0
  848. package/lib/ui/Breadcrumb.js +94 -0
  849. package/lib/ui/Breadcrumb.js.map +1 -0
  850. package/lib/ui/Button.js +50 -0
  851. package/lib/ui/Button.js.map +1 -0
  852. package/lib/ui/Callout.js +95 -0
  853. package/lib/ui/Callout.js.map +1 -0
  854. package/lib/ui/Card.js +62 -0
  855. package/lib/ui/Card.js.map +1 -0
  856. package/lib/ui/Carousel.js +1416 -0
  857. package/lib/ui/Carousel.js.map +1 -0
  858. package/lib/ui/Checkbox.js +29 -0
  859. package/lib/ui/Checkbox.js.map +1 -0
  860. package/lib/ui/Collapsible.js +8 -0
  861. package/lib/ui/Collapsible.js.map +1 -0
  862. package/lib/ui/Command.js +156 -0
  863. package/lib/ui/Command.js.map +1 -0
  864. package/lib/ui/Dialog.js +101 -0
  865. package/lib/ui/Dialog.js.map +1 -0
  866. package/lib/ui/Drawer.js +17 -0
  867. package/lib/ui/Drawer.js.map +1 -0
  868. package/lib/ui/DropdownMenu.js +145 -0
  869. package/lib/ui/DropdownMenu.js.map +1 -0
  870. package/lib/ui/Form.js +95 -0
  871. package/lib/ui/Form.js.map +1 -0
  872. package/lib/ui/HoverCard.js +24 -0
  873. package/lib/ui/HoverCard.js.map +1 -0
  874. package/lib/ui/Input.js +22 -0
  875. package/lib/ui/Input.js.map +1 -0
  876. package/lib/ui/Label.js +20 -0
  877. package/lib/ui/Label.js.map +1 -0
  878. package/lib/ui/Pagination.js +106 -0
  879. package/lib/ui/Pagination.js.map +1 -0
  880. package/lib/ui/Popover.js +24 -0
  881. package/lib/ui/Popover.js.map +1 -0
  882. package/lib/ui/Progress.js +27 -0
  883. package/lib/ui/Progress.js.map +1 -0
  884. package/lib/ui/RadioGroup.js +32 -0
  885. package/lib/ui/RadioGroup.js.map +1 -0
  886. package/lib/ui/ScrollArea.js +39 -0
  887. package/lib/ui/ScrollArea.js.map +1 -0
  888. package/lib/ui/Select.js +122 -0
  889. package/lib/ui/Select.js.map +1 -0
  890. package/lib/ui/Skeleton.js +18 -0
  891. package/lib/ui/Skeleton.js.map +1 -0
  892. package/lib/ui/Slider.js +24 -0
  893. package/lib/ui/Slider.js.map +1 -0
  894. package/lib/ui/Stepper.js +6 -0
  895. package/lib/ui/Stepper.js.map +1 -0
  896. package/lib/ui/Switch.js +28 -0
  897. package/lib/ui/Switch.js.map +1 -0
  898. package/lib/ui/SyntaxHighlight.js +11 -0
  899. package/lib/ui/SyntaxHighlight.js.map +1 -0
  900. package/lib/ui/Tabs.js +47 -0
  901. package/lib/ui/Tabs.js.map +1 -0
  902. package/lib/ui/Textarea.js +21 -0
  903. package/lib/ui/Textarea.js.map +1 -0
  904. package/lib/ui/Toggle.js +38 -0
  905. package/lib/ui/Toggle.js.map +1 -0
  906. package/lib/ui/ToggleGroup.js +42 -0
  907. package/lib/ui/ToggleGroup.js.map +1 -0
  908. package/lib/ui/Tooltip.js +24 -0
  909. package/lib/ui/Tooltip.js.map +1 -0
  910. package/lib/ui/util.js +6 -0
  911. package/lib/ui/util.js.map +1 -0
  912. package/lib/useExposedProps-B9qXJedG.js +9 -0
  913. package/lib/useExposedProps-B9qXJedG.js.map +1 -0
  914. package/lib/zudoku.auth-auth0.js +30 -25
  915. package/lib/zudoku.auth-auth0.js.map +1 -1
  916. package/lib/zudoku.auth-clerk.js +101 -55
  917. package/lib/zudoku.auth-clerk.js.map +1 -1
  918. package/lib/zudoku.auth-openid.js +450 -486
  919. package/lib/zudoku.auth-openid.js.map +1 -1
  920. package/lib/zudoku.components.js +31 -3445
  921. package/lib/zudoku.components.js.map +1 -1
  922. package/lib/zudoku.hooks.js +19 -0
  923. package/lib/zudoku.hooks.js.map +1 -0
  924. package/lib/zudoku.icons.js +10 -0
  925. package/lib/zudoku.icons.js.map +1 -1
  926. package/lib/zudoku.plugin-api-catalog.js +123 -0
  927. package/lib/zudoku.plugin-api-catalog.js.map +1 -0
  928. package/lib/zudoku.plugin-api-keys.js +112 -106
  929. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  930. package/lib/zudoku.plugin-custom-pages.js +10 -9
  931. package/lib/zudoku.plugin-custom-pages.js.map +1 -1
  932. package/lib/zudoku.plugin-markdown.js +73 -27
  933. package/lib/zudoku.plugin-markdown.js.map +1 -1
  934. package/lib/zudoku.plugin-openapi.js +7 -11
  935. package/lib/zudoku.plugin-openapi.js.map +1 -1
  936. package/lib/zudoku.plugin-redirect.js +2 -2
  937. package/lib/zudoku.plugin-redirect.js.map +1 -1
  938. package/lib/zudoku.plugin-search-inkeep.js +53 -24
  939. package/lib/zudoku.plugin-search-inkeep.js.map +1 -1
  940. package/lib/zudoku.plugin-search-pagefind.js +238 -0
  941. package/lib/zudoku.plugin-search-pagefind.js.map +1 -0
  942. package/lib/zudoku.plugins.js +14 -0
  943. package/lib/zudoku.plugins.js.map +1 -0
  944. package/package.json +156 -78
  945. package/src/app/demo-cdn.html +31 -31
  946. package/src/app/demo.tsx +1 -5
  947. package/src/app/entry.client.tsx +28 -3
  948. package/src/app/entry.server.tsx +76 -58
  949. package/src/app/main.css +99 -40
  950. package/src/app/main.tsx +50 -37
  951. package/src/app/sentry.ts +24 -0
  952. package/src/app/standalone.tsx +2 -6
  953. package/src/app/tailwind.ts +83 -48
  954. package/src/lib/MissingIcon.tsx +22 -0
  955. package/src/lib/authentication/AuthenticationPlugin.tsx +4 -1
  956. package/src/lib/authentication/authentication.ts +5 -3
  957. package/src/lib/authentication/components/CallbackHandler.tsx +1 -1
  958. package/src/lib/authentication/components/SignIn.tsx +1 -1
  959. package/src/lib/authentication/components/SignOut.tsx +3 -2
  960. package/src/lib/authentication/hook.ts +13 -4
  961. package/src/lib/authentication/providers/auth0.tsx +20 -16
  962. package/src/lib/authentication/providers/clerk.tsx +70 -15
  963. package/src/lib/authentication/providers/openid.tsx +72 -55
  964. package/src/lib/authentication/providers/supabase.tsx +157 -0
  965. package/src/lib/authentication/state.ts +56 -25
  966. package/{LICENSE.md → src/lib/authentication/use-broadcast/LICENSE.md} +2 -2
  967. package/src/lib/authentication/use-broadcast/shared.ts +372 -0
  968. package/src/lib/authentication/use-broadcast/useBroadcast.ts +146 -0
  969. package/src/lib/components/AnchorLink.tsx +13 -8
  970. package/src/lib/components/Autocomplete.tsx +113 -0
  971. package/src/lib/components/Banner.tsx +1 -0
  972. package/src/lib/components/Bootstrap.tsx +36 -16
  973. package/src/lib/components/ClientOnly.tsx +6 -3
  974. package/src/lib/components/DeveloperHint.tsx +6 -1
  975. package/src/lib/components/Header.tsx +104 -53
  976. package/src/lib/components/Heading.tsx +13 -13
  977. package/src/lib/components/InlineCode.tsx +13 -16
  978. package/src/lib/components/Layout.tsx +25 -55
  979. package/src/lib/components/Main.tsx +49 -0
  980. package/src/lib/components/Markdown.tsx +15 -16
  981. package/src/lib/components/MobileTopNavigation.tsx +27 -30
  982. package/src/lib/components/NotFoundPage.tsx +1 -1
  983. package/src/lib/components/Pagination.tsx +47 -0
  984. package/src/lib/components/PathRenderer.tsx +61 -0
  985. package/src/lib/components/ReactMarkdown.license.txt +21 -0
  986. package/src/lib/components/ReactMarkdown.tsx +264 -0
  987. package/src/lib/components/Search.tsx +3 -3
  988. package/src/lib/components/SlotletProvider.tsx +3 -1
  989. package/src/lib/components/StatusPage.tsx +91 -0
  990. package/src/lib/components/ThemeSwitch.tsx +46 -0
  991. package/src/lib/components/TopNavigation.tsx +96 -27
  992. package/src/lib/components/Zudoku.tsx +119 -0
  993. package/src/lib/components/cache.ts +23 -0
  994. package/src/lib/components/context/RouterEventsEmitter.tsx +19 -0
  995. package/src/lib/components/context/ViewportAnchorContext.tsx +26 -21
  996. package/src/lib/components/context/ZudokuContext.ts +54 -29
  997. package/src/lib/components/context/ZudokuProvider.tsx +2 -2
  998. package/src/lib/components/index.ts +24 -8
  999. package/src/lib/components/navigation/Sidebar.tsx +31 -17
  1000. package/src/lib/components/navigation/SidebarBadge.tsx +17 -12
  1001. package/src/lib/components/navigation/SidebarCategory.tsx +60 -59
  1002. package/src/lib/components/navigation/SidebarItem.tsx +30 -41
  1003. package/src/lib/components/navigation/SidebarWrapper.tsx +13 -14
  1004. package/src/lib/{plugins/markdown → components/navigation}/Toc.tsx +5 -14
  1005. package/src/lib/components/navigation/utils.ts +12 -17
  1006. package/src/lib/core/RouteGuard.tsx +74 -0
  1007. package/src/lib/core/{DevPortalContext.ts → ZudokuContext.ts} +71 -37
  1008. package/src/lib/core/plugins.ts +46 -22
  1009. package/src/lib/errors/ErrorAlert.tsx +25 -17
  1010. package/src/lib/errors/RouterError.tsx +1 -1
  1011. package/src/lib/hooks/index.ts +5 -0
  1012. package/src/lib/hooks/useEvent.test.tsx +149 -0
  1013. package/src/lib/hooks/useEvent.ts +41 -0
  1014. package/src/lib/icons.ts +1 -0
  1015. package/src/lib/oas/graphql/circular.ts +50 -0
  1016. package/src/lib/oas/graphql/index.ts +298 -104
  1017. package/src/lib/oas/parser/dereference/index.ts +10 -4
  1018. package/src/lib/oas/parser/index.ts +7 -29
  1019. package/src/lib/oas/parser/upgrade/index.ts +24 -29
  1020. package/src/lib/plugins/api-catalog/Catalog.tsx +76 -0
  1021. package/src/lib/plugins/api-catalog/index.tsx +115 -0
  1022. package/src/lib/plugins/api-keys/CreateApiKey.tsx +10 -6
  1023. package/src/lib/plugins/api-keys/ProtectedRoute.tsx +1 -1
  1024. package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +1 -1
  1025. package/src/lib/plugins/api-keys/index.tsx +16 -10
  1026. package/src/lib/plugins/custom-pages/CustomPage.tsx +2 -2
  1027. package/src/lib/plugins/custom-pages/index.tsx +3 -3
  1028. package/src/lib/plugins/markdown/MdxPage.tsx +41 -40
  1029. package/src/lib/plugins/markdown/index.tsx +53 -13
  1030. package/src/lib/plugins/markdown/resolver.ts +57 -0
  1031. package/src/lib/plugins/openapi/CollapsibleCode.tsx +83 -0
  1032. package/src/lib/plugins/openapi/ColorizedParam.tsx +49 -23
  1033. package/src/lib/plugins/openapi/Endpoint.tsx +19 -22
  1034. package/src/lib/plugins/openapi/OasProvider.tsx +51 -0
  1035. package/src/lib/plugins/openapi/OperationList.tsx +232 -73
  1036. package/src/lib/plugins/openapi/OperationListItem.tsx +136 -88
  1037. package/src/lib/plugins/openapi/ParamInfos.tsx +87 -0
  1038. package/src/lib/plugins/openapi/ParameterList.tsx +4 -0
  1039. package/src/lib/plugins/openapi/ParameterListItem.tsx +46 -31
  1040. package/src/lib/plugins/openapi/PlaygroundDialogWrapper.tsx +21 -2
  1041. package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +15 -33
  1042. package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +46 -58
  1043. package/src/lib/plugins/openapi/SchemaList.tsx +151 -0
  1044. package/src/lib/plugins/openapi/Sidecar.tsx +147 -113
  1045. package/src/lib/plugins/openapi/SidecarBox.tsx +4 -16
  1046. package/src/lib/plugins/openapi/SidecarExamples.tsx +162 -0
  1047. package/src/lib/plugins/openapi/SimpleSelect.tsx +1 -1
  1048. package/src/lib/plugins/openapi/client/GraphQLClient.tsx +65 -0
  1049. package/src/lib/plugins/openapi/client/GraphQLContext.tsx +16 -0
  1050. package/src/lib/plugins/openapi/client/createServer.ts +8 -2
  1051. package/src/lib/plugins/openapi/client/useCreateQuery.ts +26 -0
  1052. package/src/lib/plugins/openapi/components/EnumValues.tsx +58 -0
  1053. package/src/lib/plugins/openapi/components/SelectOnClick.tsx +29 -0
  1054. package/src/lib/plugins/openapi/context.tsx +2 -2
  1055. package/src/lib/plugins/openapi/graphql/fragment-masking.ts +11 -18
  1056. package/src/lib/plugins/openapi/graphql/gql.ts +38 -30
  1057. package/src/lib/plugins/openapi/graphql/graphql.ts +386 -682
  1058. package/src/lib/plugins/openapi/index.tsx +110 -134
  1059. package/src/lib/plugins/openapi/interfaces.ts +57 -3
  1060. package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +52 -0
  1061. package/src/lib/plugins/openapi/playground/Headers.tsx +165 -36
  1062. package/src/lib/plugins/openapi/playground/IdentityDialog.tsx +74 -0
  1063. package/src/lib/plugins/openapi/playground/IdentitySelector.tsx +54 -0
  1064. package/src/lib/plugins/openapi/playground/ParamsGrid.tsx +13 -0
  1065. package/src/lib/plugins/openapi/playground/PathParams.tsx +39 -64
  1066. package/src/lib/plugins/openapi/playground/Playground.tsx +386 -246
  1067. package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +7 -4
  1068. package/src/lib/plugins/openapi/playground/QueryParams.tsx +86 -88
  1069. package/src/lib/plugins/openapi/playground/RequestLoginDialog.tsx +51 -0
  1070. package/src/lib/plugins/openapi/playground/SubmitButton.tsx +75 -0
  1071. package/src/lib/plugins/openapi/playground/rememberedIdentity.ts +26 -0
  1072. package/src/lib/plugins/openapi/playground/result-panel/RequestTab.tsx +73 -0
  1073. package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +230 -0
  1074. package/src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx +123 -0
  1075. package/src/lib/plugins/openapi/playground/result-panel/convertToTypes.test.ts +64 -0
  1076. package/src/lib/plugins/openapi/playground/result-panel/convertToTypes.ts +36 -0
  1077. package/src/lib/plugins/openapi/post-processors/removeExtensions.test.ts +202 -0
  1078. package/src/lib/plugins/openapi/post-processors/removeExtensions.ts +27 -0
  1079. package/src/lib/plugins/openapi/post-processors/removeParameters.test.ts +148 -0
  1080. package/src/lib/plugins/openapi/post-processors/removeParameters.ts +101 -0
  1081. package/src/lib/plugins/openapi/post-processors/removePaths.test.ts +126 -0
  1082. package/src/lib/plugins/openapi/post-processors/removePaths.ts +55 -0
  1083. package/src/lib/plugins/openapi/post-processors/traverse.ts +1 -0
  1084. package/src/lib/plugins/openapi/schema/{SchemaComponents.tsx → SchemaPropertyItem.tsx} +52 -29
  1085. package/src/lib/plugins/openapi/schema/SchemaView.tsx +57 -38
  1086. package/src/lib/plugins/openapi/schema/utils.ts +4 -0
  1087. package/src/lib/plugins/openapi/state.ts +36 -0
  1088. package/src/lib/plugins/openapi/util/createSidebarCategory.tsx +37 -0
  1089. package/src/lib/plugins/openapi/util/generateSchemaExample.ts +44 -43
  1090. package/src/lib/plugins/openapi/util/getRoutes.tsx +126 -0
  1091. package/src/lib/plugins/openapi/util/methodColorMap.tsx +11 -0
  1092. package/src/lib/plugins/openapi/util/methodToColor.ts +27 -0
  1093. package/src/lib/plugins/openapi/util/sanitizeMarkdownForMetatag.tsx +32 -0
  1094. package/src/lib/plugins/redirect/index.tsx +6 -10
  1095. package/src/lib/plugins/search-inkeep/index.tsx +80 -25
  1096. package/src/lib/plugins/search-inkeep/inkeep.ts +3 -9
  1097. package/src/lib/plugins/search-pagefind/PagefindSearch.tsx +157 -0
  1098. package/src/lib/plugins/search-pagefind/ResultList.tsx +116 -0
  1099. package/src/lib/plugins/search-pagefind/get-results.tsx +75 -0
  1100. package/src/lib/plugins/search-pagefind/index.tsx +21 -0
  1101. package/src/lib/plugins/search-pagefind/types.ts +118 -0
  1102. package/src/lib/ui/Accordion.tsx +56 -0
  1103. package/src/lib/ui/ActionButton.tsx +28 -0
  1104. package/src/lib/ui/{Note.tsx → Alert.tsx} +11 -10
  1105. package/src/lib/ui/AlertDialog.tsx +139 -0
  1106. package/src/lib/ui/AspectRatio.tsx +5 -0
  1107. package/src/lib/ui/Badge.tsx +37 -0
  1108. package/src/lib/ui/Breadcrumb.tsx +115 -0
  1109. package/src/lib/ui/Button.tsx +5 -3
  1110. package/src/lib/ui/Callout.tsx +28 -10
  1111. package/src/lib/ui/Card.tsx +1 -1
  1112. package/src/lib/ui/Carousel.tsx +260 -0
  1113. package/src/lib/ui/Checkbox.tsx +29 -0
  1114. package/src/lib/ui/Collapsible.tsx +9 -0
  1115. package/src/lib/ui/Command.tsx +193 -0
  1116. package/src/lib/{components → ui}/Dialog.tsx +4 -3
  1117. package/src/lib/ui/Form.tsx +177 -0
  1118. package/src/lib/ui/HoverCard.tsx +27 -0
  1119. package/src/lib/ui/Input.tsx +1 -2
  1120. package/src/lib/ui/Label.tsx +24 -0
  1121. package/src/lib/ui/Pagination.tsx +117 -0
  1122. package/src/lib/ui/Popover.tsx +29 -0
  1123. package/src/lib/ui/Progress.tsx +26 -0
  1124. package/src/lib/ui/RadioGroup.tsx +42 -0
  1125. package/src/lib/ui/ScrollArea.tsx +46 -0
  1126. package/src/lib/{components → ui}/Select.tsx +2 -2
  1127. package/src/lib/ui/Skeleton.tsx +15 -0
  1128. package/src/lib/ui/Slider.tsx +26 -0
  1129. package/src/lib/ui/Stepper.tsx +8 -0
  1130. package/src/lib/ui/Switch.tsx +27 -0
  1131. package/src/lib/ui/SyntaxHighlight.tsx +186 -0
  1132. package/src/lib/ui/Textarea.tsx +23 -0
  1133. package/src/lib/ui/Toggle.tsx +43 -0
  1134. package/src/lib/ui/ToggleGroup.tsx +59 -0
  1135. package/src/lib/ui/Tooltip.tsx +28 -0
  1136. package/src/lib/ui/util.tsx +3 -0
  1137. package/src/lib/util/MdxComponents.tsx +10 -12
  1138. package/src/lib/util/createVariantComponent.tsx +2 -2
  1139. package/src/lib/util/joinPath.tsx +3 -0
  1140. package/src/lib/util/joinUrl.test.ts +62 -0
  1141. package/src/lib/util/joinUrl.ts +57 -0
  1142. package/src/lib/util/scrollIntoViewIfNeeded.ts +18 -0
  1143. package/src/lib/util/traverse.ts +31 -0
  1144. package/src/lib/util/types.ts +7 -0
  1145. package/src/lib/util/useExposedProps.tsx +8 -2
  1146. package/src/lib/util/useIsomorphicLayoutEffect.ts +5 -0
  1147. package/src/lib/util/useLatest.ts +18 -0
  1148. package/src/lib/util/useOnScreen.ts +34 -0
  1149. package/src/lib/util/useScrollToAnchor.ts +48 -39
  1150. package/src/lib/util/useScrollToTop.ts +9 -4
  1151. package/dist/internal.d.ts +0 -1
  1152. package/dist/internal.js +0 -2
  1153. package/dist/internal.js.map +0 -1
  1154. package/dist/lib/components/DevPortal.js.map +0 -1
  1155. package/dist/lib/components/Dialog.js.map +0 -1
  1156. package/dist/lib/components/Select.js.map +0 -1
  1157. package/dist/lib/components/SyntaxHighlight.d.ts +0 -11
  1158. package/dist/lib/components/SyntaxHighlight.js +0 -50
  1159. package/dist/lib/components/SyntaxHighlight.js.map +0 -1
  1160. package/dist/lib/components/context/ThemeContext.d.ts +0 -2
  1161. package/dist/lib/components/context/ThemeContext.js +0 -7
  1162. package/dist/lib/components/context/ThemeContext.js.map +0 -1
  1163. package/dist/lib/components/context/ThemeProvider.d.ts +0 -4
  1164. package/dist/lib/components/context/ThemeProvider.js +0 -23
  1165. package/dist/lib/components/context/ThemeProvider.js.map +0 -1
  1166. package/dist/lib/core/DevPortalContext.js +0 -49
  1167. package/dist/lib/core/DevPortalContext.js.map +0 -1
  1168. package/dist/lib/plugins/markdown/Toc.js.map +0 -1
  1169. package/dist/lib/plugins/markdown/generateRoutes.d.ts +0 -3
  1170. package/dist/lib/plugins/markdown/generateRoutes.js +0 -21
  1171. package/dist/lib/plugins/markdown/generateRoutes.js.map +0 -1
  1172. package/dist/lib/plugins/openapi/Route.d.ts +0 -6
  1173. package/dist/lib/plugins/openapi/Route.js +0 -8
  1174. package/dist/lib/plugins/openapi/Route.js.map +0 -1
  1175. package/dist/lib/plugins/openapi/client/createMemoryClient.d.ts +0 -12
  1176. package/dist/lib/plugins/openapi/client/createMemoryClient.js +0 -46
  1177. package/dist/lib/plugins/openapi/client/createMemoryClient.js.map +0 -1
  1178. package/dist/lib/plugins/openapi/client/createWorkerClient.d.ts +0 -10
  1179. package/dist/lib/plugins/openapi/client/createWorkerClient.js +0 -61
  1180. package/dist/lib/plugins/openapi/client/createWorkerClient.js.map +0 -1
  1181. package/dist/lib/plugins/openapi/client/interfaces.d.ts +0 -4
  1182. package/dist/lib/plugins/openapi/client/interfaces.js +0 -2
  1183. package/dist/lib/plugins/openapi/client/interfaces.js.map +0 -1
  1184. package/dist/lib/plugins/openapi/client/worker.js +0 -20
  1185. package/dist/lib/plugins/openapi/client/worker.js.map +0 -1
  1186. package/dist/lib/plugins/openapi/playground/ResponseTab.d.ts +0 -4
  1187. package/dist/lib/plugins/openapi/playground/ResponseTab.js +0 -42
  1188. package/dist/lib/plugins/openapi/playground/ResponseTab.js.map +0 -1
  1189. package/dist/lib/plugins/openapi/schema/SchemaComponents.js +0 -28
  1190. package/dist/lib/plugins/openapi/schema/SchemaComponents.js.map +0 -1
  1191. package/dist/lib/plugins/openapi-worker.d.ts +0 -1
  1192. package/dist/lib/plugins/openapi-worker.js +0 -2
  1193. package/dist/lib/plugins/openapi-worker.js.map +0 -1
  1194. package/dist/lib/plugins/search-inkeep/InkeepCustomTrigger.d.ts +0 -2
  1195. package/dist/lib/plugins/search-inkeep/InkeepCustomTrigger.js +0 -3
  1196. package/dist/lib/plugins/search-inkeep/InkeepCustomTrigger.js.map +0 -1
  1197. package/dist/lib/themeToggle.d.ts +0 -1
  1198. package/dist/lib/themeToggle.js +0 -7
  1199. package/dist/lib/themeToggle.js.map +0 -1
  1200. package/dist/lib/ui/Note.d.ts +0 -8
  1201. package/dist/lib/ui/Note.js +0 -23
  1202. package/dist/lib/ui/Note.js.map +0 -1
  1203. package/dist/lib/util/createWaitForNotify.d.ts +0 -1
  1204. package/dist/lib/util/createWaitForNotify.js +0 -15
  1205. package/dist/lib/util/createWaitForNotify.js.map +0 -1
  1206. package/dist/vite/plugin-custom-css.js +0 -55
  1207. package/dist/vite/plugin-custom-css.js.map +0 -1
  1208. package/dist/vite/plugin-html-transform.d.ts +0 -2
  1209. package/dist/vite/plugin-html-transform.js +0 -15
  1210. package/dist/vite/plugin-html-transform.js.map +0 -1
  1211. package/dist/vite/prerender.js +0 -87
  1212. package/dist/vite/prerender.js.map +0 -1
  1213. package/lib/AuthenticationPlugin-tBvLKsFg.js +0 -55
  1214. package/lib/AuthenticationPlugin-tBvLKsFg.js.map +0 -1
  1215. package/lib/CategoryHeading-D2WS6sRI.js +0 -10
  1216. package/lib/ClientOnly-CVN6leDu.js.map +0 -1
  1217. package/lib/DeveloperHint-CRiZjqd2.js +0 -16
  1218. package/lib/DeveloperHint-CRiZjqd2.js.map +0 -1
  1219. package/lib/InkeepCustomTrigger-CE5-K5ex.js +0 -6
  1220. package/lib/InkeepCustomTrigger-CE5-K5ex.js.map +0 -1
  1221. package/lib/Input-CO-1DOZa.js +0 -2229
  1222. package/lib/Input-CO-1DOZa.js.map +0 -1
  1223. package/lib/Markdown-DM4zv3MA.js +0 -20442
  1224. package/lib/Markdown-DM4zv3MA.js.map +0 -1
  1225. package/lib/MdxPage-tWI_P8wP.js +0 -172
  1226. package/lib/MdxPage-tWI_P8wP.js.map +0 -1
  1227. package/lib/OperationList-Cd3lue0b.js +0 -600
  1228. package/lib/OperationList-Cd3lue0b.js.map +0 -1
  1229. package/lib/Route-DI0Y0pIV.js +0 -13
  1230. package/lib/Route-DI0Y0pIV.js.map +0 -1
  1231. package/lib/SlotletProvider-CBqY8mp6.js +0 -241
  1232. package/lib/SlotletProvider-CBqY8mp6.js.map +0 -1
  1233. package/lib/Spinner-DFQhPMBl.js +0 -505
  1234. package/lib/Spinner-DFQhPMBl.js.map +0 -1
  1235. package/lib/ZudokuContext-DEoP3GGJ.js +0 -1173
  1236. package/lib/ZudokuContext-DEoP3GGJ.js.map +0 -1
  1237. package/lib/assets/index-B_Jk_Yzp.js +0 -4820
  1238. package/lib/assets/index-B_Jk_Yzp.js.map +0 -1
  1239. package/lib/assets/worker-Bf8vjASY.js +0 -18197
  1240. package/lib/assets/worker-Bf8vjASY.js.map +0 -1
  1241. package/lib/index-Bs9roz8y.js +0 -5973
  1242. package/lib/index-Bs9roz8y.js.map +0 -1
  1243. package/lib/index-CBr6BM_4.js +0 -2867
  1244. package/lib/index-CBr6BM_4.js.map +0 -1
  1245. package/lib/index-CRo94sKK.js +0 -1783
  1246. package/lib/index-CRo94sKK.js.map +0 -1
  1247. package/lib/index-CkwDvuPt.js.map +0 -1
  1248. package/lib/index-UUT9q9f9.js +0 -124
  1249. package/lib/index-UUT9q9f9.js.map +0 -1
  1250. package/lib/joinPath-B7kNnUX4.js +0 -8
  1251. package/lib/joinPath-B7kNnUX4.js.map +0 -1
  1252. package/lib/jsx-runtime-B6kdoens.js +0 -635
  1253. package/lib/jsx-runtime-B6kdoens.js.map +0 -1
  1254. package/lib/prism-csharp.min-Yizuc34Y.js +0 -35
  1255. package/lib/prism-java.min-d5iT_mOd.js +0 -7
  1256. package/lib/prism-markup-templating-DZrrEs0A.js +0 -62
  1257. package/lib/prism-markup-templating-DZrrEs0A.js.map +0 -1
  1258. package/lib/prism-php.min-o7FpoMP_.js +0 -11
  1259. package/lib/prism-php.min-o7FpoMP_.js.map +0 -1
  1260. package/lib/prism-ruby.min-C7LwcKyz.js +0 -10
  1261. package/lib/prism-typescript.min-oSVeWCAd.js +0 -6
  1262. package/lib/router-BsfSoK2j.js +0 -3024
  1263. package/lib/router-BsfSoK2j.js.map +0 -1
  1264. package/lib/state-CsuHT8ZO.js +0 -183
  1265. package/lib/state-CsuHT8ZO.js.map +0 -1
  1266. package/lib/urql-core-KJnLL26g.js +0 -1455
  1267. package/lib/urql-core-KJnLL26g.js.map +0 -1
  1268. package/lib/useExposedProps-B9K-9GTc.js +0 -9
  1269. package/lib/useExposedProps-B9K-9GTc.js.map +0 -1
  1270. package/lib/utils-G5XSiZc9.js +0 -749
  1271. package/lib/utils-G5XSiZc9.js.map +0 -1
  1272. package/lib/zudoku.openapi-worker.js +0 -16341
  1273. package/lib/zudoku.openapi-worker.js.map +0 -1
  1274. package/src/lib/components/DevPortal.tsx +0 -111
  1275. package/src/lib/components/SyntaxHighlight.tsx +0 -122
  1276. package/src/lib/components/context/ThemeContext.tsx +0 -8
  1277. package/src/lib/components/context/ThemeProvider.tsx +0 -27
  1278. package/src/lib/plugins/markdown/generateRoutes.tsx +0 -38
  1279. package/src/lib/plugins/openapi/Route.tsx +0 -20
  1280. package/src/lib/plugins/openapi/client/createMemoryClient.ts +0 -51
  1281. package/src/lib/plugins/openapi/client/createWorkerClient.ts +0 -75
  1282. package/src/lib/plugins/openapi/client/interfaces.ts +0 -5
  1283. package/src/lib/plugins/openapi/client/worker.ts +0 -30
  1284. package/src/lib/plugins/openapi/playground/ResponseTab.tsx +0 -76
  1285. package/src/lib/plugins/openapi-worker.ts +0 -1
  1286. package/src/lib/plugins/search-inkeep/InkeepCustomTrigger.tsx +0 -3
  1287. package/src/lib/themeToggle.ts +0 -7
  1288. package/src/lib/util/createWaitForNotify.ts +0 -18
  1289. /package/dist/lib/{plugins/markdown → components/navigation}/Toc.d.ts +0 -0
  1290. /package/dist/lib/{plugins/openapi/client/worker.d.ts → hooks/useEvent.test.d.ts} +0 -0
  1291. /package/dist/lib/plugins/openapi/schema/{SchemaComponents.d.ts → SchemaPropertyItem.d.ts} +0 -0
  1292. /package/dist/lib/{components → ui}/Dialog.d.ts +0 -0
  1293. /package/dist/lib/{components → ui}/Select.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"zudoku.components.js","sources":["../src/lib/errors/ServerError.tsx","../../../node_modules/.pnpm/react-router-dom@6.27.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-router-dom/server.js","../src/lib/components/Bootstrap.tsx","../../../node_modules/.pnpm/@tanstack+query-core@5.59.13/node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../node_modules/.pnpm/@tanstack+query-core@5.59.13/node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../node_modules/.pnpm/@tanstack+query-core@5.59.13/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../node_modules/.pnpm/@tanstack+query-core@5.59.13/node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../node_modules/.pnpm/react-error-boundary@4.0.13_react@18.3.1/node_modules/react-error-boundary/dist/react-error-boundary.esm.js","../src/lib/core/plugins.ts","../src/lib/core/DevPortalContext.ts","../src/lib/errors/TopLevelError.tsx","../src/lib/util/requestIdleCallbackPolyfill.ts","../../../node_modules/.pnpm/@radix-ui+react-menu@2.1.2_@types+react-dom@18.3.1_@types+react@18.3.11_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-menu/dist/index.mjs","../../../node_modules/.pnpm/@radix-ui+react-dropdown-menu@2.1.2_@types+react-dom@18.3.1_@types+react@18.3.11_react-dom@18_5kkyludjskdmwwfwuqooahps2q/node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs","../src/lib/ui/DropdownMenu.tsx","../src/lib/components/Banner.tsx","../../../node_modules/.pnpm/vaul@1.1.0_@types+react-dom@18.3.1_@types+react@18.3.11_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/vaul/dist/index.mjs","../src/lib/ui/Drawer.tsx","../src/lib/components/Search.tsx","../src/lib/components/TopNavigation.tsx","../src/lib/components/MobileTopNavigation.tsx","../src/lib/components/Header.tsx","../src/lib/components/context/ComponentsContext.tsx","../src/lib/components/context/ThemeProvider.tsx","../src/lib/components/context/ZudokuProvider.tsx","../src/lib/components/DevPortal.tsx","../src/lib/components/navigation/SidebarCategory.tsx","../src/lib/components/navigation/SidebarItem.tsx","../src/lib/util/useScrollToAnchor.ts","../src/lib/util/useScrollToTop.ts","../src/lib/components/navigation/SidebarWrapper.tsx","../src/lib/components/navigation/Sidebar.tsx","../src/lib/components/Layout.tsx","../src/lib/components/index.ts"],"sourcesContent":["import { ErrorAlert } from \"./ErrorAlert.js\";\n\nexport function ServerError({ error }: { error: unknown }) {\n return <ErrorAlert error={error} />;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\nvar router = require('@remix-run/router');\nvar reactRouter = require('react-router');\nvar reactRouterDom = require('react-router-dom');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\n\n/**\n * A `<Router>` that may not navigate to any other location. This is useful\n * on the server where there is no stateful UI.\n */\nfunction StaticRouter({\n basename,\n children,\n location: locationProp = \"/\",\n future\n}) {\n if (typeof locationProp === \"string\") {\n locationProp = reactRouterDom.parsePath(locationProp);\n }\n let action = router.Action.Pop;\n let location = {\n pathname: locationProp.pathname || \"/\",\n search: locationProp.search || \"\",\n hash: locationProp.hash || \"\",\n state: locationProp.state != null ? locationProp.state : null,\n key: locationProp.key || \"default\"\n };\n let staticNavigator = getStatelessNavigator();\n return /*#__PURE__*/React__namespace.createElement(reactRouterDom.Router, {\n basename: basename,\n children: children,\n location: location,\n navigationType: action,\n navigator: staticNavigator,\n future: future,\n static: true\n });\n}\n/**\n * A Data Router that may not navigate to any other location. This is useful\n * on the server where there is no stateful UI.\n */\nfunction StaticRouterProvider({\n context,\n router: router$1,\n hydrate = true,\n nonce\n}) {\n !(router$1 && context) ? process.env.NODE_ENV !== \"production\" ? router.UNSAFE_invariant(false, \"You must provide `router` and `context` to <StaticRouterProvider>\") : router.UNSAFE_invariant(false) : void 0;\n let dataRouterContext = {\n router: router$1,\n navigator: getStatelessNavigator(),\n static: true,\n staticContext: context,\n basename: context.basename || \"/\"\n };\n let fetchersContext = new Map();\n let hydrateScript = \"\";\n if (hydrate !== false) {\n let data = {\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: serializeErrors(context.errors)\n };\n // Use JSON.parse here instead of embedding a raw JS object here to speed\n // up parsing on the client. Dual-stringify is needed to ensure all quotes\n // are properly escaped in the resulting string. See:\n // https://v8.dev/blog/cost-of-javascript-2019#json\n let json = htmlEscape(JSON.stringify(JSON.stringify(data)));\n hydrateScript = `window.__staticRouterHydrationData = JSON.parse(${json});`;\n }\n let {\n state\n } = dataRouterContext.router;\n return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_DataRouterContext.Provider, {\n value: dataRouterContext\n }, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_DataRouterStateContext.Provider, {\n value: state\n }, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_FetchersContext.Provider, {\n value: fetchersContext\n }, /*#__PURE__*/React__namespace.createElement(reactRouterDom.UNSAFE_ViewTransitionContext.Provider, {\n value: {\n isTransitioning: false\n }\n }, /*#__PURE__*/React__namespace.createElement(reactRouterDom.Router, {\n basename: dataRouterContext.basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator: dataRouterContext.navigator,\n static: dataRouterContext.static,\n future: {\n v7_relativeSplatPath: router$1.future.v7_relativeSplatPath\n }\n }, /*#__PURE__*/React__namespace.createElement(DataRoutes, {\n routes: router$1.routes,\n future: router$1.future,\n state: state\n })))))), hydrateScript ? /*#__PURE__*/React__namespace.createElement(\"script\", {\n suppressHydrationWarning: true,\n nonce: nonce,\n dangerouslySetInnerHTML: {\n __html: hydrateScript\n }\n }) : null);\n}\nfunction DataRoutes({\n routes,\n future,\n state\n}) {\n return reactRouter.UNSAFE_useRoutesImpl(routes, undefined, state, future);\n}\nfunction serializeErrors(errors) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n // Hey you! If you change this, please change the corresponding logic in\n // deserializeErrors in react-router-dom/index.tsx :)\n if (router.isRouteErrorResponse(val)) {\n serialized[key] = {\n ...val,\n __type: \"RouteErrorResponse\"\n };\n } else if (val instanceof Error) {\n // Do not serialize stack traces from SSR for security reasons\n serialized[key] = {\n message: val.message,\n __type: \"Error\",\n // If this is a subclass (i.e., ReferenceError), send up the type so we\n // can re-create the same type during hydration.\n ...(val.name !== \"Error\" ? {\n __subType: val.name\n } : {})\n };\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\nfunction getStatelessNavigator() {\n return {\n createHref,\n encodeLocation,\n push(to) {\n throw new Error(`You cannot use navigator.push() on the server because it is a stateless ` + `environment. This error was probably triggered when you did a ` + `\\`navigate(${JSON.stringify(to)})\\` somewhere in your app.`);\n },\n replace(to) {\n throw new Error(`You cannot use navigator.replace() on the server because it is a stateless ` + `environment. This error was probably triggered when you did a ` + `\\`navigate(${JSON.stringify(to)}, { replace: true })\\` somewhere ` + `in your app.`);\n },\n go(delta) {\n throw new Error(`You cannot use navigator.go() on the server because it is a stateless ` + `environment. This error was probably triggered when you did a ` + `\\`navigate(${delta})\\` somewhere in your app.`);\n },\n back() {\n throw new Error(`You cannot use navigator.back() on the server because it is a stateless ` + `environment.`);\n },\n forward() {\n throw new Error(`You cannot use navigator.forward() on the server because it is a stateless ` + `environment.`);\n }\n };\n}\nfunction createStaticHandler(routes, opts) {\n return router.createStaticHandler(routes, {\n ...opts,\n mapRouteProperties: reactRouter.UNSAFE_mapRouteProperties\n });\n}\nfunction createStaticRouter(routes, context, opts = {}) {\n let manifest = {};\n let dataRoutes = router.UNSAFE_convertRoutesToDataRoutes(routes, reactRouter.UNSAFE_mapRouteProperties, undefined, manifest);\n // Because our context matches may be from a framework-agnostic set of\n // routes passed to createStaticHandler(), we update them here with our\n // newly created/enhanced data routes\n let matches = context.matches.map(match => {\n let route = manifest[match.route.id] || match.route;\n return {\n ...match,\n route\n };\n });\n let msg = method => `You cannot use router.${method}() on the server because it is a stateless environment`;\n return {\n get basename() {\n return context.basename;\n },\n get future() {\n return {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: opts.future?.v7_partialHydration === true,\n v7_prependBasename: false,\n v7_relativeSplatPath: opts.future?.v7_relativeSplatPath === true,\n v7_skipActionErrorRevalidation: false\n };\n },\n get state() {\n return {\n historyAction: router.Action.Pop,\n location: context.location,\n matches,\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: context.errors,\n initialized: true,\n navigation: router.IDLE_NAVIGATION,\n restoreScrollPosition: null,\n preventScrollReset: false,\n revalidation: \"idle\",\n fetchers: new Map(),\n blockers: new Map()\n };\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return undefined;\n },\n initialize() {\n throw msg(\"initialize\");\n },\n subscribe() {\n throw msg(\"subscribe\");\n },\n enableScrollRestoration() {\n throw msg(\"enableScrollRestoration\");\n },\n navigate() {\n throw msg(\"navigate\");\n },\n fetch() {\n throw msg(\"fetch\");\n },\n revalidate() {\n throw msg(\"revalidate\");\n },\n createHref,\n encodeLocation,\n getFetcher() {\n return router.IDLE_FETCHER;\n },\n deleteFetcher() {\n throw msg(\"deleteFetcher\");\n },\n dispose() {\n throw msg(\"dispose\");\n },\n getBlocker() {\n return router.IDLE_BLOCKER;\n },\n deleteBlocker() {\n throw msg(\"deleteBlocker\");\n },\n patchRoutes() {\n throw msg(\"patchRoutes\");\n },\n _internalFetchControllers: new Map(),\n _internalActiveDeferreds: new Map(),\n _internalSetRoutes() {\n throw msg(\"_internalSetRoutes\");\n }\n };\n}\nfunction createHref(to) {\n return typeof to === \"string\" ? to : reactRouterDom.createPath(to);\n}\nfunction encodeLocation(to) {\n let href = typeof to === \"string\" ? to : reactRouterDom.createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n let encoded = ABSOLUTE_URL_REGEX.test(href) ? new URL(href) : new URL(href, \"http://localhost\");\n return {\n pathname: encoded.pathname,\n search: encoded.search,\n hash: encoded.hash\n };\n}\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n// This utility is based on https://github.com/zertosh/htmlescape\n// License: https://github.com/zertosh/htmlescape/blob/0527ca7156a524d256101bb310a9f970f63078ad/LICENSE\nconst ESCAPE_LOOKUP = {\n \"&\": \"\\\\u0026\",\n \">\": \"\\\\u003e\",\n \"<\": \"\\\\u003c\",\n \"\\u2028\": \"\\\\u2028\",\n \"\\u2029\": \"\\\\u2029\"\n};\nconst ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\nfunction htmlEscape(str) {\n return str.replace(ESCAPE_REGEX, match => ESCAPE_LOOKUP[match]);\n}\n\nexports.StaticRouter = StaticRouter;\nexports.StaticRouterProvider = StaticRouterProvider;\nexports.createStaticHandler = createStaticHandler;\nexports.createStaticRouter = createStaticRouter;\n","import { type HelmetData, HelmetProvider } from \"@zudoku/react-helmet-async\";\nimport { StrictMode } from \"react\";\nimport { type createBrowserRouter, RouterProvider } from \"react-router-dom\";\nimport {\n type createStaticRouter,\n type StaticHandlerContext,\n StaticRouterProvider,\n} from \"react-router-dom/server.js\";\nimport { StaggeredRenderContext } from \"../plugins/openapi/StaggeredRender.js\";\n\nconst Bootstrap = ({\n router,\n hydrate = false,\n}: {\n hydrate?: boolean;\n router: ReturnType<typeof createBrowserRouter>;\n}) => {\n return (\n <StrictMode>\n <HelmetProvider>\n <StaggeredRenderContext.Provider value={{ stagger: !hydrate }}>\n <RouterProvider router={router} />\n </StaggeredRenderContext.Provider>\n </HelmetProvider>\n </StrictMode>\n );\n};\n\nconst BootstrapStatic = ({\n router,\n context,\n helmetContext,\n}: {\n helmetContext: HelmetData[\"context\"];\n context: StaticHandlerContext;\n router: ReturnType<typeof createStaticRouter>;\n}) => (\n <StrictMode>\n <HelmetProvider context={helmetContext}>\n <StaticRouterProvider router={router} context={context} />\n </HelmetProvider>\n </StrictMode>\n);\n\nexport { Bootstrap, BootstrapStatic };\n","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n cache: this,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Map();\n this.#mutationId = Date.now();\n }\n #mutations;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n const scope = scopeFor(mutation);\n const mutations = this.#mutations.get(scope) ?? [];\n mutations.push(mutation);\n this.#mutations.set(scope, mutations);\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n const scope = scopeFor(mutation);\n if (this.#mutations.has(scope)) {\n const mutations = this.#mutations.get(scope)?.filter((x) => x !== mutation);\n if (mutations) {\n if (mutations.length === 0) {\n this.#mutations.delete(scope);\n } else {\n this.#mutations.set(scope, mutations);\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const firstPendingMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m.state.status === \"pending\");\n return !firstPendingMutation || firstPendingMutation === mutation;\n }\n runNext(mutation) {\n const foundMutation = this.#mutations.get(scopeFor(mutation))?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((mutation) => {\n this.remove(mutation);\n });\n });\n }\n getAll() {\n return [...this.#mutations.values()].flat();\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id ?? String(mutation.mutationId);\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/infiniteQueryBehavior.ts\nimport { addToEnd, addToStart, ensureQueryFn } from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n let result = { pages: [], pageParams: [] };\n let currentPage = 0;\n const fetchFn = async () => {\n let cancelled = false;\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n if (context.signal.aborted) {\n cancelled = true;\n } else {\n context.signal.addEventListener(\"abort\", () => {\n cancelled = true;\n });\n }\n return context.signal;\n }\n });\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const page = await queryFn(\n queryFnContext\n );\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n const remainingPages = pages ?? oldPages.length;\n do {\n const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n if (currentPage > 0 && param == null) {\n break;\n }\n result = await fetchPage(result, param);\n currentPage++;\n } while (currentPage < remainingPages);\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return pages.length > 0 ? options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n if (!data)\n return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam)\n return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1)\n return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0)\n return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const cachedData = this.getQueryData(options.queryKey);\n if (cachedData === void 0)\n return this.fetchQuery(options);\n else {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n const refetchFilters = {\n type: \"active\",\n ...filters\n };\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n cancelQueries(filters = {}, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters = {}, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters.refetchType === \"none\") {\n return Promise.resolve();\n }\n const refetchFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? \"active\"\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n refetchQueries(filters = {}, options) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n ensureInfiniteQueryData(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.ensureQueryData(options);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n let result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n result = { ...result, ...queryDefault.defaultOptions };\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.enabled !== true && defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","'use client';\nimport { createContext, Component, createElement, isValidElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n didCatch: false,\n error: null\n};\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n this.state = initialState;\n }\n static getDerivedStateFromError(error) {\n return {\n didCatch: true,\n error\n };\n }\n resetErrorBoundary() {\n const {\n error\n } = this.state;\n if (error !== null) {\n var _this$props$onReset, _this$props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n args,\n reason: \"imperative-api\"\n });\n this.setState(initialState);\n }\n }\n componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n }\n componentDidUpdate(prevProps, prevState) {\n const {\n didCatch\n } = this.state;\n const {\n resetKeys\n } = this.props;\n\n // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n // we'd end up resetting the error boundary immediately.\n // This would likely trigger a second error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n var _this$props$onReset2, _this$props3;\n (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n next: resetKeys,\n prev: prevProps.resetKeys,\n reason: \"keys\"\n });\n this.setState(initialState);\n }\n }\n render() {\n const {\n children,\n fallbackRender,\n FallbackComponent,\n fallback\n } = this.props;\n const {\n didCatch,\n error\n } = this.state;\n let childToRender = children;\n if (didCatch) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (typeof fallbackRender === \"function\") {\n childToRender = fallbackRender(props);\n } else if (FallbackComponent) {\n childToRender = createElement(FallbackComponent, props);\n } else if (fallback === null || isValidElement(fallback)) {\n childToRender = fallback;\n } else {\n throw error;\n }\n }\n return createElement(ErrorBoundaryContext.Provider, {\n value: {\n didCatch,\n error,\n resetErrorBoundary: this.resetErrorBoundary\n }\n }, childToRender);\n }\n}\nfunction hasArrayChanged() {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n throw new Error(\"ErrorBoundaryContext not found\");\n }\n}\n\nfunction useErrorBoundary() {\n const context = useContext(ErrorBoundaryContext);\n assertErrorBoundaryContext(context);\n const [state, setState] = useState({\n error: null,\n hasError: false\n });\n const memoized = useMemo(() => ({\n resetBoundary: () => {\n context.resetErrorBoundary();\n setState({\n error: null,\n hasError: false\n });\n },\n showBoundary: error => setState({\n error,\n hasError: true\n })\n }), [context.resetErrorBoundary]);\n if (state.hasError) {\n throw state.error;\n }\n return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n ...props,\n ref\n })));\n\n // Format for display in DevTools\n const name = component.displayName || component.name || \"Unknown\";\n Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","import { type ReactElement } from \"react\";\nimport { type RouteObject } from \"react-router-dom\";\nimport type { Sidebar } from \"../../config/validators/SidebarSchema.js\";\nimport { MdxComponentsType } from \"../util/MdxComponents.js\";\nimport { DevPortalContext, type ApiIdentity } from \"./DevPortalContext.js\";\n\nexport type DevPortalPlugin =\n | CommonPlugin\n | ProfileMenuPlugin\n | NavigationPlugin\n | ApiIdentityPlugin\n | SearchProviderPlugin;\n\nexport interface NavigationPlugin {\n getRoutes: () => RouteObject[];\n getSidebar?: (path: string) => Promise<Sidebar>;\n}\n\nexport interface ApiIdentityPlugin {\n getIdentities: (context: DevPortalContext) => Promise<ApiIdentity[]>;\n}\n\nexport interface SearchProviderPlugin {\n renderSearch: (o: {\n isOpen: boolean;\n onClose: () => void;\n }) => React.JSX.Element | null;\n}\n\nexport interface ProfileMenuPlugin {\n getProfileMenuItems: (context: DevPortalContext) => ProfileNavigationItem[];\n}\n\nexport type ProfileNavigationItem = {\n label: string;\n path?: string;\n children?: ProfileNavigationItem[];\n};\n\nexport interface CommonPlugin {\n initialize?: (\n context: DevPortalContext,\n ) => Promise<void | boolean> | void | boolean;\n getHead?: () => ReactElement | undefined;\n getMdxComponents?: () => MdxComponentsType;\n}\n\nexport const isProfileMenuPlugin = (\n obj: DevPortalPlugin,\n): obj is ProfileMenuPlugin =>\n \"getProfileMenuItems\" in obj && typeof obj.getProfileMenuItems === \"function\";\n\nexport const isNavigationPlugin = (\n obj: DevPortalPlugin,\n): obj is NavigationPlugin =>\n \"getRoutes\" in obj && typeof obj.getRoutes === \"function\";\n\nexport const isSearchPlugin = (\n obj: DevPortalPlugin,\n): obj is SearchProviderPlugin =>\n \"renderSearch\" in obj && typeof obj.renderSearch === \"function\";\n\nexport const needsInitialization = (\n obj: DevPortalPlugin,\n): obj is CommonPlugin =>\n \"initialize\" in obj && typeof obj.initialize === \"function\";\n\nexport const hasHead = (obj: DevPortalPlugin): obj is CommonPlugin =>\n \"getHead\" in obj && typeof obj.getHead === \"function\";\n\nexport const isMdxProviderPlugin = (\n obj: DevPortalPlugin,\n): obj is CommonPlugin =>\n \"getMdxComponents\" in obj && typeof obj.getMdxComponents === \"function\";\n\nexport const isApiIdentityPlugin = (\n obj: DevPortalPlugin,\n): obj is ApiIdentityPlugin =>\n \"getIdentities\" in obj && typeof obj.getIdentities === \"function\";\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { ReactNode } from \"react\";\nimport type { SidebarConfig } from \"../../config/validators/SidebarSchema.js\";\nimport { type AuthenticationProvider } from \"../authentication/authentication.js\";\nimport type { ComponentsContextType } from \"../components/context/ComponentsContext.js\";\nimport { Slotlets } from \"../components/SlotletProvider.js\";\nimport { joinPath } from \"../util/joinPath.js\";\nimport type { MdxComponentsType } from \"../util/MdxComponents.js\";\nimport {\n type DevPortalPlugin,\n isApiIdentityPlugin,\n isNavigationPlugin,\n type NavigationPlugin,\n needsInitialization,\n} from \"./plugins.js\";\n\nexport interface ApiIdentity {\n authorizeRequest: (request: Request) => Request;\n label: string;\n id: string;\n}\n\nexport const queryClient = new QueryClient();\n\nexport type ApiKeyCache = \"api-keys\";\nexport type DevPortalCacheKey = ApiKeyCache | string;\n\ntype Metadata = Partial<{\n title: string;\n description: string;\n logo: string;\n favicon: string;\n generator: string;\n applicationName: string;\n referrer: string;\n keywords: string[];\n authors: string[];\n creator: string;\n publisher: string;\n}>;\n\ntype Page = Partial<{\n pageTitle?: string;\n logo?: {\n src: {\n light: string;\n dark: string;\n };\n width?: string;\n alt?: string;\n };\n banner?: {\n message: ReactNode;\n color?: \"note\" | \"tip\" | \"info\" | \"caution\" | \"danger\" | (string & {});\n dismissible?: boolean;\n };\n}>;\n\nexport type ZudokuContextOptions = {\n metadata?: Metadata;\n page?: Page;\n authentication?: AuthenticationProvider;\n topNavigation?: Array<{\n id: string;\n label: string;\n default?: string;\n display?: \"auth\" | \"anon\" | \"always\";\n }>;\n sidebars?: SidebarConfig;\n plugins?: DevPortalPlugin[];\n slotlets?: Slotlets;\n mdx?: {\n components?: MdxComponentsType;\n };\n overrides?: ComponentsContextType;\n};\n\nexport class DevPortalContext {\n public plugins: NonNullable<ZudokuContextOptions[\"plugins\"]>;\n public sidebars: NonNullable<ZudokuContextOptions[\"sidebars\"]>;\n public topNavigation: NonNullable<ZudokuContextOptions[\"topNavigation\"]>;\n public meta: ZudokuContextOptions[\"metadata\"];\n public page: ZudokuContextOptions[\"page\"];\n public authentication?: ZudokuContextOptions[\"authentication\"];\n private navigationPlugins: NavigationPlugin[];\n\n constructor(config: ZudokuContextOptions) {\n this.plugins = config.plugins ?? [];\n this.topNavigation = config.topNavigation ?? [];\n this.sidebars = config.sidebars ?? {};\n this.navigationPlugins = this.plugins.filter(isNavigationPlugin);\n this.authentication = config.authentication;\n this.meta = config.metadata;\n this.page = config.page;\n }\n\n initialize = async (): Promise<void> => {\n await Promise.all(\n this.plugins\n .filter(needsInitialization)\n .map((plugin) => plugin.initialize?.(this)),\n );\n };\n\n invalidateCache = async (key: DevPortalCacheKey[]) => {\n await queryClient.invalidateQueries({ queryKey: key });\n };\n\n getApiIdentities = async () => {\n const keys = await Promise.all(\n this.plugins\n .filter(isApiIdentityPlugin)\n .map((plugin) => plugin.getIdentities(this)),\n );\n\n return keys.flat();\n };\n\n getPluginSidebar = async (path: string) => {\n const navigations = await Promise.all(\n this.navigationPlugins.map((plugin) =>\n plugin.getSidebar?.(joinPath(path)),\n ),\n );\n\n return navigations.flatMap((nav) => nav ?? []);\n };\n\n signRequest = async (request: Request) => {\n if (!this.authentication) {\n throw new Error(\"No authentication provider configured\");\n }\n\n const accessToken = await this.authentication.getAccessToken();\n\n request.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n\n return request;\n };\n}\n","import { FallbackProps } from \"react-error-boundary\";\nimport { ErrorAlert } from \"./ErrorAlert.js\";\n\nexport function TopLevelError({ error, resetErrorBoundary }: FallbackProps) {\n // Call resetErrorBoundary() to reset the error boundary and retry the render.\n\n return <ErrorAlert error={error} />;\n}\n","const root = globalThis;\n\nif (!root.requestIdleCallback || !root.cancelIdleCallback) {\n root.requestIdleCallback = (cb: IdleRequestCallback) => setTimeout(cb, 1);\n root.cancelIdleCallback = clearTimeout;\n}\n","\"use client\";\n\n// packages/react/menu/src/Menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs, composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SELECTION_KEYS = [\"Enter\", \" \"];\nvar FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nvar LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nvar FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nvar SUB_OPEN_KEYS = {\n ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nvar SUB_CLOSE_KEYS = {\n ltr: [\"ArrowLeft\"],\n rtl: [\"ArrowRight\"]\n};\nvar MENU_NAME = \"Menu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(MENU_NAME);\nvar [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n createCollectionScope,\n createPopperScope,\n createRovingFocusGroupScope\n]);\nvar usePopperScope = createPopperScope();\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);\nvar [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);\nvar Menu = (props) => {\n const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;\n const popperScope = usePopperScope(__scopeMenu);\n const [content, setContent] = React.useState(null);\n const isUsingKeyboardRef = React.useRef(false);\n const handleOpenChange = useCallbackRef(onOpenChange);\n const direction = useDirection(dir);\n React.useEffect(() => {\n const handleKeyDown = () => {\n isUsingKeyboardRef.current = true;\n document.addEventListener(\"pointerdown\", handlePointer, { capture: true, once: true });\n document.addEventListener(\"pointermove\", handlePointer, { capture: true, once: true });\n };\n const handlePointer = () => isUsingKeyboardRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n document.removeEventListener(\"pointerdown\", handlePointer, { capture: true });\n document.removeEventListener(\"pointermove\", handlePointer, { capture: true });\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuRootProvider,\n {\n scope: __scopeMenu,\n onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),\n isUsingKeyboardRef,\n dir: direction,\n modal,\n children\n }\n )\n }\n ) });\n};\nMenu.displayName = MENU_NAME;\nvar ANCHOR_NAME = \"MenuAnchor\";\nvar MenuAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...anchorProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nMenuAnchor.displayName = ANCHOR_NAME;\nvar PORTAL_NAME = \"MenuPortal\";\nvar [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar MenuPortal = (props) => {\n const { __scopeMenu, forceMount, children, container } = props;\n const context = useMenuContext(PORTAL_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"MenuContent\";\nvar [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME);\nvar MenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });\n }\n);\nvar MenuRootContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const content = ref.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: context.open,\n disableOutsideScroll: true,\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n ),\n onDismiss: () => context.onOpenChange(false)\n }\n );\n }\n);\nvar MenuRootContentNonModal = React.forwardRef((props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n onDismiss: () => context.onOpenChange(false)\n }\n );\n});\nvar MenuContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeMenu,\n loop = false,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEntryFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n disableOutsideScroll,\n ...contentProps\n } = props;\n const context = useMenuContext(CONTENT_NAME, __scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const getItems = useCollection(__scopeMenu);\n const [currentItemId, setCurrentItemId] = React.useState(null);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);\n const timerRef = React.useRef(0);\n const searchRef = React.useRef(\"\");\n const pointerGraceTimerRef = React.useRef(0);\n const pointerGraceIntentRef = React.useRef(null);\n const pointerDirRef = React.useRef(\"right\");\n const lastPointerXRef = React.useRef(0);\n const ScrollLockWrapper = disableOutsideScroll ? RemoveScroll : React.Fragment;\n const scrollLockWrapperProps = disableOutsideScroll ? { as: Slot, allowPinchZoom: true } : void 0;\n const handleTypeaheadSearch = (key) => {\n const search = searchRef.current + key;\n const items = getItems().filter((item) => !item.disabled);\n const currentItem = document.activeElement;\n const currentMatch = items.find((item) => item.ref.current === currentItem)?.textValue;\n const values = items.map((item) => item.textValue);\n const nextMatch = getNextMatch(values, search, currentMatch);\n const newItem = items.find((item) => item.textValue === nextMatch)?.ref.current;\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n if (newItem) {\n setTimeout(() => newItem.focus());\n }\n };\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n useFocusGuards();\n const isPointerMovingToSubmenu = React.useCallback((event) => {\n const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentProvider,\n {\n scope: __scopeMenu,\n searchRef,\n onItemEnter: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n onItemLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) return;\n contentRef.current?.focus();\n setCurrentItemId(null);\n },\n [isPointerMovingToSubmenu]\n ),\n onTriggerLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n pointerGraceTimerRef,\n onPointerGraceIntentChange: React.useCallback((intent) => {\n pointerGraceIntentRef.current = intent;\n }, []),\n children: /* @__PURE__ */ jsx(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: trapFocus,\n onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {\n event.preventDefault();\n contentRef.current?.focus({ preventScroll: true });\n }),\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n children: /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n dir: rootContext.dir,\n orientation: \"vertical\",\n loop,\n currentTabStopId: currentItemId,\n onCurrentTabStopIdChange: setCurrentItemId,\n onEntryFocus: composeEventHandlers(onEntryFocus, (event) => {\n if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();\n }),\n preventScrollOnEntryFocus: true,\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n role: \"menu\",\n \"aria-orientation\": \"vertical\",\n \"data-state\": getOpenState(context.open),\n \"data-radix-menu-content\": \"\",\n dir: rootContext.dir,\n ...popperScope,\n ...contentProps,\n ref: composedRefs,\n style: { outline: \"none\", ...contentProps.style },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const target = event.target;\n const isKeyDownInside = target.closest(\"[data-radix-menu-content]\") === event.currentTarget;\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n const isCharacterKey = event.key.length === 1;\n if (isKeyDownInside) {\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n }\n const content = contentRef.current;\n if (event.target !== content) return;\n if (!FIRST_LAST_KEYS.includes(event.key)) return;\n event.preventDefault();\n const items = getItems().filter((item) => !item.disabled);\n const candidateNodes = items.map((item) => item.ref.current);\n if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n focusFirst(candidateNodes);\n }),\n onBlur: composeEventHandlers(props.onBlur, (event) => {\n if (!event.currentTarget.contains(event.target)) {\n window.clearTimeout(timerRef.current);\n searchRef.current = \"\";\n }\n }),\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n const target = event.target;\n const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n if (event.currentTarget.contains(target) && pointerXHasChanged) {\n const newDir = event.clientX > lastPointerXRef.current ? \"right\" : \"left\";\n pointerDirRef.current = newDir;\n lastPointerXRef.current = event.clientX;\n }\n })\n )\n }\n )\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"MenuGroup\";\nvar MenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...groupProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", ...groupProps, ref: forwardedRef });\n }\n);\nMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"MenuLabel\";\nvar MenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...labelProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...labelProps, ref: forwardedRef });\n }\n);\nMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"MenuItem\";\nvar ITEM_SELECT = \"menu.itemSelect\";\nvar MenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { disabled = false, onSelect, ...itemProps } = props;\n const ref = React.useRef(null);\n const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const isPointerDownRef = React.useRef(false);\n const handleSelect = () => {\n const menuItem = ref.current;\n if (!disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, { bubbles: true, cancelable: true });\n menuItem.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), { once: true });\n dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n if (itemSelectEvent.defaultPrevented) {\n isPointerDownRef.current = false;\n } else {\n rootContext.onClose();\n }\n }\n };\n return /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n ...itemProps,\n ref: composedRefs,\n disabled,\n onClick: composeEventHandlers(props.onClick, handleSelect),\n onPointerDown: (event) => {\n props.onPointerDown?.(event);\n isPointerDownRef.current = true;\n },\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n if (!isPointerDownRef.current) event.currentTarget?.click();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (disabled || isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.currentTarget.click();\n event.preventDefault();\n }\n })\n }\n );\n }\n);\nMenuItem.displayName = ITEM_NAME;\nvar MenuItemImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;\n const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [isFocused, setIsFocused] = React.useState(false);\n const [textContent, setTextContent] = React.useState(\"\");\n React.useEffect(() => {\n const menuItem = ref.current;\n if (menuItem) {\n setTextContent((menuItem.textContent ?? \"\").trim());\n }\n }, [itemProps.children]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeMenu,\n disabled,\n textValue: textValue ?? textContent,\n children: /* @__PURE__ */ jsx(RovingFocusGroup.Item, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"menuitem\",\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n ...itemProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n if (disabled) {\n contentContext.onItemLeave(event);\n } else {\n contentContext.onItemEnter(event);\n if (!event.defaultPrevented) {\n const item = event.currentTarget;\n item.focus({ preventScroll: true });\n }\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => contentContext.onItemLeave(event))\n ),\n onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))\n }\n ) })\n }\n );\n }\n);\nvar CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\nvar MenuCheckboxItem = React.forwardRef(\n (props, forwardedRef) => {\n const { checked = false, onCheckedChange, ...checkboxItemProps } = props;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemcheckbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n ...checkboxItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n checkboxItemProps.onSelect,\n () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"MenuRadioGroup\";\nvar [RadioGroupProvider, useRadioGroupContext] = createMenuContext(\n RADIO_GROUP_NAME,\n { value: void 0, onValueChange: () => {\n } }\n);\nvar MenuRadioGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { value, onValueChange, ...groupProps } = props;\n const handleValueChange = useCallbackRef(onValueChange);\n return /* @__PURE__ */ jsx(RadioGroupProvider, { scope: props.__scopeMenu, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(MenuGroup, { ...groupProps, ref: forwardedRef }) });\n }\n);\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"MenuRadioItem\";\nvar MenuRadioItem = React.forwardRef(\n (props, forwardedRef) => {\n const { value, ...radioItemProps } = props;\n const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);\n const checked = value === context.value;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemradio\",\n \"aria-checked\": checked,\n ...radioItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n radioItemProps.onSelect,\n () => context.onValueChange?.(value),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\nvar [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(\n ITEM_INDICATOR_NAME,\n { checked: false }\n);\nvar MenuItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;\n const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(\n Presence,\n {\n present: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...itemIndicatorProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(indicatorContext.checked)\n }\n )\n }\n );\n }\n);\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SEPARATOR_NAME = \"MenuSeparator\";\nvar MenuSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"separator\",\n \"aria-orientation\": \"horizontal\",\n ...separatorProps,\n ref: forwardedRef\n }\n );\n }\n);\nMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"MenuArrow\";\nvar MenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nMenuArrow.displayName = ARROW_NAME;\nvar SUB_NAME = \"MenuSub\";\nvar [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);\nvar MenuSub = (props) => {\n const { __scopeMenu, children, open = false, onOpenChange } = props;\n const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const [trigger, setTrigger] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const handleOpenChange = useCallbackRef(onOpenChange);\n React.useEffect(() => {\n if (parentMenuContext.open === false) handleOpenChange(false);\n return () => handleOpenChange(false);\n }, [parentMenuContext.open, handleOpenChange]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuSubProvider,\n {\n scope: __scopeMenu,\n contentId: useId(),\n triggerId: useId(),\n trigger,\n onTriggerChange: setTrigger,\n children\n }\n )\n }\n ) });\n};\nMenuSub.displayName = SUB_NAME;\nvar SUB_TRIGGER_NAME = \"MenuSubTrigger\";\nvar MenuSubTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const openTimerRef = React.useRef(null);\n const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n const scope = { __scopeMenu: props.__scopeMenu };\n const clearOpenTimer = React.useCallback(() => {\n if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }, []);\n React.useEffect(() => clearOpenTimer, [clearOpenTimer]);\n React.useEffect(() => {\n const pointerGraceTimer = pointerGraceTimerRef.current;\n return () => {\n window.clearTimeout(pointerGraceTimer);\n onPointerGraceIntentChange(null);\n };\n }, [pointerGraceTimerRef, onPointerGraceIntentChange]);\n return /* @__PURE__ */ jsx(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n id: subContext.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": subContext.contentId,\n \"data-state\": getOpenState(context.open),\n ...props,\n ref: composeRefs(forwardedRef, subContext.onTriggerChange),\n onClick: (event) => {\n props.onClick?.(event);\n if (props.disabled || event.defaultPrevented) return;\n event.currentTarget.focus();\n if (!context.open) context.onOpenChange(true);\n },\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n contentContext.onItemEnter(event);\n if (event.defaultPrevented) return;\n if (!props.disabled && !context.open && !openTimerRef.current) {\n contentContext.onPointerGraceIntentChange(null);\n openTimerRef.current = window.setTimeout(() => {\n context.onOpenChange(true);\n clearOpenTimer();\n }, 100);\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => {\n clearOpenTimer();\n const contentRect = context.content?.getBoundingClientRect();\n if (contentRect) {\n const side = context.content?.dataset.side;\n const rightSide = side === \"right\";\n const bleed = rightSide ? -5 : 5;\n const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom }\n ],\n side\n });\n window.clearTimeout(pointerGraceTimerRef.current);\n pointerGraceTimerRef.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n );\n } else {\n contentContext.onTriggerLeave(event);\n if (event.defaultPrevented) return;\n contentContext.onPointerGraceIntentChange(null);\n }\n })\n ),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (props.disabled || isTypingAhead && event.key === \" \") return;\n if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n context.onOpenChange(true);\n context.content?.focus();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"MenuSubContent\";\nvar MenuSubContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n id: subContext.contentId,\n \"aria-labelledby\": subContext.triggerId,\n ...subContentProps,\n ref: composedRefs,\n align: \"start\",\n side: rootContext.dir === \"rtl\" ? \"left\" : \"right\",\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n trapFocus: false,\n onOpenAutoFocus: (event) => {\n if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();\n event.preventDefault();\n },\n onCloseAutoFocus: (event) => event.preventDefault(),\n onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n if (event.target !== subContext.trigger) context.onOpenChange(false);\n }),\n onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {\n rootContext.onClose();\n event.preventDefault();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isKeyDownInside = event.currentTarget.contains(event.target);\n const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);\n if (isKeyDownInside && isCloseKey) {\n context.onOpenChange(false);\n subContext.trigger?.focus();\n event.preventDefault();\n }\n })\n }\n ) }) }) });\n }\n);\nMenuSubContent.displayName = SUB_CONTENT_NAME;\nfunction getOpenState(open) {\n return open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nfunction getNextMatch(values, search, currentMatch) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n const excludeCurrentMatch = normalizedSearch.length === 1;\n if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n const nextMatch = wrappedValues.find(\n (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextMatch !== currentMatch ? nextMatch : void 0;\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction isPointerInGraceArea(event, area) {\n if (!area) return false;\n const cursorPos = { x: event.clientX, y: event.clientY };\n return isPointInPolygon(cursorPos, area);\n}\nfunction whenMouse(handler) {\n return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root3 = Menu;\nvar Anchor2 = MenuAnchor;\nvar Portal = MenuPortal;\nvar Content2 = MenuContent;\nvar Group = MenuGroup;\nvar Label = MenuLabel;\nvar Item2 = MenuItem;\nvar CheckboxItem = MenuCheckboxItem;\nvar RadioGroup = MenuRadioGroup;\nvar RadioItem = MenuRadioItem;\nvar ItemIndicator = MenuItemIndicator;\nvar Separator = MenuSeparator;\nvar Arrow2 = MenuArrow;\nvar Sub = MenuSub;\nvar SubTrigger = MenuSubTrigger;\nvar SubContent = MenuSubContent;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n CheckboxItem,\n Content2 as Content,\n Group,\n Item2 as Item,\n ItemIndicator,\n Label,\n Menu,\n MenuAnchor,\n MenuArrow,\n MenuCheckboxItem,\n MenuContent,\n MenuGroup,\n MenuItem,\n MenuItemIndicator,\n MenuLabel,\n MenuPortal,\n MenuRadioGroup,\n MenuRadioItem,\n MenuSeparator,\n MenuSub,\n MenuSubContent,\n MenuSubTrigger,\n Portal,\n RadioGroup,\n RadioItem,\n Root3 as Root,\n Separator,\n Sub,\n SubContent,\n SubTrigger,\n createMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/dropdown-menu/src/DropdownMenu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as MenuPrimitive from \"@radix-ui/react-menu\";\nimport { createMenuScope } from \"@radix-ui/react-menu\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DROPDOWN_MENU_NAME = \"DropdownMenu\";\nvar [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(\n DROPDOWN_MENU_NAME,\n [createMenuScope]\n);\nvar useMenuScope = createMenuScope();\nvar [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);\nvar DropdownMenu = (props) => {\n const {\n __scopeDropdownMenu,\n children,\n dir,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const triggerRef = React.useRef(null);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /* @__PURE__ */ jsx(\n DropdownMenuProvider,\n {\n scope: __scopeDropdownMenu,\n triggerId: useId(),\n triggerRef,\n contentId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children: /* @__PURE__ */ jsx(MenuPrimitive.Root, { ...menuScope, open, onOpenChange: setOpen, dir, modal, children })\n }\n );\n};\nDropdownMenu.displayName = DROPDOWN_MENU_NAME;\nvar TRIGGER_NAME = \"DropdownMenuTrigger\";\nvar DropdownMenuTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;\n const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Anchor, { asChild: true, ...menuScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n id: context.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.open ? context.contentId : void 0,\n \"data-state\": context.open ? \"open\" : \"closed\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n ...triggerProps,\n ref: composeRefs(forwardedRef, context.triggerRef),\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onOpenToggle();\n if (!context.open) event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (disabled) return;\n if ([\"Enter\", \" \"].includes(event.key)) context.onOpenToggle();\n if (event.key === \"ArrowDown\") context.onOpenChange(true);\n if ([\"Enter\", \" \", \"ArrowDown\"].includes(event.key)) event.preventDefault();\n })\n }\n ) });\n }\n);\nDropdownMenuTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DropdownMenuPortal\";\nvar DropdownMenuPortal = (props) => {\n const { __scopeDropdownMenu, ...portalProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Portal, { ...menuScope, ...portalProps });\n};\nDropdownMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"DropdownMenuContent\";\nvar DropdownMenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...contentProps } = props;\n const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const hasInteractedOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.Content,\n {\n id: context.contentId,\n \"aria-labelledby\": context.triggerId,\n ...menuScope,\n ...contentProps,\n ref: forwardedRef,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n hasInteractedOutsideRef.current = false;\n event.preventDefault();\n }),\n onInteractOutside: composeEventHandlers(props.onInteractOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;\n }),\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n }\n);\nDropdownMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"DropdownMenuGroup\";\nvar DropdownMenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...groupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Group, { ...menuScope, ...groupProps, ref: forwardedRef });\n }\n);\nDropdownMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"DropdownMenuLabel\";\nvar DropdownMenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...labelProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Label, { ...menuScope, ...labelProps, ref: forwardedRef });\n }\n);\nDropdownMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"DropdownMenuItem\";\nvar DropdownMenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Item, { ...menuScope, ...itemProps, ref: forwardedRef });\n }\n);\nDropdownMenuItem.displayName = ITEM_NAME;\nvar CHECKBOX_ITEM_NAME = \"DropdownMenuCheckboxItem\";\nvar DropdownMenuCheckboxItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...checkboxItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });\n});\nDropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"DropdownMenuRadioGroup\";\nvar DropdownMenuRadioGroup = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioGroupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });\n});\nDropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"DropdownMenuRadioItem\";\nvar DropdownMenuRadioItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });\n});\nDropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar INDICATOR_NAME = \"DropdownMenuItemIndicator\";\nvar DropdownMenuItemIndicator = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemIndicatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });\n});\nDropdownMenuItemIndicator.displayName = INDICATOR_NAME;\nvar SEPARATOR_NAME = \"DropdownMenuSeparator\";\nvar DropdownMenuSeparator = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...separatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });\n});\nDropdownMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"DropdownMenuArrow\";\nvar DropdownMenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...arrowProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Arrow, { ...menuScope, ...arrowProps, ref: forwardedRef });\n }\n);\nDropdownMenuArrow.displayName = ARROW_NAME;\nvar DropdownMenuSub = (props) => {\n const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /* @__PURE__ */ jsx(MenuPrimitive.Sub, { ...menuScope, open, onOpenChange: setOpen, children });\n};\nvar SUB_TRIGGER_NAME = \"DropdownMenuSubTrigger\";\nvar DropdownMenuSubTrigger = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...subTriggerProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.SubTrigger, { ...menuScope, ...subTriggerProps, ref: forwardedRef });\n});\nDropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"DropdownMenuSubContent\";\nvar DropdownMenuSubContent = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...subContentProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.SubContent,\n {\n ...menuScope,\n ...subContentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nDropdownMenuSubContent.displayName = SUB_CONTENT_NAME;\nvar Root2 = DropdownMenu;\nvar Trigger = DropdownMenuTrigger;\nvar Portal2 = DropdownMenuPortal;\nvar Content2 = DropdownMenuContent;\nvar Group2 = DropdownMenuGroup;\nvar Label2 = DropdownMenuLabel;\nvar Item2 = DropdownMenuItem;\nvar CheckboxItem2 = DropdownMenuCheckboxItem;\nvar RadioGroup2 = DropdownMenuRadioGroup;\nvar RadioItem2 = DropdownMenuRadioItem;\nvar ItemIndicator2 = DropdownMenuItemIndicator;\nvar Separator2 = DropdownMenuSeparator;\nvar Arrow2 = DropdownMenuArrow;\nvar Sub2 = DropdownMenuSub;\nvar SubTrigger2 = DropdownMenuSubTrigger;\nvar SubContent2 = DropdownMenuSubContent;\nexport {\n Arrow2 as Arrow,\n CheckboxItem2 as CheckboxItem,\n Content2 as Content,\n DropdownMenu,\n DropdownMenuArrow,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuItemIndicator,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Group2 as Group,\n Item2 as Item,\n ItemIndicator2 as ItemIndicator,\n Label2 as Label,\n Portal2 as Portal,\n RadioGroup2 as RadioGroup,\n RadioItem2 as RadioItem,\n Root2 as Root,\n Separator2 as Separator,\n Sub2 as Sub,\n SubContent2 as SubContent,\n SubTrigger2 as SubTrigger,\n Trigger,\n createDropdownMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\n\nimport { CheckIcon, ChevronRightIcon, DotIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <DotIcon className=\"h-4 w-4 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n","import { CircleXIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { cn } from \"../util/cn.js\";\nimport { useZudoku } from \"./context/ZudokuContext.js\";\n\nconst COLOR_MAP = {\n info: \"bg-blue-500\",\n note: \"bg-gray-500\",\n tip: \"bg-green-600\",\n caution: \"bg-orange-500\",\n danger: \"bg-rose-500\",\n} as const;\n\nexport const Banner = () => {\n const { page } = useZudoku();\n const [isBannerOpen, setIsBannerOpen] = useState(true);\n\n if (!page?.banner || !isBannerOpen) {\n return <style>{`:root { --banner-height: 0px; }`}</style>;\n }\n\n const mappedColor =\n page.banner.color && page.banner.color in COLOR_MAP\n ? COLOR_MAP[page.banner.color as keyof typeof COLOR_MAP]\n : !page.banner.color\n ? \"bg-primary\"\n : undefined;\n\n const style = !mappedColor ? { backgroundColor: page.banner.color } : {};\n\n return (\n <div\n className={cn(\n \"relative text-primary-foreground text-sm font-medium px-4 py-2 flex gap-2 items-center\",\n mappedColor,\n )}\n style={style}\n >\n <div className=\"w-full\">{page.banner.message}</div>\n {page.banner.dismissible && (\n <button\n type=\"button\"\n className=\"md:absolute md:right-4 -m-1.5 p-1.5 hover:bg-accent-foreground/10 rounded-md\"\n onClick={() => setIsBannerOpen(false)}\n >\n <CircleXIcon size={16} />\n </button>\n )}\n </div>\n );\n};\n","'use client';\nfunction __insertCSS(code) {\n if (!code || typeof document == 'undefined') return\n let head = document.head || document.getElementsByTagName('head')[0]\n let style = document.createElement('style')\n style.type = 'text/css'\n head.appendChild(style)\n ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))\n}\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport * as React from 'react';\nimport React__default, { useLayoutEffect, useEffect, useMemo } from 'react';\n\nconst DrawerContext = React__default.createContext({\n drawerRef: {\n current: null\n },\n overlayRef: {\n current: null\n },\n onPress: ()=>{},\n onRelease: ()=>{},\n onDrag: ()=>{},\n onNestedDrag: ()=>{},\n onNestedOpenChange: ()=>{},\n onNestedRelease: ()=>{},\n openProp: undefined,\n dismissible: false,\n isOpen: false,\n isDragging: false,\n keyboardIsOpen: {\n current: false\n },\n snapPointsOffset: null,\n snapPoints: null,\n handleOnly: false,\n modal: false,\n shouldFade: false,\n activeSnapPoint: null,\n onOpenChange: ()=>{},\n setActiveSnapPoint: ()=>{},\n closeDrawer: ()=>{},\n direction: 'bottom',\n shouldAnimate: {\n current: true\n },\n shouldScaleBackground: false,\n setBackgroundColorOnScale: true,\n noBodyStyles: false,\n container: null,\n autoFocus: false\n});\nconst useDrawerContext = ()=>{\n const context = React__default.useContext(DrawerContext);\n if (!context) {\n throw new Error('useDrawerContext must be used within a Drawer.Root');\n }\n return context;\n};\n\n__insertCSS(\"[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(\\n[data-state=closed]\\n){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}\");\n\nfunction isMobileFirefox() {\n const userAgent = navigator.userAgent;\n return typeof window !== 'undefined' && (/Firefox/.test(userAgent) && /Mobile/.test(userAgent) || // Android Firefox\n /FxiOS/.test(userAgent) // iOS Firefox\n );\n}\nfunction isMac() {\n return testPlatform(/^Mac/);\n}\nfunction isIPhone() {\n return testPlatform(/^iPhone/);\n}\nfunction isSafari() {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n}\nfunction isIPad() {\n return testPlatform(/^iPad/) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n isMac() && navigator.maxTouchPoints > 1;\n}\nfunction isIOS() {\n return isIPhone() || isIPad();\n}\nfunction testPlatform(re) {\n return typeof window !== 'undefined' && window.navigator != null ? re.test(window.navigator.platform) : undefined;\n}\n\n// This code comes from https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/overlays/src/usePreventScroll.ts\nconst KEYBOARD_BUFFER = 24;\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\nfunction chain$1(...callbacks) {\n return (...args)=>{\n for (let callback of callbacks){\n if (typeof callback === 'function') {\n callback(...args);\n }\n }\n };\n}\n// @ts-ignore\nconst visualViewport = typeof document !== 'undefined' && window.visualViewport;\nfunction isScrollable(node) {\n let style = window.getComputedStyle(node);\n return /(auto|scroll)/.test(style.overflow + style.overflowX + style.overflowY);\n}\nfunction getScrollParent(node) {\n if (isScrollable(node)) {\n node = node.parentElement;\n }\n while(node && !isScrollable(node)){\n node = node.parentElement;\n }\n return node || document.scrollingElement || document.documentElement;\n}\n// HTML input types that do not cause the software keyboard to appear.\nconst nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n// The number of active usePreventScroll calls. Used to determine whether to revert back to the original page style/scroll position\nlet preventScrollCount = 0;\nlet restore;\n/**\n * Prevents scrolling on the document body on mount, and\n * restores it on unmount. Also ensures that content does not\n * shift due to the scrollbars disappearing.\n */ function usePreventScroll(options = {}) {\n let { isDisabled } = options;\n useIsomorphicLayoutEffect(()=>{\n if (isDisabled) {\n return;\n }\n preventScrollCount++;\n if (preventScrollCount === 1) {\n if (isIOS()) {\n restore = preventScrollMobileSafari();\n }\n }\n return ()=>{\n preventScrollCount--;\n if (preventScrollCount === 0) {\n restore == null ? void 0 : restore();\n }\n };\n }, [\n isDisabled\n ]);\n}\n// Mobile Safari is a whole different beast. Even with overflow: hidden,\n// it still scrolls the page in many situations:\n//\n// 1. When the bottom toolbar and address bar are collapsed, page scrolling is always allowed.\n// 2. When the keyboard is visible, the viewport does not resize. Instead, the keyboard covers part of\n// it, so it becomes scrollable.\n// 3. When tapping on an input, the page always scrolls so that the input is centered in the visual viewport.\n// This may cause even fixed position elements to scroll off the screen.\n// 4. When using the next/previous buttons in the keyboard to navigate between inputs, the whole page always\n// scrolls, even if the input is inside a nested scrollable element that could be scrolled instead.\n//\n// In order to work around these cases, and prevent scrolling without jankiness, we do a few things:\n//\n// 1. Prevent default on `touchmove` events that are not in a scrollable element. This prevents touch scrolling\n// on the window.\n// 2. Prevent default on `touchmove` events inside a scrollable element when the scroll position is at the\n// top or bottom. This avoids the whole page scrolling instead, but does prevent overscrolling.\n// 3. Prevent default on `touchend` events on input elements and handle focusing the element ourselves.\n// 4. When focusing an input, apply a transform to trick Safari into thinking the input is at the top\n// of the page, which prevents it from scrolling the page. After the input is focused, scroll the element\n// into view ourselves, without scrolling the whole page.\n// 5. Offset the body by the scroll position using a negative margin and scroll to the top. This should appear the\n// same visually, but makes the actual scroll position always zero. This is required to make all of the\n// above work or Safari will still try to scroll the page when focusing an input.\n// 6. As a last resort, handle window scroll events, and scroll back to the top. This can happen when attempting\n// to navigate to an input with the next/previous buttons that's outside a modal.\nfunction preventScrollMobileSafari() {\n let scrollable;\n let lastY = 0;\n let onTouchStart = (e)=>{\n // Store the nearest scrollable parent element from the element that the user touched.\n scrollable = getScrollParent(e.target);\n if (scrollable === document.documentElement && scrollable === document.body) {\n return;\n }\n lastY = e.changedTouches[0].pageY;\n };\n let onTouchMove = (e)=>{\n // Prevent scrolling the window.\n if (!scrollable || scrollable === document.documentElement || scrollable === document.body) {\n e.preventDefault();\n return;\n }\n // Prevent scrolling up when at the top and scrolling down when at the bottom\n // of a nested scrollable area, otherwise mobile Safari will start scrolling\n // the window instead. Unfortunately, this disables bounce scrolling when at\n // the top but it's the best we can do.\n let y = e.changedTouches[0].pageY;\n let scrollTop = scrollable.scrollTop;\n let bottom = scrollable.scrollHeight - scrollable.clientHeight;\n if (bottom === 0) {\n return;\n }\n if (scrollTop <= 0 && y > lastY || scrollTop >= bottom && y < lastY) {\n e.preventDefault();\n }\n lastY = y;\n };\n let onTouchEnd = (e)=>{\n let target = e.target;\n // Apply this change if we're not already focused on the target element\n if (isInput(target) && target !== document.activeElement) {\n e.preventDefault();\n // Apply a transform to trick Safari into thinking the input is at the top of the page\n // so it doesn't try to scroll it into view. When tapping on an input, this needs to\n // be done before the \"focus\" event, so we have to focus the element ourselves.\n target.style.transform = 'translateY(-2000px)';\n target.focus();\n requestAnimationFrame(()=>{\n target.style.transform = '';\n });\n }\n };\n let onFocus = (e)=>{\n let target = e.target;\n if (isInput(target)) {\n // Transform also needs to be applied in the focus event in cases where focus moves\n // other than tapping on an input directly, e.g. the next/previous buttons in the\n // software keyboard. In these cases, it seems applying the transform in the focus event\n // is good enough, whereas when tapping an input, it must be done before the focus event. 🤷‍♂️\n target.style.transform = 'translateY(-2000px)';\n requestAnimationFrame(()=>{\n target.style.transform = '';\n // This will have prevented the browser from scrolling the focused element into view,\n // so we need to do this ourselves in a way that doesn't cause the whole page to scroll.\n if (visualViewport) {\n if (visualViewport.height < window.innerHeight) {\n // If the keyboard is already visible, do this after one additional frame\n // to wait for the transform to be removed.\n requestAnimationFrame(()=>{\n scrollIntoView(target);\n });\n } else {\n // Otherwise, wait for the visual viewport to resize before scrolling so we can\n // measure the correct position to scroll to.\n visualViewport.addEventListener('resize', ()=>scrollIntoView(target), {\n once: true\n });\n }\n }\n });\n }\n };\n let onWindowScroll = ()=>{\n // Last resort. If the window scrolled, scroll it back to the top.\n // It should always be at the top because the body will have a negative margin (see below).\n window.scrollTo(0, 0);\n };\n // Record the original scroll position so we can restore it.\n // Then apply a negative margin to the body to offset it by the scroll position. This will\n // enable us to scroll the window to the top, which is required for the rest of this to work.\n let scrollX = window.pageXOffset;\n let scrollY = window.pageYOffset;\n let restoreStyles = chain$1(setStyle(document.documentElement, 'paddingRight', `${window.innerWidth - document.documentElement.clientWidth}px`));\n // Scroll to the top. The negative margin on the body will make this appear the same.\n window.scrollTo(0, 0);\n let removeEvents = chain$1(addEvent(document, 'touchstart', onTouchStart, {\n passive: false,\n capture: true\n }), addEvent(document, 'touchmove', onTouchMove, {\n passive: false,\n capture: true\n }), addEvent(document, 'touchend', onTouchEnd, {\n passive: false,\n capture: true\n }), addEvent(document, 'focus', onFocus, true), addEvent(window, 'scroll', onWindowScroll));\n return ()=>{\n // Restore styles and scroll the page back to where it was.\n restoreStyles();\n removeEvents();\n window.scrollTo(scrollX, scrollY);\n };\n}\n// Sets a CSS property on an element, and returns a function to revert it to the previous value.\nfunction setStyle(element, style, value) {\n // https://github.com/microsoft/TypeScript/issues/17827#issuecomment-391663310\n // @ts-ignore\n let cur = element.style[style];\n // @ts-ignore\n element.style[style] = value;\n return ()=>{\n // @ts-ignore\n element.style[style] = cur;\n };\n}\n// Adds an event listener to an element, and returns a function to remove it.\nfunction addEvent(target, event, handler, options) {\n // @ts-ignore\n target.addEventListener(event, handler, options);\n return ()=>{\n // @ts-ignore\n target.removeEventListener(event, handler, options);\n };\n}\nfunction scrollIntoView(target) {\n let root = document.scrollingElement || document.documentElement;\n while(target && target !== root){\n // Find the parent scrollable element and adjust the scroll position if the target is not already in view.\n let scrollable = getScrollParent(target);\n if (scrollable !== document.documentElement && scrollable !== document.body && scrollable !== target) {\n let scrollableTop = scrollable.getBoundingClientRect().top;\n let targetTop = target.getBoundingClientRect().top;\n let targetBottom = target.getBoundingClientRect().bottom;\n // Buffer is needed for some edge cases\n const keyboardHeight = scrollable.getBoundingClientRect().bottom + KEYBOARD_BUFFER;\n if (targetBottom > keyboardHeight) {\n scrollable.scrollTop += targetTop - scrollableTop;\n }\n }\n // @ts-ignore\n target = scrollable.parentElement;\n }\n}\nfunction isInput(target) {\n return target instanceof HTMLInputElement && !nonTextInputTypes.has(target.type) || target instanceof HTMLTextAreaElement || target instanceof HTMLElement && target.isContentEditable;\n}\n\n// This code comes from https://github.com/radix-ui/primitives/tree/main/packages/react/compose-refs\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */ function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */ function composeRefs(...refs) {\n return (node)=>refs.forEach((ref)=>setRef(ref, node));\n}\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */ function useComposedRefs(...refs) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nconst cache = new WeakMap();\nfunction set(el, styles, ignoreCache = false) {\n if (!el || !(el instanceof HTMLElement)) return;\n let originalStyles = {};\n Object.entries(styles).forEach(([key, value])=>{\n if (key.startsWith('--')) {\n el.style.setProperty(key, value);\n return;\n }\n originalStyles[key] = el.style[key];\n el.style[key] = value;\n });\n if (ignoreCache) return;\n cache.set(el, originalStyles);\n}\nfunction reset(el, prop) {\n if (!el || !(el instanceof HTMLElement)) return;\n let originalStyles = cache.get(el);\n if (!originalStyles) {\n return;\n }\n {\n el.style[prop] = originalStyles[prop];\n }\n}\nconst isVertical = (direction)=>{\n switch(direction){\n case 'top':\n case 'bottom':\n return true;\n case 'left':\n case 'right':\n return false;\n default:\n return direction;\n }\n};\nfunction getTranslate(element, direction) {\n if (!element) {\n return null;\n }\n const style = window.getComputedStyle(element);\n const transform = // @ts-ignore\n style.transform || style.webkitTransform || style.mozTransform;\n let mat = transform.match(/^matrix3d\\((.+)\\)$/);\n if (mat) {\n // https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix3d\n return parseFloat(mat[1].split(', ')[isVertical(direction) ? 13 : 12]);\n }\n // https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix\n mat = transform.match(/^matrix\\((.+)\\)$/);\n return mat ? parseFloat(mat[1].split(', ')[isVertical(direction) ? 5 : 4]) : null;\n}\nfunction dampenValue(v) {\n return 8 * (Math.log(v + 1) - 2);\n}\nfunction assignStyle(element, style) {\n if (!element) return ()=>{};\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return ()=>{\n element.style.cssText = prevStyle;\n };\n}\n/**\n * Receives functions as arguments and returns a new function that calls all.\n */ function chain(...fns) {\n return (...args)=>{\n for (const fn of fns){\n if (typeof fn === 'function') {\n // @ts-ignore\n fn(...args);\n }\n }\n };\n}\n\nconst TRANSITIONS = {\n DURATION: 0.5,\n EASE: [\n 0.32,\n 0.72,\n 0,\n 1\n ]\n};\nconst VELOCITY_THRESHOLD = 0.4;\nconst CLOSE_THRESHOLD = 0.25;\nconst SCROLL_LOCK_TIMEOUT = 100;\nconst BORDER_RADIUS = 8;\nconst NESTED_DISPLACEMENT = 16;\nconst WINDOW_TOP_OFFSET = 26;\nconst DRAG_CLASS = 'vaul-dragging';\n\n// This code comes from https://github.com/radix-ui/primitives/blob/main/packages/react/use-controllable-state/src/useControllableState.tsx\nfunction useCallbackRef(callback) {\n const callbackRef = React__default.useRef(callback);\n React__default.useEffect(()=>{\n callbackRef.current = callback;\n });\n // https://github.com/facebook/react/issues/19240\n return React__default.useMemo(()=>(...args)=>callbackRef.current == null ? void 0 : callbackRef.current.call(callbackRef, ...args), []);\n}\nfunction useUncontrolledState({ defaultProp, onChange }) {\n const uncontrolledState = React__default.useState(defaultProp);\n const [value] = uncontrolledState;\n const prevValueRef = React__default.useRef(value);\n const handleChange = useCallbackRef(onChange);\n React__default.useEffect(()=>{\n if (prevValueRef.current !== value) {\n handleChange(value);\n prevValueRef.current = value;\n }\n }, [\n value,\n prevValueRef,\n handleChange\n ]);\n return uncontrolledState;\n}\nfunction useControllableState({ prop, defaultProp, onChange = ()=>{} }) {\n const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== undefined;\n const value = isControlled ? prop : uncontrolledProp;\n const handleChange = useCallbackRef(onChange);\n const setValue = React__default.useCallback((nextValue)=>{\n if (isControlled) {\n const setter = nextValue;\n const value = typeof nextValue === 'function' ? setter(prop) : nextValue;\n if (value !== prop) handleChange(value);\n } else {\n setUncontrolledProp(nextValue);\n }\n }, [\n isControlled,\n prop,\n setUncontrolledProp,\n handleChange\n ]);\n return [\n value,\n setValue\n ];\n}\n\nfunction useSnapPoints({ activeSnapPointProp, setActiveSnapPointProp, snapPoints, drawerRef, overlayRef, fadeFromIndex, onSnapPointChange, direction = 'bottom', container, snapToSequentialPoint }) {\n const [activeSnapPoint, setActiveSnapPoint] = useControllableState({\n prop: activeSnapPointProp,\n defaultProp: snapPoints == null ? void 0 : snapPoints[0],\n onChange: setActiveSnapPointProp\n });\n const [windowDimensions, setWindowDimensions] = React__default.useState(typeof window !== 'undefined' ? {\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight\n } : undefined);\n React__default.useEffect(()=>{\n function onResize() {\n setWindowDimensions({\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight\n });\n }\n window.addEventListener('resize', onResize);\n return ()=>window.removeEventListener('resize', onResize);\n }, []);\n const isLastSnapPoint = React__default.useMemo(()=>activeSnapPoint === (snapPoints == null ? void 0 : snapPoints[snapPoints.length - 1]) || null, [\n snapPoints,\n activeSnapPoint\n ]);\n const activeSnapPointIndex = React__default.useMemo(()=>{\n var _snapPoints_findIndex;\n return (_snapPoints_findIndex = snapPoints == null ? void 0 : snapPoints.findIndex((snapPoint)=>snapPoint === activeSnapPoint)) != null ? _snapPoints_findIndex : null;\n }, [\n snapPoints,\n activeSnapPoint\n ]);\n const shouldFade = snapPoints && snapPoints.length > 0 && (fadeFromIndex || fadeFromIndex === 0) && !Number.isNaN(fadeFromIndex) && snapPoints[fadeFromIndex] === activeSnapPoint || !snapPoints;\n const snapPointsOffset = React__default.useMemo(()=>{\n const containerSize = container ? {\n width: container.getBoundingClientRect().width,\n height: container.getBoundingClientRect().height\n } : typeof window !== 'undefined' ? {\n width: window.innerWidth,\n height: window.innerHeight\n } : {\n width: 0,\n height: 0\n };\n var _snapPoints_map;\n return (_snapPoints_map = snapPoints == null ? void 0 : snapPoints.map((snapPoint)=>{\n const isPx = typeof snapPoint === 'string';\n let snapPointAsNumber = 0;\n if (isPx) {\n snapPointAsNumber = parseInt(snapPoint, 10);\n }\n if (isVertical(direction)) {\n const height = isPx ? snapPointAsNumber : windowDimensions ? snapPoint * containerSize.height : 0;\n if (windowDimensions) {\n return direction === 'bottom' ? containerSize.height - height : -containerSize.height + height;\n }\n return height;\n }\n const width = isPx ? snapPointAsNumber : windowDimensions ? snapPoint * containerSize.width : 0;\n if (windowDimensions) {\n return direction === 'right' ? containerSize.width - width : -containerSize.width + width;\n }\n return width;\n })) != null ? _snapPoints_map : [];\n }, [\n snapPoints,\n windowDimensions,\n container\n ]);\n const activeSnapPointOffset = React__default.useMemo(()=>activeSnapPointIndex !== null ? snapPointsOffset == null ? void 0 : snapPointsOffset[activeSnapPointIndex] : null, [\n snapPointsOffset,\n activeSnapPointIndex\n ]);\n const snapToPoint = React__default.useCallback((dimension)=>{\n var _snapPointsOffset_findIndex;\n const newSnapPointIndex = (_snapPointsOffset_findIndex = snapPointsOffset == null ? void 0 : snapPointsOffset.findIndex((snapPointDim)=>snapPointDim === dimension)) != null ? _snapPointsOffset_findIndex : null;\n onSnapPointChange(newSnapPointIndex);\n set(drawerRef.current, {\n transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n transform: isVertical(direction) ? `translate3d(0, ${dimension}px, 0)` : `translate3d(${dimension}px, 0, 0)`\n });\n if (snapPointsOffset && newSnapPointIndex !== snapPointsOffset.length - 1 && fadeFromIndex !== undefined && newSnapPointIndex !== fadeFromIndex && newSnapPointIndex < fadeFromIndex) {\n set(overlayRef.current, {\n transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n opacity: '0'\n });\n } else {\n set(overlayRef.current, {\n transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n opacity: '1'\n });\n }\n setActiveSnapPoint(snapPoints == null ? void 0 : snapPoints[Math.max(newSnapPointIndex, 0)]);\n }, [\n drawerRef.current,\n snapPoints,\n snapPointsOffset,\n fadeFromIndex,\n overlayRef,\n setActiveSnapPoint\n ]);\n React__default.useEffect(()=>{\n if (activeSnapPoint || activeSnapPointProp) {\n var _snapPoints_findIndex;\n const newIndex = (_snapPoints_findIndex = snapPoints == null ? void 0 : snapPoints.findIndex((snapPoint)=>snapPoint === activeSnapPointProp || snapPoint === activeSnapPoint)) != null ? _snapPoints_findIndex : -1;\n if (snapPointsOffset && newIndex !== -1 && typeof snapPointsOffset[newIndex] === 'number') {\n snapToPoint(snapPointsOffset[newIndex]);\n }\n }\n }, [\n activeSnapPoint,\n activeSnapPointProp,\n snapPoints,\n snapPointsOffset,\n snapToPoint\n ]);\n function onRelease({ draggedDistance, closeDrawer, velocity, dismissible }) {\n if (fadeFromIndex === undefined) return;\n const currentPosition = direction === 'bottom' || direction === 'right' ? (activeSnapPointOffset != null ? activeSnapPointOffset : 0) - draggedDistance : (activeSnapPointOffset != null ? activeSnapPointOffset : 0) + draggedDistance;\n const isOverlaySnapPoint = activeSnapPointIndex === fadeFromIndex - 1;\n const isFirst = activeSnapPointIndex === 0;\n const hasDraggedUp = draggedDistance > 0;\n if (isOverlaySnapPoint) {\n set(overlayRef.current, {\n transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n });\n }\n if (!snapToSequentialPoint && velocity > 2 && !hasDraggedUp) {\n if (dismissible) closeDrawer();\n else snapToPoint(snapPointsOffset[0]); // snap to initial point\n return;\n }\n if (!snapToSequentialPoint && velocity > 2 && hasDraggedUp && snapPointsOffset && snapPoints) {\n snapToPoint(snapPointsOffset[snapPoints.length - 1]);\n return;\n }\n // Find the closest snap point to the current position\n const closestSnapPoint = snapPointsOffset == null ? void 0 : snapPointsOffset.reduce((prev, curr)=>{\n if (typeof prev !== 'number' || typeof curr !== 'number') return prev;\n return Math.abs(curr - currentPosition) < Math.abs(prev - currentPosition) ? curr : prev;\n });\n const dim = isVertical(direction) ? window.innerHeight : window.innerWidth;\n if (velocity > VELOCITY_THRESHOLD && Math.abs(draggedDistance) < dim * 0.4) {\n const dragDirection = hasDraggedUp ? 1 : -1; // 1 = up, -1 = down\n // Don't do anything if we swipe upwards while being on the last snap point\n if (dragDirection > 0 && isLastSnapPoint && snapPoints) {\n snapToPoint(snapPointsOffset[snapPoints.length - 1]);\n return;\n }\n if (isFirst && dragDirection < 0 && dismissible) {\n closeDrawer();\n }\n if (activeSnapPointIndex === null) return;\n snapToPoint(snapPointsOffset[activeSnapPointIndex + dragDirection]);\n return;\n }\n snapToPoint(closestSnapPoint);\n }\n function onDrag({ draggedDistance }) {\n if (activeSnapPointOffset === null) return;\n const newValue = direction === 'bottom' || direction === 'right' ? activeSnapPointOffset - draggedDistance : activeSnapPointOffset + draggedDistance;\n // Don't do anything if we exceed the last(biggest) snap point\n if ((direction === 'bottom' || direction === 'right') && newValue < snapPointsOffset[snapPointsOffset.length - 1]) {\n return;\n }\n if ((direction === 'top' || direction === 'left') && newValue > snapPointsOffset[snapPointsOffset.length - 1]) {\n return;\n }\n set(drawerRef.current, {\n transform: isVertical(direction) ? `translate3d(0, ${newValue}px, 0)` : `translate3d(${newValue}px, 0, 0)`\n });\n }\n function getPercentageDragged(absDraggedDistance, isDraggingDown) {\n if (!snapPoints || typeof activeSnapPointIndex !== 'number' || !snapPointsOffset || fadeFromIndex === undefined) return null;\n // If this is true we are dragging to a snap point that is supposed to have an overlay\n const isOverlaySnapPoint = activeSnapPointIndex === fadeFromIndex - 1;\n const isOverlaySnapPointOrHigher = activeSnapPointIndex >= fadeFromIndex;\n if (isOverlaySnapPointOrHigher && isDraggingDown) {\n return 0;\n }\n // Don't animate, but still use this one if we are dragging away from the overlaySnapPoint\n if (isOverlaySnapPoint && !isDraggingDown) return 1;\n if (!shouldFade && !isOverlaySnapPoint) return null;\n // Either fadeFrom index or the one before\n const targetSnapPointIndex = isOverlaySnapPoint ? activeSnapPointIndex + 1 : activeSnapPointIndex - 1;\n // Get the distance from overlaySnapPoint to the one before or vice-versa to calculate the opacity percentage accordingly\n const snapPointDistance = isOverlaySnapPoint ? snapPointsOffset[targetSnapPointIndex] - snapPointsOffset[targetSnapPointIndex - 1] : snapPointsOffset[targetSnapPointIndex + 1] - snapPointsOffset[targetSnapPointIndex];\n const percentageDragged = absDraggedDistance / Math.abs(snapPointDistance);\n if (isOverlaySnapPoint) {\n return 1 - percentageDragged;\n } else {\n return percentageDragged;\n }\n }\n return {\n isLastSnapPoint,\n activeSnapPoint,\n shouldFade,\n getPercentageDragged,\n setActiveSnapPoint,\n activeSnapPointIndex,\n onRelease,\n onDrag,\n snapPointsOffset\n };\n}\n\nconst noop = ()=>()=>{};\nfunction useScaleBackground() {\n const { direction, isOpen, shouldScaleBackground, setBackgroundColorOnScale, noBodyStyles } = useDrawerContext();\n const timeoutIdRef = React__default.useRef(null);\n const initialBackgroundColor = useMemo(()=>document.body.style.backgroundColor, []);\n function getScale() {\n return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;\n }\n React__default.useEffect(()=>{\n if (isOpen && shouldScaleBackground) {\n if (timeoutIdRef.current) clearTimeout(timeoutIdRef.current);\n const wrapper = document.querySelector('[data-vaul-drawer-wrapper]') || document.querySelector('[vaul-drawer-wrapper]');\n if (!wrapper) return;\n chain(setBackgroundColorOnScale && !noBodyStyles ? assignStyle(document.body, {\n background: 'black'\n }) : noop, assignStyle(wrapper, {\n transformOrigin: isVertical(direction) ? 'top' : 'left',\n transitionProperty: 'transform, border-radius',\n transitionDuration: `${TRANSITIONS.DURATION}s`,\n transitionTimingFunction: `cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n }));\n const wrapperStylesCleanup = assignStyle(wrapper, {\n borderRadius: `${BORDER_RADIUS}px`,\n overflow: 'hidden',\n ...isVertical(direction) ? {\n transform: `scale(${getScale()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`\n } : {\n transform: `scale(${getScale()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`\n }\n });\n return ()=>{\n wrapperStylesCleanup();\n timeoutIdRef.current = window.setTimeout(()=>{\n if (initialBackgroundColor) {\n document.body.style.background = initialBackgroundColor;\n } else {\n document.body.style.removeProperty('background');\n }\n }, TRANSITIONS.DURATION * 1000);\n };\n }\n }, [\n isOpen,\n shouldScaleBackground,\n initialBackgroundColor\n ]);\n}\n\nlet previousBodyPosition = null;\n/**\n * This hook is necessary to prevent buggy behavior on iOS devices (need to test on Android).\n * I won't get into too much detail about what bugs it solves, but so far I've found that setting the body to `position: fixed` is the most reliable way to prevent those bugs.\n * Issues that this hook solves:\n * https://github.com/emilkowalski/vaul/issues/435\n * https://github.com/emilkowalski/vaul/issues/433\n * And more that I discovered, but were just not reported.\n */ function usePositionFixed({ isOpen, modal, nested, hasBeenOpened, preventScrollRestoration, noBodyStyles }) {\n const [activeUrl, setActiveUrl] = React__default.useState(()=>typeof window !== 'undefined' ? window.location.href : '');\n const scrollPos = React__default.useRef(0);\n const setPositionFixed = React__default.useCallback(()=>{\n // All browsers on iOS will return true here.\n if (!isSafari()) return;\n // If previousBodyPosition is already set, don't set it again.\n if (previousBodyPosition === null && isOpen && !noBodyStyles) {\n previousBodyPosition = {\n position: document.body.style.position,\n top: document.body.style.top,\n left: document.body.style.left,\n height: document.body.style.height,\n right: 'unset'\n };\n // Update the dom inside an animation frame\n const { scrollX, innerHeight } = window;\n document.body.style.setProperty('position', 'fixed', 'important');\n Object.assign(document.body.style, {\n top: `${-scrollPos.current}px`,\n left: `${-scrollX}px`,\n right: '0px',\n height: 'auto'\n });\n window.setTimeout(()=>window.requestAnimationFrame(()=>{\n // Attempt to check if the bottom bar appeared due to the position change\n const bottomBarHeight = innerHeight - window.innerHeight;\n if (bottomBarHeight && scrollPos.current >= innerHeight) {\n // Move the content further up so that the bottom bar doesn't hide it\n document.body.style.top = `${-(scrollPos.current + bottomBarHeight)}px`;\n }\n }), 300);\n }\n }, [\n isOpen\n ]);\n const restorePositionSetting = React__default.useCallback(()=>{\n // All browsers on iOS will return true here.\n if (!isSafari()) return;\n if (previousBodyPosition !== null && !noBodyStyles) {\n // Convert the position from \"px\" to Int\n const y = -parseInt(document.body.style.top, 10);\n const x = -parseInt(document.body.style.left, 10);\n // Restore styles\n Object.assign(document.body.style, previousBodyPosition);\n window.requestAnimationFrame(()=>{\n if (preventScrollRestoration && activeUrl !== window.location.href) {\n setActiveUrl(window.location.href);\n return;\n }\n window.scrollTo(x, y);\n });\n previousBodyPosition = null;\n }\n }, [\n activeUrl\n ]);\n React__default.useEffect(()=>{\n function onScroll() {\n scrollPos.current = window.scrollY;\n }\n onScroll();\n window.addEventListener('scroll', onScroll);\n return ()=>{\n window.removeEventListener('scroll', onScroll);\n };\n }, []);\n React__default.useEffect(()=>{\n if (!modal) return;\n return ()=>{\n if (typeof document === 'undefined') return;\n // Another drawer is opened, safe to ignore the execution\n const hasDrawerOpened = !!document.querySelector('[data-vaul-drawer]');\n if (hasDrawerOpened) return;\n restorePositionSetting();\n };\n }, [\n modal,\n restorePositionSetting\n ]);\n React__default.useEffect(()=>{\n if (nested || !hasBeenOpened) return;\n // This is needed to force Safari toolbar to show **before** the drawer starts animating to prevent a gnarly shift from happening\n if (isOpen) {\n // avoid for standalone mode (PWA)\n const isStandalone = window.matchMedia('(display-mode: standalone)').matches;\n !isStandalone && setPositionFixed();\n if (!modal) {\n window.setTimeout(()=>{\n restorePositionSetting();\n }, 500);\n }\n } else {\n restorePositionSetting();\n }\n }, [\n isOpen,\n hasBeenOpened,\n activeUrl,\n modal,\n nested,\n setPositionFixed,\n restorePositionSetting\n ]);\n return {\n restorePositionSetting\n };\n}\n\nfunction Root({ open: openProp, onOpenChange, children, onDrag: onDragProp, onRelease: onReleaseProp, snapPoints, shouldScaleBackground = false, setBackgroundColorOnScale = true, closeThreshold = CLOSE_THRESHOLD, scrollLockTimeout = SCROLL_LOCK_TIMEOUT, dismissible = true, handleOnly = false, fadeFromIndex = snapPoints && snapPoints.length - 1, activeSnapPoint: activeSnapPointProp, setActiveSnapPoint: setActiveSnapPointProp, fixed, modal = true, onClose, nested, noBodyStyles = false, direction = 'bottom', defaultOpen = false, disablePreventScroll = true, snapToSequentialPoint = false, preventScrollRestoration = false, repositionInputs = true, onAnimationEnd, container, autoFocus = false }) {\n var _drawerRef_current, _drawerRef_current1;\n const [isOpen = false, setIsOpen] = useControllableState({\n defaultProp: defaultOpen,\n prop: openProp,\n onChange: (o)=>{\n onOpenChange == null ? void 0 : onOpenChange(o);\n if (!o && !nested) {\n restorePositionSetting();\n }\n setTimeout(()=>{\n onAnimationEnd == null ? void 0 : onAnimationEnd(o);\n }, TRANSITIONS.DURATION * 1000);\n if (o && !modal) {\n if (typeof window !== 'undefined') {\n window.requestAnimationFrame(()=>{\n document.body.style.pointerEvents = 'auto';\n });\n }\n }\n if (!o) {\n // This will be removed when the exit animation ends (`500ms`)\n document.body.style.pointerEvents = 'auto';\n }\n }\n });\n const [hasBeenOpened, setHasBeenOpened] = React__default.useState(false);\n const [isDragging, setIsDragging] = React__default.useState(false);\n const [justReleased, setJustReleased] = React__default.useState(false);\n const overlayRef = React__default.useRef(null);\n const openTime = React__default.useRef(null);\n const dragStartTime = React__default.useRef(null);\n const dragEndTime = React__default.useRef(null);\n const lastTimeDragPrevented = React__default.useRef(null);\n const isAllowedToDrag = React__default.useRef(false);\n const nestedOpenChangeTimer = React__default.useRef(null);\n const pointerStart = React__default.useRef(0);\n const keyboardIsOpen = React__default.useRef(false);\n const shouldAnimate = React__default.useRef(!defaultOpen);\n const previousDiffFromInitial = React__default.useRef(0);\n const drawerRef = React__default.useRef(null);\n const drawerHeightRef = React__default.useRef(((_drawerRef_current = drawerRef.current) == null ? void 0 : _drawerRef_current.getBoundingClientRect().height) || 0);\n const drawerWidthRef = React__default.useRef(((_drawerRef_current1 = drawerRef.current) == null ? void 0 : _drawerRef_current1.getBoundingClientRect().width) || 0);\n const initialDrawerHeight = React__default.useRef(0);\n const onSnapPointChange = React__default.useCallback((activeSnapPointIndex)=>{\n // Change openTime ref when we reach the last snap point to prevent dragging for 500ms incase it's scrollable.\n if (snapPoints && activeSnapPointIndex === snapPointsOffset.length - 1) openTime.current = new Date();\n }, []);\n const { activeSnapPoint, activeSnapPointIndex, setActiveSnapPoint, onRelease: onReleaseSnapPoints, snapPointsOffset, onDrag: onDragSnapPoints, shouldFade, getPercentageDragged: getSnapPointsPercentageDragged } = useSnapPoints({\n snapPoints,\n activeSnapPointProp,\n setActiveSnapPointProp,\n drawerRef,\n fadeFromIndex,\n overlayRef,\n onSnapPointChange,\n direction,\n container,\n snapToSequentialPoint\n });\n usePreventScroll({\n isDisabled: !isOpen || isDragging || !modal || justReleased || !hasBeenOpened || !repositionInputs || !disablePreventScroll\n });\n const { restorePositionSetting } = usePositionFixed({\n isOpen,\n modal,\n nested: nested != null ? nested : false,\n hasBeenOpened,\n preventScrollRestoration,\n noBodyStyles\n });\n function getScale() {\n return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;\n }\n function onPress(event) {\n var _drawerRef_current, _drawerRef_current1;\n if (!dismissible && !snapPoints) return;\n if (drawerRef.current && !drawerRef.current.contains(event.target)) return;\n drawerHeightRef.current = ((_drawerRef_current = drawerRef.current) == null ? void 0 : _drawerRef_current.getBoundingClientRect().height) || 0;\n drawerWidthRef.current = ((_drawerRef_current1 = drawerRef.current) == null ? void 0 : _drawerRef_current1.getBoundingClientRect().width) || 0;\n setIsDragging(true);\n dragStartTime.current = new Date();\n // iOS doesn't trigger mouseUp after scrolling so we need to listen to touched in order to disallow dragging\n if (isIOS()) {\n window.addEventListener('touchend', ()=>isAllowedToDrag.current = false, {\n once: true\n });\n }\n // Ensure we maintain correct pointer capture even when going outside of the drawer\n event.target.setPointerCapture(event.pointerId);\n pointerStart.current = isVertical(direction) ? event.pageY : event.pageX;\n }\n function shouldDrag(el, isDraggingInDirection) {\n var _window_getSelection;\n let element = el;\n const highlightedText = (_window_getSelection = window.getSelection()) == null ? void 0 : _window_getSelection.toString();\n const swipeAmount = drawerRef.current ? getTranslate(drawerRef.current, direction) : null;\n const date = new Date();\n // Fixes https://github.com/emilkowalski/vaul/issues/483\n if (element.tagName === 'SELECT') {\n return false;\n }\n if (element.hasAttribute('data-vaul-no-drag') || element.closest('[data-vaul-no-drag]')) {\n return false;\n }\n if (direction === 'right' || direction === 'left') {\n return true;\n }\n // Allow scrolling when animating\n if (openTime.current && date.getTime() - openTime.current.getTime() < 500) {\n return false;\n }\n if (swipeAmount !== null) {\n if (direction === 'bottom' ? swipeAmount > 0 : swipeAmount < 0) {\n return true;\n }\n }\n // Don't drag if there's highlighted text\n if (highlightedText && highlightedText.length > 0) {\n return false;\n }\n // Disallow dragging if drawer was scrolled within `scrollLockTimeout`\n if (lastTimeDragPrevented.current && date.getTime() - lastTimeDragPrevented.current.getTime() < scrollLockTimeout && swipeAmount === 0) {\n lastTimeDragPrevented.current = date;\n return false;\n }\n if (isDraggingInDirection) {\n lastTimeDragPrevented.current = date;\n // We are dragging down so we should allow scrolling\n return false;\n }\n // Keep climbing up the DOM tree as long as there's a parent\n while(element){\n // Check if the element is scrollable\n if (element.scrollHeight > element.clientHeight) {\n if (element.scrollTop !== 0) {\n lastTimeDragPrevented.current = new Date();\n // The element is scrollable and not scrolled to the top, so don't drag\n return false;\n }\n if (element.getAttribute('role') === 'dialog') {\n return true;\n }\n }\n // Move up to the parent element\n element = element.parentNode;\n }\n // No scrollable parents not scrolled to the top found, so drag\n return true;\n }\n function onDrag(event) {\n if (!drawerRef.current) {\n return;\n }\n // We need to know how much of the drawer has been dragged in percentages so that we can transform background accordingly\n if (isDragging) {\n const directionMultiplier = direction === 'bottom' || direction === 'right' ? 1 : -1;\n const draggedDistance = (pointerStart.current - (isVertical(direction) ? event.pageY : event.pageX)) * directionMultiplier;\n const isDraggingInDirection = draggedDistance > 0;\n // Pre condition for disallowing dragging in the close direction.\n const noCloseSnapPointsPreCondition = snapPoints && !dismissible && !isDraggingInDirection;\n // Disallow dragging down to close when first snap point is the active one and dismissible prop is set to false.\n if (noCloseSnapPointsPreCondition && activeSnapPointIndex === 0) return;\n // We need to capture last time when drag with scroll was triggered and have a timeout between\n const absDraggedDistance = Math.abs(draggedDistance);\n const wrapper = document.querySelector('[data-vaul-drawer-wrapper]');\n const drawerDimension = direction === 'bottom' || direction === 'top' ? drawerHeightRef.current : drawerWidthRef.current;\n // Calculate the percentage dragged, where 1 is the closed position\n let percentageDragged = absDraggedDistance / drawerDimension;\n const snapPointPercentageDragged = getSnapPointsPercentageDragged(absDraggedDistance, isDraggingInDirection);\n if (snapPointPercentageDragged !== null) {\n percentageDragged = snapPointPercentageDragged;\n }\n // Disallow close dragging beyond the smallest snap point.\n if (noCloseSnapPointsPreCondition && percentageDragged >= 1) {\n return;\n }\n if (!isAllowedToDrag.current && !shouldDrag(event.target, isDraggingInDirection)) return;\n drawerRef.current.classList.add(DRAG_CLASS);\n // If shouldDrag gave true once after pressing down on the drawer, we set isAllowedToDrag to true and it will remain true until we let go, there's no reason to disable dragging mid way, ever, and that's the solution to it\n isAllowedToDrag.current = true;\n set(drawerRef.current, {\n transition: 'none'\n });\n set(overlayRef.current, {\n transition: 'none'\n });\n if (snapPoints) {\n onDragSnapPoints({\n draggedDistance\n });\n }\n // Run this only if snapPoints are not defined or if we are at the last snap point (highest one)\n if (isDraggingInDirection && !snapPoints) {\n const dampenedDraggedDistance = dampenValue(draggedDistance);\n const translateValue = Math.min(dampenedDraggedDistance * -1, 0) * directionMultiplier;\n set(drawerRef.current, {\n transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`\n });\n return;\n }\n const opacityValue = 1 - percentageDragged;\n if (shouldFade || fadeFromIndex && activeSnapPointIndex === fadeFromIndex - 1) {\n onDragProp == null ? void 0 : onDragProp(event, percentageDragged);\n set(overlayRef.current, {\n opacity: `${opacityValue}`,\n transition: 'none'\n }, true);\n }\n if (wrapper && overlayRef.current && shouldScaleBackground) {\n // Calculate percentageDragged as a fraction (0 to 1)\n const scaleValue = Math.min(getScale() + percentageDragged * (1 - getScale()), 1);\n const borderRadiusValue = 8 - percentageDragged * 8;\n const translateValue = Math.max(0, 14 - percentageDragged * 14);\n set(wrapper, {\n borderRadius: `${borderRadiusValue}px`,\n transform: isVertical(direction) ? `scale(${scaleValue}) translate3d(0, ${translateValue}px, 0)` : `scale(${scaleValue}) translate3d(${translateValue}px, 0, 0)`,\n transition: 'none'\n }, true);\n }\n if (!snapPoints) {\n const translateValue = absDraggedDistance * directionMultiplier;\n set(drawerRef.current, {\n transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`\n });\n }\n }\n }\n React__default.useEffect(()=>{\n window.requestAnimationFrame(()=>{\n shouldAnimate.current = true;\n });\n }, []);\n React__default.useEffect(()=>{\n var _window_visualViewport;\n function onVisualViewportChange() {\n if (!drawerRef.current || !repositionInputs) return;\n const focusedElement = document.activeElement;\n if (isInput(focusedElement) || keyboardIsOpen.current) {\n var _window_visualViewport;\n const visualViewportHeight = ((_window_visualViewport = window.visualViewport) == null ? void 0 : _window_visualViewport.height) || 0;\n const totalHeight = window.innerHeight;\n // This is the height of the keyboard\n let diffFromInitial = totalHeight - visualViewportHeight;\n const drawerHeight = drawerRef.current.getBoundingClientRect().height || 0;\n // Adjust drawer height only if it's tall enough\n const isTallEnough = drawerHeight > totalHeight * 0.8;\n if (!initialDrawerHeight.current) {\n initialDrawerHeight.current = drawerHeight;\n }\n const offsetFromTop = drawerRef.current.getBoundingClientRect().top;\n // visualViewport height may change due to somq e subtle changes to the keyboard. Checking if the height changed by 60 or more will make sure that they keyboard really changed its open state.\n if (Math.abs(previousDiffFromInitial.current - diffFromInitial) > 60) {\n keyboardIsOpen.current = !keyboardIsOpen.current;\n }\n if (snapPoints && snapPoints.length > 0 && snapPointsOffset && activeSnapPointIndex) {\n const activeSnapPointHeight = snapPointsOffset[activeSnapPointIndex] || 0;\n diffFromInitial += activeSnapPointHeight;\n }\n previousDiffFromInitial.current = diffFromInitial;\n // We don't have to change the height if the input is in view, when we are here we are in the opened keyboard state so we can correctly check if the input is in view\n if (drawerHeight > visualViewportHeight || keyboardIsOpen.current) {\n const height = drawerRef.current.getBoundingClientRect().height;\n let newDrawerHeight = height;\n if (height > visualViewportHeight) {\n newDrawerHeight = visualViewportHeight - (isTallEnough ? offsetFromTop : WINDOW_TOP_OFFSET);\n }\n // When fixed, don't move the drawer upwards if there's space, but rather only change it's height so it's fully scrollable when the keyboard is open\n if (fixed) {\n drawerRef.current.style.height = `${height - Math.max(diffFromInitial, 0)}px`;\n } else {\n drawerRef.current.style.height = `${Math.max(newDrawerHeight, visualViewportHeight - offsetFromTop)}px`;\n }\n } else if (!isMobileFirefox()) {\n drawerRef.current.style.height = `${initialDrawerHeight.current}px`;\n }\n if (snapPoints && snapPoints.length > 0 && !keyboardIsOpen.current) {\n drawerRef.current.style.bottom = `0px`;\n } else {\n // Negative bottom value would never make sense\n drawerRef.current.style.bottom = `${Math.max(diffFromInitial, 0)}px`;\n }\n }\n }\n (_window_visualViewport = window.visualViewport) == null ? void 0 : _window_visualViewport.addEventListener('resize', onVisualViewportChange);\n return ()=>{\n var _window_visualViewport;\n return (_window_visualViewport = window.visualViewport) == null ? void 0 : _window_visualViewport.removeEventListener('resize', onVisualViewportChange);\n };\n }, [\n activeSnapPointIndex,\n snapPoints,\n snapPointsOffset\n ]);\n function closeDrawer(fromWithin) {\n cancelDrag();\n onClose == null ? void 0 : onClose();\n if (!fromWithin) {\n setIsOpen(false);\n }\n setTimeout(()=>{\n if (snapPoints) {\n setActiveSnapPoint(snapPoints[0]);\n }\n }, TRANSITIONS.DURATION * 1000); // seconds to ms\n }\n function resetDrawer() {\n if (!drawerRef.current) return;\n const wrapper = document.querySelector('[data-vaul-drawer-wrapper]');\n const currentSwipeAmount = getTranslate(drawerRef.current, direction);\n set(drawerRef.current, {\n transform: 'translate3d(0, 0, 0)',\n transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n });\n set(overlayRef.current, {\n transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n opacity: '1'\n });\n // Don't reset background if swiped upwards\n if (shouldScaleBackground && currentSwipeAmount && currentSwipeAmount > 0 && isOpen) {\n set(wrapper, {\n borderRadius: `${BORDER_RADIUS}px`,\n overflow: 'hidden',\n ...isVertical(direction) ? {\n transform: `scale(${getScale()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,\n transformOrigin: 'top'\n } : {\n transform: `scale(${getScale()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,\n transformOrigin: 'left'\n },\n transitionProperty: 'transform, border-radius',\n transitionDuration: `${TRANSITIONS.DURATION}s`,\n transitionTimingFunction: `cubic-bezier(${TRANSITIONS.EASE.join(',')})`\n }, true);\n }\n }\n function cancelDrag() {\n if (!isDragging || !drawerRef.current) return;\n drawerRef.current.classList.remove(DRAG_CLASS);\n isAllowedToDrag.current = false;\n setIsDragging(false);\n dragEndTime.current = new Date();\n }\n function onRelease(event) {\n if (!isDragging || !drawerRef.current) return;\n drawerRef.current.classList.remove(DRAG_CLASS);\n isAllowedToDrag.current = false;\n setIsDragging(false);\n dragEndTime.current = new Date();\n const swipeAmount = getTranslate(drawerRef.current, direction);\n if (!event || !shouldDrag(event.target, false) || !swipeAmount || Number.isNaN(swipeAmount)) return;\n if (dragStartTime.current === null) return;\n const timeTaken = dragEndTime.current.getTime() - dragStartTime.current.getTime();\n const distMoved = pointerStart.current - (isVertical(direction) ? event.pageY : event.pageX);\n const velocity = Math.abs(distMoved) / timeTaken;\n if (velocity > 0.05) {\n // `justReleased` is needed to prevent the drawer from focusing on an input when the drag ends, as it's not the intent most of the time.\n setJustReleased(true);\n setTimeout(()=>{\n setJustReleased(false);\n }, 200);\n }\n if (snapPoints) {\n const directionMultiplier = direction === 'bottom' || direction === 'right' ? 1 : -1;\n onReleaseSnapPoints({\n draggedDistance: distMoved * directionMultiplier,\n closeDrawer,\n velocity,\n dismissible\n });\n onReleaseProp == null ? void 0 : onReleaseProp(event, true);\n return;\n }\n // Moved upwards, don't do anything\n if (direction === 'bottom' || direction === 'right' ? distMoved > 0 : distMoved < 0) {\n resetDrawer();\n onReleaseProp == null ? void 0 : onReleaseProp(event, true);\n return;\n }\n if (velocity > VELOCITY_THRESHOLD) {\n closeDrawer();\n onReleaseProp == null ? void 0 : onReleaseProp(event, false);\n return;\n }\n var _drawerRef_current_getBoundingClientRect_height;\n const visibleDrawerHeight = Math.min((_drawerRef_current_getBoundingClientRect_height = drawerRef.current.getBoundingClientRect().height) != null ? _drawerRef_current_getBoundingClientRect_height : 0, window.innerHeight);\n var _drawerRef_current_getBoundingClientRect_width;\n const visibleDrawerWidth = Math.min((_drawerRef_current_getBoundingClientRect_width = drawerRef.current.getBoundingClientRect().width) != null ? _drawerRef_current_getBoundingClientRect_width : 0, window.innerWidth);\n const isHorizontalSwipe = direction === 'left' || direction === 'right';\n if (Math.abs(swipeAmount) >= (isHorizontalSwipe ? visibleDrawerWidth : visibleDrawerHeight) * closeThreshold) {\n closeDrawer();\n onReleaseProp == null ? void 0 : onReleaseProp(event, false);\n return;\n }\n onReleaseProp == null ? void 0 : onReleaseProp(event, true);\n resetDrawer();\n }\n React__default.useEffect(()=>{\n // Trigger enter animation without using CSS animation\n if (isOpen) {\n set(document.documentElement, {\n scrollBehavior: 'auto'\n });\n openTime.current = new Date();\n }\n return ()=>{\n reset(document.documentElement, 'scrollBehavior');\n };\n }, [\n isOpen\n ]);\n function onNestedOpenChange(o) {\n const scale = o ? (window.innerWidth - NESTED_DISPLACEMENT) / window.innerWidth : 1;\n const y = o ? -NESTED_DISPLACEMENT : 0;\n if (nestedOpenChangeTimer.current) {\n window.clearTimeout(nestedOpenChangeTimer.current);\n }\n set(drawerRef.current, {\n transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n transform: `scale(${scale}) translate3d(0, ${y}px, 0)`\n });\n if (!o && drawerRef.current) {\n nestedOpenChangeTimer.current = setTimeout(()=>{\n const translateValue = getTranslate(drawerRef.current, direction);\n set(drawerRef.current, {\n transition: 'none',\n transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`\n });\n }, 500);\n }\n }\n function onNestedDrag(_event, percentageDragged) {\n if (percentageDragged < 0) return;\n const initialScale = (window.innerWidth - NESTED_DISPLACEMENT) / window.innerWidth;\n const newScale = initialScale + percentageDragged * (1 - initialScale);\n const newTranslate = -NESTED_DISPLACEMENT + percentageDragged * NESTED_DISPLACEMENT;\n set(drawerRef.current, {\n transform: isVertical(direction) ? `scale(${newScale}) translate3d(0, ${newTranslate}px, 0)` : `scale(${newScale}) translate3d(${newTranslate}px, 0, 0)`,\n transition: 'none'\n });\n }\n function onNestedRelease(_event, o) {\n const dim = isVertical(direction) ? window.innerHeight : window.innerWidth;\n const scale = o ? (dim - NESTED_DISPLACEMENT) / dim : 1;\n const translate = o ? -NESTED_DISPLACEMENT : 0;\n if (o) {\n set(drawerRef.current, {\n transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(',')})`,\n transform: isVertical(direction) ? `scale(${scale}) translate3d(0, ${translate}px, 0)` : `scale(${scale}) translate3d(${translate}px, 0, 0)`\n });\n }\n }\n React__default.useEffect(()=>{\n if (!modal) {\n // Need to do this manually unfortunately\n window.requestAnimationFrame(()=>{\n document.body.style.pointerEvents = 'auto';\n });\n }\n }, [\n modal\n ]);\n return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Root, {\n defaultOpen: defaultOpen,\n onOpenChange: (open)=>{\n if (!dismissible && !open) return;\n if (open) {\n setHasBeenOpened(true);\n } else {\n closeDrawer(true);\n }\n setIsOpen(open);\n },\n open: isOpen\n }, /*#__PURE__*/ React__default.createElement(DrawerContext.Provider, {\n value: {\n activeSnapPoint,\n snapPoints,\n setActiveSnapPoint,\n drawerRef,\n overlayRef,\n onOpenChange,\n onPress,\n onRelease,\n onDrag,\n dismissible,\n shouldAnimate,\n handleOnly,\n isOpen,\n isDragging,\n shouldFade,\n closeDrawer,\n onNestedDrag,\n onNestedOpenChange,\n onNestedRelease,\n keyboardIsOpen,\n modal,\n snapPointsOffset,\n activeSnapPointIndex,\n direction,\n shouldScaleBackground,\n setBackgroundColorOnScale,\n noBodyStyles,\n container,\n autoFocus\n }\n }, children));\n}\nconst Overlay = /*#__PURE__*/ React__default.forwardRef(function({ ...rest }, ref) {\n const { overlayRef, snapPoints, onRelease, shouldFade, isOpen, modal, shouldAnimate } = useDrawerContext();\n const composedRef = useComposedRefs(ref, overlayRef);\n const hasSnapPoints = snapPoints && snapPoints.length > 0;\n // Overlay is the component that is locking scroll, removing it will unlock the scroll without having to dig into Radix's Dialog library\n if (!modal) {\n return null;\n }\n const onMouseUp = React__default.useCallback((event)=>onRelease(event), [\n onRelease\n ]);\n return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Overlay, {\n onMouseUp: onMouseUp,\n ref: composedRef,\n \"data-vaul-overlay\": \"\",\n \"data-vaul-snap-points\": isOpen && hasSnapPoints ? 'true' : 'false',\n \"data-vaul-snap-points-overlay\": isOpen && shouldFade ? 'true' : 'false',\n \"data-vaul-animate\": (shouldAnimate == null ? void 0 : shouldAnimate.current) ? 'true' : 'false',\n ...rest\n });\n});\nOverlay.displayName = 'Drawer.Overlay';\nconst Content = /*#__PURE__*/ React__default.forwardRef(function({ onPointerDownOutside, style, onOpenAutoFocus, ...rest }, ref) {\n const { drawerRef, onPress, onRelease, onDrag, keyboardIsOpen, snapPointsOffset, activeSnapPointIndex, modal, isOpen, direction, snapPoints, container, handleOnly, shouldAnimate, autoFocus } = useDrawerContext();\n // Needed to use transition instead of animations\n const [delayedSnapPoints, setDelayedSnapPoints] = React__default.useState(false);\n const composedRef = useComposedRefs(ref, drawerRef);\n const pointerStartRef = React__default.useRef(null);\n const lastKnownPointerEventRef = React__default.useRef(null);\n const wasBeyondThePointRef = React__default.useRef(false);\n const hasSnapPoints = snapPoints && snapPoints.length > 0;\n useScaleBackground();\n const isDeltaInDirection = (delta, direction, threshold = 0)=>{\n if (wasBeyondThePointRef.current) return true;\n const deltaY = Math.abs(delta.y);\n const deltaX = Math.abs(delta.x);\n const isDeltaX = deltaX > deltaY;\n const dFactor = [\n 'bottom',\n 'right'\n ].includes(direction) ? 1 : -1;\n if (direction === 'left' || direction === 'right') {\n const isReverseDirection = delta.x * dFactor < 0;\n if (!isReverseDirection && deltaX >= 0 && deltaX <= threshold) {\n return isDeltaX;\n }\n } else {\n const isReverseDirection = delta.y * dFactor < 0;\n if (!isReverseDirection && deltaY >= 0 && deltaY <= threshold) {\n return !isDeltaX;\n }\n }\n wasBeyondThePointRef.current = true;\n return true;\n };\n React__default.useEffect(()=>{\n if (hasSnapPoints) {\n window.requestAnimationFrame(()=>{\n setDelayedSnapPoints(true);\n });\n }\n }, []);\n function handleOnPointerUp(event) {\n pointerStartRef.current = null;\n wasBeyondThePointRef.current = false;\n onRelease(event);\n }\n return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Content, {\n \"data-vaul-drawer-direction\": direction,\n \"data-vaul-drawer\": \"\",\n \"data-vaul-delayed-snap-points\": delayedSnapPoints ? 'true' : 'false',\n \"data-vaul-snap-points\": isOpen && hasSnapPoints ? 'true' : 'false',\n \"data-vaul-custom-container\": container ? 'true' : 'false',\n \"data-vaul-animate\": (shouldAnimate == null ? void 0 : shouldAnimate.current) ? 'true' : 'false',\n ...rest,\n ref: composedRef,\n style: snapPointsOffset && snapPointsOffset.length > 0 ? {\n '--snap-point-height': `${snapPointsOffset[activeSnapPointIndex != null ? activeSnapPointIndex : 0]}px`,\n ...style\n } : style,\n onPointerDown: (event)=>{\n if (handleOnly) return;\n rest.onPointerDown == null ? void 0 : rest.onPointerDown.call(rest, event);\n pointerStartRef.current = {\n x: event.pageX,\n y: event.pageY\n };\n onPress(event);\n },\n onOpenAutoFocus: (e)=>{\n onOpenAutoFocus == null ? void 0 : onOpenAutoFocus(e);\n if (!autoFocus) {\n e.preventDefault();\n }\n },\n onPointerDownOutside: (e)=>{\n onPointerDownOutside == null ? void 0 : onPointerDownOutside(e);\n if (!modal || e.defaultPrevented) {\n e.preventDefault();\n return;\n }\n if (keyboardIsOpen.current) {\n keyboardIsOpen.current = false;\n }\n },\n onFocusOutside: (e)=>{\n if (!modal) {\n e.preventDefault();\n return;\n }\n },\n onPointerMove: (event)=>{\n lastKnownPointerEventRef.current = event;\n if (handleOnly) return;\n rest.onPointerMove == null ? void 0 : rest.onPointerMove.call(rest, event);\n if (!pointerStartRef.current) return;\n const yPosition = event.pageY - pointerStartRef.current.y;\n const xPosition = event.pageX - pointerStartRef.current.x;\n const swipeStartThreshold = event.pointerType === 'touch' ? 10 : 2;\n const delta = {\n x: xPosition,\n y: yPosition\n };\n const isAllowedToSwipe = isDeltaInDirection(delta, direction, swipeStartThreshold);\n if (isAllowedToSwipe) onDrag(event);\n else if (Math.abs(xPosition) > swipeStartThreshold || Math.abs(yPosition) > swipeStartThreshold) {\n pointerStartRef.current = null;\n }\n },\n onPointerUp: (event)=>{\n rest.onPointerUp == null ? void 0 : rest.onPointerUp.call(rest, event);\n pointerStartRef.current = null;\n wasBeyondThePointRef.current = false;\n onRelease(event);\n },\n onPointerOut: (event)=>{\n rest.onPointerOut == null ? void 0 : rest.onPointerOut.call(rest, event);\n handleOnPointerUp(lastKnownPointerEventRef.current);\n },\n onContextMenu: (event)=>{\n rest.onContextMenu == null ? void 0 : rest.onContextMenu.call(rest, event);\n if (lastKnownPointerEventRef.current) {\n handleOnPointerUp(lastKnownPointerEventRef.current);\n }\n }\n });\n});\nContent.displayName = 'Drawer.Content';\nconst LONG_HANDLE_PRESS_TIMEOUT = 250;\nconst DOUBLE_TAP_TIMEOUT = 120;\nconst Handle = /*#__PURE__*/ React__default.forwardRef(function({ preventCycle = false, children, ...rest }, ref) {\n const { closeDrawer, isDragging, snapPoints, activeSnapPoint, setActiveSnapPoint, dismissible, handleOnly, isOpen, onPress, onDrag } = useDrawerContext();\n const closeTimeoutIdRef = React__default.useRef(null);\n const shouldCancelInteractionRef = React__default.useRef(false);\n function handleStartCycle() {\n // Stop if this is the second click of a double click\n if (shouldCancelInteractionRef.current) {\n handleCancelInteraction();\n return;\n }\n window.setTimeout(()=>{\n handleCycleSnapPoints();\n }, DOUBLE_TAP_TIMEOUT);\n }\n function handleCycleSnapPoints() {\n // Prevent accidental taps while resizing drawer\n if (isDragging || preventCycle || shouldCancelInteractionRef.current) {\n handleCancelInteraction();\n return;\n }\n // Make sure to clear the timeout id if the user releases the handle before the cancel timeout\n handleCancelInteraction();\n if (!snapPoints || snapPoints.length === 0) {\n if (!dismissible) {\n closeDrawer();\n }\n return;\n }\n const isLastSnapPoint = activeSnapPoint === snapPoints[snapPoints.length - 1];\n if (isLastSnapPoint && dismissible) {\n closeDrawer();\n return;\n }\n const currentSnapIndex = snapPoints.findIndex((point)=>point === activeSnapPoint);\n if (currentSnapIndex === -1) return; // activeSnapPoint not found in snapPoints\n const nextSnapPoint = snapPoints[currentSnapIndex + 1];\n setActiveSnapPoint(nextSnapPoint);\n }\n function handleStartInteraction() {\n closeTimeoutIdRef.current = window.setTimeout(()=>{\n // Cancel click interaction on a long press\n shouldCancelInteractionRef.current = true;\n }, LONG_HANDLE_PRESS_TIMEOUT);\n }\n function handleCancelInteraction() {\n if (closeTimeoutIdRef.current) {\n window.clearTimeout(closeTimeoutIdRef.current);\n }\n shouldCancelInteractionRef.current = false;\n }\n return /*#__PURE__*/ React__default.createElement(\"div\", {\n onClick: handleStartCycle,\n onPointerCancel: handleCancelInteraction,\n onPointerDown: (e)=>{\n if (handleOnly) onPress(e);\n handleStartInteraction();\n },\n onPointerMove: (e)=>{\n if (handleOnly) onDrag(e);\n },\n // onPointerUp is already handled by the content component\n ref: ref,\n \"data-vaul-drawer-visible\": isOpen ? 'true' : 'false',\n \"data-vaul-handle\": \"\",\n \"aria-hidden\": \"true\",\n ...rest\n }, /*#__PURE__*/ React__default.createElement(\"span\", {\n \"data-vaul-handle-hitarea\": \"\",\n \"aria-hidden\": \"true\"\n }, children));\n});\nHandle.displayName = 'Drawer.Handle';\nfunction NestedRoot({ onDrag, onOpenChange, ...rest }) {\n const { onNestedDrag, onNestedOpenChange, onNestedRelease } = useDrawerContext();\n if (!onNestedDrag) {\n throw new Error('Drawer.NestedRoot must be placed in another drawer');\n }\n return /*#__PURE__*/ React__default.createElement(Root, {\n nested: true,\n onClose: ()=>{\n onNestedOpenChange(false);\n },\n onDrag: (e, p)=>{\n onNestedDrag(e, p);\n onDrag == null ? void 0 : onDrag(e, p);\n },\n onOpenChange: (o)=>{\n if (o) {\n onNestedOpenChange(o);\n }\n },\n onRelease: onNestedRelease,\n ...rest\n });\n}\nfunction Portal(props) {\n const context = useDrawerContext();\n const { container = context.container, ...portalProps } = props;\n return /*#__PURE__*/ React__default.createElement(DialogPrimitive.Portal, {\n container: container,\n ...portalProps\n });\n}\nconst Drawer = {\n Root,\n NestedRoot,\n Content,\n Overlay,\n Trigger: DialogPrimitive.Trigger,\n Portal,\n Handle,\n Close: DialogPrimitive.Close,\n Title: DialogPrimitive.Title,\n Description: DialogPrimitive.Description\n};\n\nexport { Content, Drawer, Handle, NestedRoot, Overlay, Portal, Root };\n","import * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\nimport { cn } from \"../util/cn.js\";\n\nconst Drawer = ({\n shouldScaleBackground = true,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n <DrawerPrimitive.Root\n shouldScaleBackground={shouldScaleBackground}\n {...props}\n />\n);\nDrawer.displayName = \"Drawer\";\n\nconst DrawerTrigger: typeof DrawerPrimitive.Trigger = DrawerPrimitive.Trigger;\n\nconst DrawerPortal: typeof DrawerPrimitive.Portal = DrawerPrimitive.Portal;\n\nconst DrawerClose: typeof DrawerPrimitive.Close = DrawerPrimitive.Close;\n\nconst DrawerOverlay: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay> &\n React.RefAttributes<React.ElementRef<typeof DrawerPrimitive.Overlay>>\n> = React.forwardRef(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn(\"fixed inset-0 z-50 bg-black/80\", className)}\n {...props}\n />\n));\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;\n\nconst DrawerContent: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content> & {\n hideBar?: boolean;\n } & React.RefAttributes<React.ElementRef<typeof DrawerPrimitive.Content>>\n> = React.forwardRef(\n ({ className, children, hideBar = true, ...props }, ref) => (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background\",\n className,\n )}\n {...props}\n >\n {!hideBar && (\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />\n )}\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n ),\n);\n\nDrawerContent.displayName = \"DrawerContent\";\n\nconst DrawerHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\n {...props}\n />\n);\nDrawerHeader.displayName = \"DrawerHeader\";\n\nconst DrawerFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n);\nDrawerFooter.displayName = \"DrawerFooter\";\n\nconst DrawerTitle: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title> &\n React.RefAttributes<React.ElementRef<typeof DrawerPrimitive.Title>>\n> = React.forwardRef(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName;\n\nconst DrawerDescription: React.ForwardRefExoticComponent<\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description> &\n React.RefAttributes<React.ElementRef<typeof DrawerPrimitive.Description>>\n> = React.forwardRef(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName;\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n};\n","import { SearchIcon } from \"lucide-react\";\nimport { Suspense, useCallback, useEffect, useState } from \"react\";\nimport { isSearchPlugin } from \"../core/plugins.js\";\nimport { useZudoku } from \"./context/ZudokuContext.js\";\n\nexport const Search = () => {\n const ctx = useZudoku();\n const [isOpen, setIsOpen] = useState(false);\n\n const onClose = useCallback(() => setIsOpen(false), []);\n\n useEffect(() => {\n if (isOpen) {\n return;\n }\n\n function onKeyDown(event: KeyboardEvent) {\n if (event.key === \"k\" && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n setIsOpen(true);\n }\n }\n\n window.addEventListener(\"keydown\", onKeyDown);\n\n return () => {\n window.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [isOpen, setIsOpen]);\n\n const searchPlugin = ctx.plugins.find(isSearchPlugin);\n\n if (!searchPlugin) {\n return null;\n }\n\n return (\n <>\n <button\n type=\"button\"\n onClick={() => setIsOpen(true)}\n className=\"flex items-center border border-input hover:bg-accent hover:text-accent-foreground p-4 relative h-8 justify-start rounded-lg bg-background text-sm text-muted-foreground shadow-none w-full sm:w-72\"\n >\n <div className=\"flex items-center gap-2 flex-grow\">\n <SearchIcon size={14} />\n Search\n </div>\n <kbd className=\"absolute right-[0.3rem] top-[0.3rem] hidden h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[11px] font-medium opacity-100 sm:flex\">\n ⌘K\n </kbd>\n </button>\n <Suspense fallback={null}>\n {searchPlugin.renderSearch({\n isOpen,\n onClose,\n })}\n </Suspense>\n </>\n );\n};\n","import { cx } from \"class-variance-authority\";\nimport { NavLink } from \"react-router-dom\";\n\nimport { useAuth } from \"../authentication/hook.js\";\nimport { useZudoku } from \"./context/ZudokuContext.js\";\n\nexport const isHiddenItem =\n (isAuthenticated?: boolean) =>\n (item: { display?: \"auth\" | \"anon\" | \"always\" }) => {\n return (\n (item.display === \"auth\" && isAuthenticated) ||\n (item.display === \"anon\" && !isAuthenticated) ||\n !item.display ||\n item.display === \"always\"\n );\n };\n\nexport const TopNavigation = () => {\n const { topNavigation } = useZudoku();\n const { isAuthenticated } = useAuth();\n\n // Hide top nav if there is only one item\n if (topNavigation.length <= 1) {\n return <style>{`:root { --top-nav-height: 0px; }`}</style>;\n }\n\n return (\n <nav className=\"hidden lg:block border-b text-sm px-12 h-[--top-nav-height]\">\n <ul className=\"flex flex-row items-center gap-8\">\n {topNavigation.filter(isHiddenItem(isAuthenticated)).map((item) => (\n <li key={item.label}>\n <NavLink\n className={({ isActive }) =>\n cx(\n \"block py-3.5 font-medium -mb-px border-b-2\",\n isActive\n ? \"border-primary text-foreground\"\n : \"border-transparent text-foreground/75 hover:text-foreground hover:border-accent-foreground/25\",\n )\n }\n to={item.id}\n >\n {item.label}\n </NavLink>\n </li>\n ))}\n </ul>\n </nav>\n );\n};\n","import { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { cx } from \"class-variance-authority\";\nimport { MenuIcon } from \"lucide-react\";\nimport { NavLink } from \"react-router-dom\";\nimport { useAuth } from \"../authentication/hook.js\";\nimport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerTitle,\n DrawerTrigger,\n} from \"../ui/Drawer.js\";\nimport { useZudoku } from \"./context/ZudokuContext.js\";\nimport { Search } from \"./Search.js\";\nimport { isHiddenItem } from \"./TopNavigation.js\";\n\nexport const MobileTopNavigation = () => {\n const { topNavigation } = useZudoku();\n const { isAuthenticated } = useAuth();\n\n return (\n <Drawer direction=\"right\">\n <div className=\"flex lg:hidden justify-self-end\">\n <DrawerTrigger className=\"lg:hidden\">\n <MenuIcon size={22} />\n </DrawerTrigger>\n </div>\n <DrawerContent\n className=\"lg:hidden h-screen right-0 left-auto w-[320px] rounded-none overflow-auto\"\n aria-describedby={undefined}\n >\n <VisuallyHidden>\n <DrawerTitle>Navigation</DrawerTitle>\n </VisuallyHidden>\n <div className=\"flex p-4\">\n <Search />\n </div>\n <ul className=\"flex flex-col items-center gap-4 p-4\">\n {topNavigation.filter(isHiddenItem(isAuthenticated)).map((item) => (\n <li key={item.label}>\n <NavLink\n className={({ isActive }) =>\n cx(\n \"block font-medium border-b-2\",\n isActive\n ? \"border-primary text-foreground\"\n : \"border-transparent text-foreground/75 hover:text-foreground hover:border-accent-foreground/25\",\n )\n }\n to={item.id}\n >\n <DrawerClose>{item.label}</DrawerClose>\n </NavLink>\n </li>\n ))}\n </ul>\n </DrawerContent>\n </Drawer>\n );\n};\n","import { MoonStarIcon, SunIcon } from \"lucide-react\";\nimport { memo } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { useAuth } from \"../authentication/hook.js\";\nimport { isProfileMenuPlugin, ProfileNavigationItem } from \"../core/plugins.js\";\nimport { Button } from \"../ui/Button.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"../ui/DropdownMenu.js\";\nimport { cn } from \"../util/cn.js\";\nimport { Banner } from \"./Banner.js\";\nimport { useTheme } from \"./context/ThemeContext.js\";\nimport { useZudoku } from \"./context/ZudokuContext.js\";\nimport { MobileTopNavigation } from \"./MobileTopNavigation.js\";\nimport { Search } from \"./Search.js\";\nimport { Slotlet } from \"./SlotletProvider.js\";\nimport { TopNavigation } from \"./TopNavigation.js\";\n\nconst RecursiveMenu = ({ item }: { item: ProfileNavigationItem }) => {\n return item.children ? (\n <DropdownMenuSub key={item.label}>\n <DropdownMenuSubTrigger>{item.label}</DropdownMenuSubTrigger>\n <DropdownMenuPortal>\n <DropdownMenuSubContent>\n {item.children.map((item, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <RecursiveMenu key={i} item={item} />\n ))}\n </DropdownMenuSubContent>\n </DropdownMenuPortal>\n </DropdownMenuSub>\n ) : (\n <Link to={item.path ?? \"\"}>\n <DropdownMenuItem key={item.label}>{item.label}</DropdownMenuItem>\n </Link>\n );\n};\n\nexport const Header = memo(function HeaderInner() {\n const auth = useAuth();\n const [isDark, toggleTheme] = useTheme();\n const { isAuthenticated, profile, isAuthEnabled } = useAuth();\n const context = useZudoku();\n const { page, plugins } = context;\n\n const accountItems = plugins\n .filter((p) => isProfileMenuPlugin(p))\n .flatMap((p) => p.getProfileMenuItems(context))\n .map((i) => <RecursiveMenu key={i.label} item={i} />);\n\n const ThemeIcon = isDark ? MoonStarIcon : SunIcon;\n\n return (\n <header className=\"sticky lg:top-0 z-10 bg-background/80 backdrop-blur w-full\">\n <Banner />\n <div className=\"max-w-screen-2xl mx-auto\">\n <div className=\"grid grid-cols-2 lg:grid-cols-[calc(var(--side-nav-width))_1fr] lg:gap-12 items-center border-b px-10 lg:px-12 h-[--top-header-height]\">\n <div className=\"flex\">\n <Link to=\"/\">\n <div className=\"flex items-center gap-3.5\">\n {page?.logo && (\n <>\n <img\n src={page.logo.src.light}\n alt={page.logo.alt ?? page.pageTitle}\n style={{ width: page.logo.width }}\n className={cn(\"h-10\", isDark && \"hidden\")}\n loading=\"lazy\"\n />\n <img\n src={page.logo.src.dark}\n alt={page.logo.alt ?? page.pageTitle}\n style={{ width: page.logo.width }}\n className={cn(\"h-10\", !isDark && \"hidden\")}\n loading=\"lazy\"\n />\n </>\n )}\n <span className=\"font-bold text-2xl text-foreground/85 tracking-wide\">\n {page?.pageTitle}\n </span>\n </div>\n </Link>\n </div>\n <div className=\"grid grid-cols-1 lg:grid-cols-[--sidecar-grid-cols] items-center gap-8\">\n <div className=\"w-full justify-center hidden lg:flex\">\n <Search />\n </div>\n\n <MobileTopNavigation />\n <div className=\"hidden lg:flex items-center justify-self-end text-sm gap-2\">\n <Slotlet name=\"head-navigation-start\" />\n {isAuthEnabled && !isAuthenticated ? (\n <Button variant=\"ghost\" onClick={() => auth.login()}>\n Login\n </Button>\n ) : (\n accountItems.length > 0 && (\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\">\n {profile?.email ? `${profile.email}` : \"My Account\"}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\">\n <DropdownMenuLabel>My Account</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {accountItems}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n )}\n <button\n type=\"button\"\n aria-label={\n isDark ? \"Switch to light mode\" : \"Switch to dark mode\"\n }\n className=\"cursor-pointer hover:bg-secondary p-2.5 -m-2.5 rounded-full\"\n onClick={toggleTheme}\n >\n <ThemeIcon size={18} />\n </button>\n <Slotlet name=\"head-navigation-end\" />\n </div>\n </div>\n </div>\n <Slotlet name=\"top-navigation-before\" />\n <TopNavigation />\n <Slotlet name=\"top-navigation-after\" />\n </div>\n </header>\n );\n});\n","import {\n createContext,\n useContext,\n type ComponentProps,\n type ComponentType,\n} from \"react\";\nimport { Header } from \"../Header.js\";\n\nexport const DEFAULT_COMPONENTS = {\n Header,\n};\n\nexport type ComponentsContextType = {\n Header?: ComponentType<ComponentProps<typeof Header>>;\n};\n\nconst ComponentsContext =\n createContext<Required<ComponentsContextType>>(DEFAULT_COMPONENTS);\n\nexport const ComponentsProvider = ComponentsContext.Provider;\n\nexport const useComponents = () => {\n return useContext(ComponentsContext);\n};\n","import { ReactNode, useCallback, useEffect, useState } from \"react\";\nimport { ThemeContext } from \"./ThemeContext.js\";\n\nexport const ThemeProvider = (props: { children: ReactNode }) => {\n const [dark, setDark] = useState(false);\n\n // On mount, read the preferred theme from the persistence\n useEffect(() => {\n const theme = localStorage.getItem(\"theme\");\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const isDark = theme === \"dark\" || (!theme && prefersDark.matches);\n\n setDark(isDark);\n }, [dark]);\n\n // To toggle between dark and light modes\n const toggle = useCallback(() => {\n const toggled = !dark;\n document.documentElement.classList.toggle(\"dark\", toggled);\n localStorage.setItem(\"theme\", toggled ? \"dark\" : \"light\");\n setDark(toggled);\n }, [dark]);\n\n const value = [dark, toggle] as const;\n\n return <ThemeContext.Provider value={value} {...props} />;\n};\n","import { useSuspenseQuery } from \"@tanstack/react-query\";\nimport type { PropsWithChildren } from \"react\";\nimport { DevPortalContext } from \"../../core/DevPortalContext.js\";\nimport { ZudokuReactContext } from \"./ZudokuContext.js\";\n\nexport const ZudokuProvider = ({\n children,\n context,\n}: PropsWithChildren<{ context: DevPortalContext }>) => {\n useSuspenseQuery({\n queryFn: async () => {\n await context.initialize();\n return true;\n },\n queryKey: [\"zudoku-initialize\"],\n });\n\n return (\n <ZudokuReactContext.Provider value={context}>\n {children}\n </ZudokuReactContext.Provider>\n );\n};\n","import { MDXProvider } from \"@mdx-js/react\";\nimport { QueryClientProvider } from \"@tanstack/react-query\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport {\n Fragment,\n memo,\n type PropsWithChildren,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { Outlet, useNavigation } from \"react-router-dom\";\nimport {\n DevPortalContext,\n queryClient,\n ZudokuContextOptions,\n} from \"../core/DevPortalContext.js\";\nimport { hasHead, isMdxProviderPlugin } from \"../core/plugins.js\";\nimport { TopLevelError } from \"../errors/TopLevelError.js\";\nimport { StaggeredRenderContext } from \"../plugins/openapi/StaggeredRender.js\";\nimport { MdxComponents } from \"../util/MdxComponents.js\";\nimport \"../util/requestIdleCallbackPolyfill.js\";\nimport {\n ComponentsProvider,\n DEFAULT_COMPONENTS,\n} from \"./context/ComponentsContext.js\";\nimport { ThemeProvider } from \"./context/ThemeProvider.js\";\nimport { ViewportAnchorProvider } from \"./context/ViewportAnchorContext.js\";\nimport { ZudokuProvider } from \"./context/ZudokuProvider.js\";\nimport { SlotletProvider } from \"./SlotletProvider.js\";\n\nconst DevPortalInner = ({\n children,\n ...props\n}: PropsWithChildren<ZudokuContextOptions>) => {\n const components = useMemo(\n () => ({ ...DEFAULT_COMPONENTS, ...props.overrides }),\n [props.overrides],\n );\n\n const mdxComponents = useMemo(() => {\n const componentsFromPlugins = (props.plugins ?? [])\n .filter(isMdxProviderPlugin)\n .flatMap((plugin) =>\n plugin.getMdxComponents ? [plugin.getMdxComponents()] : [],\n );\n\n return {\n ...componentsFromPlugins.reduce((acc, curr) => ({ ...acc, ...curr }), {}),\n ...MdxComponents,\n ...props.mdx?.components,\n };\n }, [props.mdx?.components, props.plugins]);\n const { stagger } = useContext(StaggeredRenderContext);\n const [didNavigate, setDidNavigate] = useState(false);\n const staggeredValue = useMemo(\n () => (didNavigate ? { stagger: true } : { stagger }),\n [stagger, didNavigate],\n );\n const navigation = useNavigation();\n\n useEffect(() => {\n if (didNavigate) {\n return;\n }\n setDidNavigate(true);\n }, [didNavigate, navigation.location]);\n\n const [devPortalContext] = useState(() => new DevPortalContext(props));\n\n const heads = props.plugins\n ?.filter(hasHead)\n // eslint-disable-next-line react/no-array-index-key\n .map((plugin, i) => <Fragment key={i}>{plugin.getHead?.()}</Fragment>);\n\n return (\n <QueryClientProvider client={queryClient}>\n <Helmet>{heads}</Helmet>\n <StaggeredRenderContext.Provider value={staggeredValue}>\n <ZudokuProvider context={devPortalContext}>\n <MDXProvider components={mdxComponents}>\n <ThemeProvider>\n <ComponentsProvider value={components}>\n <SlotletProvider slotlets={props.slotlets}>\n <ViewportAnchorProvider>\n {children ?? <Outlet />}\n </ViewportAnchorProvider>\n </SlotletProvider>\n </ComponentsProvider>\n </ThemeProvider>\n </MDXProvider>\n </ZudokuProvider>\n </StaggeredRenderContext.Provider>\n </QueryClientProvider>\n );\n};\n\nconst Inner = memo(DevPortalInner);\n\nconst DevPortal = (props: ZudokuContextOptions) => {\n return (\n <ErrorBoundary FallbackComponent={TopLevelError}>\n <Inner {...props} />\n </ErrorBoundary>\n );\n};\nDevPortal.displayName = \"DevPortal\";\n\nexport { DevPortal };\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { NavLink, useMatch } from \"react-router-dom\";\nimport type { SidebarItemCategory } from \"../../../config/validators/SidebarSchema.js\";\nimport { cn } from \"../../util/cn.js\";\nimport { joinPath } from \"../../util/joinPath.js\";\nimport { useTopNavigationItem } from \"../context/ZudokuContext.js\";\nimport { navigationListItem, SidebarItem } from \"./SidebarItem.js\";\nimport { useIsCategoryOpen } from \"./utils.js\";\n\nexport const SidebarCategory = ({\n category,\n level,\n}: {\n category: SidebarItemCategory;\n level: number;\n}) => {\n const topNavItem = useTopNavigationItem();\n const isCategoryOpen = useIsCategoryOpen(category);\n const [hasInteracted, setHasInteracted] = useState(false);\n\n const isCollapsible = category.collapsible ?? true;\n const isCollapsed = category.collapsed ?? true;\n const isDefaultOpen = Boolean(\n !isCollapsible || !isCollapsed || isCategoryOpen,\n );\n const [open, setOpen] = useState(isDefaultOpen);\n const isActive = useMatch(joinPath(topNavItem?.id, category.link?.id));\n\n useEffect(() => {\n // this is triggered when an item from the sidebar is clicked\n // and the sidebar, enclosing this item, is not opened\n if (isCategoryOpen) {\n setOpen(true);\n }\n }, [isCategoryOpen]);\n\n const ToggleButton = isCollapsible && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.preventDefault();\n setOpen((prev) => !prev);\n setHasInteracted(true);\n }}\n >\n <ChevronRightIcon\n size={16}\n className={cn(\n hasInteracted && \"transition\",\n \"shrink-0 group-data-[state=open]:rotate-90\",\n )}\n />\n </button>\n );\n\n return (\n <Collapsible.Root\n className=\"flex flex-col\"\n defaultOpen={isDefaultOpen}\n open={open}\n onOpenChange={() => setOpen(true)}\n >\n <Collapsible.Trigger className=\"group\" asChild disabled={!isCollapsible}>\n <div\n onClick={() => setHasInteracted(true)}\n className={navigationListItem({\n isActive: false,\n isTopLevel: level === 0,\n className: [\n \"text-start\",\n isCollapsible\n ? \"cursor-pointer\"\n : \"cursor-default hover:bg-transparent\",\n ],\n })}\n >\n {category.icon && (\n <category.icon\n size={16}\n className={cn(\n \"align-[-0.125em] -translate-x-1\",\n isActive && \"text-primary\",\n )}\n />\n )}\n {category.link?.type === \"doc\" ? (\n <NavLink\n to={joinPath(topNavItem?.id, category.link.id)}\n className=\"flex-1\"\n onClick={() => {\n // if it is the current path and closed then open it because there's no path change to trigger the open\n if (isActive && !open) {\n setOpen(true);\n }\n }}\n >\n <div\n className={cn(\n \"flex items-center gap-2 justify-between w-full\",\n isActive ? \"text-primary\" : \"text-foreground/80\",\n )}\n >\n <div className=\"truncate\">{category.label}</div>\n {ToggleButton}\n </div>\n </NavLink>\n ) : (\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex gap-2 truncate w-full\">{category.label}</div>\n {ToggleButton}\n </div>\n )}\n </div>\n </Collapsible.Trigger>\n <Collapsible.Content\n className={cn(\n // CollapsibleContent class is used to animate and it should only be applied when the user has triggered the toggle\n hasInteracted && \"CollapsibleContent\",\n )}\n >\n <ul className=\"mt-1 border-l ms-0.5\">\n {category.items.map((item) => (\n <SidebarItem\n key={\n (\"id\" in item ? item.id : \"\") +\n (\"href\" in item ? item.href : \"\") +\n item.label\n }\n level={level + 1}\n item={item}\n />\n ))}\n </ul>\n </Collapsible.Content>\n </Collapsible.Root>\n );\n};\n","import { cva } from \"class-variance-authority\";\nimport { ExternalLinkIcon } from \"lucide-react\";\nimport { NavLink, useSearchParams } from \"react-router-dom\";\n\nimport type { SidebarItem as SidebarItemType } from \"../../../config/validators/SidebarSchema.js\";\nimport { joinPath } from \"../../util/joinPath.js\";\nimport { AnchorLink } from \"../AnchorLink.js\";\nimport { useViewportAnchor } from \"../context/ViewportAnchorContext.js\";\nimport { useTopNavigationItem } from \"../context/ZudokuContext.js\";\nimport { SidebarBadge } from \"./SidebarBadge.js\";\nimport { SidebarCategory } from \"./SidebarCategory.js\";\n\nexport const navigationListItem = cva(\n \"flex items-center gap-2 px-[--padding-nav-item] py-1.5 rounded-lg hover:bg-accent transition-colors duration-300\",\n {\n variants: {\n isTopLevel: {\n true: \"font-medium -mx-[--padding-nav-item]\",\n false: \"-mr-[--padding-nav-item] ml-[--padding-nav-item]\",\n },\n isActive: {\n true: \"text-primary font-medium\",\n false: \"text-foreground/80\",\n },\n isMuted: {\n true: \"text-foreground/30\",\n false: \"\",\n },\n },\n defaultVariants: {\n isActive: false,\n },\n },\n);\n\nexport const DATA_ANCHOR_ATTR = \"data-anchor\";\n\nexport const SidebarItem = ({\n item,\n level = 0,\n}: {\n item: SidebarItemType;\n basePath?: string;\n level?: number;\n}) => {\n const topNavItem = useTopNavigationItem();\n const { activeAnchor } = useViewportAnchor();\n const [searchParams] = useSearchParams();\n\n switch (item.type) {\n case \"category\":\n return <SidebarCategory category={item} level={level} />;\n case \"doc\":\n return (\n <NavLink\n className={({ isActive }) =>\n navigationListItem({ isActive, isTopLevel: level === 0 })\n }\n to={joinPath(topNavItem?.id, item.id)}\n >\n {item.icon && <item.icon size={16} className=\"align-[-0.125em]\" />}\n {item.badge ? (\n <>\n <span className=\"truncate flex-1\" title={item.label}>\n {item.label}\n </span>\n <SidebarBadge {...item.badge} />\n </>\n ) : (\n item.label\n )}\n </NavLink>\n );\n case \"link\":\n return item.href.startsWith(\"#\") ? (\n <AnchorLink\n to={{ hash: item.href, search: searchParams.toString() }}\n {...{ [DATA_ANCHOR_ATTR]: item.href.slice(1) }}\n className={navigationListItem({\n isActive: item.href.slice(1) === activeAnchor,\n isTopLevel: level === 0,\n className: item.badge?.placement !== \"start\" && \"justify-between\",\n })}\n >\n {item.badge ? (\n <>\n <span className=\"truncate\" title={item.label}>\n {item.label}\n </span>\n <SidebarBadge {...item.badge} />\n </>\n ) : (\n <span className=\"break-all\">{item.label}</span>\n )}\n </AnchorLink>\n ) : !item.href.startsWith(\"http\") ? (\n <NavLink\n className={navigationListItem({\n className: item.badge?.placement !== \"start\" && \"justify-between\",\n })}\n to={item.href}\n >\n {item.badge ? (\n <>\n <span className=\"truncate\" title={item.label}>\n {item.label}\n </span>\n <SidebarBadge {...item.badge} />\n </>\n ) : (\n <span className=\"break-all\">{item.label}</span>\n )}\n </NavLink>\n ) : (\n <a\n className={navigationListItem({ isTopLevel: level === 0 })}\n href={item.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span className=\"whitespace-normal\">{item.label}</span>\n {/* This prevents that the icon would be positioned in its own line if the text fills a line entirely */}\n <span className=\"whitespace-nowrap\">\n <ExternalLinkIcon className=\"inline -translate-y-0.5\" size={12} />\n </span>\n </a>\n );\n }\n};\n","import { useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { useViewportAnchor } from \"../components/context/ViewportAnchorContext.js\";\nimport { DATA_ANCHOR_ATTR } from \"../components/navigation/SidebarItem.js\";\n\nconst scrollIntoViewIfNeeded = (\n element: Element | null,\n options: ScrollIntoViewOptions = { block: \"center\" },\n) => {\n if (!element) return;\n\n const rect = element.getBoundingClientRect();\n const isInView =\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <=\n (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth);\n\n if (isInView) return;\n\n element.scrollIntoView(options);\n};\n\nexport const useScrollToAnchor = () => {\n const location = useLocation();\n const { setActiveAnchor } = useViewportAnchor();\n\n useEffect(() => {\n if (!location.hash) return;\n\n const hash = decodeURIComponent(location.hash.split(\"/\")[0].slice(1));\n\n const scrollToElement = () => {\n const element = document.getElementById(hash);\n const link = document.querySelector(`[${DATA_ANCHOR_ATTR}=\"${hash}\"]`);\n\n if (element) {\n element.scrollIntoView();\n scrollIntoViewIfNeeded(link);\n requestIdleCallback(() => setActiveAnchor(hash));\n return true;\n }\n\n return false;\n };\n\n if (!scrollToElement()) {\n const observer = new MutationObserver((_, obs) => {\n if (!scrollToElement()) return;\n obs.disconnect();\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => observer.disconnect();\n }\n }, [location.hash, setActiveAnchor]);\n};\n","import { useEffect, useRef } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const useScrollToTop = () => {\n const location = useLocation();\n const previousPath = useRef(location.pathname);\n\n useEffect(() => {\n if (previousPath.current === location.pathname) return;\n window.scrollTo(0, 0);\n previousPath.current = location.pathname;\n }, [location.pathname]);\n};\n","import { forwardRef, type PropsWithChildren } from \"react\";\nimport { cn } from \"../../util/cn.js\";\n\nexport const SidebarWrapper = forwardRef<\n HTMLDivElement,\n PropsWithChildren<{ pushMainContent?: boolean; className?: string }>\n>(({ children, className, pushMainContent }, ref) => (\n <nav\n // this data attribute is used in `Layout.tsx` to determine if side navigation\n // is present for the current page so the main content is pushed to the right\n // it's also important to set `peer` class here.\n // maybe this could be simplified by adjusting the layout\n data-navigation={String(pushMainContent)}\n className={cn(\n \"scrollbar peer hidden lg:flex flex-col fixed text-sm overflow-y-auto shrink-0\",\n \"px-[--padding-nav-item] -mx-[--padding-nav-item] pb-20 mt-[--padding-content-top]\",\n \"w-[--side-nav-width] h-[calc(100%-var(--header-height))] scroll-pt-2 gap-2\",\n className,\n )}\n ref={ref}\n >\n {children}\n </nav>\n));\n\nSidebarWrapper.displayName = \"SidebarWrapper\";\n","import { useRef } from \"react\";\n\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { DrawerContent, DrawerTitle } from \"../../ui/Drawer.js\";\nimport { useNavigation } from \"../context/ZudokuContext.js\";\nimport { Slotlet } from \"../SlotletProvider.js\";\nimport { SidebarItem } from \"./SidebarItem.js\";\nimport { SidebarWrapper } from \"./SidebarWrapper.js\";\n\nexport const Sidebar = () => {\n const navRef = useRef<HTMLDivElement | null>(null);\n const navigation = useNavigation();\n\n return (\n <>\n <SidebarWrapper\n ref={navRef}\n pushMainContent={navigation.data.items.length > 0}\n >\n <Slotlet name=\"zudoku-before-navigation\" />\n {navigation.data.items.map((item) => (\n <SidebarItem key={item.label} item={item} />\n ))}\n <Slotlet name=\"zudoku-after-navigation\" />\n </SidebarWrapper>\n <DrawerContent\n className=\"lg:hidden h-screen left-0 p-6 w-[320px] rounded-none overflow-auto\"\n aria-describedby={undefined}\n >\n <VisuallyHidden>\n <DrawerTitle>Sidebar</DrawerTitle>\n </VisuallyHidden>\n {navigation.data.items.map((item) => (\n <SidebarItem key={item.label} item={item} />\n ))}\n </DrawerContent>\n </>\n );\n};\n","import { Helmet } from \"@zudoku/react-helmet-async\";\nimport { PanelLeftIcon } from \"lucide-react\";\nimport { Suspense, useEffect, useRef, type ReactNode } from \"react\";\nimport { Outlet, useLocation } from \"react-router-dom\";\nimport { Drawer, DrawerTrigger } from \"../ui/Drawer.js\";\nimport { cn } from \"../util/cn.js\";\nimport { useScrollToAnchor } from \"../util/useScrollToAnchor.js\";\nimport { useScrollToTop } from \"../util/useScrollToTop.js\";\nimport { useViewportAnchor } from \"./context/ViewportAnchorContext.js\";\nimport { useZudoku } from \"./context/ZudokuContext.js\";\nimport { Header } from \"./Header.js\";\nimport { Sidebar } from \"./navigation/Sidebar.js\";\nimport { Slotlet } from \"./SlotletProvider.js\";\nimport { Spinner } from \"./Spinner.js\";\n\nexport const Layout = ({ children }: { children?: ReactNode }) => {\n const location = useLocation();\n const { setActiveAnchor } = useViewportAnchor();\n const { meta, authentication } = useZudoku();\n\n useScrollToAnchor();\n useScrollToTop();\n\n const previousLocationPath = useRef(location.pathname);\n\n useEffect(() => {\n // Initialize the authentication plugin\n authentication?.pageLoad?.();\n }, [authentication]);\n\n useEffect(() => {\n // always reset on location change\n if (location.pathname !== previousLocationPath.current) {\n setActiveAnchor(\"\");\n }\n previousLocationPath.current = location.pathname;\n }, [location.pathname, setActiveAnchor]);\n\n return (\n <>\n {import.meta.env.MODE === \"standalone\" && (\n <style>{`:root { --top-nav-height: 0px; }`}</style>\n )}\n <Helmet titleTemplate={meta?.title}>\n {meta?.description && (\n <meta name=\"description\" content={meta.description} />\n )}\n {meta?.favicon && <link rel=\"icon\" href={meta.favicon} />}\n </Helmet>\n <Slotlet name=\"layout-before-head\" />\n <Header />\n <Slotlet name=\"layout-after-head\" />\n\n <div className=\"w-full max-w-screen-2xl mx-auto px-10 lg:px-12\">\n <Suspense\n fallback={\n <main className=\"grid h-[calc(100vh-var(--header-height))] place-items-center\">\n <Spinner />\n </main>\n }\n >\n <Drawer direction=\"left\">\n <Sidebar />\n <div\n className={cn(\n \"lg:hidden -mx-10 px-10 py-2 sticky bg-background/80 backdrop-blur z-10 top-0 left-0 right-0 border-b\",\n \"peer-data-[navigation=false]:hidden\",\n )}\n >\n <DrawerTrigger className=\"flex items-center gap-2\">\n <PanelLeftIcon size={16} strokeWidth={1.5} />\n <span className=\"text-sm\">Menu</span>\n </DrawerTrigger>\n </div>\n <main\n className={cn(\n \"h-full dark:border-white/10 translate-x-0\",\n \"lg:overflow-visible\",\n // This works in tandem with the `SidebarWrapper` component\n \"lg:peer-data-[navigation=true]:w-[calc(100%-var(--side-nav-width))]\",\n \"lg:peer-data-[navigation=true]:translate-x-[--side-nav-width] lg:peer-data-[navigation=true]:pl-12\",\n )}\n >\n <Slotlet name=\"zudoku-before-content\" />\n {children ?? <Outlet />}\n <Slotlet name=\"zudoku-after-content\" />\n </main>\n </Drawer>\n </Suspense>\n </div>\n </>\n );\n};\n","import { useMDXComponents as useMDXComponentsImport } from \"@mdx-js/react\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport { Link as LinkImport } from \"react-router-dom\";\nimport { useAuthState } from \"../authentication/state.js\";\nimport { RouterError as RouterErrorImport } from \"../errors/RouterError.js\";\nimport { ServerError as ServerErrorImport } from \"../errors/ServerError.js\";\nimport { Button as ButtonImport } from \"../ui/Button.js\";\nimport { Callout as CalloutImport } from \"../ui/Callout.js\";\nimport {\n Bootstrap as BootstrapImport,\n BootstrapStatic as BootstrapStaticImport,\n} from \"./Bootstrap.js\";\nimport { ClientOnly as ClientOnlyImport } from \"./ClientOnly.js\";\nimport { DevPortal as DevPortalImport } from \"./DevPortal.js\";\nimport { Layout as LayoutImport } from \"./Layout.js\";\nimport { useZudoku as useZudokuImport } from \"./context/ZudokuContext.js\";\nexport const useMDXComponents = /*@__PURE__*/ useMDXComponentsImport;\nexport const DevPortal = /*@__PURE__*/ DevPortalImport;\nexport const Layout = /*@__PURE__*/ LayoutImport;\nexport const RouterError = /*@__PURE__*/ RouterErrorImport;\nexport const ServerError = /*@__PURE__*/ ServerErrorImport;\nexport const Bootstrap = /*@__PURE__*/ BootstrapImport;\nexport const BootstrapStatic = /*@__PURE__*/ BootstrapStaticImport;\n\nexport const Head = /*@__PURE__*/ Helmet;\n\nexport const useZudoku = /*@__PURE__*/ useZudokuImport;\nexport const useAuth = /*@__PURE__*/ useAuthState;\nexport const Zudoku = /*@__PURE__*/ DevPortalImport;\n\nexport const Callout = /*@__PURE__*/ CalloutImport;\nexport const ClientOnly = /*@__PURE__*/ ClientOnlyImport;\nexport const Button = /*@__PURE__*/ ButtonImport;\nexport const Link: typeof LinkImport = /*@__PURE__*/ LinkImport;\n"],"names":["ServerError","error","jsx","ErrorAlert","server","React","require$$0","router","require$$1","reactRouter","require$$2","reactRouterDom","require$$3","_interopNamespace","n","k","d","React__namespace","StaticRouter","basename","children","locationProp","future","action","location","staticNavigator","getStatelessNavigator","StaticRouterProvider","context","router$1","hydrate","nonce","dataRouterContext","fetchersContext","hydrateScript","data","serializeErrors","htmlEscape","state","DataRoutes","routes","errors","entries","serialized","key","val","createHref","encodeLocation","to","delta","createStaticHandler","opts","createStaticRouter","manifest","dataRoutes","matches","match","route","msg","method","_a","_b","href","encoded","ABSOLUTE_URL_REGEX","ESCAPE_LOOKUP","ESCAPE_REGEX","str","StaticRouterProvider_1","Bootstrap","StrictMode","HelmetProvider","StaggeredRenderContext","RouterProvider","BootstrapStatic","helmetContext","QueryCache","Subscribable","config","__privateAdd","_queries","__privateSet","client","options","queryKey","queryHash","hashQueryKeyByOptions","query","Query","__privateGet","queryInMap","notifyManager","filters","defaultedFilters","matchQuery","queries","event","listener","MutationCache","_mutations","_mutationId","mutation","Mutation","__privateWrapper","scope","scopeFor","mutations","x","firstPendingMutation","m","foundMutation","matchMutation","pausedMutations","noop","infiniteQueryBehavior","pages","direction","_c","oldPages","_d","oldPageParams","_e","result","currentPage","fetchFn","cancelled","addSignalProperty","object","queryFn","ensureQueryFn","fetchPage","param","previous","queryFnContext","page","maxPages","addTo","addToStart","addToEnd","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","pageParams","lastIndex","QueryClient","_queryCache","_mutationCache","_defaultOptions","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","focusManager","focused","onlineManager","online","cachedData","defaultedOptions","resolveStaleTime","updater","prevData","functionalUpdate","queryCache","refetchFilters","cancelOptions","defaultedCancelOptions","promises","fetchOptions","promise","hashKey","defaults","queryDefault","partialMatchKey","mutationKey","skipToken","ErrorBoundaryContext","createContext","initialState","ErrorBoundary","Component","props","_this$props$onReset","_this$props","_len","args","_key","info","_this$props$onError","_this$props2","prevProps","prevState","didCatch","resetKeys","hasArrayChanged","_this$props$onReset2","_this$props3","fallbackRender","FallbackComponent","fallback","childToRender","createElement","isValidElement","a","b","item","index","isProfileMenuPlugin","obj","isNavigationPlugin","isSearchPlugin","needsInitialization","hasHead","isMdxProviderPlugin","isApiIdentityPlugin","queryClient","DevPortalContext","__publicField","plugin","path","joinPath","nav","request","accessToken","TopLevelError","resetErrorBoundary","root","cb","SELECTION_KEYS","FIRST_KEYS","LAST_KEYS","FIRST_LAST_KEYS","SUB_OPEN_KEYS","SUB_CLOSE_KEYS","MENU_NAME","Collection","useCollection","createCollectionScope","createCollection","createMenuContext","createMenuScope","createContextScope","createPopperScope","createRovingFocusGroupScope","usePopperScope","useRovingFocusGroupScope","MenuProvider","useMenuContext","MenuRootProvider","useMenuRootContext","Menu","__scopeMenu","open","dir","onOpenChange","modal","popperScope","content","setContent","isUsingKeyboardRef","handleOpenChange","useCallbackRef","useDirection","handleKeyDown","handlePointer","PopperPrimitive.Root","ANCHOR_NAME","MenuAnchor","forwardedRef","anchorProps","PopperPrimitive.Anchor","PORTAL_NAME","PortalProvider","usePortalContext","MenuPortal","forceMount","container","Presence","PortalPrimitive","CONTENT_NAME","MenuContentProvider","useMenuContentContext","MenuContent","portalContext","contentProps","rootContext","MenuRootContentModal","MenuRootContentNonModal","ref","composedRefs","useComposedRefs","hideOthers","MenuContentImpl","composeEventHandlers","loop","trapFocus","onOpenAutoFocus","onCloseAutoFocus","disableOutsidePointerEvents","onEntryFocus","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","disableOutsideScroll","rovingFocusGroupScope","getItems","currentItemId","setCurrentItemId","contentRef","timerRef","searchRef","pointerGraceTimerRef","pointerGraceIntentRef","pointerDirRef","lastPointerXRef","ScrollLockWrapper","RemoveScroll","scrollLockWrapperProps","Slot","handleTypeaheadSearch","search","items","currentItem","currentMatch","values","nextMatch","getNextMatch","newItem","updateSearch","value","useFocusGuards","isPointerMovingToSubmenu","isPointerInGraceArea","intent","FocusScope","DismissableLayer","RovingFocusGroup.Root","PopperPrimitive.Content","getOpenState","isKeyDownInside","isModifierKey","isCharacterKey","candidateNodes","focusFirst","whenMouse","target","pointerXHasChanged","newDir","GROUP_NAME","MenuGroup","groupProps","Primitive","LABEL_NAME","MenuLabel","labelProps","ITEM_NAME","ITEM_SELECT","MenuItem","disabled","onSelect","itemProps","contentContext","isPointerDownRef","handleSelect","menuItem","itemSelectEvent","dispatchDiscreteCustomEvent","MenuItemImpl","isTypingAhead","textValue","isFocused","setIsFocused","textContent","setTextContent","RovingFocusGroup.Item","CHECKBOX_ITEM_NAME","MenuCheckboxItem","checked","onCheckedChange","checkboxItemProps","ItemIndicatorProvider","isIndeterminate","getCheckedState","RADIO_GROUP_NAME","RadioGroupProvider","useRadioGroupContext","MenuRadioGroup","onValueChange","handleValueChange","RADIO_ITEM_NAME","MenuRadioItem","radioItemProps","ITEM_INDICATOR_NAME","useItemIndicatorContext","MenuItemIndicator","itemIndicatorProps","indicatorContext","SEPARATOR_NAME","MenuSeparator","separatorProps","ARROW_NAME","MenuArrow","arrowProps","PopperPrimitive.Arrow","SUB_NAME","MenuSubProvider","useMenuSubContext","MenuSub","parentMenuContext","trigger","setTrigger","useId","SUB_TRIGGER_NAME","MenuSubTrigger","subContext","openTimerRef","onPointerGraceIntentChange","clearOpenTimer","pointerGraceTimer","composeRefs","contentRect","side","rightSide","bleed","contentNearEdge","contentFarEdge","SUB_CONTENT_NAME","MenuSubContent","subContentProps","isCloseKey","candidates","PREVIOUSLY_FOCUSED_ELEMENT","candidate","wrapArray","array","startIndex","_","normalizedSearch","char","currentMatchIndex","wrappedValues","v","isPointInPolygon","point","polygon","y","inside","i","j","xi","yi","xj","yj","area","cursorPos","handler","Root3","Anchor2","Portal","Content2","Group","Label","Item2","CheckboxItem","RadioGroup","RadioItem","ItemIndicator","Separator","Arrow2","Sub","SubTrigger","SubContent","DROPDOWN_MENU_NAME","createDropdownMenuContext","createDropdownMenuScope","useMenuScope","DropdownMenuProvider","useDropdownMenuContext","DropdownMenu","__scopeDropdownMenu","openProp","defaultOpen","menuScope","triggerRef","setOpen","useControllableState","prevOpen","MenuPrimitive.Root","TRIGGER_NAME","DropdownMenuTrigger","triggerProps","MenuPrimitive.Anchor","DropdownMenuPortal","portalProps","MenuPrimitive.Portal","DropdownMenuContent","hasInteractedOutsideRef","MenuPrimitive.Content","originalEvent","ctrlLeftClick","isRightClick","DropdownMenuGroup","MenuPrimitive.Group","DropdownMenuLabel","MenuPrimitive.Label","DropdownMenuItem","MenuPrimitive.Item","DropdownMenuCheckboxItem","MenuPrimitive.CheckboxItem","DropdownMenuRadioGroup","radioGroupProps","MenuPrimitive.RadioGroup","DropdownMenuRadioItem","MenuPrimitive.RadioItem","INDICATOR_NAME","DropdownMenuItemIndicator","MenuPrimitive.ItemIndicator","DropdownMenuSeparator","MenuPrimitive.Separator","DropdownMenuArrow","MenuPrimitive.Arrow","DropdownMenuSub","MenuPrimitive.Sub","DropdownMenuSubTrigger","subTriggerProps","MenuPrimitive.SubTrigger","DropdownMenuSubContent","MenuPrimitive.SubContent","Root2","Trigger","Portal2","Label2","CheckboxItem2","RadioItem2","ItemIndicator2","Separator2","Sub2","SubTrigger2","SubContent2","DropdownMenuPrimitive.Root","DropdownMenuPrimitive.Trigger","DropdownMenuPrimitive.Portal","DropdownMenuPrimitive.Sub","className","inset","jsxs","DropdownMenuPrimitive.SubTrigger","cn","ChevronRightIcon","DropdownMenuPrimitive.SubContent","sideOffset","DropdownMenuPrimitive.Content","DropdownMenuPrimitive.Item","DropdownMenuPrimitive.CheckboxItem","DropdownMenuPrimitive.ItemIndicator","CheckIcon","DropdownMenuPrimitive.RadioItem","DotIcon","DropdownMenuPrimitive.Label","DropdownMenuPrimitive.Separator","COLOR_MAP","Banner","useZudoku","isBannerOpen","setIsBannerOpen","useState","mappedColor","style","CircleXIcon","__insertCSS","code","head","DrawerContext","React__default","useDrawerContext","isMobileFirefox","userAgent","isMac","testPlatform","isIPhone","isSafari","isIPad","isIOS","re","KEYBOARD_BUFFER","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","chain$1","callbacks","callback","visualViewport","isScrollable","node","getScrollParent","nonTextInputTypes","preventScrollCount","restore","usePreventScroll","isDisabled","preventScrollMobileSafari","scrollable","lastY","onTouchStart","e","onTouchMove","scrollTop","bottom","onTouchEnd","isInput","onFocus","scrollIntoView","onWindowScroll","scrollX","scrollY","restoreStyles","setStyle","removeEvents","addEvent","element","cur","scrollableTop","targetTop","targetBottom","keyboardHeight","setRef","refs","cache","set","el","styles","ignoreCache","originalStyles","reset","prop","isVertical","getTranslate","transform","mat","dampenValue","assignStyle","prevStyle","chain","fns","fn","TRANSITIONS","VELOCITY_THRESHOLD","CLOSE_THRESHOLD","SCROLL_LOCK_TIMEOUT","BORDER_RADIUS","NESTED_DISPLACEMENT","WINDOW_TOP_OFFSET","DRAG_CLASS","callbackRef","useUncontrolledState","defaultProp","onChange","uncontrolledState","prevValueRef","handleChange","uncontrolledProp","setUncontrolledProp","isControlled","setValue","nextValue","useSnapPoints","activeSnapPointProp","setActiveSnapPointProp","snapPoints","drawerRef","overlayRef","fadeFromIndex","onSnapPointChange","snapToSequentialPoint","activeSnapPoint","setActiveSnapPoint","windowDimensions","setWindowDimensions","onResize","isLastSnapPoint","activeSnapPointIndex","_snapPoints_findIndex","snapPoint","shouldFade","snapPointsOffset","containerSize","_snapPoints_map","isPx","snapPointAsNumber","height","width","activeSnapPointOffset","snapToPoint","dimension","_snapPointsOffset_findIndex","newSnapPointIndex","snapPointDim","newIndex","onRelease","draggedDistance","closeDrawer","velocity","dismissible","currentPosition","isOverlaySnapPoint","isFirst","hasDraggedUp","closestSnapPoint","prev","curr","dim","dragDirection","onDrag","newValue","getPercentageDragged","absDraggedDistance","isDraggingDown","targetSnapPointIndex","snapPointDistance","percentageDragged","useScaleBackground","isOpen","shouldScaleBackground","setBackgroundColorOnScale","noBodyStyles","timeoutIdRef","initialBackgroundColor","useMemo","getScale","wrapper","wrapperStylesCleanup","previousBodyPosition","usePositionFixed","nested","hasBeenOpened","preventScrollRestoration","activeUrl","setActiveUrl","scrollPos","setPositionFixed","innerHeight","bottomBarHeight","restorePositionSetting","onScroll","Root","onDragProp","onReleaseProp","closeThreshold","scrollLockTimeout","handleOnly","fixed","onClose","disablePreventScroll","repositionInputs","onAnimationEnd","autoFocus","_drawerRef_current","_drawerRef_current1","setIsOpen","o","setHasBeenOpened","isDragging","setIsDragging","justReleased","setJustReleased","openTime","dragStartTime","dragEndTime","lastTimeDragPrevented","isAllowedToDrag","nestedOpenChangeTimer","pointerStart","keyboardIsOpen","shouldAnimate","previousDiffFromInitial","drawerHeightRef","drawerWidthRef","initialDrawerHeight","onReleaseSnapPoints","onDragSnapPoints","getSnapPointsPercentageDragged","onPress","shouldDrag","isDraggingInDirection","_window_getSelection","highlightedText","swipeAmount","date","directionMultiplier","noCloseSnapPointsPreCondition","drawerDimension","snapPointPercentageDragged","dampenedDraggedDistance","translateValue","opacityValue","scaleValue","borderRadiusValue","_window_visualViewport","onVisualViewportChange","focusedElement","visualViewportHeight","totalHeight","diffFromInitial","drawerHeight","isTallEnough","offsetFromTop","activeSnapPointHeight","newDrawerHeight","fromWithin","cancelDrag","resetDrawer","currentSwipeAmount","timeTaken","distMoved","_drawerRef_current_getBoundingClientRect_height","visibleDrawerHeight","_drawerRef_current_getBoundingClientRect_width","visibleDrawerWidth","isHorizontalSwipe","onNestedOpenChange","scale","onNestedDrag","_event","initialScale","newScale","newTranslate","onNestedRelease","translate","DialogPrimitive.Root","Overlay","rest","composedRef","hasSnapPoints","onMouseUp","DialogPrimitive.Overlay","Content","delayedSnapPoints","setDelayedSnapPoints","pointerStartRef","lastKnownPointerEventRef","wasBeyondThePointRef","isDeltaInDirection","threshold","deltaY","deltaX","isDeltaX","dFactor","handleOnPointerUp","DialogPrimitive.Content","yPosition","xPosition","swipeStartThreshold","LONG_HANDLE_PRESS_TIMEOUT","DOUBLE_TAP_TIMEOUT","Handle","preventCycle","closeTimeoutIdRef","shouldCancelInteractionRef","handleStartCycle","handleCancelInteraction","handleCycleSnapPoints","currentSnapIndex","nextSnapPoint","handleStartInteraction","NestedRoot","p","DialogPrimitive.Portal","Drawer","DialogPrimitive.Trigger","DialogPrimitive.Close","DialogPrimitive.Title","DialogPrimitive.Description","DrawerPrimitive","DrawerTrigger","DrawerPortal","DrawerClose","DrawerOverlay","DrawerContent","hideBar","DrawerTitle","DrawerDescription","Search","ctx","useCallback","onKeyDown","searchPlugin","Fragment","SearchIcon","Suspense","isHiddenItem","isAuthenticated","TopNavigation","topNavigation","useAuth","NavLink","isActive","cx","MobileTopNavigation","MenuIcon","VisuallyHidden","RecursiveMenu","Link","Header","memo","auth","isDark","toggleTheme","useTheme","profile","isAuthEnabled","plugins","accountItems","ThemeIcon","MoonStarIcon","SunIcon","Slotlet","Button","DEFAULT_COMPONENTS","ComponentsContext","ComponentsProvider","ThemeProvider","dark","setDark","theme","prefersDark","toggle","toggled","ThemeContext","ZudokuProvider","useSuspenseQuery","ZudokuReactContext","DevPortalInner","components","mdxComponents","acc","MdxComponents","stagger","useContext","didNavigate","setDidNavigate","staggeredValue","navigation","useNavigation","devPortalContext","heads","QueryClientProvider","Helmet","MDXProvider","SlotletProvider","ViewportAnchorProvider","Outlet","Inner","DevPortal","SidebarCategory","category","level","topNavItem","useTopNavigationItem","isCategoryOpen","useIsCategoryOpen","hasInteracted","setHasInteracted","isCollapsible","isCollapsed","isDefaultOpen","useMatch","ToggleButton","Collapsible.Root","Collapsible.Trigger","navigationListItem","Collapsible.Content","SidebarItem","cva","DATA_ANCHOR_ATTR","activeAnchor","useViewportAnchor","searchParams","useSearchParams","SidebarBadge","AnchorLink","ExternalLinkIcon","scrollIntoViewIfNeeded","rect","useScrollToAnchor","useLocation","setActiveAnchor","hash","scrollToElement","link","observer","obs","useScrollToTop","previousPath","useRef","SidebarWrapper","forwardRef","pushMainContent","Sidebar","navRef","Layout","meta","authentication","previousLocationPath","Spinner","PanelLeftIcon","useMDXComponents","useMDXComponentsImport","DevPortalImport","LayoutImport","RouterError","RouterErrorImport","ServerErrorImport","BootstrapImport","BootstrapStaticImport","Head","useZudokuImport","useAuthState","Zudoku","Callout","CalloutImport","ClientOnly","ClientOnlyImport","ButtonImport","LinkImport"],"mappings":"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","x_google_ignoreList":[1,3,4,5,6,7,12,13,16]}
1
+ {"version":3,"file":"zudoku.components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}