zudoku 0.16.3 → 0.17.0

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 (140) hide show
  1. package/dist/app/main.d.ts +1 -1
  2. package/dist/app/main.js +2 -2
  3. package/dist/app/main.js.map +1 -1
  4. package/dist/config/validators/validate.d.ts +44 -44
  5. package/dist/config/validators/validate.js.map +1 -1
  6. package/dist/index.d.ts +2 -2
  7. package/dist/index.js +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/authentication/authentication.d.ts +2 -2
  10. package/dist/lib/authentication/state.d.ts +1 -1
  11. package/dist/lib/authentication/state.js +5 -3
  12. package/dist/lib/authentication/state.js.map +1 -1
  13. package/dist/lib/authentication/use-broadcast/shared.d.ts +48 -0
  14. package/dist/lib/authentication/use-broadcast/shared.js +243 -0
  15. package/dist/lib/authentication/use-broadcast/shared.js.map +1 -0
  16. package/dist/lib/authentication/use-broadcast/useBroadcast.d.ts +24 -0
  17. package/dist/lib/authentication/use-broadcast/useBroadcast.js +106 -0
  18. package/dist/lib/authentication/use-broadcast/useBroadcast.js.map +1 -0
  19. package/dist/lib/components/ClientOnly.d.ts +4 -2
  20. package/dist/lib/components/ClientOnly.js +1 -1
  21. package/dist/lib/components/ClientOnly.js.map +1 -1
  22. package/dist/lib/components/Header.js +3 -1
  23. package/dist/lib/components/Header.js.map +1 -1
  24. package/dist/lib/components/{DevPortal.d.ts → Zudoku.d.ts} +3 -3
  25. package/dist/lib/components/{DevPortal.js → Zudoku.js} +11 -11
  26. package/dist/lib/components/Zudoku.js.map +1 -0
  27. package/dist/lib/components/context/ZudokuContext.d.ts +4 -4
  28. package/dist/lib/components/context/ZudokuContext.js +1 -1
  29. package/dist/lib/components/context/ZudokuContext.js.map +1 -1
  30. package/dist/lib/components/context/ZudokuProvider.d.ts +2 -2
  31. package/dist/lib/components/context/ZudokuProvider.js.map +1 -1
  32. package/dist/lib/components/index.d.ts +4 -7
  33. package/dist/lib/components/index.js +2 -3
  34. package/dist/lib/components/index.js.map +1 -1
  35. package/dist/lib/core/{DevPortalContext.d.ts → ZudokuContext.d.ts} +5 -5
  36. package/dist/lib/core/{DevPortalContext.js → ZudokuContext.js} +2 -2
  37. package/dist/lib/core/ZudokuContext.js.map +1 -0
  38. package/dist/lib/core/plugins.d.ts +12 -12
  39. package/dist/lib/core/plugins.js.map +1 -1
  40. package/dist/lib/plugins/api-keys/index.d.ts +9 -9
  41. package/dist/lib/plugins/api-keys/index.js.map +1 -1
  42. package/dist/lib/plugins/custom-pages/index.d.ts +2 -2
  43. package/dist/lib/plugins/custom-pages/index.js.map +1 -1
  44. package/dist/lib/plugins/markdown/index.d.ts +2 -2
  45. package/dist/lib/plugins/markdown/index.js.map +1 -1
  46. package/dist/lib/plugins/openapi/OperationList.js +1 -1
  47. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  48. package/dist/lib/plugins/openapi/Sidecar.js +28 -24
  49. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  50. package/dist/lib/plugins/openapi/index.d.ts +2 -2
  51. package/dist/lib/plugins/openapi/index.js.map +1 -1
  52. package/dist/lib/plugins/redirect/index.d.ts +2 -2
  53. package/dist/lib/plugins/redirect/index.js.map +1 -1
  54. package/dist/lib/plugins/search-inkeep/index.d.ts +2 -2
  55. package/dist/lib/plugins/search-inkeep/index.js.map +1 -1
  56. package/dist/lib/ui/ActionButton.d.ts +3 -1
  57. package/dist/lib/util/useOnScreen.d.ts +4 -0
  58. package/dist/lib/util/useOnScreen.js +19 -0
  59. package/dist/lib/util/useOnScreen.js.map +1 -0
  60. package/dist/vite/plugin-mdx.d.ts +0 -6
  61. package/dist/vite/plugin-mdx.js.map +1 -1
  62. package/lib/{AnchorLink-BbB2q-jx.js → AnchorLink-DYbUOP9U.js} +2 -2
  63. package/lib/{AnchorLink-BbB2q-jx.js.map → AnchorLink-DYbUOP9U.js.map} +1 -1
  64. package/lib/{AuthenticationPlugin-C9BHGXlE.js → AuthenticationPlugin-bqGAKfot.js} +3 -3
  65. package/lib/{AuthenticationPlugin-C9BHGXlE.js.map → AuthenticationPlugin-bqGAKfot.js.map} +1 -1
  66. package/lib/{ClientOnly-CVN6leDu.js → ClientOnly-E7hGysn1.js} +4 -4
  67. package/lib/ClientOnly-E7hGysn1.js.map +1 -0
  68. package/lib/{Markdown-BDcCAWwm.js → Markdown-D6UxMbZm.js} +2 -2
  69. package/lib/{Markdown-BDcCAWwm.js.map → Markdown-D6UxMbZm.js.map} +1 -1
  70. package/lib/{MdxPage-DKMH_t0f.js → MdxPage-DRKqyn2b.js} +5 -5
  71. package/lib/{MdxPage-DKMH_t0f.js.map → MdxPage-DRKqyn2b.js.map} +1 -1
  72. package/lib/{OperationList-BjppA5yM.js → OperationList-BHUBGM0c.js} +5 -5
  73. package/lib/{OperationList-BjppA5yM.js.map → OperationList-BHUBGM0c.js.map} +1 -1
  74. package/lib/{Route-D_djzMv3.js → Route-B0XuN1oC.js} +3 -3
  75. package/lib/{Route-D_djzMv3.js.map → Route-B0XuN1oC.js.map} +1 -1
  76. package/lib/{Select-Bagt3Bme.js → Select-DYKDahHt.js} +3 -3
  77. package/lib/{Select-Bagt3Bme.js.map → Select-DYKDahHt.js.map} +1 -1
  78. package/lib/{SlotletProvider-Da7eFgd2.js → SlotletProvider-mhjLPG44.js} +4 -4
  79. package/lib/{SlotletProvider-Da7eFgd2.js.map → SlotletProvider-mhjLPG44.js.map} +1 -1
  80. package/lib/{hook-sn0zMTkE.js → hook-CjQERPa7.js} +3 -3
  81. package/lib/{hook-sn0zMTkE.js.map → hook-CjQERPa7.js.map} +1 -1
  82. package/lib/{index-_gtpPhlu.js → index-BRg5pi5D.js} +1190 -1165
  83. package/lib/index-BRg5pi5D.js.map +1 -0
  84. package/lib/{index-CRo94sKK.js → index-DM9hrcCG.js} +4 -4
  85. package/lib/{index-CRo94sKK.js.map → index-DM9hrcCG.js.map} +1 -1
  86. package/lib/state-BsPrOUAh.js +252 -0
  87. package/lib/state-BsPrOUAh.js.map +1 -0
  88. package/lib/ui/ActionButton.js.map +1 -1
  89. package/lib/{useExposedProps-ChOIUaS4.js → useExposedProps-BxyHjPNN.js} +2 -2
  90. package/lib/{useExposedProps-ChOIUaS4.js.map → useExposedProps-BxyHjPNN.js.map} +1 -1
  91. package/lib/{ZudokuContext-BKXGJTmu.js → utils-DNAltzXc.js} +153 -152
  92. package/lib/utils-DNAltzXc.js.map +1 -0
  93. package/lib/zudoku.auth-auth0.js +1 -1
  94. package/lib/zudoku.auth-clerk.js +2 -2
  95. package/lib/zudoku.auth-openid.js +4 -4
  96. package/lib/zudoku.components.js +672 -650
  97. package/lib/zudoku.components.js.map +1 -1
  98. package/lib/zudoku.plugin-api-keys.js +5 -5
  99. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  100. package/lib/zudoku.plugin-custom-pages.js +2 -2
  101. package/lib/zudoku.plugin-custom-pages.js.map +1 -1
  102. package/lib/zudoku.plugin-markdown.js +1 -1
  103. package/lib/zudoku.plugin-markdown.js.map +1 -1
  104. package/lib/zudoku.plugin-openapi.js +5 -5
  105. package/lib/zudoku.plugin-redirect.js.map +1 -1
  106. package/lib/zudoku.plugin-search-inkeep.js +1 -1
  107. package/lib/zudoku.plugin-search-inkeep.js.map +1 -1
  108. package/package.json +2 -2
  109. package/src/app/main.tsx +4 -4
  110. package/src/lib/authentication/authentication.ts +2 -2
  111. package/src/lib/authentication/state.ts +12 -5
  112. package/{LICENSE.md → src/lib/authentication/use-broadcast/LICENSE.md} +2 -2
  113. package/src/lib/authentication/use-broadcast/shared.ts +372 -0
  114. package/src/lib/authentication/use-broadcast/useBroadcast.ts +146 -0
  115. package/src/lib/components/ClientOnly.tsx +6 -3
  116. package/src/lib/components/Header.tsx +26 -20
  117. package/src/lib/components/Zudoku.tsx +113 -0
  118. package/src/lib/components/context/ZudokuContext.ts +3 -3
  119. package/src/lib/components/context/ZudokuProvider.tsx +2 -2
  120. package/src/lib/components/index.ts +2 -3
  121. package/src/lib/core/{DevPortalContext.ts → ZudokuContext.ts} +5 -5
  122. package/src/lib/core/plugins.ts +12 -16
  123. package/src/lib/plugins/api-keys/index.tsx +9 -9
  124. package/src/lib/plugins/custom-pages/index.tsx +2 -2
  125. package/src/lib/plugins/markdown/index.tsx +2 -2
  126. package/src/lib/plugins/openapi/OperationList.tsx +2 -1
  127. package/src/lib/plugins/openapi/Sidecar.tsx +65 -51
  128. package/src/lib/plugins/openapi/index.tsx +2 -4
  129. package/src/lib/plugins/redirect/index.tsx +2 -2
  130. package/src/lib/plugins/search-inkeep/index.tsx +2 -2
  131. package/src/lib/ui/ActionButton.tsx +1 -1
  132. package/src/lib/util/useOnScreen.ts +32 -0
  133. package/dist/lib/components/DevPortal.js.map +0 -1
  134. package/dist/lib/core/DevPortalContext.js.map +0 -1
  135. package/lib/ClientOnly-CVN6leDu.js.map +0 -1
  136. package/lib/ZudokuContext-BKXGJTmu.js.map +0 -1
  137. package/lib/index-_gtpPhlu.js.map +0 -1
  138. package/lib/state-CsuHT8ZO.js +0 -183
  139. package/lib/state-CsuHT8ZO.js.map +0 -1
  140. package/src/lib/components/DevPortal.tsx +0 -111
@@ -0,0 +1,243 @@
1
+ // https://github.com/Romainlg29/use-broadcast/
2
+ /**
3
+ * Shared implementation
4
+ * @param f Zustand state creator
5
+ * @param options The options
6
+ */
7
+ const sharedImpl = (f, options) => (set, get, store) => {
8
+ /**
9
+ * The broadcast channel is not supported in SSR
10
+ */
11
+ if (typeof window === "undefined" &&
12
+ !(typeof WorkerGlobalScope !== "undefined" &&
13
+ self instanceof WorkerGlobalScope)) {
14
+ // eslint-disable-next-line no-console
15
+ console.warn("BroadcastChannel is not supported in this environment. The store will not be shared.");
16
+ return f(set, get, store);
17
+ }
18
+ /**
19
+ * If BroadcastChannel is not supported, return the basic store
20
+ */
21
+ if (typeof BroadcastChannel === "undefined") {
22
+ // eslint-disable-next-line no-console
23
+ console.warn("BroadcastChannel is not supported in this browser. The store will not be shared.");
24
+ return f(set, get, store);
25
+ }
26
+ /**
27
+ * Is the store synced with the other tabs
28
+ */
29
+ let isSynced = get() !== undefined;
30
+ /**
31
+ * Is this tab / window the main tab / window
32
+ * When a new tab / window is opened, it will be synced with the main
33
+ */
34
+ let isMain = false;
35
+ /**
36
+ * The broadcast channel name
37
+ */
38
+ const name = options?.name ?? f.toString();
39
+ /**
40
+ * The id of the tab / window
41
+ */
42
+ let id = 0;
43
+ /**
44
+ * Store a list of all the tabs / windows
45
+ * Only for the main tab / window
46
+ */
47
+ const tabs = [0];
48
+ /**
49
+ * Create the broadcast channel
50
+ */
51
+ const channel = new BroadcastChannel(name);
52
+ /**
53
+ * Handle the Zustand set function
54
+ * Trigger a postMessage to all the other tabs
55
+ */
56
+ const onSet = (...args) => {
57
+ /**
58
+ * Get the previous states
59
+ */
60
+ const previous = get();
61
+ /**
62
+ * Update the states
63
+ */
64
+ set(...args);
65
+ /**
66
+ * If the stores should not be synced, return.
67
+ */
68
+ if (options?.unsync) {
69
+ return;
70
+ }
71
+ /**
72
+ * Get the fresh states
73
+ */
74
+ const updated = get();
75
+ /**
76
+ * Get the states that changed
77
+ */
78
+ const state = Object.entries(updated).reduce((obj, [key, val]) => {
79
+ if (previous[key] !== val) {
80
+ obj = { ...obj, [key]: val };
81
+ }
82
+ return obj;
83
+ }, {});
84
+ /**
85
+ * Send the states to all the other tabs
86
+ */
87
+ channel.postMessage({ action: "change", state });
88
+ };
89
+ /**
90
+ * Subscribe to the broadcast channel
91
+ */
92
+ channel.onmessage = (e) => {
93
+ if (e.data.action === "sync") {
94
+ /**
95
+ * If this tab / window is not the main, return
96
+ */
97
+ if (!isMain) {
98
+ return;
99
+ }
100
+ /**
101
+ * Remove all the functions and symbols from the store
102
+ */
103
+ const state = Object.entries(get()).reduce((obj, [key, val]) => {
104
+ if (typeof val !== "function" && typeof val !== "symbol") {
105
+ obj = { ...obj, [key]: val };
106
+ }
107
+ return obj;
108
+ }, {});
109
+ /**
110
+ * Send the state to the other tabs
111
+ */
112
+ channel.postMessage({ action: "change", state });
113
+ /**
114
+ * Set the new tab / window id
115
+ */
116
+ const new_id = tabs[tabs.length - 1] + 1;
117
+ tabs.push(new_id);
118
+ options?.onTabsChange?.(tabs);
119
+ channel.postMessage({ action: "add_new_tab", id: new_id });
120
+ return;
121
+ }
122
+ /**
123
+ * Set an id for the tab / window if it doesn't have one
124
+ */
125
+ if (e.data.action === "add_new_tab" && !isMain && id === 0) {
126
+ id = e.data.id;
127
+ return;
128
+ }
129
+ /**
130
+ * On receiving a new state, update the state
131
+ */
132
+ if (e.data.action === "change") {
133
+ /**
134
+ * Update the state
135
+ */
136
+ set(e.data.state);
137
+ /**
138
+ * Set the synced attribute
139
+ */
140
+ isSynced = true;
141
+ }
142
+ /**
143
+ * On receiving a close message, remove the tab / window id from the list
144
+ */
145
+ if (e.data.action === "close") {
146
+ if (!isMain) {
147
+ return;
148
+ }
149
+ const index = tabs.indexOf(e.data.id);
150
+ if (index !== -1) {
151
+ tabs.splice(index, 1);
152
+ options?.onTabsChange?.(tabs);
153
+ }
154
+ }
155
+ /**
156
+ * On receiving a change_main message, change the main tab / window
157
+ */
158
+ if (e.data.action === "change_main") {
159
+ if (e.data.id === id) {
160
+ isMain = true;
161
+ tabs.splice(0, tabs.length, ...e.data.tabs);
162
+ options?.onBecomeMain?.(id);
163
+ }
164
+ }
165
+ };
166
+ /**
167
+ * Synchronize with the main tab
168
+ */
169
+ const synchronize = () => {
170
+ channel.postMessage({ action: "sync" });
171
+ /**
172
+ * If isSynced is false after 100ms, this tab is the main tab
173
+ */
174
+ setTimeout(() => {
175
+ if (!isSynced) {
176
+ isMain = true;
177
+ isSynced = true;
178
+ options?.onBecomeMain?.(id);
179
+ }
180
+ }, options?.mainTimeout ?? 100);
181
+ };
182
+ /**
183
+ * Handle case when the tab / window is closed
184
+ */
185
+ const onClose = () => {
186
+ channel.postMessage({ action: "close", id });
187
+ /**
188
+ * If we're closing the main, make the second the new main
189
+ */
190
+ if (isMain) {
191
+ /**
192
+ * If there is only one tab left, close the channel and return
193
+ */
194
+ if (tabs.length === 1) {
195
+ /**
196
+ * Clean up
197
+ */
198
+ channel.close();
199
+ return;
200
+ }
201
+ const remaining_tabs = tabs.filter((tab) => tab !== id);
202
+ channel.postMessage({
203
+ action: "change_main",
204
+ id: remaining_tabs[0],
205
+ tabs: remaining_tabs,
206
+ });
207
+ return;
208
+ }
209
+ };
210
+ /**
211
+ * Add close event listener
212
+ */
213
+ if (typeof window !== "undefined") {
214
+ window.addEventListener("beforeunload", onClose);
215
+ }
216
+ /**
217
+ * Synchronize with the main tab
218
+ */
219
+ if (!isSynced) {
220
+ synchronize();
221
+ }
222
+ /**
223
+ * Modify and return the Zustand store
224
+ */
225
+ store.setState = onSet;
226
+ return f(onSet, get, store);
227
+ };
228
+ /**
229
+ * Shared middleware
230
+ *
231
+ * @example
232
+ * import { create } from 'zustand';
233
+ * import { shared } from 'use-broadcast-ts';
234
+ *
235
+ * const useStore = create(
236
+ * shared(
237
+ * (set) => ({ count: 0 }),
238
+ * { name: 'my-store' }
239
+ * )
240
+ * );
241
+ */
242
+ export const shared = sharedImpl;
243
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/lib/authentication/use-broadcast/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Our hook will return an object with three properties:
3
+ * - send: a function that will send a message to all other tabs
4
+ * - state: the current state of the broadcast
5
+ * - subscribe: a function that will subscribe to the broadcast (Only if options.subscribe is true)
6
+ */
7
+ export type UseBroadcastReturn<T> = {
8
+ send: (val: T) => void;
9
+ state: T | undefined;
10
+ subscribe: (callback: (e: T) => void) => () => void;
11
+ };
12
+ /**
13
+ * The options for the useBroadcast hook
14
+ */
15
+ export type UseBroadcastOptions = {
16
+ subscribe?: boolean;
17
+ };
18
+ /**
19
+ *
20
+ * @param name The name of the broadcast channel
21
+ * @param val The initial value of the broadcast
22
+ * @returns Returns an object with three properties: send, state and subscribe
23
+ */
24
+ export declare const useBroadcast: <T>(name: string, val?: T, options?: UseBroadcastOptions) => UseBroadcastReturn<T>;
@@ -0,0 +1,106 @@
1
+ // https://github.com/Romainlg29/use-broadcast/
2
+ import { useEffect, useRef, useState } from "react";
3
+ /**
4
+ *
5
+ * @param name The name of the broadcast channel
6
+ * @param val The initial value of the broadcast
7
+ * @returns Returns an object with three properties: send, state and subscribe
8
+ */
9
+ export const useBroadcast = (name, val, options) => {
10
+ /**
11
+ * Store the state of the broadcast
12
+ */
13
+ const [state, setState] = useState(val);
14
+ /**
15
+ * Store the BroadcastChannel instance
16
+ */
17
+ const channel = useRef(null);
18
+ /**
19
+ * Store the listeners
20
+ */
21
+ const listeners = useRef([]);
22
+ /**
23
+ * This function send the value to all the other tabs
24
+ * @param val The value to send
25
+ */
26
+ const send = (val) => {
27
+ if (!channel.current) {
28
+ return;
29
+ }
30
+ /**
31
+ * Send the value to all the other tabs
32
+ */
33
+ channel.current.postMessage(val);
34
+ if (!options?.subscribe) {
35
+ setState(val);
36
+ }
37
+ /**
38
+ * Dispatch the event to the listeners
39
+ */
40
+ listeners.current.forEach((listener) => listener(val));
41
+ };
42
+ /**
43
+ * This function subscribe to the broadcast
44
+ * @param callback The callback function
45
+ * @returns Returns a function that unsubscribe the callback
46
+ */
47
+ const subscribe = (callback) => {
48
+ /**
49
+ * Add the callback to the listeners
50
+ */
51
+ listeners.current.push(callback);
52
+ /**
53
+ * Return a function that unsubscribe the callback
54
+ */
55
+ return () => listeners.current.splice(listeners.current.indexOf(callback), 1);
56
+ };
57
+ useEffect(() => {
58
+ /**
59
+ * If BroadcastChannel is not supported, we log an error and return
60
+ */
61
+ if (typeof window === "undefined") {
62
+ // eslint-disable-next-line no-console
63
+ console.error("Window is undefined!");
64
+ return;
65
+ }
66
+ if (!window.BroadcastChannel) {
67
+ // eslint-disable-next-line no-console
68
+ console.error("BroadcastChannel is not supported!");
69
+ return;
70
+ }
71
+ /**
72
+ * If the channel is null, we create a new one
73
+ */
74
+ if (!channel.current) {
75
+ channel.current = new BroadcastChannel(name);
76
+ }
77
+ /**
78
+ * Subscribe to the message event
79
+ * @param e The message event
80
+ */
81
+ channel.current.onmessage = (e) => {
82
+ /**
83
+ * Update the state
84
+ */
85
+ if (!options?.subscribe) {
86
+ setState(e.data);
87
+ }
88
+ /**
89
+ * Dispatch an event to the listeners
90
+ */
91
+ listeners.current.forEach((listener) => listener(e.data));
92
+ };
93
+ /**
94
+ * Cleanup
95
+ */
96
+ return () => {
97
+ if (!channel.current) {
98
+ return;
99
+ }
100
+ channel.current.close();
101
+ channel.current = null;
102
+ };
103
+ }, [name, options]);
104
+ return { send, state, subscribe };
105
+ };
106
+ //# sourceMappingURL=useBroadcast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBroadcast.js","sourceRoot":"","sources":["../../../../src/lib/authentication/use-broadcast/useBroadcast.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAqBpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAAY,EACZ,GAAO,EACP,OAA6B,EACN,EAAE;IACzB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,GAAG,CAAC,CAAC;IAEvD;;OAEG;IACH,MAAM,OAAO,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAEtD;;OAEG;IACH,MAAM,SAAS,GAAG,MAAM,CAAqB,EAAE,CAAC,CAAC;IAEjD;;;OAGG;IACH,MAAM,IAAI,GAAG,CAAC,GAAM,EAAE,EAAE;QACtB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED;;WAEG;QACH,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;YACxB,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QAED;;WAEG;QACH,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF;;;;OAIG;IACH,MAAM,SAAS,GAAG,CAAC,QAAwB,EAAE,EAAE;QAC7C;;WAEG;QACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjC;;WAEG;QACH,OAAO,GAAG,EAAE,CACV,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb;;WAEG;QACH,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC7B,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED;;WAEG;QACH,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED;;;WAGG;QACH,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE;YAChC;;eAEG;YACH,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;gBACxB,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAED;;eAEG;YACH,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEF;;WAEG;QACH,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACpC,CAAC,CAAC"}
@@ -1,3 +1,5 @@
1
+ import { type ReactNode } from "react";
1
2
  export declare const ClientOnly: (props: {
2
- children: React.ReactNode;
3
- }) => import("react").ReactNode;
3
+ children: ReactNode;
4
+ fallback?: ReactNode;
5
+ }) => ReactNode;
@@ -2,6 +2,6 @@ import { useSyncExternalStore } from "react";
2
2
  const noop = () => () => { };
3
3
  export const ClientOnly = (props) => {
4
4
  const value = useSyncExternalStore(noop, () => "client", () => "server");
5
- return value === "client" ? props.children : null;
5
+ return value === "client" ? props.children : props.fallback;
6
6
  };
7
7
  //# sourceMappingURL=ClientOnly.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClientOnly.js","sourceRoot":"","sources":["../../../src/lib/components/ClientOnly.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAE7C,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;AAE5B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAoC,EAAE,EAAE;IACjE,MAAM,KAAK,GAAG,oBAAoB,CAChC,IAAI,EACJ,GAAG,EAAE,CAAC,QAAQ,EACd,GAAG,EAAE,CAAC,QAAQ,CACf,CAAC;IAEF,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC,CAAC"}
1
+ {"version":3,"file":"ClientOnly.js","sourceRoot":"","sources":["../../../src/lib/components/ClientOnly.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAE7D,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;AAE5B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAG1B,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,oBAAoB,CAChC,IAAI,EACJ,GAAG,EAAE,CAAC,QAAQ,EACd,GAAG,EAAE,CAAC,QAAQ,CACf,CAAC;IAEF,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC9D,CAAC,CAAC"}
@@ -3,12 +3,14 @@ import { MoonStarIcon, SunIcon } from "lucide-react";
3
3
  import { memo } from "react";
4
4
  import { Link } from "react-router-dom";
5
5
  import { Button } from "zudoku/ui/Button.js";
6
+ import { Skeleton } from "zudoku/ui/Skeleton.js";
6
7
  import { useAuth } from "../authentication/hook.js";
7
8
  import { isProfileMenuPlugin } from "../core/plugins.js";
8
9
  import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from "../ui/DropdownMenu.js";
9
10
  import { cn } from "../util/cn.js";
10
11
  import { joinPath } from "../util/joinPath.js";
11
12
  import { Banner } from "./Banner.js";
13
+ import { ClientOnly } from "./ClientOnly.js";
12
14
  import { useTheme } from "./context/ThemeContext.js";
13
15
  import { useZudoku } from "./context/ZudokuContext.js";
14
16
  import { MobileTopNavigation } from "./MobileTopNavigation.js";
@@ -35,6 +37,6 @@ export const Header = memo(function HeaderInner() {
35
37
  ? page.logo.src.light
36
38
  : joinPath(import.meta.env.BASE_URL, page.logo.src.light), alt: page.logo.alt ?? page.pageTitle, style: { width: page.logo.width }, className: cn("h-10", isDark && "hidden"), loading: "lazy" }), _jsx("img", { src: /https?:\/\//.test(page.logo.src.dark)
37
39
  ? page.logo.src.dark
38
- : joinPath(import.meta.env.BASE_URL, page.logo.src.dark), alt: page.logo.alt ?? page.pageTitle, style: { width: page.logo.width }, className: cn("h-10", !isDark && "hidden"), loading: "lazy" })] })), _jsx("span", { className: "font-bold text-2xl text-foreground/85 tracking-wide", children: page?.pageTitle })] }) }) }), _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-[--sidecar-grid-cols] items-center gap-8", children: [_jsx("div", { className: "w-full justify-center hidden lg:flex", children: _jsx(Search, {}) }), _jsx(MobileTopNavigation, {}), _jsxs("div", { className: "hidden lg:flex items-center justify-self-end text-sm gap-2", children: [_jsx(Slotlet, { name: "head-navigation-start" }), isAuthEnabled && !isAuthenticated ? (_jsx(Button, { variant: "ghost", onClick: () => auth.login(), children: "Login" })) : (accountItems.length > 0 && (_jsxs(DropdownMenu, { modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", children: profile?.email ? `${profile.email}` : "My Account" }) }), _jsxs(DropdownMenuContent, { className: "w-56", children: [_jsx(DropdownMenuLabel, { children: "My Account" }), _jsx(DropdownMenuSeparator, {}), accountItems] })] }))), _jsx(Button, { variant: "ghost", "aria-label": isDark ? "Switch to light mode" : "Switch to dark mode", className: "p-2.5 -m-2.5 rounded-full", onClick: toggleTheme, children: _jsx(ThemeIcon, { size: 18 }) }), _jsx(Slotlet, { name: "head-navigation-end" })] })] })] }), _jsx(Slotlet, { name: "top-navigation-before" }), _jsx(TopNavigation, {}), _jsx(Slotlet, { name: "top-navigation-after" })] })] }));
40
+ : joinPath(import.meta.env.BASE_URL, page.logo.src.dark), alt: page.logo.alt ?? page.pageTitle, style: { width: page.logo.width }, className: cn("h-10", !isDark && "hidden"), loading: "lazy" })] })), _jsx("span", { className: "font-bold text-2xl text-foreground/85 tracking-wide", children: page?.pageTitle })] }) }) }), _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-[--sidecar-grid-cols] items-center gap-8", children: [_jsx("div", { className: "w-full justify-center hidden lg:flex", children: _jsx(Search, {}) }), _jsx(MobileTopNavigation, {}), _jsxs("div", { className: "hidden lg:flex items-center justify-self-end text-sm gap-2", children: [_jsx(Slotlet, { name: "head-navigation-start" }), _jsx(ClientOnly, { fallback: _jsx(Skeleton, { className: "rounded h-5 w-24 mr-4" }), children: isAuthEnabled && !isAuthenticated ? (_jsx(Button, { variant: "ghost", onClick: () => auth.login(), children: "Login" })) : (accountItems.length > 0 && (_jsxs(DropdownMenu, { modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", children: profile?.email ? `${profile.email}` : "My Account" }) }), _jsxs(DropdownMenuContent, { className: "w-56", children: [_jsx(DropdownMenuLabel, { children: "My Account" }), _jsx(DropdownMenuSeparator, {}), accountItems] })] }))) }), _jsx(Button, { variant: "ghost", "aria-label": isDark ? "Switch to light mode" : "Switch to dark mode", className: "p-2.5 -m-2.5 rounded-full", onClick: toggleTheme, children: _jsx(ThemeIcon, { size: 18 }) }), _jsx(Slotlet, { name: "head-navigation-end" })] })] })] }), _jsx(Slotlet, { name: "top-navigation-before" }), _jsx(TopNavigation, {}), _jsx(Slotlet, { name: "top-navigation-after" })] })] }));
39
41
  });
40
42
  //# sourceMappingURL=Header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/lib/components/Header.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/lib/components/Header.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { ZudokuContextOptions } from "../core/DevPortalContext.js";
1
+ import { ZudokuContextOptions } from "../core/ZudokuContext.js";
2
2
  import "../util/requestIdleCallbackPolyfill.js";
3
- declare const DevPortal: {
3
+ declare const Zudoku: {
4
4
  (props: ZudokuContextOptions): import("react/jsx-runtime").JSX.Element;
5
5
  displayName: string;
6
6
  };
7
- export { DevPortal };
7
+ export { Zudoku };
@@ -5,8 +5,8 @@ import { Helmet } from "@zudoku/react-helmet-async";
5
5
  import { Fragment, memo, useContext, useEffect, useMemo, useState, } from "react";
6
6
  import { ErrorBoundary } from "react-error-boundary";
7
7
  import { Outlet, useNavigation } from "react-router-dom";
8
- import { DevPortalContext, queryClient, } from "../core/DevPortalContext.js";
9
8
  import { hasHead, isMdxProviderPlugin } from "../core/plugins.js";
9
+ import { queryClient, ZudokuContext, } from "../core/ZudokuContext.js";
10
10
  import { TopLevelError } from "../errors/TopLevelError.js";
11
11
  import { StaggeredRenderContext } from "../plugins/openapi/StaggeredRender.js";
12
12
  import { MdxComponents } from "../util/MdxComponents.js";
@@ -16,7 +16,7 @@ import { ThemeProvider } from "./context/ThemeProvider.js";
16
16
  import { ViewportAnchorProvider } from "./context/ViewportAnchorContext.js";
17
17
  import { ZudokuProvider } from "./context/ZudokuProvider.js";
18
18
  import { SlotletProvider } from "./SlotletProvider.js";
19
- const DevPortalInner = ({ children, ...props }) => {
19
+ const ZudokoInner = memo(({ children, ...props }) => {
20
20
  const components = useMemo(() => ({ ...DEFAULT_COMPONENTS, ...props.overrides }), [props.overrides]);
21
21
  const mdxComponents = useMemo(() => {
22
22
  const componentsFromPlugins = (props.plugins ?? [])
@@ -38,17 +38,17 @@ const DevPortalInner = ({ children, ...props }) => {
38
38
  }
39
39
  setDidNavigate(true);
40
40
  }, [didNavigate, navigation.location]);
41
- const [devPortalContext] = useState(() => new DevPortalContext(props));
41
+ const [zudokuContext] = useState(() => new ZudokuContext(props));
42
42
  const heads = props.plugins
43
43
  ?.filter(hasHead)
44
44
  // eslint-disable-next-line react/no-array-index-key
45
45
  .map((plugin, i) => _jsx(Fragment, { children: plugin.getHead?.() }, i));
46
- return (_jsxs(QueryClientProvider, { client: queryClient, children: [_jsx(Helmet, { children: heads }), _jsx(StaggeredRenderContext.Provider, { value: staggeredValue, children: _jsx(ZudokuProvider, { context: devPortalContext, children: _jsx(MDXProvider, { components: mdxComponents, children: _jsx(ThemeProvider, { children: _jsx(ComponentsProvider, { value: components, children: _jsx(SlotletProvider, { slotlets: props.slotlets, children: _jsx(ViewportAnchorProvider, { children: children ?? _jsx(Outlet, {}) }) }) }) }) }) }) })] }));
46
+ return (_jsxs(QueryClientProvider, { client: queryClient, children: [_jsx(Helmet, { children: heads }), _jsx(StaggeredRenderContext.Provider, { value: staggeredValue, children: _jsx(ZudokuProvider, { context: zudokuContext, children: _jsx(MDXProvider, { components: mdxComponents, children: _jsx(ThemeProvider, { children: _jsx(ComponentsProvider, { value: components, children: _jsx(SlotletProvider, { slotlets: props.slotlets, children: _jsx(ViewportAnchorProvider, { children: children ?? _jsx(Outlet, {}) }) }) }) }) }) }) })] }));
47
+ });
48
+ ZudokoInner.displayName = "ZudokoInner";
49
+ const Zudoku = (props) => {
50
+ return (_jsx(ErrorBoundary, { FallbackComponent: TopLevelError, children: _jsx(ZudokoInner, { ...props }) }));
47
51
  };
48
- const Inner = memo(DevPortalInner);
49
- const DevPortal = (props) => {
50
- return (_jsx(ErrorBoundary, { FallbackComponent: TopLevelError, children: _jsx(Inner, { ...props }) }));
51
- };
52
- DevPortal.displayName = "DevPortal";
53
- export { DevPortal };
54
- //# sourceMappingURL=DevPortal.js.map
52
+ Zudoku.displayName = "Zudoku";
53
+ export { Zudoku };
54
+ //# sourceMappingURL=Zudoku.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Zudoku.js","sourceRoot":"","sources":["../../../src/lib/components/Zudoku.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { DevPortalContext } from "../../core/DevPortalContext.js";
2
- export declare const ZudokuReactContext: import("react").Context<DevPortalContext | undefined>;
3
- export declare const useZudoku: () => DevPortalContext;
4
- export declare const useApiIdentities: () => import("@tanstack/react-query").UseQueryResult<import("../../core/DevPortalContext.js").ApiIdentity[], Error>;
1
+ import { ZudokuContext } from "../../core/ZudokuContext.js";
2
+ export declare const ZudokuReactContext: import("react").Context<ZudokuContext | undefined>;
3
+ export declare const useZudoku: () => ZudokuContext;
4
+ export declare const useApiIdentities: () => import("@tanstack/react-query").UseQueryResult<import("../../core/ZudokuContext.js").ApiIdentity[], Error>;
5
5
  export declare const useCurrentNavigation: () => import("@tanstack/react-query").UseSuspenseQueryResult<{
6
6
  sidebar: import("../../../config/validators/SidebarSchema.js").SidebarItem[];
7
7
  topNavItem: {
@@ -7,7 +7,7 @@ export const ZudokuReactContext = createContext(undefined);
7
7
  export const useZudoku = () => {
8
8
  const context = useContext(ZudokuReactContext);
9
9
  if (!context) {
10
- throw new Error("useDevPortal must be used within a DevPortalProvider.");
10
+ throw new Error("useZudoku must be used within a ZudokuProvider.");
11
11
  }
12
12
  return context;
13
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAC7C,SAAS,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,CAAC;IACzC,OAAO,QAAQ,CAAC;QACd,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,CAAC,gBAAgB,CAAC;KAC7B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE;QACvE,OAAO,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,KAAK,KAAK;gBACjB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI;oBACrC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,CAAC,CAAC,SAAS,CAAC;YAElB,IAAI,MAAM,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,iBAAiB,GACrB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEtE,OAAO,gBAAgB,CAAC;QACtB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEhE,OAAO;gBACL,OAAO,EAAE;oBACP,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,GAAG,aAAa;iBACjB;gBACD,UAAU,EAAE,iBAAiB;aAC9B,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"ZudokuContext.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAC7C,SAAS,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,CAAC;IACzC,OAAO,QAAQ,CAAC;QACd,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,CAAC,gBAAgB,CAAC;KAC7B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE;QACvE,OAAO,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,KAAK,KAAK;gBACjB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI;oBACrC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,CAAC,CAAC,SAAS,CAAC;YAElB,IAAI,MAAM,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,iBAAiB,GACrB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEtE,OAAO,gBAAgB,CAAC;QACtB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEhE,OAAO;gBACL,OAAO,EAAE;oBACP,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,GAAG,aAAa;iBACjB;gBACD,UAAU,EAAE,iBAAiB;aAC9B,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { PropsWithChildren } from "react";
2
- import { DevPortalContext } from "../../core/DevPortalContext.js";
2
+ import { ZudokuContext } from "../../core/ZudokuContext.js";
3
3
  export declare const ZudokuProvider: ({ children, context, }: PropsWithChildren<{
4
- context: DevPortalContext;
4
+ context: ZudokuContext;
5
5
  }>) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"ZudokuProvider.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,QAAQ,EACR,OAAO,GAC0C,EAAE,EAAE;IACrD,gBAAgB,CAAC;QACf,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,QAAQ,EAAE,CAAC,mBAAmB,CAAC;KAChC,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YACxC,QAAQ,GACmB,CAC/B,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"ZudokuProvider.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,QAAQ,EACR,OAAO,GACuC,EAAE,EAAE;IAClD,gBAAgB,CAAC;QACf,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,QAAQ,EAAE,CAAC,mBAAmB,CAAC;KAChC,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YACxC,QAAQ,GACmB,CAC/B,CAAC;AACJ,CAAC,CAAC"}
@@ -4,10 +4,6 @@ import { Link as LinkImport } from "react-router-dom";
4
4
  import { RouterError as RouterErrorImport } from "../errors/RouterError.js";
5
5
  import { ServerError as ServerErrorImport } from "../errors/ServerError.js";
6
6
  export declare const useMDXComponents: typeof useMDXComponentsImport;
7
- export declare const DevPortal: {
8
- (props: import("../core/DevPortalContext.js").ZudokuContextOptions): import("react/jsx-runtime").JSX.Element;
9
- displayName: string;
10
- };
11
7
  export declare const Layout: ({ children }: {
12
8
  children?: import("react").ReactNode;
13
9
  }) => import("react/jsx-runtime").JSX.Element;
@@ -23,10 +19,10 @@ export declare const BootstrapStatic: ({ router, context, helmetContext, }: {
23
19
  router: ReturnType<typeof import("react-router-dom/server.js").createStaticRouter>;
24
20
  }) => import("react/jsx-runtime").JSX.Element;
25
21
  export declare const Head: typeof Helmet;
26
- export declare const useZudoku: () => import("../core/DevPortalContext.js").DevPortalContext;
22
+ export declare const useZudoku: () => import("../core/ZudokuContext.js").ZudokuContext;
27
23
  export declare const useAuth: import("zustand").UseBoundStore<import("zustand").StoreApi<import("../authentication/state.js").AuthState>>;
28
24
  export declare const Zudoku: {
29
- (props: import("../core/DevPortalContext.js").ZudokuContextOptions): import("react/jsx-runtime").JSX.Element;
25
+ (props: import("../core/ZudokuContext.js").ZudokuContextOptions): import("react/jsx-runtime").JSX.Element;
30
26
  displayName: string;
31
27
  };
32
28
  export declare const Callout: ({ type, children, title, className }: {
@@ -36,7 +32,8 @@ export declare const Callout: ({ type, children, title, className }: {
36
32
  className?: string;
37
33
  }) => import("react/jsx-runtime").JSX.Element;
38
34
  export declare const ClientOnly: (props: {
39
- children: React.ReactNode;
35
+ children: import("react").ReactNode;
36
+ fallback?: import("react").ReactNode;
40
37
  }) => import("react").ReactNode;
41
38
  export declare const Button: import("react").ForwardRefExoticComponent<import("../ui/Button.js").ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
42
39
  export declare const Link: typeof LinkImport;