zudoku 0.63.0 → 0.63.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.
- package/dist/app/entry.server.js +14 -1
- package/dist/app/entry.server.js.map +1 -1
- package/dist/lib/authentication/authentication.d.ts +3 -0
- package/dist/lib/core/ZudokuContext.d.ts +1 -0
- package/dist/lib/core/ZudokuContext.js +2 -0
- package/dist/lib/core/ZudokuContext.js.map +1 -1
- package/dist/lib/plugins/markdown/MdxPage.d.ts +2 -1
- package/dist/lib/plugins/markdown/MdxPage.js +3 -2
- package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
- package/dist/lib/plugins/markdown/index.d.ts +1 -0
- package/dist/lib/plugins/markdown/index.js +1 -1
- package/dist/lib/plugins/markdown/index.js.map +1 -1
- package/dist/lib/plugins/openapi/index.js +4 -9
- package/dist/lib/plugins/openapi/index.js.map +1 -1
- package/dist/vite/plugin-docs.js +1 -1
- package/dist/vite/plugin-docs.js.map +1 -1
- package/dist/vite/plugin-markdown-export.js +4 -2
- package/dist/vite/plugin-markdown-export.js.map +1 -1
- package/lib/{MdxPage-DFRNwSsc.js → MdxPage-1xaNI6q_.js} +81 -80
- package/lib/MdxPage-1xaNI6q_.js.map +1 -0
- package/lib/{OAuthErrorPage-DJUOdr6Q.js → OAuthErrorPage-Du_4sFER.js} +3 -3
- package/lib/{OAuthErrorPage-DJUOdr6Q.js.map → OAuthErrorPage-Du_4sFER.js.map} +1 -1
- package/lib/{OasProvider-D2NYAaBN.js → OasProvider-0xiB5cKH.js} +2 -2
- package/lib/{OasProvider-D2NYAaBN.js.map → OasProvider-0xiB5cKH.js.map} +1 -1
- package/lib/{OperationList-DmXCI4NU.js → OperationList-BzWKTkNq.js} +5 -5
- package/lib/{OperationList-DmXCI4NU.js.map → OperationList-BzWKTkNq.js.map} +1 -1
- package/lib/{Pagination-CT4VUR6u.js → Pagination-DOcPyfy_.js} +2 -2
- package/lib/{Pagination-CT4VUR6u.js.map → Pagination-DOcPyfy_.js.map} +1 -1
- package/lib/{SchemaList-uElsscMN.js → SchemaList-Dea2Skqv.js} +3 -3
- package/lib/{SchemaList-uElsscMN.js.map → SchemaList-Dea2Skqv.js.map} +1 -1
- package/lib/{SchemaView-CNQ3VAbI.js → SchemaView-H9glU5P7.js} +2 -2
- package/lib/{SchemaView-CNQ3VAbI.js.map → SchemaView-H9glU5P7.js.map} +1 -1
- package/lib/{SignUp-BraHuRN_.js → SignUp-DUZ4yUmQ.js} +2 -2
- package/lib/{SignUp-BraHuRN_.js.map → SignUp-DUZ4yUmQ.js.map} +1 -1
- package/lib/{circular-BWT7_Ahq.js → circular-OGtD_zFg.js} +2 -2
- package/lib/{circular-BWT7_Ahq.js.map → circular-OGtD_zFg.js.map} +1 -1
- package/lib/{createServer-zhJZSgor.js → createServer-DyUc5BPr.js} +3 -3
- package/lib/{createServer-zhJZSgor.js.map → createServer-DyUc5BPr.js.map} +1 -1
- package/lib/{errors-XqO6MsfU.js → errors-7_i0Oyw4.js} +2 -2
- package/lib/{errors-XqO6MsfU.js.map → errors-7_i0Oyw4.js.map} +1 -1
- package/lib/{index-BPSpOxTK.js → index-CLJGtw_S.js} +147 -146
- package/lib/index-CLJGtw_S.js.map +1 -0
- package/lib/{index-D8Btv4uT.js → index-PdgTSEkk.js} +385 -399
- package/lib/{index-D8Btv4uT.js.map → index-PdgTSEkk.js.map} +1 -1
- package/lib/zudoku.__internal.js +1 -1
- package/lib/zudoku.auth-azureb2c.js +3 -3
- package/lib/zudoku.auth-clerk.js +1 -1
- package/lib/zudoku.auth-openid.js +3 -3
- package/lib/zudoku.auth-supabase.js +1 -1
- package/lib/zudoku.components.js +1 -1
- package/lib/zudoku.plugin-api-catalog.js +1 -1
- package/lib/zudoku.plugin-markdown.js +10 -9
- package/lib/zudoku.plugin-markdown.js.map +1 -1
- package/lib/zudoku.plugin-openapi.js +4 -5
- package/lib/zudoku.plugin-openapi.js.map +1 -1
- package/package.json +4 -4
- package/src/app/entry.server.tsx +16 -6
- package/src/app/main.css +42 -0
- package/src/lib/authentication/authentication.ts +3 -1
- package/src/lib/core/ZudokuContext.ts +3 -0
- package/src/lib/plugins/markdown/MdxPage.tsx +4 -1
- package/src/lib/plugins/markdown/index.tsx +2 -0
- package/src/lib/plugins/openapi/index.tsx +9 -29
- package/lib/MdxPage-DFRNwSsc.js.map +0 -1
- package/lib/index-BPSpOxTK.js.map +0 -1
package/lib/zudoku.__internal.js
CHANGED
|
@@ -6,7 +6,7 @@ import * as D from "react";
|
|
|
6
6
|
import { StrictMode as Ye, useEffect as oe, useRef as Xe, useState as Rt, Suspense as Ft } from "react";
|
|
7
7
|
import { t as Ut, S as qt, c as et, b2 as Mt, O as Qt } from "./chunk-PVWAREVJ-BO6B-RAk.js";
|
|
8
8
|
import * as Lt from "react-dom";
|
|
9
|
-
import { a as Bt, u as Wt, P as Kt, H as Ht } from "./index-
|
|
9
|
+
import { a as Bt, u as Wt, P as Kt, H as Ht } from "./index-CLJGtw_S.js";
|
|
10
10
|
import { B as tt, R as Vt } from "./RouteGuard-Bg0Lu0OU.js";
|
|
11
11
|
import { CircleFadingArrowUpIcon as Jt, LoaderCircleIcon as Gt, ExternalLink as Yt, PanelLeftIcon as Xt } from "lucide-react";
|
|
12
12
|
import { Button as en } from "./ui/Button.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { j as o } from "./jsx-runtime-BzflLqGi.js";
|
|
2
2
|
import { PublicClientApplication as A, EventType as f } from "@azure/msal-browser";
|
|
3
|
-
import { E as I } from "./index-
|
|
3
|
+
import { E as I } from "./index-CLJGtw_S.js";
|
|
4
4
|
import { C as T } from "./ClientOnly-E7hGysn1.js";
|
|
5
5
|
import { j as S, u as h } from "./ZudokuContext-BXTZApgy.js";
|
|
6
|
-
import { C, A as c } from "./errors-
|
|
7
|
-
import { C as k, O as w } from "./OAuthErrorPage-
|
|
6
|
+
import { C, A as c } from "./errors-7_i0Oyw4.js";
|
|
7
|
+
import { C as k, O as w } from "./OAuthErrorPage-Du_4sFER.js";
|
|
8
8
|
const u = "/oauth/callback";
|
|
9
9
|
class y extends C {
|
|
10
10
|
msalInstance;
|
package/lib/zudoku.auth-clerk.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { j as l } from "./jsx-runtime-BzflLqGi.js";
|
|
2
2
|
import { LogOutIcon as f } from "lucide-react";
|
|
3
|
-
import { S as w, a as p, b as v } from "./SignUp-
|
|
3
|
+
import { S as w, a as p, b as v } from "./SignUp-DUZ4yUmQ.js";
|
|
4
4
|
import { u as n } from "./ZudokuContext-BXTZApgy.js";
|
|
5
5
|
const b = ({
|
|
6
6
|
clerkPubKey: d,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { j as D } from "./jsx-runtime-BzflLqGi.js";
|
|
2
2
|
import { g as Le } from "./invariant-Bm-FVUQE.js";
|
|
3
|
-
import { E as Ue } from "./index-
|
|
3
|
+
import { E as Ue } from "./index-CLJGtw_S.js";
|
|
4
4
|
import { C as xe } from "./ClientOnly-E7hGysn1.js";
|
|
5
5
|
import { j as Ce, u as S } from "./ZudokuContext-BXTZApgy.js";
|
|
6
|
-
import { C as Ie, O as re, A as R } from "./errors-
|
|
7
|
-
import { C as je, O as Oe } from "./OAuthErrorPage-
|
|
6
|
+
import { C as Ie, O as re, A as R } from "./errors-7_i0Oyw4.js";
|
|
7
|
+
import { C as je, O as Oe } from "./OAuthErrorPage-Du_4sFER.js";
|
|
8
8
|
var J = { exports: {} }, De = J.exports, oe;
|
|
9
9
|
function Je() {
|
|
10
10
|
return oe || (oe = 1, (function(t) {
|
package/lib/zudoku.components.js
CHANGED
|
@@ -8,7 +8,7 @@ import "./ClientOnly-E7hGysn1.js";
|
|
|
8
8
|
import "./ZudokuContext-BXTZApgy.js";
|
|
9
9
|
import "./ErrorAlert-VBJ8aHH7.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-
|
|
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";
|
|
12
12
|
export {
|
|
13
13
|
d as Button,
|
|
14
14
|
h as CACHE_KEYS,
|
|
@@ -3,7 +3,7 @@ import { s as f } from "./index-C5L4favO.js";
|
|
|
3
3
|
import { d as b, m as j } from "./chunk-PVWAREVJ-BO6B-RAk.js";
|
|
4
4
|
import { u as x, b as v, j as d } from "./ZudokuContext-BXTZApgy.js";
|
|
5
5
|
import { H as y } from "./index.esm-BnYHxCYC.js";
|
|
6
|
-
import { L as N } from "./index-
|
|
6
|
+
import { L as N } from "./index-CLJGtw_S.js";
|
|
7
7
|
import { H as k, M as S } from "./ErrorAlert-VBJ8aHH7.js";
|
|
8
8
|
const w = ({
|
|
9
9
|
items: o,
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
const
|
|
1
|
+
import { j as r } from "./jsx-runtime-BzflLqGi.js";
|
|
2
|
+
const p = (t) => ({
|
|
3
3
|
getRoutes: () => Object.entries(t.fileImports).map(
|
|
4
|
-
([e,
|
|
4
|
+
([e, a]) => ({
|
|
5
5
|
path: e,
|
|
6
6
|
lazy: async () => {
|
|
7
|
-
const { MdxPage:
|
|
7
|
+
const { MdxPage: n } = await import("./MdxPage-1xaNI6q_.js"), { default: o, ...s } = await a();
|
|
8
8
|
return {
|
|
9
|
-
element: /* @__PURE__ */
|
|
10
|
-
|
|
9
|
+
element: /* @__PURE__ */ r.jsx(
|
|
10
|
+
n,
|
|
11
11
|
{
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
basePath: t.basePath,
|
|
13
|
+
mdxComponent: o,
|
|
14
|
+
...s,
|
|
14
15
|
defaultOptions: t.defaultOptions
|
|
15
16
|
}
|
|
16
17
|
)
|
|
@@ -20,6 +21,6 @@ const m = (t) => ({
|
|
|
20
21
|
)
|
|
21
22
|
});
|
|
22
23
|
export {
|
|
23
|
-
|
|
24
|
+
p as markdownPlugin
|
|
24
25
|
};
|
|
25
26
|
//# sourceMappingURL=zudoku.plugin-markdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zudoku.plugin-markdown.js","sources":["../src/lib/plugins/markdown/index.tsx"],"sourcesContent":["import type { Toc } from \"@stefanprobst/rehype-extract-toc\";\nimport type { MDXProps } from \"mdx/types.js\";\nimport type { JSX } from \"react\";\nimport type { ZudokuDocsConfig } from \"../../../config/validators/validate.js\";\nimport type { ZudokuPlugin } from \"../../core/plugins.js\";\n\nexport interface MarkdownPluginOptions extends ZudokuDocsConfig {\n fileImports: Record<string, () => Promise<MDXImport>>;\n}\nexport type MarkdownPluginDefaultOptions = Pick<\n Frontmatter,\n \"toc\" | \"disablePager\" | \"showLastModified\" | \"suggestEdit\" | \"copyPage\"\n>;\n\nexport type Frontmatter = {\n title?: string;\n description?: string;\n category?: string;\n toc?: boolean;\n disablePager?: boolean;\n disable_pager?: boolean;\n showLastModified?: boolean;\n lastModifiedTime?: number;\n suggestEdit?: { url: string; text?: string } | false;\n copyPage?: boolean;\n};\n\nexport type MDXImport = {\n tableOfContents: Toc;\n frontmatter: Frontmatter;\n excerpt?: string;\n __filepath: string;\n default: (props: MDXProps) => JSX.Element;\n};\n\nexport const markdownPlugin = (\n options: MarkdownPluginOptions,\n): ZudokuPlugin => ({\n getRoutes: () => {\n return Object.entries(options.fileImports).map(\n ([routePath, importPromise]) => ({\n path: routePath,\n lazy: async () => {\n const { MdxPage } = await import(\"./MdxPage.js\");\n const { default: Component, ...props } = await importPromise();\n return {\n element: (\n <MdxPage\n mdxComponent={Component}\n {...props}\n defaultOptions={options.defaultOptions}\n />\n ),\n };\n },\n }),\n );\n },\n});\n"],"names":["markdownPlugin","options","routePath","importPromise","MdxPage","Component","props","jsx"],"mappings":";
|
|
1
|
+
{"version":3,"file":"zudoku.plugin-markdown.js","sources":["../src/lib/plugins/markdown/index.tsx"],"sourcesContent":["import type { Toc } from \"@stefanprobst/rehype-extract-toc\";\nimport type { MDXProps } from \"mdx/types.js\";\nimport type { JSX } from \"react\";\nimport type { ZudokuDocsConfig } from \"../../../config/validators/validate.js\";\nimport type { ZudokuPlugin } from \"../../core/plugins.js\";\n\nexport interface MarkdownPluginOptions extends ZudokuDocsConfig {\n basePath: string;\n fileImports: Record<string, () => Promise<MDXImport>>;\n}\nexport type MarkdownPluginDefaultOptions = Pick<\n Frontmatter,\n \"toc\" | \"disablePager\" | \"showLastModified\" | \"suggestEdit\" | \"copyPage\"\n>;\n\nexport type Frontmatter = {\n title?: string;\n description?: string;\n category?: string;\n toc?: boolean;\n disablePager?: boolean;\n disable_pager?: boolean;\n showLastModified?: boolean;\n lastModifiedTime?: number;\n suggestEdit?: { url: string; text?: string } | false;\n copyPage?: boolean;\n};\n\nexport type MDXImport = {\n tableOfContents: Toc;\n frontmatter: Frontmatter;\n excerpt?: string;\n __filepath: string;\n default: (props: MDXProps) => JSX.Element;\n};\n\nexport const markdownPlugin = (\n options: MarkdownPluginOptions,\n): ZudokuPlugin => ({\n getRoutes: () => {\n return Object.entries(options.fileImports).map(\n ([routePath, importPromise]) => ({\n path: routePath,\n lazy: async () => {\n const { MdxPage } = await import(\"./MdxPage.js\");\n const { default: Component, ...props } = await importPromise();\n return {\n element: (\n <MdxPage\n basePath={options.basePath}\n mdxComponent={Component}\n {...props}\n defaultOptions={options.defaultOptions}\n />\n ),\n };\n },\n }),\n );\n },\n});\n"],"names":["markdownPlugin","options","routePath","importPromise","MdxPage","Component","props","jsx"],"mappings":";AAoCO,MAAMA,IAAiB,CAC5BC,OACkB;AAAA,EAClB,WAAW,MACF,OAAO,QAAQA,EAAQ,WAAW,EAAE;AAAA,IACzC,CAAC,CAACC,GAAWC,CAAa,OAAO;AAAA,MAC/B,MAAMD;AAAA,MACN,MAAM,YAAY;AAChB,cAAM,EAAE,SAAAE,EAAA,IAAY,MAAM,OAAO,uBAAc,GACzC,EAAE,SAASC,GAAW,GAAGC,EAAA,IAAU,MAAMH,EAAA;AAC/C,eAAO;AAAA,UACL,SACEI,gBAAAA,EAAAA;AAAAA,YAACH;AAAA,YAAA;AAAA,cACC,UAAUH,EAAQ;AAAA,cAClB,cAAcI;AAAA,cACb,GAAGC;AAAA,cACJ,gBAAgBL,EAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,QAC1B;AAAA,MAGN;AAAA,IAAA;AAAA,EACF;AAGN;"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import "./jsx-runtime-BzflLqGi.js";
|
|
2
2
|
import "lucide-react";
|
|
3
3
|
import "./chunk-PVWAREVJ-BO6B-RAk.js";
|
|
4
|
-
import "./hook-CAebs2rv.js";
|
|
5
4
|
import "./ui/Button.js";
|
|
6
5
|
import "./ZudokuContext-BXTZApgy.js";
|
|
7
|
-
import { y as
|
|
6
|
+
import { y as e, U as n, z as s } from "./index-PdgTSEkk.js";
|
|
8
7
|
export {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
e as GetNavigationOperationsQuery,
|
|
9
|
+
n as UNTAGGED_PATH,
|
|
10
|
+
s as openApiPlugin
|
|
12
11
|
};
|
|
13
12
|
//# sourceMappingURL=zudoku.plugin-openapi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zudoku.plugin-openapi.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"zudoku.plugin-openapi.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zudoku",
|
|
3
|
-
"version": "0.63.
|
|
3
|
+
"version": "0.63.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"homepage": "https://zudoku.dev",
|
|
6
6
|
"repository": {
|
|
@@ -178,8 +178,8 @@
|
|
|
178
178
|
"@shikijs/transformers": "3.14.0",
|
|
179
179
|
"@sindresorhus/slugify": "3.0.0",
|
|
180
180
|
"@stefanprobst/rehype-extract-toc": "3.0.0",
|
|
181
|
-
"@tailwindcss/typography": "0.5.
|
|
182
|
-
"@tailwindcss/vite": "4.1.
|
|
181
|
+
"@tailwindcss/typography": "0.5.19",
|
|
182
|
+
"@tailwindcss/vite": "4.1.16",
|
|
183
183
|
"@tanem/react-nprogress": "5.0.56",
|
|
184
184
|
"@tanstack/react-query": "5.85.5",
|
|
185
185
|
"@types/react": "19.2.0",
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
"sitemap": "8.0.0",
|
|
239
239
|
"strip-ansi": "7.1.2",
|
|
240
240
|
"tailwind-merge": "3.3.1",
|
|
241
|
-
"tailwindcss": "4.1.
|
|
241
|
+
"tailwindcss": "4.1.16",
|
|
242
242
|
"tw-animate-css": "1.4.0",
|
|
243
243
|
"unified": "^11.0.5",
|
|
244
244
|
"unist-util-visit": "5.0.0",
|
package/src/app/entry.server.tsx
CHANGED
|
@@ -122,12 +122,22 @@ export const render = async ({
|
|
|
122
122
|
!query.queryKey.includes(NO_DEHYDRATE),
|
|
123
123
|
});
|
|
124
124
|
|
|
125
|
-
response.end(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
);
|
|
125
|
+
if (!htmlEnd) return response.end();
|
|
126
|
+
|
|
127
|
+
const closingTag = "</body>";
|
|
128
|
+
const idx = htmlEnd.lastIndexOf(closingTag);
|
|
129
|
+
|
|
130
|
+
if (idx === -1) return response.end(htmlEnd);
|
|
131
|
+
|
|
132
|
+
const serialized = JSON.stringify(dehydrated)
|
|
133
|
+
.replace(/</g, "\\u003c")
|
|
134
|
+
.replace(/>/g, "\\u003e");
|
|
135
|
+
|
|
136
|
+
response.write(htmlEnd.slice(0, idx));
|
|
137
|
+
response.write("<script>window.DATA=");
|
|
138
|
+
response.write(serialized);
|
|
139
|
+
response.write("</script>");
|
|
140
|
+
response.end(htmlEnd.slice(idx));
|
|
131
141
|
});
|
|
132
142
|
|
|
133
143
|
pipe(transformStream);
|
package/src/app/main.css
CHANGED
|
@@ -7,6 +7,48 @@
|
|
|
7
7
|
@plugin "@tailwindcss/typography";
|
|
8
8
|
@custom-variant dark (&:is(.dark *));
|
|
9
9
|
|
|
10
|
+
@theme inline {
|
|
11
|
+
--color-background: var(--background);
|
|
12
|
+
--color-foreground: var(--foreground);
|
|
13
|
+
--color-card: var(--card);
|
|
14
|
+
--color-card-foreground: var(--card-foreground);
|
|
15
|
+
--color-popover: var(--popover);
|
|
16
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
17
|
+
--color-primary: var(--primary);
|
|
18
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
19
|
+
--color-secondary: var(--secondary);
|
|
20
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
21
|
+
--color-muted: var(--muted);
|
|
22
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
23
|
+
--color-accent: var(--accent);
|
|
24
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
25
|
+
--color-destructive: var(--destructive);
|
|
26
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
27
|
+
--color-border: var(--border);
|
|
28
|
+
--color-input: var(--input);
|
|
29
|
+
--color-ring: var(--ring);
|
|
30
|
+
--color-chart-1: var(--chart-1);
|
|
31
|
+
--color-chart-2: var(--chart-2);
|
|
32
|
+
--color-chart-3: var(--chart-3);
|
|
33
|
+
--color-chart-4: var(--chart-4);
|
|
34
|
+
--color-chart-5: var(--chart-5);
|
|
35
|
+
--color-sidebar: var(--sidebar);
|
|
36
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
37
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
38
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
39
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
40
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
41
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
42
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
43
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
44
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
45
|
+
--radius-lg: var(--radius);
|
|
46
|
+
--radius-xl: calc(var(--radius) + 4px);
|
|
47
|
+
--font-sans: var(--font-sans);
|
|
48
|
+
--font-mono: var(--font-mono);
|
|
49
|
+
--font-serif: var(--font-serif);
|
|
50
|
+
}
|
|
51
|
+
|
|
10
52
|
@utility prose {
|
|
11
53
|
a {
|
|
12
54
|
@apply font-normal underline-offset-4 hover:text-primary;
|
|
@@ -2,7 +2,9 @@ export interface AuthenticationPlugin {
|
|
|
2
2
|
signUp(options?: { redirectTo?: string; replace?: boolean }): Promise<void>;
|
|
3
3
|
signIn(options?: { redirectTo?: string; replace?: boolean }): Promise<void>;
|
|
4
4
|
signOut(): Promise<void>;
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated use signRequest instead
|
|
7
|
+
*/
|
|
6
8
|
getAccessToken(): Promise<string>;
|
|
7
9
|
onPageLoad?(): void;
|
|
8
10
|
signRequest(request: Request): Promise<Request>;
|
|
@@ -129,6 +129,7 @@ export class ZudokuContext {
|
|
|
129
129
|
public meta: ZudokuContextOptions["metadata"];
|
|
130
130
|
public site: ZudokuContextOptions["site"];
|
|
131
131
|
public readonly authentication?: ZudokuContextOptions["authentication"];
|
|
132
|
+
public readonly getAuthState: () => AuthState;
|
|
132
133
|
public readonly queryClient: QueryClient;
|
|
133
134
|
public readonly options: ZudokuContextOptions;
|
|
134
135
|
private readonly navigationPlugins: NavigationPlugin[];
|
|
@@ -156,6 +157,8 @@ export class ZudokuContext {
|
|
|
156
157
|
this.navigation = options.navigation ?? [];
|
|
157
158
|
this.navigationPlugins = this.plugins.filter(isNavigationPlugin);
|
|
158
159
|
this.authentication = this.plugins.find(isAuthenticationPlugin);
|
|
160
|
+
this.getAuthState = useAuthState.getState;
|
|
161
|
+
|
|
159
162
|
this.meta = options.metadata;
|
|
160
163
|
this.site = options.site;
|
|
161
164
|
this.plugins.forEach((plugin) => {
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
} from "../../components/navigation/utils.js";
|
|
28
28
|
import { Pagination } from "../../components/Pagination.js";
|
|
29
29
|
import { Typography } from "../../components/Typography.js";
|
|
30
|
+
import { joinUrl } from "../../util/joinUrl.js";
|
|
30
31
|
import type { MdxComponentsType } from "../../util/MdxComponents.js";
|
|
31
32
|
import { ChatGPTLogo } from "./assets/ChatGPTLogo.js";
|
|
32
33
|
import { ClaudeLogo } from "./assets/ClaudeLogo.js";
|
|
@@ -55,6 +56,7 @@ const MarkdownHeadings = {
|
|
|
55
56
|
|
|
56
57
|
export const MdxPage = ({
|
|
57
58
|
mdxComponent: MdxComponent,
|
|
59
|
+
basePath,
|
|
58
60
|
frontmatter = {},
|
|
59
61
|
defaultOptions,
|
|
60
62
|
__filepath,
|
|
@@ -62,6 +64,7 @@ export const MdxPage = ({
|
|
|
62
64
|
excerpt,
|
|
63
65
|
}: PropsWithChildren<
|
|
64
66
|
Omit<MDXImport, "default"> & {
|
|
67
|
+
basePath: string;
|
|
65
68
|
mdxComponent: MDXImport["default"];
|
|
66
69
|
defaultOptions?: MarkdownPluginDefaultOptions;
|
|
67
70
|
}
|
|
@@ -101,7 +104,7 @@ export const MdxPage = ({
|
|
|
101
104
|
const copyMarkdownConfig =
|
|
102
105
|
frontmatter.copyPage !== false && defaultOptions?.copyPage !== false;
|
|
103
106
|
|
|
104
|
-
const markdownUrl = `${location.pathname}.md
|
|
107
|
+
const markdownUrl = joinUrl(basePath, `${location.pathname}.md`);
|
|
105
108
|
|
|
106
109
|
const handleCopyMarkdown = async () => {
|
|
107
110
|
const response = await fetch(markdownUrl);
|
|
@@ -5,6 +5,7 @@ import type { ZudokuDocsConfig } from "../../../config/validators/validate.js";
|
|
|
5
5
|
import type { ZudokuPlugin } from "../../core/plugins.js";
|
|
6
6
|
|
|
7
7
|
export interface MarkdownPluginOptions extends ZudokuDocsConfig {
|
|
8
|
+
basePath: string;
|
|
8
9
|
fileImports: Record<string, () => Promise<MDXImport>>;
|
|
9
10
|
}
|
|
10
11
|
export type MarkdownPluginDefaultOptions = Pick<
|
|
@@ -46,6 +47,7 @@ export const markdownPlugin = (
|
|
|
46
47
|
return {
|
|
47
48
|
element: (
|
|
48
49
|
<MdxPage
|
|
50
|
+
basePath={options.basePath}
|
|
49
51
|
mdxComponent={Component}
|
|
50
52
|
{...props}
|
|
51
53
|
defaultOptions={options.defaultOptions}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { CirclePlayIcon
|
|
2
|
-
import type {
|
|
1
|
+
import { CirclePlayIcon } from "lucide-react";
|
|
2
|
+
import type { PropsWithChildren } from "react";
|
|
3
3
|
import { matchPath } from "react-router";
|
|
4
4
|
import type { NavigationItem } from "../../../config/validators/NavigationSchema.js";
|
|
5
|
-
import { useAuth } from "../../authentication/hook.js";
|
|
6
5
|
import type { ZudokuPlugin } from "../../core/plugins.js";
|
|
7
6
|
import { Button } from "../../ui/Button.js";
|
|
8
7
|
import { joinUrl } from "../../util/joinUrl.js";
|
|
@@ -71,47 +70,28 @@ export const openApiPlugin = (config: OasPluginConfig): ZudokuPlugin => {
|
|
|
71
70
|
},
|
|
72
71
|
getMdxComponents: () => ({
|
|
73
72
|
OpenPlaygroundButton: ({
|
|
74
|
-
requireAuth,
|
|
75
73
|
server,
|
|
76
|
-
method,
|
|
77
|
-
url,
|
|
74
|
+
method = "get",
|
|
75
|
+
url = "/",
|
|
78
76
|
children,
|
|
79
77
|
...props
|
|
80
|
-
}: Partial<PlaygroundContentProps
|
|
81
|
-
PlaygroundContentProps,
|
|
82
|
-
"server"
|
|
83
|
-
> & {
|
|
84
|
-
requireAuth: boolean;
|
|
85
|
-
}) => {
|
|
86
|
-
const auth = useAuth();
|
|
87
|
-
|
|
78
|
+
}: PropsWithChildren<Partial<PlaygroundContentProps>>) => {
|
|
88
79
|
if (!server) {
|
|
89
80
|
throw new Error("Server is required");
|
|
90
81
|
}
|
|
91
82
|
|
|
92
|
-
if (requireAuth && !auth.isAuthenticated) {
|
|
93
|
-
return (
|
|
94
|
-
<Button
|
|
95
|
-
className="gap-2 items-center"
|
|
96
|
-
variant="outline"
|
|
97
|
-
onClick={auth.login}
|
|
98
|
-
>
|
|
99
|
-
Login to open in Playground <LogInIcon size={16} />
|
|
100
|
-
</Button>
|
|
101
|
-
);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
83
|
return (
|
|
105
84
|
<PlaygroundDialog
|
|
106
|
-
url={url
|
|
107
|
-
method={method
|
|
85
|
+
url={url}
|
|
86
|
+
method={method}
|
|
108
87
|
server={server}
|
|
109
88
|
{...props}
|
|
110
89
|
>
|
|
111
90
|
<Button className="gap-2 items-center" variant="outline">
|
|
112
91
|
{children ?? (
|
|
113
92
|
<>
|
|
114
|
-
Open in Playground
|
|
93
|
+
Open in Playground
|
|
94
|
+
<CirclePlayIcon size={16} />
|
|
115
95
|
</>
|
|
116
96
|
)}
|
|
117
97
|
</Button>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MdxPage-DFRNwSsc.js","sources":["../src/lib/plugins/markdown/assets/ChatGPTLogo.tsx","../src/lib/plugins/markdown/assets/ClaudeLogo.tsx","../src/lib/plugins/markdown/MdxPage.tsx"],"sourcesContent":["import type { SVGProps } from \"react\";\n\nexport const ChatGPTLogo = (props: SVGProps<SVGSVGElement>) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 320\" {...props}>\n <title>ChatGPT</title>\n <path\n fill=\"currentColor\"\n d=\"M297.06 130.97a79.712 79.712 0 0 0-6.85-65.48c-17.46-30.4-52.56-46.04-86.84-38.68A79.747 79.747 0 0 0 143.24 0C108.2-.08 77.11 22.48 66.33 55.82a79.754 79.754 0 0 0-53.31 38.67c-17.59 30.32-13.58 68.54 9.92 94.54a79.712 79.712 0 0 0 6.85 65.48c17.46 30.4 52.56 46.04 86.84 38.68a79.687 79.687 0 0 0 60.13 26.8c35.06.09 66.16-22.49 76.94-55.86a79.754 79.754 0 0 0 53.31-38.67c17.57-30.32 13.55-68.51-9.94-94.51zM176.78 299.08a59.77 59.77 0 0 1-38.39-13.88c.49-.26 1.34-.73 1.89-1.07l63.72-36.8a10.36 10.36 0 0 0 5.24-9.07v-89.83l26.93 15.55c.29.14.48.42.52.74v74.39c-.04 33.08-26.83 59.9-59.91 59.97zM47.94 244.05a59.71 59.71 0 0 1-7.15-40.18c.47.28 1.3.79 1.89 1.13l63.72 36.8c3.23 1.89 7.23 1.89 10.47 0l77.79-44.92v31.1c.02.32-.13.63-.38.83L129.87 266c-28.69 16.52-65.33 6.7-81.92-21.95zM31.17 104.96c7-12.16 18.05-21.46 31.21-26.29 0 .55-.03 1.52-.03 2.2v73.61c-.02 3.74 1.98 7.21 5.23 9.06l77.79 44.91L118.44 224c-.27.18-.61.21-.91.08l-64.42-37.22c-28.63-16.58-38.45-53.21-21.95-81.89zm221.26 51.49-77.79-44.92 26.93-15.54c.27-.18.61-.21.91-.08l64.42 37.19c28.68 16.57 38.51 53.26 21.94 81.94a59.94 59.94 0 0 1-31.2 26.28v-75.81c.03-3.74-1.96-7.2-5.2-9.06zm26.8-40.34c-.47-.29-1.3-.79-1.89-1.13l-63.72-36.8a10.375 10.375 0 0 0-10.47 0l-77.79 44.92V92c-.02-.32.13-.63.38-.83l64.41-37.16c28.69-16.55 65.37-6.7 81.91 22a59.95 59.95 0 0 1 7.15 40.1zm-168.51 55.43-26.94-15.55a.943.943 0 0 1-.52-.74V80.86c.02-33.12 26.89-59.96 60.01-59.94 14.01 0 27.57 4.92 38.34 13.88-.49.26-1.33.73-1.89 1.07L116 72.67a10.344 10.344 0 0 0-5.24 9.06l-.04 89.79zM125.35 140 160 119.99l34.65 20V180L160 200l-34.65-20z\"\n />\n </svg>\n);\n","import type { SVGProps } from \"react\";\n\nexport const ClaudeLogo = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <title>Claude</title>\n <path\n fill=\"#D97757\"\n d=\"m4.709 15.955 4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 0 1-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312z\"\n />\n </svg>\n);\n","import { useMDXComponents } from \"@mdx-js/react\";\nimport slugify from \"@sindresorhus/slugify\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport {\n CheckIcon,\n ChevronDownIcon,\n CopyIcon,\n EditIcon,\n ExternalLinkIcon,\n Link2Icon,\n} from \"lucide-react\";\nimport { type PropsWithChildren, useEffect, useState } from \"react\";\nimport { useLocation } from \"react-router\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"zudoku/ui/DropdownMenu.js\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { Toc } from \"../../components/navigation/Toc.js\";\nimport {\n useCurrentItem,\n usePrevNext,\n} from \"../../components/navigation/utils.js\";\nimport { Pagination } from \"../../components/Pagination.js\";\nimport { Typography } from \"../../components/Typography.js\";\nimport type { MdxComponentsType } from \"../../util/MdxComponents.js\";\nimport { ChatGPTLogo } from \"./assets/ChatGPTLogo.js\";\nimport { ClaudeLogo } from \"./assets/ClaudeLogo.js\";\nimport type { MarkdownPluginDefaultOptions, MDXImport } from \"./index.js\";\n\ndeclare global {\n interface Window {\n __getReactRefreshIgnoredExports?: (args: {\n id: string;\n }) => string[] | undefined;\n }\n}\n\nconst MarkdownHeadings = {\n h2: ({ children, id }) => (\n <Heading level={2} id={id} registerNavigationAnchor>\n {children}\n </Heading>\n ),\n h3: ({ children, id }) => (\n <Heading level={3} id={id} registerNavigationAnchor>\n {children}\n </Heading>\n ),\n} satisfies MdxComponentsType;\n\nexport const MdxPage = ({\n mdxComponent: MdxComponent,\n frontmatter = {},\n defaultOptions,\n __filepath,\n tableOfContents,\n excerpt,\n}: PropsWithChildren<\n Omit<MDXImport, \"default\"> & {\n mdxComponent: MDXImport[\"default\"];\n defaultOptions?: MarkdownPluginDefaultOptions;\n }\n>) => {\n const categoryTitle = useCurrentItem()?.categoryLabel;\n const location = useLocation();\n const [isCopied, setIsCopied] = useState(false);\n\n const title = frontmatter.title;\n const description = frontmatter.description ?? excerpt;\n const category = frontmatter.category ?? categoryTitle;\n const hideToc = frontmatter.toc === false || defaultOptions?.toc === false;\n const pageTitle =\n title ?? tableOfContents.find((item) => item.depth === 1)?.value;\n const hidePager =\n frontmatter.disable_pager ??\n frontmatter.disablePager ??\n defaultOptions?.disablePager ??\n false;\n\n const showLastModified =\n frontmatter.showLastModified ?? defaultOptions?.showLastModified ?? true;\n\n const lastModifiedDate = frontmatter.lastModifiedTime\n ? new Date(frontmatter.lastModifiedTime)\n : null;\n\n const editConfig =\n frontmatter.suggestEdit !== false &&\n (frontmatter.suggestEdit ?? defaultOptions?.suggestEdit);\n\n const editUrl = editConfig\n ? editConfig.url.replaceAll(\"{filePath}\", __filepath)\n : null;\n const editText = editConfig ? editConfig.text || \"Edit this page\" : null;\n\n const copyMarkdownConfig =\n frontmatter.copyPage !== false && defaultOptions?.copyPage !== false;\n\n const markdownUrl = `${location.pathname}.md`;\n\n const handleCopyMarkdown = async () => {\n const response = await fetch(markdownUrl);\n if (!response.ok) throw new Error(\"Failed to fetch markdown\");\n const markdown = await response.text();\n void navigator.clipboard.writeText(markdown);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n };\n\n const tocEntries =\n tableOfContents.find((item) => item.depth === 1)?.children ??\n // if `title` is provided by frontmatter it does not appear in the table of contents\n tableOfContents.filter((item) => item.depth === 2);\n\n const showToc = !hideToc && tocEntries.length > 0;\n\n const { prev, next } = usePrevNext();\n\n useEffect(() => {\n if (process.env.NODE_ENV === \"development\") {\n window.__getReactRefreshIgnoredExports = ({ id }) => {\n if (!id.endsWith(__filepath)) return;\n\n return [\"frontmatter\", \"tableOfContents\"];\n };\n\n return () => {\n window.__getReactRefreshIgnoredExports = undefined;\n };\n }\n }, [__filepath]);\n\n return (\n <div\n className=\"grid grid-cols-1 xl:grid-cols-(--sidecar-grid-cols) gap-8 justify-between\"\n data-pagefind-filter=\"section:markdown\"\n data-pagefind-meta=\"section:markdown\"\n >\n <Helmet>\n <title>{pageTitle}</title>\n {description && <meta name=\"description\" content={description} />}\n </Helmet>\n <Typography className=\"max-w-full xl:w-full xl:max-w-3xl flex-1 shrink pt-(--padding-content-top)\">\n {(category || title) && (\n <header className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1\">\n {category && <CategoryHeading>{category}</CategoryHeading>}\n {title && (\n <Heading level={1} id={slugify(title)}>\n {title}\n </Heading>\n )}\n </div>\n {copyMarkdownConfig && (\n <div className=\"flex items-center border rounded-md\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleCopyMarkdown}\n className=\"rounded-r-none border-r gap-2 h-7\"\n >\n {isCopied ? (\n <CheckIcon size={14} className=\"text-emerald-600\" />\n ) : (\n <CopyIcon size={14} />\n )}\n <span>Copy page</span>\n </Button>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon-xs\"\n className=\"rounded-l-none\"\n >\n <ChevronDownIcon size={14} />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() =>\n void navigator.clipboard.writeText(window.location.href)\n }\n >\n <Link2Icon className=\"size-4\" />\n Copy link to page\n </DropdownMenuItem>\n <DropdownMenuItem className=\"gap-2\" asChild>\n <a\n href={markdownUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <ExternalLinkIcon className=\"size-4\" />\n Open Markdown page\n </a>\n </DropdownMenuItem>\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() => {\n const prompt = encodeURIComponent(\n `Help me understand this documentation page: ${window.location.href}`,\n );\n window.open(\n `https://claude.ai/new?q=${prompt}`,\n \"_blank\",\n );\n }}\n >\n <ClaudeLogo className=\"size-4\" />\n Open in Claude\n </DropdownMenuItem>\n <DropdownMenuItem\n className=\"gap-2\"\n onClick={() => {\n const prompt = encodeURIComponent(\n `Help me understand this documentation page: ${window.location.href}`,\n );\n window.open(\n `https://chatgpt.com/?q=${prompt}`,\n \"_blank\",\n );\n }}\n >\n <ChatGPTLogo className=\"size-4\" />\n Open in ChatGPT\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n )}\n </header>\n )}\n\n <MdxComponent\n components={{ ...useMDXComponents(), ...MarkdownHeadings }}\n />\n <div className=\"h-16\" />\n {(showLastModified && lastModifiedDate) || editUrl ? (\n <div className=\"flex justify-between text-xs text-muted-foreground \">\n <div />\n <div className=\"flex items-center gap-2\">\n <div>\n {editUrl && (\n <Button asChild variant=\"ghost\" size=\"sm\">\n <a\n href={editUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1\"\n >\n <EditIcon size={12} />\n {editText}\n </a>\n </Button>\n )}\n </div>\n <div>\n {showLastModified && lastModifiedDate && (\n <div\n title={lastModifiedDate.toLocaleString(undefined, {\n dateStyle: \"full\",\n timeStyle: \"medium\",\n })}\n >\n Last modified on{\" \"}\n <time dateTime={lastModifiedDate.toISOString()}>\n {lastModifiedDate.toLocaleDateString(\"en-US\", {\n dateStyle: \"long\",\n })}\n </time>\n </div>\n )}\n </div>\n </div>\n </div>\n ) : null}\n {!hidePager && (\n <>\n <div className=\"h-px bg-border mt-2 mb-6\" />\n <Pagination\n prev={prev ? { to: prev.id, label: prev.label ?? \"\" } : undefined}\n next={next ? { to: next.id, label: next.label ?? \"\" } : undefined}\n className=\"mb-10\"\n />\n </>\n )}\n </Typography>\n <div className=\"hidden xl:block\" data-pagefind-ignore=\"all\">\n {showToc && <Toc entries={tocEntries} />}\n </div>\n </div>\n );\n};\n"],"names":["ChatGPTLogo","props","jsxs","jsx","ClaudeLogo","MarkdownHeadings","children","id","Heading","MdxPage","MdxComponent","frontmatter","defaultOptions","__filepath","tableOfContents","excerpt","categoryTitle","useCurrentItem","location","useLocation","isCopied","setIsCopied","useState","title","description","category","hideToc","pageTitle","item","hidePager","showLastModified","lastModifiedDate","editConfig","editUrl","editText","copyMarkdownConfig","markdownUrl","handleCopyMarkdown","response","markdown","tocEntries","showToc","prev","next","usePrevNext","useEffect","Helmet","Typography","CategoryHeading","slugify","Button","CheckIcon","CopyIcon","DropdownMenu","DropdownMenuTrigger","ChevronDownIcon","DropdownMenuContent","DropdownMenuItem","Link2Icon","ExternalLinkIcon","prompt","useMDXComponents","EditIcon","Fragment","Pagination","Toc"],"mappings":"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"}
|