zudoku 0.63.1 → 0.64.1

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 (223) hide show
  1. package/client.d.ts +8 -0
  2. package/dist/config/config.d.ts +3 -1
  3. package/dist/config/validators/BuildSchema.d.ts +5 -4
  4. package/dist/config/validators/BuildSchema.js +5 -2
  5. package/dist/config/validators/BuildSchema.js.map +1 -1
  6. package/dist/config/validators/InputNavigationSchema.d.ts +20 -20
  7. package/dist/config/validators/validate.d.ts +10 -12
  8. package/dist/config/validators/validate.js +8 -8
  9. package/dist/config/validators/validate.js.map +1 -1
  10. package/dist/flat-config.d.ts +6 -1
  11. package/dist/lib/authentication/authentication.d.ts +14 -9
  12. package/dist/lib/authentication/components/OAuthErrorPage.js +1 -1
  13. package/dist/lib/authentication/components/OAuthErrorPage.js.map +1 -1
  14. package/dist/lib/authentication/components/SignIn.js +6 -5
  15. package/dist/lib/authentication/components/SignIn.js.map +1 -1
  16. package/dist/lib/authentication/components/SignOut.js +6 -6
  17. package/dist/lib/authentication/components/SignOut.js.map +1 -1
  18. package/dist/lib/authentication/components/SignUp.js +5 -5
  19. package/dist/lib/authentication/components/SignUp.js.map +1 -1
  20. package/dist/lib/authentication/hook.d.ts +3 -2
  21. package/dist/lib/authentication/hook.js +12 -8
  22. package/dist/lib/authentication/hook.js.map +1 -1
  23. package/dist/lib/authentication/providers/auth0.js +1 -1
  24. package/dist/lib/authentication/providers/auth0.js.map +1 -1
  25. package/dist/lib/authentication/providers/azureb2c.d.ts +4 -4
  26. package/dist/lib/authentication/providers/azureb2c.js +3 -3
  27. package/dist/lib/authentication/providers/azureb2c.js.map +1 -1
  28. package/dist/lib/authentication/providers/clerk.js +2 -2
  29. package/dist/lib/authentication/providers/clerk.js.map +1 -1
  30. package/dist/lib/authentication/providers/openid.d.ts +7 -7
  31. package/dist/lib/authentication/providers/openid.js +5 -3
  32. package/dist/lib/authentication/providers/openid.js.map +1 -1
  33. package/dist/lib/authentication/providers/supabase/SupabaseAuthUI.d.ts +8 -0
  34. package/dist/lib/authentication/providers/supabase/SupabaseAuthUI.js +39 -0
  35. package/dist/lib/authentication/providers/supabase/SupabaseAuthUI.js.map +1 -0
  36. package/dist/lib/authentication/providers/supabase.js +35 -31
  37. package/dist/lib/authentication/providers/supabase.js.map +1 -1
  38. package/dist/lib/authentication/state.d.ts +1 -5
  39. package/dist/lib/authentication/state.js +2 -14
  40. package/dist/lib/authentication/state.js.map +1 -1
  41. package/dist/lib/components/Zudoku.js +3 -3
  42. package/dist/lib/components/index.d.ts +2 -2
  43. package/dist/lib/components/navigation/Toc.js +1 -1
  44. package/dist/lib/components/navigation/Toc.js.map +1 -1
  45. package/dist/lib/core/RouteGuard.d.ts +1 -1
  46. package/dist/lib/core/RouteGuard.js +6 -14
  47. package/dist/lib/core/RouteGuard.js.map +1 -1
  48. package/dist/lib/core/__internal.d.ts +1 -1
  49. package/dist/lib/hooks/index.d.ts +2 -2
  50. package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js +1 -1
  51. package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js.map +1 -1
  52. package/dist/lib/plugins/openapi/playground/Playground.js +12 -2
  53. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  54. package/dist/lib/plugins/openapi/playground/RequestLoginDialog.d.ts +2 -1
  55. package/dist/lib/plugins/openapi/playground/RequestLoginDialog.js +10 -2
  56. package/dist/lib/plugins/openapi/playground/RequestLoginDialog.js.map +1 -1
  57. package/dist/lib/plugins/openapi/playground/result-panel/Highlight.d.ts +1 -1
  58. package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.js +1 -1
  59. package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.js.map +1 -1
  60. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +23 -21
  61. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
  62. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js +1 -1
  63. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js.map +1 -1
  64. package/dist/lib/plugins/openapi/playground/useRememberSkipLoginDialog.js +2 -0
  65. package/dist/lib/plugins/openapi/playground/useRememberSkipLoginDialog.js.map +1 -1
  66. package/dist/lib/plugins/openapi/util/generateSchemaExample.js +7 -0
  67. package/dist/lib/plugins/openapi/util/generateSchemaExample.js.map +1 -1
  68. package/dist/lib/shiki.d.ts +1 -1
  69. package/dist/lib/shiki.js +13 -2
  70. package/dist/lib/shiki.js.map +1 -1
  71. package/dist/lib/ui/Callout.d.ts +5 -5
  72. package/dist/lib/ui/Callout.js +5 -5
  73. package/dist/lib/ui/Callout.js.map +1 -1
  74. package/dist/lib/ui/EmbeddedCodeBlock.d.ts +3 -1
  75. package/dist/lib/ui/EmbeddedCodeBlock.js +2 -2
  76. package/dist/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  77. package/dist/lib/ui/ReactComponentDoc.d.ts +1 -1
  78. package/dist/lib/ui/ReactComponentDoc.js +2 -2
  79. package/dist/lib/ui/ReactComponentDoc.js.map +1 -1
  80. package/dist/lib/ui/SyntaxHighlight.d.ts +1 -0
  81. package/dist/lib/ui/SyntaxHighlight.js.map +1 -1
  82. package/dist/lib/util/MdxComponents.d.ts +2 -1
  83. package/dist/lib/util/MdxComponents.js +3 -2
  84. package/dist/lib/util/MdxComponents.js.map +1 -1
  85. package/dist/lib/util/syncZustandState.d.ts +5 -0
  86. package/dist/lib/util/syncZustandState.js +14 -0
  87. package/dist/lib/util/syncZustandState.js.map +1 -0
  88. package/dist/vite/api/SchemaManager.d.ts +3 -1
  89. package/dist/vite/api/SchemaManager.js +22 -3
  90. package/dist/vite/api/SchemaManager.js.map +1 -1
  91. package/dist/vite/api/SchemaManager.test.js +2 -2
  92. package/dist/vite/api/SchemaManager.test.js.map +1 -1
  93. package/dist/vite/plugin-api.js +14 -5
  94. package/dist/vite/plugin-api.js.map +1 -1
  95. package/dist/vite/plugin-mdx.js +36 -30
  96. package/dist/vite/plugin-mdx.js.map +1 -1
  97. package/lib/{ErrorAlert-VBJ8aHH7.js → ErrorAlert-DE3Sf66a.js} +1711 -1772
  98. package/lib/ErrorAlert-DE3Sf66a.js.map +1 -0
  99. package/lib/{MdxPage-1xaNI6q_.js → MdxPage-DZfeC0QY.js} +8 -8
  100. package/lib/{MdxPage-1xaNI6q_.js.map → MdxPage-DZfeC0QY.js.map} +1 -1
  101. package/lib/{OAuthErrorPage-Du_4sFER.js → OAuthErrorPage-BycMozgn.js} +8 -8
  102. package/lib/{OAuthErrorPage-Du_4sFER.js.map → OAuthErrorPage-BycMozgn.js.map} +1 -1
  103. package/lib/{OasProvider-0xiB5cKH.js → OasProvider-1XEOsIiW.js} +3 -3
  104. package/lib/{OasProvider-0xiB5cKH.js.map → OasProvider-1XEOsIiW.js.map} +1 -1
  105. package/lib/{OperationList-BzWKTkNq.js → OperationList-DCJw6wXL.js} +113 -109
  106. package/lib/OperationList-DCJw6wXL.js.map +1 -0
  107. package/lib/{Pagination-DOcPyfy_.js → Pagination-CJszmeSA.js} +3 -3
  108. package/lib/{Pagination-DOcPyfy_.js.map → Pagination-CJszmeSA.js.map} +1 -1
  109. package/lib/RouteGuard-DhU3LRr1.js +81 -0
  110. package/lib/RouteGuard-DhU3LRr1.js.map +1 -0
  111. package/lib/{RouterError-fm21cqlj.js → RouterError-VDLnrFqF.js} +5 -5
  112. package/lib/{RouterError-fm21cqlj.js.map → RouterError-VDLnrFqF.js.map} +1 -1
  113. package/lib/{SchemaList-Dea2Skqv.js → SchemaList-qOHkDzSz.js} +7 -7
  114. package/lib/{SchemaList-Dea2Skqv.js.map → SchemaList-qOHkDzSz.js.map} +1 -1
  115. package/lib/{SchemaView-H9glU5P7.js → SchemaView-D3hm65cc.js} +3 -3
  116. package/lib/{SchemaView-H9glU5P7.js.map → SchemaView-D3hm65cc.js.map} +1 -1
  117. package/lib/{Select-CPoGZU_V.js → Select-C1DeCqKv.js} +3 -3
  118. package/lib/{Select-CPoGZU_V.js.map → Select-C1DeCqKv.js.map} +1 -1
  119. package/lib/SignUp-6SGx9Yyq.js +50 -0
  120. package/lib/SignUp-6SGx9Yyq.js.map +1 -0
  121. package/lib/{SyntaxHighlight-B0laqAqK.js → SyntaxHighlight-zvlnSnHB.js} +789 -778
  122. package/lib/{SyntaxHighlight-B0laqAqK.js.map → SyntaxHighlight-zvlnSnHB.js.map} +1 -1
  123. package/lib/{Toc-KzXCRqrX.js → Toc-Da9yp7lo.js} +5 -5
  124. package/lib/Toc-Da9yp7lo.js.map +1 -0
  125. package/lib/{ZudokuContext-BXTZApgy.js → ZudokuContext-BUZ5hkWB.js} +33 -31
  126. package/lib/ZudokuContext-BUZ5hkWB.js.map +1 -0
  127. package/lib/{chunk-PVWAREVJ-BO6B-RAk.js → chunk-PVWAREVJ-BMhpCH5D.js} +7 -7
  128. package/lib/{chunk-PVWAREVJ-BO6B-RAk.js.map → chunk-PVWAREVJ-BMhpCH5D.js.map} +1 -1
  129. package/lib/{circular-OGtD_zFg.js → circular-CSSuz-LS.js} +2 -2
  130. package/lib/{circular-OGtD_zFg.js.map → circular-CSSuz-LS.js.map} +1 -1
  131. package/lib/{createServer-DyUc5BPr.js → createServer-CLbcVLbK.js} +4 -4
  132. package/lib/{createServer-DyUc5BPr.js.map → createServer-CLbcVLbK.js.map} +1 -1
  133. package/lib/{errors-7_i0Oyw4.js → errors-CuGgh3hf.js} +2 -2
  134. package/lib/{errors-7_i0Oyw4.js.map → errors-CuGgh3hf.js.map} +1 -1
  135. package/lib/hook-CMeoxziF.js +40 -0
  136. package/lib/hook-CMeoxziF.js.map +1 -0
  137. package/lib/{index-CLJGtw_S.js → index-B1rmok4X.js} +7 -7
  138. package/lib/{index-CLJGtw_S.js.map → index-B1rmok4X.js.map} +1 -1
  139. package/lib/{index-PdgTSEkk.js → index-RNAxx6IF.js} +853 -793
  140. package/lib/index-RNAxx6IF.js.map +1 -0
  141. package/lib/{index-C5L4favO.js → index-rYHsvtTo.js} +2 -2
  142. package/lib/{index-C5L4favO.js.map → index-rYHsvtTo.js.map} +1 -1
  143. package/lib/{mutation-CdGPxHNX.js → mutation-BSU0xu4m.js} +2 -2
  144. package/lib/{mutation-CdGPxHNX.js.map → mutation-BSU0xu4m.js.map} +1 -1
  145. package/lib/ui/Callout.js +18 -18
  146. package/lib/ui/Callout.js.map +1 -1
  147. package/lib/ui/CodeBlock.js +217 -7
  148. package/lib/ui/CodeBlock.js.map +1 -1
  149. package/lib/ui/EmbeddedCodeBlock.js +22 -19
  150. package/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  151. package/lib/ui/ReactComponentDoc.js +13 -13
  152. package/lib/ui/ReactComponentDoc.js.map +1 -1
  153. package/lib/ui/SyntaxHighlight.js +3 -3
  154. package/lib/{useExposedProps-Cd7Yg_uG.js → useExposedProps-U3pmsHaG.js} +2 -2
  155. package/lib/{useExposedProps-Cd7Yg_uG.js.map → useExposedProps-U3pmsHaG.js.map} +1 -1
  156. package/lib/zudoku.__internal.js +7 -7
  157. package/lib/zudoku.auth-auth0.js +13 -13
  158. package/lib/zudoku.auth-auth0.js.map +1 -1
  159. package/lib/zudoku.auth-azureb2c.js +28 -28
  160. package/lib/zudoku.auth-azureb2c.js.map +1 -1
  161. package/lib/zudoku.auth-clerk.js +40 -40
  162. package/lib/zudoku.auth-clerk.js.map +1 -1
  163. package/lib/zudoku.auth-openid.js +53 -56
  164. package/lib/zudoku.auth-openid.js.map +1 -1
  165. package/lib/zudoku.auth-supabase.js +111 -52
  166. package/lib/zudoku.auth-supabase.js.map +1 -1
  167. package/lib/zudoku.components.js +6 -6
  168. package/lib/zudoku.hooks.js +4 -4
  169. package/lib/zudoku.plugin-api-catalog.js +5 -5
  170. package/lib/zudoku.plugin-api-keys.js +99 -99
  171. package/lib/zudoku.plugin-custom-pages.js +1 -1
  172. package/lib/zudoku.plugin-markdown.js +1 -1
  173. package/lib/zudoku.plugin-openapi.js +3 -3
  174. package/lib/zudoku.plugin-redirect.js +1 -1
  175. package/lib/zudoku.plugin-search-pagefind.js +38 -38
  176. package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
  177. package/lib/zudoku.router.js +2 -2
  178. package/package.json +16 -8
  179. package/src/app/main.css +19 -9
  180. package/src/lib/authentication/authentication.ts +19 -3
  181. package/src/lib/authentication/components/OAuthErrorPage.tsx +1 -1
  182. package/src/lib/authentication/components/SignIn.tsx +7 -5
  183. package/src/lib/authentication/components/SignOut.tsx +7 -6
  184. package/src/lib/authentication/components/SignUp.tsx +5 -8
  185. package/src/lib/authentication/hook.ts +21 -10
  186. package/src/lib/authentication/providers/auth0.tsx +2 -1
  187. package/src/lib/authentication/providers/azureb2c.tsx +10 -3
  188. package/src/lib/authentication/providers/clerk.tsx +9 -2
  189. package/src/lib/authentication/providers/openid.tsx +20 -15
  190. package/src/lib/authentication/providers/supabase/SupabaseAuthUI.tsx +75 -0
  191. package/src/lib/authentication/providers/supabase.tsx +59 -43
  192. package/src/lib/authentication/state.ts +3 -23
  193. package/src/lib/components/Zudoku.tsx +3 -3
  194. package/src/lib/components/navigation/Toc.tsx +3 -3
  195. package/src/lib/core/RouteGuard.tsx +33 -13
  196. package/src/lib/plugins/openapi/playground/CollapsibleHeader.tsx +2 -2
  197. package/src/lib/plugins/openapi/playground/Playground.tsx +13 -2
  198. package/src/lib/plugins/openapi/playground/RequestLoginDialog.tsx +20 -1
  199. package/src/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.tsx +2 -2
  200. package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +102 -58
  201. package/src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx +1 -1
  202. package/src/lib/plugins/openapi/playground/useRememberSkipLoginDialog.tsx +3 -0
  203. package/src/lib/plugins/openapi/util/generateSchemaExample.ts +10 -0
  204. package/src/lib/shiki.ts +16 -2
  205. package/src/lib/ui/Callout.tsx +10 -5
  206. package/src/lib/ui/EmbeddedCodeBlock.tsx +6 -3
  207. package/src/lib/ui/ReactComponentDoc.tsx +17 -17
  208. package/src/lib/ui/SyntaxHighlight.tsx +6 -1
  209. package/src/lib/util/MdxComponents.tsx +3 -5
  210. package/src/lib/util/syncZustandState.ts +22 -0
  211. package/lib/CodeBlock-CanTUJLl.js +0 -221
  212. package/lib/CodeBlock-CanTUJLl.js.map +0 -1
  213. package/lib/ErrorAlert-VBJ8aHH7.js.map +0 -1
  214. package/lib/OperationList-BzWKTkNq.js.map +0 -1
  215. package/lib/RouteGuard-Bg0Lu0OU.js +0 -56
  216. package/lib/RouteGuard-Bg0Lu0OU.js.map +0 -1
  217. package/lib/SignUp-DUZ4yUmQ.js +0 -56
  218. package/lib/SignUp-DUZ4yUmQ.js.map +0 -1
  219. package/lib/Toc-KzXCRqrX.js.map +0 -1
  220. package/lib/ZudokuContext-BXTZApgy.js.map +0 -1
  221. package/lib/hook-CAebs2rv.js +0 -31
  222. package/lib/hook-CAebs2rv.js.map +0 -1
  223. package/lib/index-PdgTSEkk.js.map +0 -1
@@ -1,85 +1,144 @@
1
- import { createClient as l } from "@supabase/supabase-js";
2
- import { C as g, A as p } from "./errors-7_i0Oyw4.js";
3
- import { u as r } from "./ZudokuContext-BXTZApgy.js";
4
- class f extends g {
1
+ import { j as a } from "./jsx-runtime-BzflLqGi.js";
2
+ import { createClient as h } from "@supabase/supabase-js";
3
+ import { C as m, A as g } from "./errors-CuGgh3hf.js";
4
+ import { S as v } from "./SignUp-6SGx9Yyq.js";
5
+ import { u as d } from "./ZudokuContext-BUZ5hkWB.js";
6
+ import { Auth as f } from "@supabase/auth-ui-react";
7
+ import { ThemeSupa as S } from "@supabase/auth-ui-shared";
8
+ import { a as A } from "./chunk-PVWAREVJ-BMhpCH5D.js";
9
+ import { H as T } from "./ErrorAlert-DE3Sf66a.js";
10
+ const c = ({
11
+ client: n,
12
+ config: e,
13
+ view: t = "sign_in"
14
+ }) => {
15
+ const [r] = A(), s = r.get("redirectTo"), u = e.provider ? [e.provider] : e.providers, i = e.basePath ?? "/", o = s ?? e.redirectToAfterSignUp ?? i, p = s ?? e.redirectToAfterSignIn ?? i, l = s ?? e.redirectToAfterSignOut ?? i;
16
+ return /* @__PURE__ */ a.jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ a.jsxs("div", { className: "max-w-md w-full mt-10", children: [
17
+ /* @__PURE__ */ a.jsx(T, { level: 1, children: t === "sign_in" ? "Sign in" : "Sign up" }),
18
+ /* @__PURE__ */ a.jsx(
19
+ f,
20
+ {
21
+ view: t,
22
+ redirectToAfterSignIn: p,
23
+ redirectToAfterSignUp: o,
24
+ redirectToAfterSignOut: l,
25
+ supabaseClient: n,
26
+ onlyThirdPartyProviders: e.onlyThirdPartyProviders,
27
+ appearance: {
28
+ theme: S,
29
+ variables: {
30
+ default: {
31
+ colors: {
32
+ dividerBackground: "var(--border)",
33
+ brand: "var(--primary)",
34
+ brandAccent: "hsla(from var(--primary) h s l / 0.8)",
35
+ brandButtonText: "var(--primary-foreground)",
36
+ defaultButtonBorder: "var(--border)",
37
+ inputBorder: "var(--border)",
38
+ inputText: "var(--foreground)",
39
+ inputBorderHover: "var(--accent)",
40
+ defaultButtonBackground: "var(--secondary)",
41
+ defaultButtonBackgroundHover: "var(--accent)"
42
+ },
43
+ radii: {
44
+ borderRadiusButton: "var(--radius)",
45
+ buttonBorderRadius: "var(--radius)",
46
+ inputBorderRadius: "var(--radius)"
47
+ }
48
+ }
49
+ }
50
+ },
51
+ providers: u,
52
+ redirectTo: e.redirectToAfterSignIn ?? "/"
53
+ }
54
+ )
55
+ ] }) });
56
+ };
57
+ class b extends m {
5
58
  client;
6
- provider;
7
- redirectToAfterSignUp;
8
- redirectToAfterSignIn;
9
- // biome-ignore lint/correctness/noUnusedPrivateClassMembers: Keep around
10
- redirectToAfterSignOut;
11
- constructor({
12
- supabaseUrl: e,
13
- supabaseKey: t,
14
- provider: i,
15
- redirectToAfterSignUp: c,
16
- redirectToAfterSignIn: u,
17
- redirectToAfterSignOut: d,
18
- basePath: h
19
- }) {
20
- super(), this.provider = i, this.client = l(e, t, {
59
+ providers;
60
+ config;
61
+ constructor(e) {
62
+ const { provider: t, providers: r, supabaseUrl: s, supabaseKey: u } = e;
63
+ if (super(), this.providers = r ?? (t ? [t] : []), this.providers.length === 0)
64
+ throw new Error("At least one provider must be provided");
65
+ this.client = h(s, u, {
21
66
  auth: {
22
67
  autoRefreshToken: !0,
23
68
  persistSession: !0
24
69
  }
25
- });
26
- const s = h ?? "/";
27
- this.redirectToAfterSignUp = c ?? s, this.redirectToAfterSignIn = u ?? s, this.redirectToAfterSignOut = d ?? s, this.client.auth.onAuthStateChange(async (a, o) => {
28
- o && (a === "SIGNED_IN" || a === "TOKEN_REFRESHED") ? await this.updateUserState(o) : a === "SIGNED_OUT" && r.getState().setLoggedOut();
70
+ }), this.config = e, this.client.auth.onAuthStateChange(async (i, o) => {
71
+ o && (i === "SIGNED_IN" || i === "TOKEN_REFRESHED") ? await this.updateUserState(o) : i === "SIGNED_OUT" && d.getState().setLoggedOut();
29
72
  });
30
73
  }
31
74
  async updateUserState(e) {
32
- const { user: t } = e, i = {
75
+ const { user: t } = e, r = {
33
76
  sub: t.id,
34
77
  email: t.email,
35
78
  name: t.user_metadata.full_name || t.user_metadata.name,
36
79
  emailVerified: t.email_confirmed_at != null,
37
80
  pictureUrl: t.user_metadata.avatar_url
38
81
  };
39
- r.getState().setLoggedIn({
40
- profile: i,
82
+ d.getState().setLoggedIn({
83
+ profile: r,
41
84
  providerData: { session: e }
42
85
  });
43
86
  }
44
87
  async getAccessToken() {
45
88
  const { data: e, error: t } = await this.client.auth.getSession();
46
89
  if (t || !e.session)
47
- throw new p("User is not authenticated");
90
+ throw new g("User is not authenticated");
48
91
  return e.session.access_token;
49
92
  }
50
93
  async signRequest(e) {
51
94
  const t = await this.getAccessToken();
52
95
  return e.headers.set("Authorization", `Bearer ${t}`), e;
53
96
  }
54
- signUp = async ({ redirectTo: e }) => {
55
- const t = e ?? this.redirectToAfterSignUp;
56
- await this.client.auth.signInWithOAuth({
57
- provider: this.provider,
58
- options: {
59
- redirectTo: window.location.origin + t
60
- }
61
- });
97
+ signUp = async ({ navigate: e }, { redirectTo: t }) => {
98
+ e(
99
+ t ? `/signup?redirectTo=${encodeURIComponent(t)}` : "/signup"
100
+ );
62
101
  };
63
- signIn = async ({ redirectTo: e }) => {
64
- const t = e ?? this.redirectToAfterSignIn;
65
- await this.client.auth.signInWithOAuth({
66
- provider: this.provider,
67
- options: {
68
- redirectTo: window.location.origin + t,
69
- queryParams: {
70
- access_type: "offline",
71
- prompt: "consent"
72
- }
73
- }
74
- });
102
+ signIn = async ({ navigate: e }, { redirectTo: t }) => {
103
+ e(
104
+ t ? `/signin?redirectTo=${encodeURIComponent(t)}` : "/signin"
105
+ );
75
106
  };
107
+ getRoutes = () => [
108
+ {
109
+ path: "/signin",
110
+ element: /* @__PURE__ */ a.jsx(
111
+ c,
112
+ {
113
+ view: "sign_in",
114
+ client: this.client,
115
+ config: this.config
116
+ }
117
+ )
118
+ },
119
+ {
120
+ path: "/signup",
121
+ element: /* @__PURE__ */ a.jsx(
122
+ c,
123
+ {
124
+ view: "sign_up",
125
+ client: this.client,
126
+ config: this.config
127
+ }
128
+ )
129
+ },
130
+ {
131
+ path: "/signout",
132
+ element: /* @__PURE__ */ a.jsx(v, {})
133
+ }
134
+ ];
76
135
  signOut = async () => {
77
136
  await new Promise((e) => {
78
- const { data: t } = this.client.auth.onAuthStateChange(async (i) => {
79
- i === "SIGNED_OUT" && (t.subscription.unsubscribe(), e());
137
+ const { data: t } = this.client.auth.onAuthStateChange(async (r) => {
138
+ r === "SIGNED_OUT" && (t.subscription.unsubscribe(), e());
80
139
  });
81
140
  this.client.auth.signOut();
82
- }), r.setState({
141
+ }), d.setState({
83
142
  isAuthenticated: !1,
84
143
  isPending: !1,
85
144
  profile: void 0,
@@ -91,8 +150,8 @@ class f extends g {
91
150
  !t && e.session && await this.updateUserState(e.session);
92
151
  };
93
152
  }
94
- const T = (n) => new f(n);
153
+ const j = (n) => new b(n);
95
154
  export {
96
- T as default
155
+ j as default
97
156
  };
98
157
  //# sourceMappingURL=zudoku.auth-supabase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zudoku.auth-supabase.js","sources":["../src/lib/authentication/providers/supabase.tsx"],"sourcesContent":["import {\n createClient,\n type Provider,\n type Session,\n type SupabaseClient,\n} from \"@supabase/supabase-js\";\nimport type { SupabaseAuthenticationConfig } from \"../../../config/config.js\";\nimport { CoreAuthenticationPlugin } from \"../AuthenticationPlugin.js\";\nimport type {\n AuthenticationPlugin,\n AuthenticationProviderInitializer,\n} from \"../authentication.js\";\nimport { AuthorizationError } from \"../errors.js\";\nimport { type UserProfile, useAuthState } from \"../state.js\";\n\nclass SupabaseAuthenticationProvider\n extends CoreAuthenticationPlugin\n implements AuthenticationPlugin\n{\n private readonly client: SupabaseClient;\n private readonly provider: Provider;\n private readonly redirectToAfterSignUp: string;\n private readonly redirectToAfterSignIn: string;\n // biome-ignore lint/correctness/noUnusedPrivateClassMembers: Keep around\n private readonly redirectToAfterSignOut: string;\n\n constructor({\n supabaseUrl,\n supabaseKey,\n provider,\n redirectToAfterSignUp,\n redirectToAfterSignIn,\n redirectToAfterSignOut,\n basePath,\n }: SupabaseAuthenticationConfig) {\n super();\n this.provider = provider;\n this.client = createClient(supabaseUrl, supabaseKey, {\n auth: {\n autoRefreshToken: true,\n persistSession: true,\n },\n });\n\n const root = basePath ?? \"/\";\n\n this.redirectToAfterSignUp = redirectToAfterSignUp ?? root;\n this.redirectToAfterSignIn = redirectToAfterSignIn ?? root;\n this.redirectToAfterSignOut = redirectToAfterSignOut ?? root;\n\n this.client.auth.onAuthStateChange(async (event, session) => {\n if (session && (event === \"SIGNED_IN\" || event === \"TOKEN_REFRESHED\")) {\n await this.updateUserState(session);\n } else if (event === \"SIGNED_OUT\") {\n useAuthState.getState().setLoggedOut();\n }\n });\n }\n\n private async updateUserState(session: Session) {\n const { user } = session;\n\n const profile: UserProfile = {\n sub: user.id,\n email: user.email,\n name: user.user_metadata.full_name || user.user_metadata.name,\n emailVerified: user.email_confirmed_at != null,\n pictureUrl: user.user_metadata.avatar_url,\n };\n\n useAuthState.getState().setLoggedIn({\n profile,\n providerData: { session },\n });\n }\n\n async getAccessToken(): Promise<string> {\n const { data, error } = await this.client.auth.getSession();\n\n if (error || !data.session) {\n throw new AuthorizationError(\"User is not authenticated\");\n }\n\n return data.session.access_token;\n }\n\n async signRequest(request: Request): Promise<Request> {\n const accessToken = await this.getAccessToken();\n request.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return request;\n }\n\n signUp = async ({ redirectTo }: { redirectTo?: string }) => {\n const finalRedirectTo = redirectTo ?? this.redirectToAfterSignUp;\n\n // Open Supabase Auth UI in a new window\n await this.client.auth.signInWithOAuth({\n provider: this.provider,\n options: {\n redirectTo: window.location.origin + finalRedirectTo,\n },\n });\n };\n\n signIn = async ({ redirectTo }: { redirectTo?: string }) => {\n const finalRedirectTo = redirectTo ?? this.redirectToAfterSignIn;\n\n await this.client.auth.signInWithOAuth({\n provider: this.provider,\n options: {\n redirectTo: window.location.origin + finalRedirectTo,\n queryParams: {\n access_type: \"offline\",\n prompt: \"consent\",\n },\n },\n });\n };\n\n signOut = async () => {\n await new Promise<void>((resolve) => {\n const { data } = this.client.auth.onAuthStateChange(async (event) => {\n if (event !== \"SIGNED_OUT\") return;\n data.subscription.unsubscribe();\n resolve();\n });\n void this.client.auth.signOut();\n });\n\n useAuthState.setState({\n isAuthenticated: false,\n isPending: false,\n profile: undefined,\n providerData: undefined,\n });\n };\n\n onPageLoad = async () => {\n const { data, error } = await this.client.auth.getSession();\n\n if (!error && data.session) {\n await this.updateUserState(data.session);\n }\n };\n}\n\nconst supabaseAuth: AuthenticationProviderInitializer<\n SupabaseAuthenticationConfig\n> = (options) => new SupabaseAuthenticationProvider(options);\n\nexport default supabaseAuth;\n"],"names":["SupabaseAuthenticationProvider","CoreAuthenticationPlugin","supabaseUrl","supabaseKey","provider","redirectToAfterSignUp","redirectToAfterSignIn","redirectToAfterSignOut","basePath","createClient","root","event","session","useAuthState","user","profile","data","error","AuthorizationError","request","accessToken","redirectTo","finalRedirectTo","resolve","supabaseAuth","options"],"mappings":"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"}
1
+ {"version":3,"file":"zudoku.auth-supabase.js","sources":["../src/lib/authentication/providers/supabase/SupabaseAuthUI.tsx","../src/lib/authentication/providers/supabase.tsx"],"sourcesContent":["import { Auth } from \"@supabase/auth-ui-react\";\nimport {\n ThemeSupa,\n type ThemeVariables,\n type ViewType,\n} from \"@supabase/auth-ui-shared\";\nimport type { SupabaseClient } from \"@supabase/supabase-js\";\nimport { useSearchParams } from \"react-router\";\nimport type { SupabaseAuthenticationConfig } from \"../../../../config/config.js\";\nimport { Heading } from \"../../../components/Heading.js\";\n\nexport const SupabaseAuthUI = ({\n client,\n config,\n view = \"sign_in\",\n}: {\n client: SupabaseClient;\n config: SupabaseAuthenticationConfig;\n view: ViewType;\n}) => {\n const [searchParams] = useSearchParams();\n const redirectTo = searchParams.get(\"redirectTo\");\n const providers = config.provider ? [config.provider] : config.providers;\n const root = config.basePath ?? \"/\";\n const redirectToAfterSignUp =\n redirectTo ?? config.redirectToAfterSignUp ?? root;\n const redirectToAfterSignIn =\n redirectTo ?? config.redirectToAfterSignIn ?? root;\n const redirectToAfterSignOut =\n redirectTo ?? config.redirectToAfterSignOut ?? root;\n\n return (\n <div className=\"flex items-center justify-center\">\n <div className=\"max-w-md w-full mt-10\">\n <Heading level={1}>\n {view === \"sign_in\" ? \"Sign in\" : \"Sign up\"}\n </Heading>\n <Auth\n view={view}\n redirectToAfterSignIn={redirectToAfterSignIn}\n redirectToAfterSignUp={redirectToAfterSignUp}\n redirectToAfterSignOut={redirectToAfterSignOut}\n supabaseClient={client}\n onlyThirdPartyProviders={config.onlyThirdPartyProviders}\n appearance={{\n theme: ThemeSupa,\n variables: {\n default: {\n colors: {\n dividerBackground: \"var(--border)\",\n brand: \"var(--primary)\",\n brandAccent: \"hsla(from var(--primary) h s l / 0.8)\",\n brandButtonText: \"var(--primary-foreground)\",\n defaultButtonBorder: \"var(--border)\",\n inputBorder: \"var(--border)\",\n inputText: \"var(--foreground)\",\n inputBorderHover: \"var(--accent)\",\n defaultButtonBackground: \"var(--secondary)\",\n defaultButtonBackgroundHover: \"var(--accent)\",\n },\n radii: {\n borderRadiusButton: \"var(--radius)\",\n buttonBorderRadius: \"var(--radius)\",\n inputBorderRadius: \"var(--radius)\",\n },\n } satisfies ThemeVariables,\n },\n }}\n providers={providers}\n redirectTo={config.redirectToAfterSignIn ?? \"/\"}\n />\n </div>\n </div>\n );\n};\n","import {\n createClient,\n type Provider,\n type Session,\n type SupabaseClient,\n} from \"@supabase/supabase-js\";\nimport type { SupabaseAuthenticationConfig } from \"../../../config/config.js\";\nimport { CoreAuthenticationPlugin } from \"../AuthenticationPlugin.js\";\nimport type {\n AuthActionContext,\n AuthActionOptions,\n AuthenticationPlugin,\n AuthenticationProviderInitializer,\n} from \"../authentication.js\";\nimport { SignOut } from \"../components/SignOut.js\";\nimport { AuthorizationError } from \"../errors.js\";\nimport { type UserProfile, useAuthState } from \"../state.js\";\nimport { SupabaseAuthUI } from \"./supabase/SupabaseAuthUI.js\";\n\nclass SupabaseAuthenticationProvider\n extends CoreAuthenticationPlugin\n implements AuthenticationPlugin\n{\n private readonly client: SupabaseClient;\n private readonly providers: Provider[];\n private readonly config: SupabaseAuthenticationConfig;\n\n constructor(config: SupabaseAuthenticationConfig) {\n const { provider, providers, supabaseUrl, supabaseKey } = config;\n super();\n this.providers = providers ?? (provider ? [provider] : []);\n if (this.providers.length === 0) {\n throw new Error(\"At least one provider must be provided\");\n }\n this.client = createClient(supabaseUrl, supabaseKey, {\n auth: {\n autoRefreshToken: true,\n persistSession: true,\n },\n });\n this.config = config;\n\n this.client.auth.onAuthStateChange(async (event, session) => {\n if (session && (event === \"SIGNED_IN\" || event === \"TOKEN_REFRESHED\")) {\n await this.updateUserState(session);\n } else if (event === \"SIGNED_OUT\") {\n useAuthState.getState().setLoggedOut();\n }\n });\n }\n\n private async updateUserState(session: Session) {\n const { user } = session;\n\n const profile: UserProfile = {\n sub: user.id,\n email: user.email,\n name: user.user_metadata.full_name || user.user_metadata.name,\n emailVerified: user.email_confirmed_at != null,\n pictureUrl: user.user_metadata.avatar_url,\n };\n\n useAuthState.getState().setLoggedIn({\n profile,\n providerData: { session },\n });\n }\n\n async getAccessToken(): Promise<string> {\n const { data, error } = await this.client.auth.getSession();\n\n if (error || !data.session) {\n throw new AuthorizationError(\"User is not authenticated\");\n }\n\n return data.session.access_token;\n }\n\n async signRequest(request: Request): Promise<Request> {\n const accessToken = await this.getAccessToken();\n request.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return request;\n }\n\n signUp = async (\n { navigate }: AuthActionContext,\n { redirectTo }: AuthActionOptions,\n ) => {\n void navigate(\n redirectTo\n ? `/signup?redirectTo=${encodeURIComponent(redirectTo)}`\n : `/signup`,\n );\n };\n\n signIn = async (\n { navigate }: AuthActionContext,\n { redirectTo }: AuthActionOptions,\n ) => {\n void navigate(\n redirectTo\n ? `/signin?redirectTo=${encodeURIComponent(redirectTo)}`\n : `/signin`,\n );\n };\n\n getRoutes = () => {\n return [\n {\n path: \"/signin\",\n element: (\n <SupabaseAuthUI\n view=\"sign_in\"\n client={this.client}\n config={this.config}\n />\n ),\n },\n {\n path: \"/signup\",\n element: (\n <SupabaseAuthUI\n view=\"sign_up\"\n client={this.client}\n config={this.config}\n />\n ),\n },\n {\n path: \"/signout\",\n element: <SignOut />,\n },\n ];\n };\n\n signOut = async () => {\n await new Promise<void>((resolve) => {\n const { data } = this.client.auth.onAuthStateChange(async (event) => {\n if (event !== \"SIGNED_OUT\") return;\n data.subscription.unsubscribe();\n resolve();\n });\n void this.client.auth.signOut();\n });\n\n useAuthState.setState({\n isAuthenticated: false,\n isPending: false,\n profile: undefined,\n providerData: undefined,\n });\n };\n\n onPageLoad = async () => {\n const { data, error } = await this.client.auth.getSession();\n\n if (!error && data.session) {\n await this.updateUserState(data.session);\n }\n };\n}\n\nconst supabaseAuth: AuthenticationProviderInitializer<\n SupabaseAuthenticationConfig\n> = (options) => new SupabaseAuthenticationProvider(options);\n\nexport default supabaseAuth;\n"],"names":["SupabaseAuthUI","client","config","view","searchParams","useSearchParams","redirectTo","providers","root","redirectToAfterSignUp","redirectToAfterSignIn","redirectToAfterSignOut","jsxs","jsx","Heading","Auth","ThemeSupa","SupabaseAuthenticationProvider","CoreAuthenticationPlugin","provider","supabaseUrl","supabaseKey","createClient","event","session","useAuthState","user","profile","data","error","AuthorizationError","request","accessToken","navigate","SignOut","resolve","supabaseAuth","options"],"mappings":";;;;;;;;;AAWO,MAAMA,IAAiB,CAAC;AAAA,EAC7B,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,MAAAC,IAAO;AACT,MAIM;AACJ,QAAM,CAACC,CAAY,IAAIC,EAAA,GACjBC,IAAaF,EAAa,IAAI,YAAY,GAC1CG,IAAYL,EAAO,WAAW,CAACA,EAAO,QAAQ,IAAIA,EAAO,WACzDM,IAAON,EAAO,YAAY,KAC1BO,IACJH,KAAcJ,EAAO,yBAAyBM,GAC1CE,IACJJ,KAAcJ,EAAO,yBAAyBM,GAC1CG,IACJL,KAAcJ,EAAO,0BAA0BM;AAEjD,+BACG,OAAA,EAAI,WAAU,oCACb,UAAAI,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,IAAAC,gBAAAA,MAACC,KAAQ,OAAO,GACb,UAAAX,MAAS,YAAY,YAAY,WACpC;AAAA,IACAU,gBAAAA,EAAAA;AAAAA,MAACE;AAAA,MAAA;AAAA,QACC,MAAAZ;AAAA,QACA,uBAAAO;AAAA,QACA,uBAAAD;AAAA,QACA,wBAAAE;AAAA,QACA,gBAAgBV;AAAA,QAChB,yBAAyBC,EAAO;AAAA,QAChC,YAAY;AAAA,UACV,OAAOc;AAAA,UACP,WAAW;AAAA,YACT,SAAS;AAAA,cACP,QAAQ;AAAA,gBACN,mBAAmB;AAAA,gBACnB,OAAO;AAAA,gBACP,aAAa;AAAA,gBACb,iBAAiB;AAAA,gBACjB,qBAAqB;AAAA,gBACrB,aAAa;AAAA,gBACb,WAAW;AAAA,gBACX,kBAAkB;AAAA,gBAClB,yBAAyB;AAAA,gBACzB,8BAA8B;AAAA,cAAA;AAAA,cAEhC,OAAO;AAAA,gBACL,oBAAoB;AAAA,gBACpB,oBAAoB;AAAA,gBACpB,mBAAmB;AAAA,cAAA;AAAA,YACrB;AAAA,UACF;AAAA,QACF;AAAA,QAEF,WAAAT;AAAA,QACA,YAAYL,EAAO,yBAAyB;AAAA,MAAA;AAAA,IAAA;AAAA,EAC9C,EAAA,CACF,EAAA,CACF;AAEJ;ACvDA,MAAMe,UACIC,EAEV;AAAA,EACmB;AAAA,EACA;AAAA,EACA;AAAA,EAEjB,YAAYhB,GAAsC;AAChD,UAAM,EAAE,UAAAiB,GAAU,WAAAZ,GAAW,aAAAa,GAAa,aAAAC,MAAgBnB;AAG1D,QAFA,MAAA,GACA,KAAK,YAAYK,MAAcY,IAAW,CAACA,CAAQ,IAAI,KACnD,KAAK,UAAU,WAAW;AAC5B,YAAM,IAAI,MAAM,wCAAwC;AAE1D,SAAK,SAASG,EAAaF,GAAaC,GAAa;AAAA,MACnD,MAAM;AAAA,QACJ,kBAAkB;AAAA,QAClB,gBAAgB;AAAA,MAAA;AAAA,IAClB,CACD,GACD,KAAK,SAASnB,GAEd,KAAK,OAAO,KAAK,kBAAkB,OAAOqB,GAAOC,MAAY;AAC3D,MAAIA,MAAYD,MAAU,eAAeA,MAAU,qBACjD,MAAM,KAAK,gBAAgBC,CAAO,IACzBD,MAAU,gBACnBE,EAAa,SAAA,EAAW,aAAA;AAAA,IAE5B,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,gBAAgBD,GAAkB;AAC9C,UAAM,EAAE,MAAAE,MAASF,GAEXG,IAAuB;AAAA,MAC3B,KAAKD,EAAK;AAAA,MACV,OAAOA,EAAK;AAAA,MACZ,MAAMA,EAAK,cAAc,aAAaA,EAAK,cAAc;AAAA,MACzD,eAAeA,EAAK,sBAAsB;AAAA,MAC1C,YAAYA,EAAK,cAAc;AAAA,IAAA;AAGjC,IAAAD,EAAa,SAAA,EAAW,YAAY;AAAA,MAClC,SAAAE;AAAA,MACA,cAAc,EAAE,SAAAH,EAAA;AAAA,IAAQ,CACzB;AAAA,EACH;AAAA,EAEA,MAAM,iBAAkC;AACtC,UAAM,EAAE,MAAAI,GAAM,OAAAC,EAAA,IAAU,MAAM,KAAK,OAAO,KAAK,WAAA;AAE/C,QAAIA,KAAS,CAACD,EAAK;AACjB,YAAM,IAAIE,EAAmB,2BAA2B;AAG1D,WAAOF,EAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,MAAM,YAAYG,GAAoC;AACpD,UAAMC,IAAc,MAAM,KAAK,eAAA;AAC/B,WAAAD,EAAQ,QAAQ,IAAI,iBAAiB,UAAUC,CAAW,EAAE,GACrDD;AAAA,EACT;AAAA,EAEA,SAAS,OACP,EAAE,UAAAE,KACF,EAAE,YAAA3B,QACC;AACH,IAAK2B;AAAA,MACH3B,IACI,sBAAsB,mBAAmBA,CAAU,CAAC,KACpD;AAAA,IAAA;AAAA,EAER;AAAA,EAEA,SAAS,OACP,EAAE,UAAA2B,KACF,EAAE,YAAA3B,QACC;AACH,IAAK2B;AAAA,MACH3B,IACI,sBAAsB,mBAAmBA,CAAU,CAAC,KACpD;AAAA,IAAA;AAAA,EAER;AAAA,EAEA,YAAY,MACH;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SACEO,gBAAAA,EAAAA;AAAAA,QAACb;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,QAAQ,KAAK;AAAA,UACb,QAAQ,KAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACf;AAAA,IAGJ;AAAA,MACE,MAAM;AAAA,MACN,SACEa,gBAAAA,EAAAA;AAAAA,QAACb;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,QAAQ,KAAK;AAAA,UACb,QAAQ,KAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACf;AAAA,IAGJ;AAAA,MACE,MAAM;AAAA,MACN,+BAAUkC,GAAA,CAAA,CAAQ;AAAA,IAAA;AAAA,EACpB;AAAA,EAIJ,UAAU,YAAY;AACpB,UAAM,IAAI,QAAc,CAACC,MAAY;AACnC,YAAM,EAAE,MAAAP,MAAS,KAAK,OAAO,KAAK,kBAAkB,OAAOL,MAAU;AACnE,QAAIA,MAAU,iBACdK,EAAK,aAAa,YAAA,GAClBO,EAAA;AAAA,MACF,CAAC;AACD,MAAK,KAAK,OAAO,KAAK,QAAA;AAAA,IACxB,CAAC,GAEDV,EAAa,SAAS;AAAA,MACpB,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,cAAc;AAAA,IAAA,CACf;AAAA,EACH;AAAA,EAEA,aAAa,YAAY;AACvB,UAAM,EAAE,MAAAG,GAAM,OAAAC,EAAA,IAAU,MAAM,KAAK,OAAO,KAAK,WAAA;AAE/C,IAAI,CAACA,KAASD,EAAK,WACjB,MAAM,KAAK,gBAAgBA,EAAK,OAAO;AAAA,EAE3C;AACF;AAEA,MAAMQ,IAEF,CAACC,MAAY,IAAIpB,EAA+BoB,CAAO;"}
@@ -1,14 +1,14 @@
1
1
  import "./index.esm-BnYHxCYC.js";
2
- import "./useExposedProps-Cd7Yg_uG.js";
3
- import "./chunk-PVWAREVJ-BO6B-RAk.js";
4
- import "./hook-CAebs2rv.js";
2
+ import "./useExposedProps-U3pmsHaG.js";
3
+ import "./chunk-PVWAREVJ-BMhpCH5D.js";
4
+ import "./hook-CMeoxziF.js";
5
5
  import "./ui/Button.js";
6
6
  import "./ui/Callout.js";
7
7
  import "./ClientOnly-E7hGysn1.js";
8
- import "./ZudokuContext-BXTZApgy.js";
9
- import "./ErrorAlert-VBJ8aHH7.js";
8
+ import "./ZudokuContext-BUZ5hkWB.js";
9
+ import "./ErrorAlert-DE3Sf66a.js";
10
10
  import "./Spinner-CI6bRyZw.js";
11
- import { B as d, i as h, C as l, d as k, c as S, L as y, M, e as T, S as Z, T as c, Z as f, g, h as A, f as B, j as E, u as H } from "./index-CLJGtw_S.js";
11
+ import { B as d, i as h, C as l, d as k, c as S, L as y, M, e as T, S as Z, T as c, Z as f, g, h as A, f as B, j as E, u as H } from "./index-B1rmok4X.js";
12
12
  export {
13
13
  d as Button,
14
14
  h as CACHE_KEYS,
@@ -1,7 +1,7 @@
1
- import { z as m, u as p, a as c } from "./useExposedProps-Cd7Yg_uG.js";
2
- import { u as f } from "./hook-CAebs2rv.js";
3
- import { a as n, d } from "./ZudokuContext-BXTZApgy.js";
4
- import { C as k } from "./ZudokuContext-BXTZApgy.js";
1
+ import { z as m, u as p, a as c } from "./useExposedProps-U3pmsHaG.js";
2
+ import { u as f } from "./hook-CMeoxziF.js";
3
+ import { a as n, d } from "./ZudokuContext-BUZ5hkWB.js";
4
+ import { C as k } from "./ZudokuContext-BUZ5hkWB.js";
5
5
  import { useState as E, useEffect as i } from "react";
6
6
  function C(e, s) {
7
7
  const t = n(), [r, o] = E();
@@ -1,10 +1,10 @@
1
1
  import { j as t } from "./jsx-runtime-BzflLqGi.js";
2
- import { s as f } from "./index-C5L4favO.js";
3
- import { d as b, m as j } from "./chunk-PVWAREVJ-BO6B-RAk.js";
4
- import { u as x, b as v, j as d } from "./ZudokuContext-BXTZApgy.js";
2
+ import { s as f } from "./index-rYHsvtTo.js";
3
+ import { e as b, m as j } from "./chunk-PVWAREVJ-BMhpCH5D.js";
4
+ import { u as x, b as v, j as d } from "./ZudokuContext-BUZ5hkWB.js";
5
5
  import { H as y } from "./index.esm-BnYHxCYC.js";
6
- import { L as N } from "./index-CLJGtw_S.js";
7
- import { H as k, M as S } from "./ErrorAlert-VBJ8aHH7.js";
6
+ import { L as N } from "./index-B1rmok4X.js";
7
+ import { H as k, M as S } from "./ErrorAlert-DE3Sf66a.js";
8
8
  const w = ({
9
9
  items: o,
10
10
  filterCatalogItems: r = (i) => i,