@mintlify/msft-sdk 1.1.24 → 1.1.25
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/api-playground/ApiPlayground/Request/PlaygroundModal.js +46 -45
- package/dist/api-playground/ApiPlayground/Request/PlaygroundModal.js.map +1 -1
- package/dist/api-playground/ApiPlayground/Request/index.js +18 -18
- package/dist/api-playground/ApiPlayground/Request/index.js.map +1 -1
- package/dist/api-playground/ApiPlayground/components/EndpointsMenu.js +20 -21
- package/dist/api-playground/ApiPlayground/components/EndpointsMenu.js.map +1 -1
- package/dist/api-playground/ApiPlayground/components/EndpointsMenuLink.js +10 -11
- package/dist/api-playground/ApiPlayground/components/EndpointsMenuLink.js.map +1 -1
- package/dist/api-playground/ApiPlayground/index.js +30 -30
- package/dist/api-playground/ApiPlayground/index.js.map +1 -1
- package/dist/api-playground-2/constants/index.js +12 -3
- package/dist/api-playground-2/constants/index.js.map +1 -1
- package/dist/api-playground-2/schemaGraph/addUniqueKeysToSchema.js +41 -0
- package/dist/api-playground-2/schemaGraph/addUniqueKeysToSchema.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/errors.js +19 -0
- package/dist/api-playground-2/schemaGraph/errors.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/getApiReferenceDataFromGraph.js +26 -0
- package/dist/api-playground-2/schemaGraph/getApiReferenceDataFromGraph.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/getDocumentProperties.js +58 -0
- package/dist/api-playground-2/schemaGraph/getDocumentProperties.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/getSchemaGraphOperationData.js +77 -0
- package/dist/api-playground-2/schemaGraph/getSchemaGraphOperationData.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/getSchemaGraphSchemaData.js +16 -0
- package/dist/api-playground-2/schemaGraph/getSchemaGraphSchemaData.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/processExamples.js +111 -34
- package/dist/api-playground-2/schemaGraph/processExamples.js.map +1 -1
- package/dist/api-playground-2/schemaGraph/reduceCompositions.js +283 -0
- package/dist/api-playground-2/schemaGraph/reduceCompositions.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/resolveGraphNode.js +61 -0
- package/dist/api-playground-2/schemaGraph/resolveGraphNode.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/resolveOperationWithDependencies.js +149 -0
- package/dist/api-playground-2/schemaGraph/resolveOperationWithDependencies.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/resolveSchemaWithDependencies.js +33 -0
- package/dist/api-playground-2/schemaGraph/resolveSchemaWithDependencies.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/sortSchemaByRequired.js +35 -0
- package/dist/api-playground-2/schemaGraph/sortSchemaByRequired.js.map +1 -0
- package/dist/api-playground-2/schemaGraph/utils.js +144 -98
- package/dist/api-playground-2/schemaGraph/utils.js.map +1 -1
- package/dist/common/parseApiTargetFromMetadata.js +24 -0
- package/dist/common/parseApiTargetFromMetadata.js.map +1 -0
- package/dist/common/parseOpenApiString.js +42 -0
- package/dist/common/parseOpenApiString.js.map +1 -0
- package/dist/components/Api/ApiReferenceProvider.js +6 -15
- package/dist/components/Api/ApiReferenceProvider.js.map +1 -1
- package/dist/components/nav-tree/index.js +135 -109
- package/dist/components/nav-tree/index.js.map +1 -1
- package/dist/contexts/ConfigContext.js +61 -12
- package/dist/contexts/ConfigContext.js.map +1 -1
- package/dist/contexts/MDXContentContext.js +0 -1
- package/dist/contexts/MDXContentContext.js.map +1 -1
- package/dist/index.d.ts +125 -9
- package/dist/index.js +156 -144
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/hooks/useCurrentPath.js +0 -17
- package/dist/hooks/useCurrentPath.js.map +0 -1
- package/dist/utils/decodeSlug.js +0 -8
- package/dist/utils/decodeSlug.js.map +0 -1
- package/dist/utils/optionallyAddLeadingSlash.js +0 -7
- package/dist/utils/optionallyAddLeadingSlash.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseApiTargetFromMetadata.js","sources":["../../src/common/parseApiTargetFromMetadata.ts"],"sourcesContent":["import { PageMetaTags } from '@mintlify/models';\nimport { parseOpenApiString, parseOpenApiSchemaString } from './parseOpenApiString';\n\nexport type SchemaTargetType = {\n type: 'schema';\n} & ReturnType<typeof parseOpenApiSchemaString>;\n\nexport type OperationTargetType = {\n type: 'operation';\n} & ReturnType<typeof parseOpenApiString>;\n\n\nexport const parseApiTargetFromMetadata = (\n metadata: PageMetaTags\n): SchemaTargetType | OperationTargetType | undefined => {\n const openapiSchema = metadata['openapi-schema'];\n if (typeof openapiSchema === 'string' && openapiSchema.length > 0) {\n return {\n type: 'schema',\n ...parseOpenApiSchemaString(openapiSchema),\n };\n }\n\n const openapi = metadata.openapi;\n if (typeof openapi === 'string' && openapi.length > 0) {\n try {\n return {\n type: 'operation',\n ...parseOpenApiString(openapi),\n };\n } catch (error) {\n console.error(`unable to parse value \"${openapi}\" for field \"openapi\":`, error);\n return undefined;\n }\n }\n\n return undefined;\n};"],"names":["parseApiTargetFromMetadata","metadata","openapiSchema","parseOpenApiSchemaString","openapi","parseOpenApiString","error"],"mappings":";AAYO,MAAMA,IAA6B,CACxCC,MACuD;AACvD,QAAMC,IAAgBD,EAAS,gBAAgB;AAC/C,MAAI,OAAOC,KAAkB,YAAYA,EAAc,SAAS;AAC9D,WAAO;AAAA,MACL,MAAM;AAAA,MACN,GAAGC,EAAyBD,CAAa;AAAA,IAAA;AAI7C,QAAME,IAAUH,EAAS;AACzB,MAAI,OAAOG,KAAY,YAAYA,EAAQ,SAAS;AAClD,QAAI;AACF,aAAO;AAAA,QACL,MAAM;AAAA,QACN,GAAGC,EAAmBD,CAAO;AAAA,MAAA;AAAA,IAEjC,SAASE,GAAO;AACd,cAAQ,MAAM,0BAA0BF,CAAO,0BAA0BE,CAAK;AAC9E;AAAA,IACF;AAIJ;"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { OpenAPIV3 as i } from "openapi-types";
|
|
2
|
+
const p = Object.values(i.HttpMethods).concat(
|
|
3
|
+
"webhook"
|
|
4
|
+
), l = (o) => {
|
|
5
|
+
const e = o.trim().split(/\s+/);
|
|
6
|
+
let r, t, n;
|
|
7
|
+
if (e.length > 3)
|
|
8
|
+
throw new Error("improperly formatted openapi string");
|
|
9
|
+
if (e[0] && e[1] && e[2])
|
|
10
|
+
[r, t, n] = e;
|
|
11
|
+
else if (e[0] && e[1])
|
|
12
|
+
[t, n] = e;
|
|
13
|
+
else
|
|
14
|
+
throw new Error("improperly formatted openapi string");
|
|
15
|
+
if (t = t.toLowerCase(), !p.includes(t))
|
|
16
|
+
throw new Error("invalid http method");
|
|
17
|
+
return {
|
|
18
|
+
method: t,
|
|
19
|
+
endpoint: n,
|
|
20
|
+
filename: r
|
|
21
|
+
};
|
|
22
|
+
}, m = (o) => {
|
|
23
|
+
const e = o.trim().split(/\s+/);
|
|
24
|
+
let r, t;
|
|
25
|
+
if (e.length > 2)
|
|
26
|
+
throw new Error("improperly formatted openapi schema string");
|
|
27
|
+
if (e[0] && e[1])
|
|
28
|
+
[r, t] = e;
|
|
29
|
+
else if (e[0])
|
|
30
|
+
[t] = e;
|
|
31
|
+
else
|
|
32
|
+
throw new Error("improperly formatted openapi schema string");
|
|
33
|
+
return {
|
|
34
|
+
name: t,
|
|
35
|
+
filename: r
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
export {
|
|
39
|
+
m as parseOpenApiSchemaString,
|
|
40
|
+
l as parseOpenApiString
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=parseOpenApiString.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseOpenApiString.js","sources":["../../src/common/parseOpenApiString.ts"],"sourcesContent":["import { OpenAPIV3 } from 'openapi-types';\n\nconst VALID_METHODS: string[] = Object.values(OpenAPIV3.HttpMethods).concat(\n 'webhook' as OpenAPIV3.HttpMethods\n);\n\n/**\n *\n * @param str either the openapi or api string defined in the frontmatter\n * @returns method: API method (GET, POST, PUT, DELETE, PATCH)\n * endpoint: API endpoint\n * filename: filename of the openapi file (if applicable)\n * returns undefined for any of the values (fails silently)\n */\nexport const potentiallyParseOpenApiString = (\n str: string\n):\n | {\n method: OpenAPIV3.HttpMethods;\n endpoint: string;\n filename?: string;\n }\n | undefined => {\n const components = str.trim().split(/\\s+/);\n let filename: string | undefined;\n let method: string;\n let endpoint: string;\n\n if (components.length > 3) {\n // improperly formatted openapi string\n return undefined;\n } else if (components[0] && components[1] && components[2]) {\n [filename, method, endpoint] = components;\n } else if (components[0] && components[1]) {\n [method, endpoint] = components;\n } else {\n // improperly formatted openapi string\n return undefined;\n }\n\n if (method) {\n method = method.toLowerCase();\n if (!VALID_METHODS.includes(method)) {\n // invalid http method\n return undefined;\n }\n }\n\n return {\n method: method as OpenAPIV3.HttpMethods,\n endpoint,\n filename,\n };\n};\n\n/**\n *\n * @param str either the openapi or api string defined in the frontmatter\n * @returns method: API method (GET, POST, PUT, DELETE, PATCH)\n * endpoint: API endpoint\n * filename: filename of the openapi file (if applicable)\n */\nexport const parseOpenApiString = (\n str: string\n): {\n method: OpenAPIV3.HttpMethods;\n endpoint: string;\n filename?: string;\n} => {\n const components = str.trim().split(/\\s+/);\n let filename: string | undefined;\n let method: string;\n let endpoint: string;\n\n if (components.length > 3) {\n throw new Error('improperly formatted openapi string');\n } else if (components[0] && components[1] && components[2]) {\n [filename, method, endpoint] = components;\n } else if (components[0] && components[1]) {\n [method, endpoint] = components;\n } else {\n throw new Error('improperly formatted openapi string');\n }\n\n method = method.toLowerCase();\n\n if (!VALID_METHODS.includes(method)) {\n throw new Error('invalid http method');\n }\n\n return {\n method: method as OpenAPIV3.HttpMethods,\n endpoint,\n filename,\n };\n};\n\n/**\n * same as above, but for openapi-schema frontmatter\n */\nexport const parseOpenApiSchemaString = (\n str: string\n): {\n name: string;\n filename?: string;\n} => {\n const components = str.trim().split(/\\s+/);\n let filename: string | undefined;\n let name: string;\n\n if (components.length > 2) {\n throw new Error('improperly formatted openapi schema string');\n } else if (components[0] && components[1]) {\n [filename, name] = components;\n } else if (components[0]) {\n [name] = components;\n } else {\n throw new Error('improperly formatted openapi schema string');\n }\n\n return {\n name,\n filename,\n };\n};\n"],"names":["VALID_METHODS","OpenAPIV3","parseOpenApiString","str","components","filename","method","endpoint","parseOpenApiSchemaString","name"],"mappings":";AAEA,MAAMA,IAA0B,OAAO,OAAOC,EAAU,WAAW,EAAE;AAAA,EACnE;AACF,GA0DaC,IAAqB,CAChCC,MAKG;AACH,QAAMC,IAAaD,EAAI,KAAA,EAAO,MAAM,KAAK;AACzC,MAAIE,GACAC,GACAC;AAEJ,MAAIH,EAAW,SAAS;AACtB,UAAM,IAAI,MAAM,qCAAqC;AACvD,MAAWA,EAAW,CAAC,KAAKA,EAAW,CAAC,KAAKA,EAAW,CAAC;AACvD,KAACC,GAAUC,GAAQC,CAAQ,IAAIH;AAAA,WACtBA,EAAW,CAAC,KAAKA,EAAW,CAAC;AACtC,KAACE,GAAQC,CAAQ,IAAIH;AAAA;AAErB,UAAM,IAAI,MAAM,qCAAqC;AAKvD,MAFAE,IAASA,EAAO,YAAA,GAEZ,CAACN,EAAc,SAASM,CAAM;AAChC,UAAM,IAAI,MAAM,qBAAqB;AAGvC,SAAO;AAAA,IACL,QAAAA;AAAA,IACA,UAAAC;AAAA,IACA,UAAAF;AAAA,EAAA;AAEJ,GAKaG,IAA2B,CACtCL,MAIG;AACH,QAAMC,IAAaD,EAAI,KAAA,EAAO,MAAM,KAAK;AACzC,MAAIE,GACAI;AAEJ,MAAIL,EAAW,SAAS;AACtB,UAAM,IAAI,MAAM,4CAA4C;MACnDA,EAAW,CAAC,KAAKA,EAAW,CAAC;AACtC,KAACC,GAAUI,CAAI,IAAIL;AAAA,WACVA,EAAW,CAAC;AACrB,KAACK,CAAI,IAAIL;AAAA;AAET,UAAM,IAAI,MAAM,4CAA4C;AAG9D,SAAO;AAAA,IACL,MAAAK;AAAA,IACA,UAAAJ;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
const
|
|
4
|
-
function
|
|
5
|
-
return
|
|
6
|
-
}
|
|
7
|
-
function s({
|
|
8
|
-
apiReferenceData2: e,
|
|
9
|
-
docsConfig: o,
|
|
10
|
-
mdxExtracts: r,
|
|
11
|
-
children: n
|
|
12
|
-
}) {
|
|
13
|
-
return /* @__PURE__ */ c(t.Provider, { value: { apiReferenceData2: e, docsConfig: o, mdxExtracts: r }, children: n });
|
|
1
|
+
import "react/jsx-runtime";
|
|
2
|
+
import { useContext as e, createContext as t } from "react";
|
|
3
|
+
const o = t(void 0);
|
|
4
|
+
function i() {
|
|
5
|
+
return e(o);
|
|
14
6
|
}
|
|
15
7
|
export {
|
|
16
|
-
|
|
17
|
-
p as useApiReference
|
|
8
|
+
i as useApiReference
|
|
18
9
|
};
|
|
19
10
|
//# sourceMappingURL=ApiReferenceProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiReferenceProvider.js","sources":["../../../src/components/Api/ApiReferenceProvider.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react';\n\ninterface ApiReferenceContextValue {\n apiReferenceData2?: any;\n docsConfig?: any;\n mdxExtracts?: any;\n}\n\nconst ApiReferenceContext = createContext<ApiReferenceContextValue | undefined>(undefined);\n\nexport function useApiReference() {\n const context = useContext(ApiReferenceContext);\n return context;\n}\n\ninterface ApiReferenceProvider2Props {\n apiReferenceData2?: any;\n docsConfig?: any;\n mdxExtracts?: any;\n children: React.ReactNode;\n}\n\nexport function ApiReferenceProvider2({\n apiReferenceData2,\n docsConfig,\n mdxExtracts,\n children,\n}: ApiReferenceProvider2Props) {\n return (\n <ApiReferenceContext.Provider value={{ apiReferenceData2, docsConfig, mdxExtracts }}>\n {children}\n </ApiReferenceContext.Provider>\n );\n}\n"],"names":["ApiReferenceContext","createContext","useApiReference","useContext"
|
|
1
|
+
{"version":3,"file":"ApiReferenceProvider.js","sources":["../../../src/components/Api/ApiReferenceProvider.tsx"],"sourcesContent":["import React, { createContext, useContext } from 'react';\n\ninterface ApiReferenceContextValue {\n apiReferenceData2?: any;\n docsConfig?: any;\n mdxExtracts?: any;\n}\n\nconst ApiReferenceContext = createContext<ApiReferenceContextValue | undefined>(undefined);\n\nexport function useApiReference() {\n const context = useContext(ApiReferenceContext);\n return context;\n}\n\ninterface ApiReferenceProvider2Props {\n apiReferenceData2?: any;\n docsConfig?: any;\n mdxExtracts?: any;\n children: React.ReactNode;\n}\n\nexport function ApiReferenceProvider2({\n apiReferenceData2,\n docsConfig,\n mdxExtracts,\n children,\n}: ApiReferenceProvider2Props) {\n return (\n <ApiReferenceContext.Provider value={{ apiReferenceData2, docsConfig, mdxExtracts }}>\n {children}\n </ApiReferenceContext.Provider>\n );\n}\n"],"names":["ApiReferenceContext","createContext","useApiReference","useContext"],"mappings":";;AAQA,MAAMA,IAAsBC,EAAoD,MAAS;AAElF,SAASC,IAAkB;AAEhC,SADgBC,EAAWH,CAAmB;AAEhD;"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useRef as A, useEffect as
|
|
1
|
+
import { jsxs as l, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as A, useEffect as $, useState as L } from "react";
|
|
3
3
|
import { useComponents as _ } from "../../context/components-context.js";
|
|
4
|
-
import { cn as
|
|
4
|
+
import { cn as y } from "../../utils/cn.js";
|
|
5
5
|
import { MethodPill as j } from "../Api/MethodPill.js";
|
|
6
6
|
/* empty css */
|
|
7
|
-
function
|
|
8
|
-
return /* @__PURE__ */
|
|
7
|
+
function C({ isExpanded: t }) {
|
|
8
|
+
return /* @__PURE__ */ e(
|
|
9
9
|
"svg",
|
|
10
10
|
{
|
|
11
|
-
className:
|
|
11
|
+
className: y(
|
|
12
12
|
"mint:w-[16px] mint:h-[16px] mint:shrink-0 mint:text-[#6b7280] mint:dark:text-[#9ca3af]",
|
|
13
13
|
t ? "mint:rotate-90" : "mint:rotate-0"
|
|
14
14
|
),
|
|
@@ -16,7 +16,7 @@ function E({ isExpanded: t }) {
|
|
|
16
16
|
stroke: "currentColor",
|
|
17
17
|
viewBox: "0 0 24 24",
|
|
18
18
|
"aria-hidden": "true",
|
|
19
|
-
children: /* @__PURE__ */
|
|
19
|
+
children: /* @__PURE__ */ e(
|
|
20
20
|
"path",
|
|
21
21
|
{
|
|
22
22
|
strokeLinecap: "round",
|
|
@@ -28,128 +28,128 @@ function E({ isExpanded: t }) {
|
|
|
28
28
|
}
|
|
29
29
|
);
|
|
30
30
|
}
|
|
31
|
-
const
|
|
32
|
-
function
|
|
33
|
-
const
|
|
34
|
-
if (!
|
|
35
|
-
const
|
|
36
|
-
return
|
|
37
|
-
},
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}, [
|
|
41
|
-
const { LinkComponent:
|
|
42
|
-
if (
|
|
43
|
-
return /* @__PURE__ */
|
|
31
|
+
const E = "mint:bg-[#e6e6e6] mint:dark:bg-[#2e2e2e] mint:text-[#242424] mint:dark:text-[#ffffff] mint:font-semibold";
|
|
32
|
+
function N({ item: t, activeId: p, level: f = 0, activeHref: o }) {
|
|
33
|
+
const h = t.children && t.children.length > 0, x = (n) => n ? n.startsWith("/") ? n : `/${n}` : "", b = (n, d) => {
|
|
34
|
+
if (!n || !d) return !1;
|
|
35
|
+
const v = x(n), w = x(d);
|
|
36
|
+
return v === w || v.replace("/docs/", "/") === w.replace("/docs/", "/") || v === w.replace("/docs/", "/") || v.replace("/docs/", "/") === w;
|
|
37
|
+
}, g = (n) => b(n.href, o) ? !0 : n.children ? n.children.some(g) : !1, k = f === 0 ? !0 : (t.expanded ?? !1) || h && g(t), [m, i] = L(k);
|
|
38
|
+
$(() => {
|
|
39
|
+
h && g(t) && i(!0);
|
|
40
|
+
}, [o]);
|
|
41
|
+
const { LinkComponent: a } = _(), s = !t.href, r = t.href && (b(t.href, p) || b(t.href, o)), u = t.icon;
|
|
42
|
+
if (s && f === 0)
|
|
43
|
+
return /* @__PURE__ */ l(
|
|
44
44
|
"div",
|
|
45
45
|
{
|
|
46
46
|
id: "nav-group",
|
|
47
47
|
role: "group",
|
|
48
48
|
"aria-label": t.toc_title,
|
|
49
49
|
children: [
|
|
50
|
-
/* @__PURE__ */
|
|
51
|
-
|
|
52
|
-
/* @__PURE__ */
|
|
50
|
+
/* @__PURE__ */ l("div", { className: "mint:text-sm mint:font-semibold mint:text-[#141414] mint:dark:text-white mint:mb-3 mint:flex mint:items-start mint:gap-2 mint:pl-2.5", children: [
|
|
51
|
+
u && /* @__PURE__ */ e(u, { className: "mint:w-5 mint:h-5", "aria-hidden": "true" }),
|
|
52
|
+
/* @__PURE__ */ e("span", { children: t.toc_title })
|
|
53
53
|
] }),
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
h && t.children && /* @__PURE__ */ e("ul", { className: "mint:flex mint:flex-col mint:pl-0", role: "list", children: t.children.map((n, d) => /* @__PURE__ */ e(
|
|
55
|
+
N,
|
|
56
56
|
{
|
|
57
|
-
item:
|
|
58
|
-
activeId:
|
|
57
|
+
item: n,
|
|
58
|
+
activeId: p,
|
|
59
59
|
level: f + 1,
|
|
60
|
-
activeHref:
|
|
60
|
+
activeHref: o
|
|
61
61
|
},
|
|
62
|
-
`${
|
|
62
|
+
`${n.href}-${d}`
|
|
63
63
|
)) })
|
|
64
64
|
]
|
|
65
65
|
}
|
|
66
66
|
);
|
|
67
|
-
if (
|
|
68
|
-
return /* @__PURE__ */
|
|
69
|
-
/* @__PURE__ */
|
|
67
|
+
if (s && f > 0)
|
|
68
|
+
return /* @__PURE__ */ l("li", { className: "mint:list-none", children: [
|
|
69
|
+
/* @__PURE__ */ l(
|
|
70
70
|
"button",
|
|
71
71
|
{
|
|
72
72
|
id: "nav-group-toggle",
|
|
73
|
-
onClick: () =>
|
|
74
|
-
"aria-expanded":
|
|
75
|
-
"aria-label": `${
|
|
73
|
+
onClick: () => i(!m),
|
|
74
|
+
"aria-expanded": m,
|
|
75
|
+
"aria-label": `${m ? "Collapse" : "Expand"} ${t.toc_title} section`,
|
|
76
76
|
className: "mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:py-2 mint:px-3 mint:text-sm mint:rounded-lg mint:bg-transparent mint:border-none mint:cursor-pointer mint:text-[#4b5563] mint:dark:text-[#9ca3af] mint:hover:bg-[rgba(75,85,99,0.05)] mint:hover:text-[#141414] mint:dark:hover:bg-[rgba(75,85,99,0.05)] mint:dark:hover:text-[#e5e7eb] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2",
|
|
77
77
|
children: [
|
|
78
|
-
/* @__PURE__ */
|
|
79
|
-
/* @__PURE__ */
|
|
78
|
+
/* @__PURE__ */ e("span", { className: "mint:flex-1 mint:min-w-0", children: t.toc_title }),
|
|
79
|
+
/* @__PURE__ */ e(C, { isExpanded: !!m })
|
|
80
80
|
]
|
|
81
81
|
}
|
|
82
82
|
),
|
|
83
|
-
|
|
83
|
+
h && m && t.children && /* @__PURE__ */ e(
|
|
84
84
|
"ul",
|
|
85
85
|
{
|
|
86
86
|
className: "mint:ml-3 mint:flex mint:flex-col mint:pl-0",
|
|
87
87
|
role: "group",
|
|
88
|
-
children: t.children.map((
|
|
89
|
-
|
|
88
|
+
children: t.children.map((n, d) => /* @__PURE__ */ e(
|
|
89
|
+
N,
|
|
90
90
|
{
|
|
91
|
-
item:
|
|
92
|
-
activeId:
|
|
91
|
+
item: n,
|
|
92
|
+
activeId: p,
|
|
93
93
|
level: f + 1,
|
|
94
|
-
activeHref:
|
|
94
|
+
activeHref: o
|
|
95
95
|
},
|
|
96
|
-
`${
|
|
96
|
+
`${n.href}-${d}`
|
|
97
97
|
))
|
|
98
98
|
}
|
|
99
99
|
)
|
|
100
100
|
] });
|
|
101
|
-
const c =
|
|
102
|
-
return
|
|
103
|
-
/* @__PURE__ */
|
|
101
|
+
const c = a || "a";
|
|
102
|
+
return h ? /* @__PURE__ */ l("li", { className: "mint:list-none", children: [
|
|
103
|
+
/* @__PURE__ */ l(
|
|
104
104
|
"button",
|
|
105
105
|
{
|
|
106
106
|
id: "nav-item-toggle",
|
|
107
|
-
onClick: () =>
|
|
108
|
-
"aria-expanded":
|
|
109
|
-
"aria-label": `${
|
|
110
|
-
className:
|
|
107
|
+
onClick: () => i(!m),
|
|
108
|
+
"aria-expanded": m,
|
|
109
|
+
"aria-label": `${m ? "Collapse" : "Expand"} ${t.toc_title} section`,
|
|
110
|
+
className: y(
|
|
111
111
|
"mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:gap-2 mint:py-2 mint:px-3 mint:text-[14px] mint:font-sans mint:font-normal mint:rounded-xl mint:bg-transparent mint:border-none mint:cursor-pointer mint:text-[#424242] mint:dark:text-[#9ca3af] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2",
|
|
112
|
-
|
|
112
|
+
r ? E : "mint:hover:bg-[rgba(75,85,99,0.05)] mint:hover:text-[#141414] mint:dark:hover:bg-[rgba(75,85,99,0.05)] mint:dark:hover:text-[#e5e7eb]"
|
|
113
113
|
),
|
|
114
114
|
children: [
|
|
115
|
-
/* @__PURE__ */
|
|
116
|
-
/* @__PURE__ */
|
|
115
|
+
/* @__PURE__ */ e("span", { className: "mint:flex-1 mint:min-w-0", children: t.toc_title }),
|
|
116
|
+
/* @__PURE__ */ e(C, { isExpanded: !!m })
|
|
117
117
|
]
|
|
118
118
|
}
|
|
119
119
|
),
|
|
120
|
-
|
|
120
|
+
m && t.children && /* @__PURE__ */ e(
|
|
121
121
|
"ul",
|
|
122
122
|
{
|
|
123
123
|
className: "mint:ml-3 mint:flex mint:flex-col mint:pl-0",
|
|
124
124
|
role: "group",
|
|
125
|
-
children: t.children.map((
|
|
126
|
-
|
|
125
|
+
children: t.children.map((n, d) => /* @__PURE__ */ e(
|
|
126
|
+
N,
|
|
127
127
|
{
|
|
128
|
-
item:
|
|
129
|
-
activeId:
|
|
128
|
+
item: n,
|
|
129
|
+
activeId: p,
|
|
130
130
|
level: f + 1,
|
|
131
|
-
activeHref:
|
|
131
|
+
activeHref: o
|
|
132
132
|
},
|
|
133
|
-
`${
|
|
133
|
+
`${n.href}-${d}`
|
|
134
134
|
))
|
|
135
135
|
}
|
|
136
136
|
)
|
|
137
|
-
] }) : /* @__PURE__ */
|
|
137
|
+
] }) : /* @__PURE__ */ e("li", { className: "mint:list-none", children: /* @__PURE__ */ l(
|
|
138
138
|
c,
|
|
139
139
|
{
|
|
140
140
|
id: "nav-item",
|
|
141
141
|
href: t.href,
|
|
142
|
-
"aria-current":
|
|
143
|
-
className:
|
|
142
|
+
"aria-current": r ? "page" : void 0,
|
|
143
|
+
className: y(
|
|
144
144
|
"mint:relative mint:flex mint:items-center mint:gap-2 mint:py-2 mint:px-3 mint:text-[14px] mint:font-sans mint:font-normal mint:rounded-xl mint:no-underline mint:text-[#424242] mint:dark:text-[#9ca3af] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2",
|
|
145
|
-
|
|
145
|
+
r ? E : "mint:hover:bg-[rgba(75,85,99,0.05)] mint:hover:text-[#141414] mint:dark:hover:bg-[rgba(75,85,99,0.05)] mint:dark:hover:text-[#e5e7eb]"
|
|
146
146
|
),
|
|
147
147
|
children: [
|
|
148
|
-
|
|
149
|
-
t.method && /* @__PURE__ */
|
|
148
|
+
r && /* @__PURE__ */ e("div", { className: "mint:absolute mint:left-0 mint:my-2.5 mint:rounded-full mint:w-[3px] mint:top-0 mint:bottom-0 mint:bg-[#8251ee] mint:dark:bg-[#9263f1]" }),
|
|
149
|
+
t.method && /* @__PURE__ */ e(
|
|
150
150
|
j,
|
|
151
151
|
{
|
|
152
|
-
isActive: !!
|
|
152
|
+
isActive: !!r,
|
|
153
153
|
method: t.method,
|
|
154
154
|
shortMethod: !0
|
|
155
155
|
}
|
|
@@ -161,89 +161,115 @@ function w({ item: t, activeId: h, level: f = 0, activeHref: r }) {
|
|
|
161
161
|
}
|
|
162
162
|
function B({
|
|
163
163
|
navTree: t,
|
|
164
|
-
activeId:
|
|
164
|
+
activeId: p,
|
|
165
165
|
className: f = "",
|
|
166
|
-
activeHref:
|
|
167
|
-
theme:
|
|
168
|
-
bottomLinks:
|
|
166
|
+
activeHref: o,
|
|
167
|
+
theme: h,
|
|
168
|
+
bottomLinks: x,
|
|
169
|
+
anchors: b
|
|
169
170
|
}) {
|
|
170
|
-
const { LinkComponent:
|
|
171
|
-
if (
|
|
172
|
-
const
|
|
173
|
-
if (!
|
|
174
|
-
const
|
|
175
|
-
const
|
|
176
|
-
return
|
|
171
|
+
const { LinkComponent: g } = _(), k = A(null);
|
|
172
|
+
if ($(() => {
|
|
173
|
+
const i = k.current;
|
|
174
|
+
if (!i || !o) return;
|
|
175
|
+
const a = (r) => r ? r.startsWith("/") ? r : `/${r}` : "", s = (r, u) => {
|
|
176
|
+
const c = a(r), n = a(u);
|
|
177
|
+
return c === n || c.replace("/docs/", "/") === n.replace("/docs/", "/") || c === n.replace("/docs/", "/") || c.replace("/docs/", "/") === n;
|
|
177
178
|
};
|
|
178
179
|
requestAnimationFrame(() => {
|
|
179
|
-
const
|
|
180
|
-
let
|
|
181
|
-
for (const
|
|
182
|
-
const
|
|
183
|
-
if (
|
|
184
|
-
|
|
180
|
+
const r = i.querySelectorAll("a[href]");
|
|
181
|
+
let u = null;
|
|
182
|
+
for (const c of Array.from(r)) {
|
|
183
|
+
const n = c.getAttribute("href");
|
|
184
|
+
if (n && s(n, o)) {
|
|
185
|
+
u = c;
|
|
185
186
|
break;
|
|
186
187
|
}
|
|
187
188
|
}
|
|
188
|
-
|
|
189
|
+
u && u.scrollIntoView({
|
|
189
190
|
behavior: "instant",
|
|
190
191
|
block: "center",
|
|
191
192
|
inline: "nearest"
|
|
192
193
|
});
|
|
193
194
|
});
|
|
194
|
-
}, [
|
|
195
|
+
}, [o]), !t || t.items.length === 0)
|
|
195
196
|
return null;
|
|
196
|
-
const
|
|
197
|
-
return /* @__PURE__ */
|
|
197
|
+
const m = g || "a";
|
|
198
|
+
return /* @__PURE__ */ l(
|
|
198
199
|
"nav",
|
|
199
200
|
{
|
|
200
201
|
id: "nav-tree",
|
|
201
|
-
className:
|
|
202
|
+
className: y(
|
|
202
203
|
"mint:flex mint:flex-col mint:h-full mint:min-h-0",
|
|
203
204
|
f,
|
|
204
|
-
|
|
205
|
+
h === "dark" && "dark"
|
|
205
206
|
),
|
|
206
207
|
"aria-label": "Documentation navigation",
|
|
207
208
|
children: [
|
|
208
|
-
/* @__PURE__ */
|
|
209
|
+
b && b.length > 0 && /* @__PURE__ */ e(
|
|
210
|
+
"div",
|
|
211
|
+
{
|
|
212
|
+
id: "nav-anchors",
|
|
213
|
+
className: "mint:shrink-0 mint:w-full mint:bg-[#fafafa] mint:dark:bg-[#0a0a0a] mint:border-b mint:border-[#e5e5e5] mint:dark:border-[#2e2e2e]",
|
|
214
|
+
children: /* @__PURE__ */ e("div", { className: "mint:flex mint:flex-col mint:py-3 mint:px-4 mint:gap-1", children: b.map((i, a) => {
|
|
215
|
+
const s = i.icon;
|
|
216
|
+
return /* @__PURE__ */ l(
|
|
217
|
+
m,
|
|
218
|
+
{
|
|
219
|
+
href: i.href,
|
|
220
|
+
className: "mint:group mint:flex mint:items-start mint:gap-3 mint:py-2 mint:px-3 mint:text-sm mint:rounded-lg mint:no-underline mint:text-[#424242] mint:dark:text-[#9ca3af] mint:hover:bg-[#f0f0f0] mint:dark:hover:bg-[#1a1a1a] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:transition-colors mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2",
|
|
221
|
+
children: [
|
|
222
|
+
s && /* @__PURE__ */ e(s, { className: "mint:w-5 mint:h-5 mint:shrink-0 mint:mt-0.5 mint:text-[#6b7280] mint:dark:text-[#9ca3af] mint:group-hover:text-[#8251ee] mint:dark:group-hover:text-[#9263f1] mint:transition-colors" }),
|
|
223
|
+
/* @__PURE__ */ l("div", { className: "mint:flex mint:flex-col mint:gap-0.5 mint:min-w-0", children: [
|
|
224
|
+
/* @__PURE__ */ e("span", { className: "mint:font-medium mint:text-[#141414] mint:dark:text-[#ffffff] mint:group-hover:text-[#8251ee] mint:dark:group-hover:text-[#9263f1] mint:transition-colors", children: i.title }),
|
|
225
|
+
i.description && /* @__PURE__ */ e("span", { className: "mint:text-xs mint:text-[#6b7280] mint:dark:text-[#9ca3af] mint:leading-snug", children: i.description })
|
|
226
|
+
] })
|
|
227
|
+
]
|
|
228
|
+
},
|
|
229
|
+
a
|
|
230
|
+
);
|
|
231
|
+
}) })
|
|
232
|
+
}
|
|
233
|
+
),
|
|
234
|
+
/* @__PURE__ */ e(
|
|
209
235
|
"div",
|
|
210
236
|
{
|
|
211
237
|
id: "nav-tree-content",
|
|
212
|
-
ref:
|
|
238
|
+
ref: k,
|
|
213
239
|
className: "mint:flex-1 mint:overflow-y-auto mint:overflow-x-hidden mint:min-h-0 mint:[scrollbar-gutter:stable] mint:px-4 mint:[scrollbar-width:thin] mint:[scrollbar-color:rgba(0,0,0,0.2)_transparent] mint:dark:[scrollbar-color:rgba(255,255,255,0.2)_transparent] mint:[&::-webkit-scrollbar]:w-1 mint:[&::-webkit-scrollbar-track]:bg-transparent mint:[&::-webkit-scrollbar-thumb]:bg-black/20 mint:dark:[&::-webkit-scrollbar-thumb]:bg-white/20 mint:[&::-webkit-scrollbar-thumb]:rounded mint:[&::-webkit-scrollbar-thumb:hover]:bg-black/30 mint:dark:[&::-webkit-scrollbar-thumb:hover]:bg-white/30 mint:space-y-6 mint:py-4",
|
|
214
|
-
children: t.items.map((
|
|
215
|
-
|
|
240
|
+
children: t.items.map((i, a) => /* @__PURE__ */ e(
|
|
241
|
+
N,
|
|
216
242
|
{
|
|
217
|
-
item:
|
|
218
|
-
activeId:
|
|
219
|
-
activeHref:
|
|
243
|
+
item: i,
|
|
244
|
+
activeId: p,
|
|
245
|
+
activeHref: o
|
|
220
246
|
},
|
|
221
|
-
`${
|
|
247
|
+
`${i.href}-${a}`
|
|
222
248
|
))
|
|
223
249
|
}
|
|
224
250
|
),
|
|
225
|
-
|
|
251
|
+
x && x.length > 0 && /* @__PURE__ */ l(
|
|
226
252
|
"div",
|
|
227
253
|
{
|
|
228
254
|
id: "nav-tree-bottom-links",
|
|
229
255
|
className: "mint:shrink-0 mint:w-full mint:bg-[#f0f0f0] mint:dark:bg-[#0f0f0f] mint:mt-auto",
|
|
230
256
|
children: [
|
|
231
|
-
/* @__PURE__ */
|
|
232
|
-
/* @__PURE__ */
|
|
233
|
-
const
|
|
234
|
-
return /* @__PURE__ */
|
|
235
|
-
|
|
257
|
+
/* @__PURE__ */ e("div", { className: "mint:h-[0.5px] mint:w-full mint:bg-[#d1d1d1] mint:dark:bg-[#666666]" }),
|
|
258
|
+
/* @__PURE__ */ e("div", { className: "mint:flex mint:flex-col mint:py-3 mint:px-4", children: x.map((i, a) => {
|
|
259
|
+
const s = i.icon;
|
|
260
|
+
return /* @__PURE__ */ l(
|
|
261
|
+
m,
|
|
236
262
|
{
|
|
237
|
-
href:
|
|
263
|
+
href: i.href,
|
|
238
264
|
target: "_blank",
|
|
239
265
|
rel: "noopener noreferrer",
|
|
240
266
|
className: "mint:flex mint:items-center mint:py-2 mint:gap-2 mint:text-sm mint:no-underline mint:text-[#424242] mint:dark:text-[#9ca3af] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:[&>span]:flex mint:[&>span]:items-center mint:[&>span]:gap-2 mint:[&>svg:last-child]:hidden",
|
|
241
267
|
children: [
|
|
242
|
-
/* @__PURE__ */
|
|
243
|
-
/* @__PURE__ */
|
|
268
|
+
/* @__PURE__ */ e(s, { className: "mint:w-5 mint:h-5 mint:shrink-0" }),
|
|
269
|
+
/* @__PURE__ */ e("span", { children: i.label })
|
|
244
270
|
]
|
|
245
271
|
},
|
|
246
|
-
|
|
272
|
+
a
|
|
247
273
|
);
|
|
248
274
|
}) })
|
|
249
275
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/nav-tree/index.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from \"react\";\nimport type { NavItem, NavTreeData } from \"../../types\";\nimport { useComponents } from \"../../context/components-context\";\nimport { cn } from \"../../utils/cn\";\nimport { MethodPill } from \"../Api/MethodPill\";\nexport { MobileNavTree } from \"./mobile-nav\";\nexport type { MobileNavTreeProps } from \"./mobile-nav\";\nimport \"../../styles.css\";\n\nexport interface BottomLinkConfig {\n href: string;\n label: string;\n icon: React.ComponentType<{ className?: string }>;\n}\n\ninterface NavTreeProps {\n navTree: NavTreeData;\n activeId?: string;\n className?: string;\n activeHref?: string;\n theme?: \"light\" | \"dark\" | \"system\";\n bottomLinks?: BottomLinkConfig[];\n}\n\ninterface TreeItemProps {\n item: NavItem;\n activeId?: string;\n level?: number;\n activeHref?: string;\n}\n\nfunction ChevronIcon({ isExpanded }: { isExpanded: boolean }) {\n return (\n <svg\n className={cn(\n \"mint:w-[16px] mint:h-[16px] mint:shrink-0 mint:text-[#6b7280] mint:dark:text-[#9ca3af]\",\n isExpanded ? \"mint:rotate-90\" : \"mint:rotate-0\"\n )}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n );\n}\n\nconst ACTIVE_ITEM_CLASSES = \"mint:bg-[#e6e6e6] mint:dark:bg-[#2e2e2e] mint:text-[#242424] mint:dark:text-[#ffffff] mint:font-semibold\";\n\nfunction TreeItemComponent({ item, activeId, level = 0, activeHref }: TreeItemProps) {\n const hasChildren = item.children && item.children.length > 0;\n \n const normalizeHref = (href?: string): string => {\n if (!href) return '';\n const normalized = href.startsWith('/') ? href : `/${href}`;\n return normalized;\n };\n\n const compareHrefs = (href1?: string, href2?: string): boolean => {\n if (!href1 || !href2) return false;\n const norm1 = normalizeHref(href1);\n const norm2 = normalizeHref(href2);\n return norm1 === norm2 || \n norm1.replace('/docs/', '/') === norm2.replace('/docs/', '/') ||\n norm1 === norm2.replace('/docs/', '/') ||\n norm1.replace('/docs/', '/') === norm2;\n };\n\n const hasActiveChild = (navItem: NavItem): boolean => {\n if (compareHrefs(navItem.href, activeHref)) return true;\n if (navItem.children) {\n return navItem.children.some(hasActiveChild);\n }\n return false;\n };\n\n const shouldBeExpanded = level === 0 ? true : (item.expanded ?? false) || (hasChildren && hasActiveChild(item));\n const [isExpanded, setIsExpanded] = useState(shouldBeExpanded);\n \n useEffect(() => {\n if (hasChildren && hasActiveChild(item)) {\n setIsExpanded(true);\n }\n }, [activeHref]);\n\n const { LinkComponent } = useComponents();\n const isGroup = !item.href;\n const isActive = item.href && (compareHrefs(item.href, activeId) || compareHrefs(item.href, activeHref));\n const Icon = item.icon;\n\n if (isGroup && level === 0) {\n return (\n <div\n id=\"nav-group\"\n role=\"group\"\n aria-label={item.toc_title}\n >\n <div className=\"mint:text-sm mint:font-semibold mint:text-[#141414] mint:dark:text-white mint:mb-3 mint:flex mint:items-start mint:gap-2 mint:pl-2.5\">\n {Icon && <Icon className=\"mint:w-5 mint:h-5\" aria-hidden=\"true\" />}\n <span>{item.toc_title}</span>\n </div>\n {hasChildren && item.children && (\n <ul className=\"mint:flex mint:flex-col mint:pl-0\" role=\"list\">\n {item.children.map((child, index) => (\n <TreeItemComponent\n key={`${child.href}-${index}`}\n item={child}\n activeId={activeId}\n level={level + 1}\n activeHref={activeHref}\n />\n ))}\n </ul>\n )}\n </div>\n );\n }\n\n if (isGroup && level > 0) {\n return (\n <li className=\"mint:list-none\">\n <button\n id=\"nav-group-toggle\"\n onClick={() => setIsExpanded(!isExpanded)}\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? \"Collapse\" : \"Expand\"} ${\n item.toc_title\n } section`}\n className=\"mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:py-2 mint:px-3 mint:text-sm mint:rounded-lg mint:bg-transparent mint:border-none mint:cursor-pointer mint:text-[#4b5563] mint:dark:text-[#9ca3af] mint:hover:bg-[rgba(75,85,99,0.05)] mint:hover:text-[#141414] mint:dark:hover:bg-[rgba(75,85,99,0.05)] mint:dark:hover:text-[#e5e7eb] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2\"\n >\n <span className=\"mint:flex-1 mint:min-w-0\">{item.toc_title}</span>\n <ChevronIcon isExpanded={!!isExpanded} />\n </button>\n {hasChildren && isExpanded && item.children && (\n <ul\n className=\"mint:ml-3 mint:flex mint:flex-col mint:pl-0\"\n role=\"group\"\n >\n {item.children.map((child, index) => (\n <TreeItemComponent\n key={`${child.href}-${index}`}\n item={child}\n activeId={activeId}\n level={level + 1}\n activeHref={activeHref}\n />\n ))}\n </ul>\n )}\n </li>\n );\n }\n\n const LinkElement = LinkComponent || \"a\";\n\n if (hasChildren) {\n return (\n <li className=\"mint:list-none\">\n <button\n id=\"nav-item-toggle\"\n onClick={() => setIsExpanded(!isExpanded)}\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? \"Collapse\" : \"Expand\"} ${\n item.toc_title\n } section`}\n className={cn(\n \"mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:gap-2 mint:py-2 mint:px-3 mint:text-[14px] mint:font-sans mint:font-normal mint:rounded-xl mint:bg-transparent mint:border-none mint:cursor-pointer mint:text-[#424242] mint:dark:text-[#9ca3af] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2\",\n isActive ? ACTIVE_ITEM_CLASSES : 'mint:hover:bg-[rgba(75,85,99,0.05)] mint:hover:text-[#141414] mint:dark:hover:bg-[rgba(75,85,99,0.05)] mint:dark:hover:text-[#e5e7eb]'\n )}\n >\n <span className=\"mint:flex-1 mint:min-w-0\">{item.toc_title}</span>\n <ChevronIcon isExpanded={!!isExpanded} />\n </button>\n {isExpanded && item.children && (\n <ul\n className=\"mint:ml-3 mint:flex mint:flex-col mint:pl-0\"\n role=\"group\"\n >\n {item.children.map((child, index) => (\n <TreeItemComponent\n key={`${child.href}-${index}`}\n item={child}\n activeId={activeId}\n level={level + 1}\n activeHref={activeHref}\n />\n ))}\n </ul>\n )}\n </li>\n );\n }\n\n return (\n <li className=\"mint:list-none\">\n <LinkElement\n id=\"nav-item\"\n href={item.href}\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n \"mint:relative mint:flex mint:items-center mint:gap-2 mint:py-2 mint:px-3 mint:text-[14px] mint:font-sans mint:font-normal mint:rounded-xl mint:no-underline mint:text-[#424242] mint:dark:text-[#9ca3af] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2\",\n isActive ? ACTIVE_ITEM_CLASSES : 'mint:hover:bg-[rgba(75,85,99,0.05)] mint:hover:text-[#141414] mint:dark:hover:bg-[rgba(75,85,99,0.05)] mint:dark:hover:text-[#e5e7eb]'\n )}\n >\n {isActive && (\n <div className=\"mint:absolute mint:left-0 mint:my-2.5 mint:rounded-full mint:w-[3px] mint:top-0 mint:bottom-0 mint:bg-[#8251ee] mint:dark:bg-[#9263f1]\"></div>\n )}\n {item.method && (\n <MethodPill\n isActive={!!isActive}\n method={item.method}\n shortMethod={true}\n />\n )}\n {item.toc_title}\n </LinkElement>\n </li>\n );\n}\n\nexport function NavTree({\n navTree,\n activeId,\n className = \"\",\n activeHref,\n theme,\n bottomLinks,\n}: NavTreeProps) {\n const { LinkComponent } = useComponents();\n const navContentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const navElement = navContentRef.current;\n if (!navElement || !activeHref) return;\n\n const normalizeHref = (href: string): string => {\n if (!href) return '';\n return href.startsWith('/') ? href : `/${href}`;\n };\n\n const compareHrefs = (href1: string, href2: string): boolean => {\n const norm1 = normalizeHref(href1);\n const norm2 = normalizeHref(href2);\n return norm1 === norm2 || \n norm1.replace('/docs/', '/') === norm2.replace('/docs/', '/') ||\n norm1 === norm2.replace('/docs/', '/') ||\n norm1.replace('/docs/', '/') === norm2;\n };\n\n requestAnimationFrame(() => {\n const allLinks = navElement.querySelectorAll('a[href]');\n let activeLink: HTMLElement | null = null;\n\n for (const link of Array.from(allLinks)) {\n const href = link.getAttribute('href');\n if (href && compareHrefs(href, activeHref)) {\n activeLink = link as HTMLElement;\n break;\n }\n }\n \n if (activeLink) {\n activeLink.scrollIntoView({\n behavior: \"instant\",\n block: \"center\",\n inline: \"nearest\"\n });\n }\n });\n }, [activeHref]);\n\n if (!navTree || navTree.items.length === 0) {\n return null;\n }\n\n const LinkElement = LinkComponent || \"a\";\n\n return (\n <nav\n id=\"nav-tree\"\n className={cn(\n \"mint:flex mint:flex-col mint:h-full mint:min-h-0\",\n className,\n theme === \"dark\" && \"dark\"\n )}\n aria-label=\"Documentation navigation\"\n >\n <div\n id=\"nav-tree-content\"\n ref={navContentRef}\n className=\"mint:flex-1 mint:overflow-y-auto mint:overflow-x-hidden mint:min-h-0 mint:[scrollbar-gutter:stable] mint:px-4 mint:[scrollbar-width:thin] mint:[scrollbar-color:rgba(0,0,0,0.2)_transparent] mint:dark:[scrollbar-color:rgba(255,255,255,0.2)_transparent] mint:[&::-webkit-scrollbar]:w-1 mint:[&::-webkit-scrollbar-track]:bg-transparent mint:[&::-webkit-scrollbar-thumb]:bg-black/20 mint:dark:[&::-webkit-scrollbar-thumb]:bg-white/20 mint:[&::-webkit-scrollbar-thumb]:rounded mint:[&::-webkit-scrollbar-thumb:hover]:bg-black/30 mint:dark:[&::-webkit-scrollbar-thumb:hover]:bg-white/30 mint:space-y-6 mint:py-4\"\n >\n {navTree.items.map((item, index) => (\n <TreeItemComponent\n key={`${item.href}-${index}`}\n item={item}\n activeId={activeId}\n activeHref={activeHref}\n />\n ))}\n </div>\n {bottomLinks && bottomLinks.length > 0 && (\n <div\n id=\"nav-tree-bottom-links\"\n className=\"mint:shrink-0 mint:w-full mint:bg-[#f0f0f0] mint:dark:bg-[#0f0f0f] mint:mt-auto\"\n >\n <div className=\"mint:h-[0.5px] mint:w-full mint:bg-[#d1d1d1] mint:dark:bg-[#666666]\"></div>\n <div className=\"mint:flex mint:flex-col mint:py-3 mint:px-4\">\n {bottomLinks.map((link, index) => {\n const Icon = link.icon;\n return (\n <LinkElement\n key={index}\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"mint:flex mint:items-center mint:py-2 mint:gap-2 mint:text-sm mint:no-underline mint:text-[#424242] mint:dark:text-[#9ca3af] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:[&>span]:flex mint:[&>span]:items-center mint:[&>span]:gap-2 mint:[&>svg:last-child]:hidden\"\n >\n <Icon className=\"mint:w-5 mint:h-5 mint:shrink-0\" />\n <span>{link.label}</span>\n </LinkElement>\n );\n })}\n </div>\n </div>\n )}\n </nav>\n );\n}\n"],"names":["ChevronIcon","isExpanded","jsx","cn","ACTIVE_ITEM_CLASSES","TreeItemComponent","item","activeId","level","activeHref","hasChildren","normalizeHref","href","compareHrefs","href1","href2","norm1","norm2","hasActiveChild","navItem","shouldBeExpanded","setIsExpanded","useState","useEffect","LinkComponent","useComponents","isGroup","isActive","Icon","jsxs","child","index","LinkElement","MethodPill","NavTree","navTree","className","theme","bottomLinks","navContentRef","useRef","navElement","allLinks","activeLink","link"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/nav-tree/index.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from \"react\";\nimport type { NavItem, NavTreeData, AnchorConfig } from \"../../types\";\nimport { useComponents } from \"../../context/components-context\";\nimport { cn } from \"../../utils/cn\";\nimport { MethodPill } from \"../Api/MethodPill\";\nexport { MobileNavTree } from \"./mobile-nav\";\nexport type { MobileNavTreeProps } from \"./mobile-nav\";\nexport type { AnchorConfig } from \"../../types\";\nimport \"../../styles.css\";\n\nexport interface BottomLinkConfig {\n href: string;\n label: string;\n icon: React.ComponentType<{ className?: string }>;\n}\n\ninterface NavTreeProps {\n navTree: NavTreeData;\n activeId?: string;\n className?: string;\n activeHref?: string;\n theme?: \"light\" | \"dark\" | \"system\";\n bottomLinks?: BottomLinkConfig[];\n anchors?: AnchorConfig[];\n}\n\ninterface TreeItemProps {\n item: NavItem;\n activeId?: string;\n level?: number;\n activeHref?: string;\n}\n\nfunction ChevronIcon({ isExpanded }: { isExpanded: boolean }) {\n return (\n <svg\n className={cn(\n \"mint:w-[16px] mint:h-[16px] mint:shrink-0 mint:text-[#6b7280] mint:dark:text-[#9ca3af]\",\n isExpanded ? \"mint:rotate-90\" : \"mint:rotate-0\"\n )}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n );\n}\n\nconst ACTIVE_ITEM_CLASSES = \"mint:bg-[#e6e6e6] mint:dark:bg-[#2e2e2e] mint:text-[#242424] mint:dark:text-[#ffffff] mint:font-semibold\";\n\nfunction TreeItemComponent({ item, activeId, level = 0, activeHref }: TreeItemProps) {\n const hasChildren = item.children && item.children.length > 0;\n \n const normalizeHref = (href?: string): string => {\n if (!href) return '';\n const normalized = href.startsWith('/') ? href : `/${href}`;\n return normalized;\n };\n\n const compareHrefs = (href1?: string, href2?: string): boolean => {\n if (!href1 || !href2) return false;\n const norm1 = normalizeHref(href1);\n const norm2 = normalizeHref(href2);\n return norm1 === norm2 || \n norm1.replace('/docs/', '/') === norm2.replace('/docs/', '/') ||\n norm1 === norm2.replace('/docs/', '/') ||\n norm1.replace('/docs/', '/') === norm2;\n };\n\n const hasActiveChild = (navItem: NavItem): boolean => {\n if (compareHrefs(navItem.href, activeHref)) return true;\n if (navItem.children) {\n return navItem.children.some(hasActiveChild);\n }\n return false;\n };\n\n const shouldBeExpanded = level === 0 ? true : (item.expanded ?? false) || (hasChildren && hasActiveChild(item));\n const [isExpanded, setIsExpanded] = useState(shouldBeExpanded);\n \n useEffect(() => {\n if (hasChildren && hasActiveChild(item)) {\n setIsExpanded(true);\n }\n }, [activeHref]);\n\n const { LinkComponent } = useComponents();\n const isGroup = !item.href;\n const isActive = item.href && (compareHrefs(item.href, activeId) || compareHrefs(item.href, activeHref));\n const Icon = item.icon;\n\n if (isGroup && level === 0) {\n return (\n <div\n id=\"nav-group\"\n role=\"group\"\n aria-label={item.toc_title}\n >\n <div className=\"mint:text-sm mint:font-semibold mint:text-[#141414] mint:dark:text-white mint:mb-3 mint:flex mint:items-start mint:gap-2 mint:pl-2.5\">\n {Icon && <Icon className=\"mint:w-5 mint:h-5\" aria-hidden=\"true\" />}\n <span>{item.toc_title}</span>\n </div>\n {hasChildren && item.children && (\n <ul className=\"mint:flex mint:flex-col mint:pl-0\" role=\"list\">\n {item.children.map((child, index) => (\n <TreeItemComponent\n key={`${child.href}-${index}`}\n item={child}\n activeId={activeId}\n level={level + 1}\n activeHref={activeHref}\n />\n ))}\n </ul>\n )}\n </div>\n );\n }\n\n if (isGroup && level > 0) {\n return (\n <li className=\"mint:list-none\">\n <button\n id=\"nav-group-toggle\"\n onClick={() => setIsExpanded(!isExpanded)}\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? \"Collapse\" : \"Expand\"} ${\n item.toc_title\n } section`}\n className=\"mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:py-2 mint:px-3 mint:text-sm mint:rounded-lg mint:bg-transparent mint:border-none mint:cursor-pointer mint:text-[#4b5563] mint:dark:text-[#9ca3af] mint:hover:bg-[rgba(75,85,99,0.05)] mint:hover:text-[#141414] mint:dark:hover:bg-[rgba(75,85,99,0.05)] mint:dark:hover:text-[#e5e7eb] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2\"\n >\n <span className=\"mint:flex-1 mint:min-w-0\">{item.toc_title}</span>\n <ChevronIcon isExpanded={!!isExpanded} />\n </button>\n {hasChildren && isExpanded && item.children && (\n <ul\n className=\"mint:ml-3 mint:flex mint:flex-col mint:pl-0\"\n role=\"group\"\n >\n {item.children.map((child, index) => (\n <TreeItemComponent\n key={`${child.href}-${index}`}\n item={child}\n activeId={activeId}\n level={level + 1}\n activeHref={activeHref}\n />\n ))}\n </ul>\n )}\n </li>\n );\n }\n\n const LinkElement = LinkComponent || \"a\";\n\n if (hasChildren) {\n return (\n <li className=\"mint:list-none\">\n <button\n id=\"nav-item-toggle\"\n onClick={() => setIsExpanded(!isExpanded)}\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? \"Collapse\" : \"Expand\"} ${\n item.toc_title\n } section`}\n className={cn(\n \"mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:gap-2 mint:py-2 mint:px-3 mint:text-[14px] mint:font-sans mint:font-normal mint:rounded-xl mint:bg-transparent mint:border-none mint:cursor-pointer mint:text-[#424242] mint:dark:text-[#9ca3af] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2\",\n isActive ? ACTIVE_ITEM_CLASSES : 'mint:hover:bg-[rgba(75,85,99,0.05)] mint:hover:text-[#141414] mint:dark:hover:bg-[rgba(75,85,99,0.05)] mint:dark:hover:text-[#e5e7eb]'\n )}\n >\n <span className=\"mint:flex-1 mint:min-w-0\">{item.toc_title}</span>\n <ChevronIcon isExpanded={!!isExpanded} />\n </button>\n {isExpanded && item.children && (\n <ul\n className=\"mint:ml-3 mint:flex mint:flex-col mint:pl-0\"\n role=\"group\"\n >\n {item.children.map((child, index) => (\n <TreeItemComponent\n key={`${child.href}-${index}`}\n item={child}\n activeId={activeId}\n level={level + 1}\n activeHref={activeHref}\n />\n ))}\n </ul>\n )}\n </li>\n );\n }\n\n return (\n <li className=\"mint:list-none\">\n <LinkElement\n id=\"nav-item\"\n href={item.href}\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n \"mint:relative mint:flex mint:items-center mint:gap-2 mint:py-2 mint:px-3 mint:text-[14px] mint:font-sans mint:font-normal mint:rounded-xl mint:no-underline mint:text-[#424242] mint:dark:text-[#9ca3af] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2\",\n isActive ? ACTIVE_ITEM_CLASSES : 'mint:hover:bg-[rgba(75,85,99,0.05)] mint:hover:text-[#141414] mint:dark:hover:bg-[rgba(75,85,99,0.05)] mint:dark:hover:text-[#e5e7eb]'\n )}\n >\n {isActive && (\n <div className=\"mint:absolute mint:left-0 mint:my-2.5 mint:rounded-full mint:w-[3px] mint:top-0 mint:bottom-0 mint:bg-[#8251ee] mint:dark:bg-[#9263f1]\"></div>\n )}\n {item.method && (\n <MethodPill\n isActive={!!isActive}\n method={item.method}\n shortMethod={true}\n />\n )}\n {item.toc_title}\n </LinkElement>\n </li>\n );\n}\n\nexport function NavTree({\n navTree,\n activeId,\n className = \"\",\n activeHref,\n theme,\n bottomLinks,\n anchors,\n}: NavTreeProps) {\n const { LinkComponent } = useComponents();\n const navContentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const navElement = navContentRef.current;\n if (!navElement || !activeHref) return;\n\n const normalizeHref = (href: string): string => {\n if (!href) return '';\n return href.startsWith('/') ? href : `/${href}`;\n };\n\n const compareHrefs = (href1: string, href2: string): boolean => {\n const norm1 = normalizeHref(href1);\n const norm2 = normalizeHref(href2);\n return norm1 === norm2 || \n norm1.replace('/docs/', '/') === norm2.replace('/docs/', '/') ||\n norm1 === norm2.replace('/docs/', '/') ||\n norm1.replace('/docs/', '/') === norm2;\n };\n\n requestAnimationFrame(() => {\n const allLinks = navElement.querySelectorAll('a[href]');\n let activeLink: HTMLElement | null = null;\n\n for (const link of Array.from(allLinks)) {\n const href = link.getAttribute('href');\n if (href && compareHrefs(href, activeHref)) {\n activeLink = link as HTMLElement;\n break;\n }\n }\n \n if (activeLink) {\n activeLink.scrollIntoView({\n behavior: \"instant\",\n block: \"center\",\n inline: \"nearest\"\n });\n }\n });\n }, [activeHref]);\n\n if (!navTree || navTree.items.length === 0) {\n return null;\n }\n\n const LinkElement = LinkComponent || \"a\";\n\n return (\n <nav\n id=\"nav-tree\"\n className={cn(\n \"mint:flex mint:flex-col mint:h-full mint:min-h-0\",\n className,\n theme === \"dark\" && \"dark\"\n )}\n aria-label=\"Documentation navigation\"\n >\n {anchors && anchors.length > 0 && (\n <div\n id=\"nav-anchors\"\n className=\"mint:shrink-0 mint:w-full mint:bg-[#fafafa] mint:dark:bg-[#0a0a0a] mint:border-b mint:border-[#e5e5e5] mint:dark:border-[#2e2e2e]\"\n >\n <div className=\"mint:flex mint:flex-col mint:py-3 mint:px-4 mint:gap-1\">\n {anchors.map((anchor, index) => {\n const Icon = anchor.icon;\n return (\n <LinkElement\n key={index}\n href={anchor.href}\n className=\"mint:group mint:flex mint:items-start mint:gap-3 mint:py-2 mint:px-3 mint:text-sm mint:rounded-lg mint:no-underline mint:text-[#424242] mint:dark:text-[#9ca3af] mint:hover:bg-[#f0f0f0] mint:dark:hover:bg-[#1a1a1a] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:transition-colors mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2\"\n >\n {Icon && (\n <Icon className=\"mint:w-5 mint:h-5 mint:shrink-0 mint:mt-0.5 mint:text-[#6b7280] mint:dark:text-[#9ca3af] mint:group-hover:text-[#8251ee] mint:dark:group-hover:text-[#9263f1] mint:transition-colors\" />\n )}\n <div className=\"mint:flex mint:flex-col mint:gap-0.5 mint:min-w-0\">\n <span className=\"mint:font-medium mint:text-[#141414] mint:dark:text-[#ffffff] mint:group-hover:text-[#8251ee] mint:dark:group-hover:text-[#9263f1] mint:transition-colors\">\n {anchor.title}\n </span>\n {anchor.description && (\n <span className=\"mint:text-xs mint:text-[#6b7280] mint:dark:text-[#9ca3af] mint:leading-snug\">\n {anchor.description}\n </span>\n )}\n </div>\n </LinkElement>\n );\n })}\n </div>\n </div>\n )}\n <div\n id=\"nav-tree-content\"\n ref={navContentRef}\n className=\"mint:flex-1 mint:overflow-y-auto mint:overflow-x-hidden mint:min-h-0 mint:[scrollbar-gutter:stable] mint:px-4 mint:[scrollbar-width:thin] mint:[scrollbar-color:rgba(0,0,0,0.2)_transparent] mint:dark:[scrollbar-color:rgba(255,255,255,0.2)_transparent] mint:[&::-webkit-scrollbar]:w-1 mint:[&::-webkit-scrollbar-track]:bg-transparent mint:[&::-webkit-scrollbar-thumb]:bg-black/20 mint:dark:[&::-webkit-scrollbar-thumb]:bg-white/20 mint:[&::-webkit-scrollbar-thumb]:rounded mint:[&::-webkit-scrollbar-thumb:hover]:bg-black/30 mint:dark:[&::-webkit-scrollbar-thumb:hover]:bg-white/30 mint:space-y-6 mint:py-4\"\n >\n {navTree.items.map((item, index) => (\n <TreeItemComponent\n key={`${item.href}-${index}`}\n item={item}\n activeId={activeId}\n activeHref={activeHref}\n />\n ))}\n </div>\n {bottomLinks && bottomLinks.length > 0 && (\n <div\n id=\"nav-tree-bottom-links\"\n className=\"mint:shrink-0 mint:w-full mint:bg-[#f0f0f0] mint:dark:bg-[#0f0f0f] mint:mt-auto\"\n >\n <div className=\"mint:h-[0.5px] mint:w-full mint:bg-[#d1d1d1] mint:dark:bg-[#666666]\"></div>\n <div className=\"mint:flex mint:flex-col mint:py-3 mint:px-4\">\n {bottomLinks.map((link, index) => {\n const Icon = link.icon;\n return (\n <LinkElement\n key={index}\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"mint:flex mint:items-center mint:py-2 mint:gap-2 mint:text-sm mint:no-underline mint:text-[#424242] mint:dark:text-[#9ca3af] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:[&>span]:flex mint:[&>span]:items-center mint:[&>span]:gap-2 mint:[&>svg:last-child]:hidden\"\n >\n <Icon className=\"mint:w-5 mint:h-5 mint:shrink-0\" />\n <span>{link.label}</span>\n </LinkElement>\n );\n })}\n </div>\n </div>\n )}\n </nav>\n );\n}\n"],"names":["ChevronIcon","isExpanded","jsx","cn","ACTIVE_ITEM_CLASSES","TreeItemComponent","item","activeId","level","activeHref","hasChildren","normalizeHref","href","compareHrefs","href1","href2","norm1","norm2","hasActiveChild","navItem","shouldBeExpanded","setIsExpanded","useState","useEffect","LinkComponent","useComponents","isGroup","isActive","Icon","jsxs","child","index","LinkElement","MethodPill","NavTree","navTree","className","theme","bottomLinks","anchors","navContentRef","useRef","navElement","allLinks","activeLink","link","anchor"],"mappings":"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"}
|