@stainless-api/docs-ui 0.1.0-beta.9 → 0.1.0-beta.90
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/breadcrumbs-DC2_z7nh.d.ts +25 -0
- package/dist/chunk-pbuEa-1d.js +13 -0
- package/dist/component-generics-DYxBWv1v.js +42 -0
- package/dist/component-generics-q-ujwX4P.d.ts +30 -0
- package/dist/components/MaskedInput.d.ts +14 -0
- package/dist/components/MaskedInput.js +74 -0
- package/dist/components/breadcrumbs.d.ts +2 -0
- package/dist/components/breadcrumbs.js +62 -0
- package/dist/components/icons.d.ts +72 -0
- package/dist/components/icons.js +953 -0
- package/dist/components/index.d.ts +10 -0
- package/dist/components/index.js +73 -0
- package/dist/components/method.d.ts +2 -0
- package/dist/components/method.js +95 -0
- package/dist/components/overview.d.ts +2 -0
- package/dist/components/overview.js +140 -0
- package/dist/components/primitives.d.ts +2 -0
- package/dist/components/primitives.js +251 -0
- package/dist/components/properties.d.ts +2 -0
- package/dist/components/properties.js +144 -0
- package/dist/components/sdk-sidebar.d.ts +2 -0
- package/dist/components/sdk-sidebar.js +50 -0
- package/dist/components/sdk.d.ts +2 -0
- package/dist/components/sdk.js +488 -0
- package/dist/components/snippets.d.ts +2 -0
- package/dist/components/snippets.js +184 -0
- package/dist/components/stl-sidebar.d.ts +2 -0
- package/dist/components/stl-sidebar.js +112 -0
- package/dist/contexts/component-generics.d.ts +2 -0
- package/dist/contexts/component-generics.js +2 -0
- package/dist/contexts/component-types.d.ts +6 -0
- package/dist/contexts/component-types.js +0 -0
- package/dist/contexts/component.d.ts +20 -0
- package/dist/contexts/component.js +21 -0
- package/dist/contexts/docs.d.ts +2 -0
- package/dist/contexts/docs.js +89 -0
- package/dist/contexts/index.d.ts +6 -0
- package/dist/contexts/index.js +43 -0
- package/dist/contexts/markdown.d.ts +2 -0
- package/dist/contexts/markdown.js +62 -0
- package/dist/contexts/navigation.d.ts +2 -0
- package/dist/contexts/navigation.js +21 -0
- package/dist/contexts/use-components.d.ts +5 -0
- package/dist/contexts/use-components.js +5 -0
- package/dist/docs-DSjdvCh5.d.ts +62 -0
- package/dist/index-DFr9Mesr.d.ts +1776 -0
- package/dist/index-gGDaf6FK.d.ts +464 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +8 -7542
- package/dist/languages/cli.d.ts +2 -0
- package/dist/languages/cli.js +165 -0
- package/dist/languages/csharp.d.ts +2 -0
- package/dist/languages/csharp.js +282 -0
- package/dist/languages/go.d.ts +2 -0
- package/dist/languages/go.js +302 -0
- package/dist/languages/http.d.ts +2 -0
- package/dist/languages/http.js +385 -0
- package/dist/languages/index.d.ts +2 -0
- package/dist/languages/index.js +31 -0
- package/dist/languages/java.d.ts +2 -0
- package/dist/languages/java.js +402 -0
- package/dist/languages/php.d.ts +2 -0
- package/dist/languages/php.js +311 -0
- package/dist/languages/python.d.ts +2 -0
- package/dist/languages/python.js +268 -0
- package/dist/languages/ruby.d.ts +2 -0
- package/dist/languages/ruby.js +386 -0
- package/dist/languages/terraform.d.ts +2 -0
- package/dist/languages/terraform.js +259 -0
- package/dist/languages/typescript.d.ts +2 -0
- package/dist/languages/typescript.js +448 -0
- package/dist/markdown/index.d.ts +11 -0
- package/dist/markdown/index.js +87 -0
- package/dist/markdown/md.d.ts +15 -0
- package/dist/markdown/md.js +39 -0
- package/dist/markdown/printer.d.ts +13 -0
- package/dist/markdown/printer.js +74 -0
- package/dist/markdown/utils.d.ts +28 -0
- package/dist/markdown/utils.js +31 -0
- package/dist/markdown-Cwdboi_V.d.ts +33 -0
- package/dist/method-CNRMOUfn.d.ts +59 -0
- package/dist/navigation-C9ckAfpV.d.ts +29 -0
- package/dist/overview-CDvh184n.d.ts +39 -0
- package/dist/primitives-DFE_4MvV.d.ts +107 -0
- package/dist/properties-CVwrzWVa.d.ts +54 -0
- package/dist/routing-yTSG7nWM.d.ts +61 -0
- package/dist/routing.d.ts +2 -0
- package/dist/routing.js +174 -150
- package/dist/sdk-BkW3MDco.d.ts +128 -0
- package/dist/sdk-sidebar-BpDlOMat.d.ts +15 -0
- package/dist/spec.d.ts +65 -0
- package/dist/spec.js +165 -0
- package/dist/stl-sidebar-CKrR5ZGs.d.ts +58 -0
- package/dist/style.d.ts +178 -0
- package/dist/style.js +178 -0
- package/dist/styles/main.css +765 -755
- package/dist/styles/primitives.css +359 -442
- package/dist/styles/resets.css +25 -41
- package/dist/styles/search.css +187 -270
- package/dist/styles/sidebar.css +155 -69
- package/dist/styles/variables.css +23 -89
- package/dist/styles.css +3171 -0
- package/dist/utils.d.ts +20 -0
- package/dist/utils.js +52 -0
- package/package.json +75 -22
- package/dist/mcp.js +0 -16003
- package/dist/styles/snippets.css +0 -132
- package/src/components/breadcrumbs.tsx +0 -94
- package/src/components/chat.tsx +0 -154
- package/src/components/dropdown.tsx +0 -91
- package/src/components/icons.tsx +0 -584
- package/src/components/index.ts +0 -9
- package/src/components/method.tsx +0 -146
- package/src/components/overview.tsx +0 -160
- package/src/components/primitives.tsx +0 -284
- package/src/components/properties.tsx +0 -130
- package/src/components/scripts/dropdown.ts +0 -78
- package/src/components/sdk.tsx +0 -403
- package/src/components/sidebar.tsx +0 -99
- package/src/components/snippets.tsx +0 -180
- package/src/contexts/component-generics.tsx +0 -48
- package/src/contexts/component-types.tsx +0 -5
- package/src/contexts/component.tsx +0 -32
- package/src/contexts/docs.tsx +0 -75
- package/src/contexts/index.tsx +0 -17
- package/src/contexts/markdown.tsx +0 -43
- package/src/contexts/navigation.tsx +0 -44
- package/src/contexts/search.tsx +0 -28
- package/src/contexts/use-components.tsx +0 -4
- package/src/index.ts +0 -6
- package/src/languages/go.tsx +0 -281
- package/src/languages/http.tsx +0 -321
- package/src/languages/index.ts +0 -26
- package/src/languages/java.tsx +0 -358
- package/src/languages/python.tsx +0 -255
- package/src/languages/ruby.tsx +0 -320
- package/src/languages/typescript.tsx +0 -393
- package/src/markdown/index.ts +0 -107
- package/src/markdown/md.ts +0 -45
- package/src/markdown/utils.ts +0 -49
- package/src/routing.ts +0 -238
- package/src/search/form.tsx +0 -127
- package/src/search/index.tsx +0 -1
- package/src/search/indexer.ts +0 -246
- package/src/search/mcp.ts +0 -61
- package/src/search/printer.tsx +0 -86
- package/src/search/providers/algolia.ts +0 -88
- package/src/search/providers/fuse.ts +0 -19
- package/src/search/providers/pagefind.ts +0 -17
- package/src/search/providers/walker.ts +0 -30
- package/src/search/results.tsx +0 -182
- package/src/search/state.ts +0 -64
- package/src/search/types.ts +0 -116
- package/src/style.ts +0 -196
- package/src/styles/main.css +0 -986
- package/src/styles/primitives.css +0 -580
- package/src/styles/resets.css +0 -39
- package/src/styles/search.css +0 -341
- package/src/styles/sidebar.css +0 -85
- package/src/styles/snippets.css +0 -130
- package/src/styles/variables.css +0 -86
- package/src/utils.ts +0 -41
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as SnippetButtons, c as SnippetContainer, d as SnippetProps, f as SnippetRequestContainer, i as Snippet, l as SnippetContainerProps, m as SnippetResponse, n as MultiSnippets, o as SnippetCode, p as SnippetRequestContainerProps, r as MultiSnippetsProps, s as SnippetCodeProps, u as SnippetFooter } from "../index-gGDaf6FK.js";
|
|
2
|
+
export { MultiSnippets, MultiSnippetsProps, Snippet, SnippetButtons, SnippetCode, SnippetCodeProps, SnippetContainer, SnippetContainerProps, SnippetFooter, SnippetProps, SnippetRequestContainer, SnippetRequestContainerProps, SnippetResponse };
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { useDeclaration, useLanguage, useSnippet, useSnippetIds, useSnippetResponse } from "../contexts/docs.js";
|
|
2
|
+
import "../component-generics-DYxBWv1v.js";
|
|
3
|
+
import { useHighlight } from "../contexts/markdown.js";
|
|
4
|
+
import "../contexts/index.js";
|
|
5
|
+
import { useComponents } from "../contexts/use-components.js";
|
|
6
|
+
import style_default from "../style.js";
|
|
7
|
+
import { useCallback, useId, useRef, useState } from "react";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import clsx from "clsx";
|
|
10
|
+
import { CheckIcon, CircleAlertIcon, CopyIcon } from "lucide-react";
|
|
11
|
+
import { Badge, Button, getHttpMethod } from "@stainless-api/ui-primitives";
|
|
12
|
+
//#region src/components/snippets.tsx
|
|
13
|
+
function SnippetCode({ content, language }) {
|
|
14
|
+
const lang = useLanguage();
|
|
15
|
+
const highlighted = useHighlight(content, language || lang);
|
|
16
|
+
return /* @__PURE__ */ jsx("div", {
|
|
17
|
+
className: style_default.SnippetCode,
|
|
18
|
+
"data-stldocs-copy-content": true,
|
|
19
|
+
dangerouslySetInnerHTML: { __html: highlighted }
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function SnippetContainer({ children, className, ...props }) {
|
|
23
|
+
return /* @__PURE__ */ jsx("div", {
|
|
24
|
+
className: clsx(style_default.Snippet, className),
|
|
25
|
+
...props,
|
|
26
|
+
children
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function SnippetRequestContainer({ children }) {
|
|
30
|
+
return /* @__PURE__ */ jsx("div", { children });
|
|
31
|
+
}
|
|
32
|
+
function Snippet({ requestTitle, method, snippet, transformRequestSnippet }) {
|
|
33
|
+
const Docs = useComponents();
|
|
34
|
+
const language = useLanguage();
|
|
35
|
+
const originalSnippetContent = useSnippet(method.stainlessPath, void 0, snippet);
|
|
36
|
+
const snippetResponses = useSnippetResponse(method.stainlessPath, snippet);
|
|
37
|
+
const decl = useDeclaration(method.stainlessPath, false);
|
|
38
|
+
const signature = decl && "qualified" in decl ? decl.qualified : void 0;
|
|
39
|
+
if (!originalSnippetContent) {
|
|
40
|
+
console.warn(`Snippet not found for method '${method.stainlessPath}'`);
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const snippetContent = transformRequestSnippet ? transformRequestSnippet({
|
|
44
|
+
snippet: originalSnippetContent,
|
|
45
|
+
language
|
|
46
|
+
}) : originalSnippetContent;
|
|
47
|
+
const httpMethod = getHttpMethod(method.httpMethod);
|
|
48
|
+
return /* @__PURE__ */ jsxs(Docs.SnippetContainer, {
|
|
49
|
+
signature,
|
|
50
|
+
method,
|
|
51
|
+
children: [snippetContent && /* @__PURE__ */ jsx(Docs.SnippetRequestContainer, {
|
|
52
|
+
signature,
|
|
53
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
54
|
+
className: style_default.SnippetRequest,
|
|
55
|
+
"data-stldocs-copy-parent": true,
|
|
56
|
+
children: [
|
|
57
|
+
/* @__PURE__ */ jsxs("div", {
|
|
58
|
+
className: style_default.SnippetRequestTitle,
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ jsxs("div", {
|
|
61
|
+
className: style_default.SnippetRequestTitleMethod,
|
|
62
|
+
children: [httpMethod && /* @__PURE__ */ jsx(Badge.HTTP, {
|
|
63
|
+
method: httpMethod,
|
|
64
|
+
iconOnly: true
|
|
65
|
+
}), /* @__PURE__ */ jsx("h3", { children: method.summary || method.title })]
|
|
66
|
+
}),
|
|
67
|
+
/* @__PURE__ */ jsx("div", {
|
|
68
|
+
className: style_default.SnippetRequestTitleContent,
|
|
69
|
+
children: requestTitle
|
|
70
|
+
}),
|
|
71
|
+
/* @__PURE__ */ jsx(Docs.SnippetButtons, { content: snippetContent })
|
|
72
|
+
]
|
|
73
|
+
}),
|
|
74
|
+
/* @__PURE__ */ jsx(Docs.SnippetCode, {
|
|
75
|
+
content: snippetContent,
|
|
76
|
+
signature
|
|
77
|
+
}),
|
|
78
|
+
/* @__PURE__ */ jsx(Docs.SnippetFooter, {})
|
|
79
|
+
]
|
|
80
|
+
})
|
|
81
|
+
}), /* @__PURE__ */ jsx(Docs.SnippetResponse, { responses: snippetResponses })]
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
function MultiSnippets({ requestTitle, method }) {
|
|
85
|
+
const snippetIds = useSnippetIds(method.stainlessPath)?.filter((id) => id !== "default");
|
|
86
|
+
const radioId = useId();
|
|
87
|
+
const Docs = useComponents();
|
|
88
|
+
if (!snippetIds) return null;
|
|
89
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
90
|
+
className: style_default.SnippetMulti,
|
|
91
|
+
"data-stldocs-multi-snippet-container": true,
|
|
92
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
93
|
+
className: style_default.SnippetMultiTabs,
|
|
94
|
+
"data-stldocs-multi-snippet-tabs": true,
|
|
95
|
+
children: snippetIds.map((snid, idx) => /* @__PURE__ */ jsxs("label", {
|
|
96
|
+
className: style_default.SnippetMultiTab,
|
|
97
|
+
children: [/* @__PURE__ */ jsx("input", {
|
|
98
|
+
type: "radio",
|
|
99
|
+
name: `snippet-example-radio-${radioId}`,
|
|
100
|
+
value: idx,
|
|
101
|
+
defaultChecked: idx === 0
|
|
102
|
+
}), /* @__PURE__ */ jsx("span", { children: snid.slice(7) })]
|
|
103
|
+
}, `snippet-example-${idx}`))
|
|
104
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
105
|
+
className: style_default.SnippetMultiContent,
|
|
106
|
+
children: snippetIds.map((snid, idx) => {
|
|
107
|
+
return /* @__PURE__ */ jsx("div", {
|
|
108
|
+
className: clsx(style_default.SnippetMultiPane, idx === 0 && style_default.SnippetMultiPaneActive),
|
|
109
|
+
"data-stldocs-multi-snippet-id": idx,
|
|
110
|
+
children: /* @__PURE__ */ jsx(Docs.Snippet, {
|
|
111
|
+
method,
|
|
112
|
+
snippet: snid,
|
|
113
|
+
requestTitle
|
|
114
|
+
})
|
|
115
|
+
}, `snippet-example-content-${idx}`);
|
|
116
|
+
})
|
|
117
|
+
})]
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function SnippetButtons({ content }) {
|
|
121
|
+
const [CopyButtonIcon, setCopyButtonIcon] = useState(CopyIcon);
|
|
122
|
+
const timeoutRef = useRef(null);
|
|
123
|
+
const handleCopy = useCallback(() => {
|
|
124
|
+
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
125
|
+
navigator.clipboard.writeText(content).then(() => {
|
|
126
|
+
setCopyButtonIcon(CheckIcon);
|
|
127
|
+
}).catch(() => {
|
|
128
|
+
setCopyButtonIcon(CircleAlertIcon);
|
|
129
|
+
}).finally(() => {
|
|
130
|
+
timeoutRef.current = setTimeout(() => setCopyButtonIcon(CopyIcon), 1e3);
|
|
131
|
+
});
|
|
132
|
+
}, [content]);
|
|
133
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
134
|
+
variant: "outline",
|
|
135
|
+
"data-stldocs-snippet-copy": true,
|
|
136
|
+
children: /* @__PURE__ */ jsx(CopyButtonIcon, {
|
|
137
|
+
size: 16,
|
|
138
|
+
className: style_default.Icon,
|
|
139
|
+
onClick: handleCopy
|
|
140
|
+
})
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function SnippetFooter() {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
function SnippetResponse({ responses }) {
|
|
147
|
+
const Docs = useComponents();
|
|
148
|
+
if (!responses || responses.length === 0) return null;
|
|
149
|
+
const tabs = responses.map(({ status }, index) => ({
|
|
150
|
+
status,
|
|
151
|
+
index,
|
|
152
|
+
label: status ? `${status} example` : null
|
|
153
|
+
}));
|
|
154
|
+
const hasTabs = tabs.length > 1 || tabs.some((tab) => tab.label);
|
|
155
|
+
return /* @__PURE__ */ jsx("div", {
|
|
156
|
+
className: style_default.SnippetMultiResponse,
|
|
157
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
158
|
+
className: clsx(style_default.Snippet),
|
|
159
|
+
children: [hasTabs && /* @__PURE__ */ jsx("div", {
|
|
160
|
+
className: clsx(style_default.SnippetResponseTab, tabs.length === 1 && style_default.SnippetResponseTabSingleReturn),
|
|
161
|
+
children: tabs.map(({ status, label }, index) => /* @__PURE__ */ jsx("div", {
|
|
162
|
+
"data-snippet-response-tab-id": `snippet-response-tab-${status}-${index}`,
|
|
163
|
+
className: clsx(style_default.SnippetResponseTabItem, index === 0 && style_default.SnippetResponseTabItemActive),
|
|
164
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
165
|
+
disabled: responses.length === 1,
|
|
166
|
+
variant: "ghost",
|
|
167
|
+
children: label ?? `Example ${index + 1}`
|
|
168
|
+
})
|
|
169
|
+
}, `snippet-response-tab-item-${status}-${index}`))
|
|
170
|
+
}), responses.map(({ status, content, contentType }, index) => {
|
|
171
|
+
return typeof content === "string" ? /* @__PURE__ */ jsx("div", {
|
|
172
|
+
className: clsx(style_default.SnippetResponsePane, index === 0 && style_default.SnippetResponsePaneActive),
|
|
173
|
+
"data-snippet-response-pane-id": `snippet-response-tab-${status}-${index}`,
|
|
174
|
+
children: /* @__PURE__ */ jsx(Docs.SnippetCode, {
|
|
175
|
+
content,
|
|
176
|
+
language: contentType === "application/json" || !contentType ? "json" : "none"
|
|
177
|
+
})
|
|
178
|
+
}, `snippet-response-${status}-${index}`) : null;
|
|
179
|
+
})]
|
|
180
|
+
})
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
//#endregion
|
|
184
|
+
export { MultiSnippets, Snippet, SnippetButtons, SnippetCode, SnippetContainer, SnippetFooter, SnippetRequestContainer, SnippetResponse };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as StlSidebarProps, i as StlSidebarLink, n as StlSidebarEntry, o as StlSidebarTarget, r as StlSidebarGroup, t as StlSidebar } from "../stl-sidebar-CKrR5ZGs.js";
|
|
2
|
+
export { StlSidebar, StlSidebarEntry, StlSidebarGroup, StlSidebarLink, StlSidebarProps, StlSidebarTarget };
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import "../component-generics-DYxBWv1v.js";
|
|
2
|
+
import { useComponents } from "../contexts/use-components.js";
|
|
3
|
+
import style_default from "../style.js";
|
|
4
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import clsx from "clsx";
|
|
6
|
+
import { ChevronRight } from "lucide-react";
|
|
7
|
+
//#region src/components/stl-sidebar.tsx
|
|
8
|
+
function targetToAttributes(target) {
|
|
9
|
+
return {
|
|
10
|
+
href: target.type === "href" ? target.href : void 0,
|
|
11
|
+
stainlessPath: target.type === "stainlessPath" ? target.stainlessPath : void 0
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function StlSidebarSublist({ entries, entryToIndex }) {
|
|
15
|
+
return /* @__PURE__ */ jsx("ul", {
|
|
16
|
+
className: style_default.SidebarList,
|
|
17
|
+
children: entries.map((entry, index) => entry.type === "link" ? /* @__PURE__ */ jsx(LinkEntry, { entry }, index) : /* @__PURE__ */ jsx(GroupEntry, {
|
|
18
|
+
entry,
|
|
19
|
+
entryToIndex
|
|
20
|
+
}, index))
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
function EntryItem({ className, children }) {
|
|
24
|
+
return /* @__PURE__ */ jsx("li", {
|
|
25
|
+
className: clsx(style_default.SidebarEntry, className),
|
|
26
|
+
children
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function LinkEntry({ entry }) {
|
|
30
|
+
const Docs = useComponents();
|
|
31
|
+
return /* @__PURE__ */ jsx(EntryItem, {
|
|
32
|
+
className: style_default.SidebarEntryLink,
|
|
33
|
+
children: /* @__PURE__ */ jsxs(Docs.Link, {
|
|
34
|
+
...targetToAttributes(entry.target),
|
|
35
|
+
"aria-current": entry.isCurrent ? "page" : void 0,
|
|
36
|
+
...entry.attrs,
|
|
37
|
+
children: [entry.icon, entry.label]
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function GroupEntry({ entry, entryToIndex }) {
|
|
42
|
+
const Docs = useComponents();
|
|
43
|
+
const restorePointIndex = entryToIndex?.get(entry);
|
|
44
|
+
const { collapsible = true } = entry;
|
|
45
|
+
const labelWithIcon = /* @__PURE__ */ jsxs(Fragment, { children: [entry.label, entry.icon] });
|
|
46
|
+
const GroupElement = collapsible ? "details" : "div";
|
|
47
|
+
const GroupLabelElement = collapsible ? "summary" : "div";
|
|
48
|
+
return /* @__PURE__ */ jsxs(EntryItem, {
|
|
49
|
+
className: style_default.SidebarEntryGroup,
|
|
50
|
+
children: [entry.target && /* @__PURE__ */ jsx(Docs.Link, {
|
|
51
|
+
...targetToAttributes(entry.target),
|
|
52
|
+
"aria-current": entry.isCurrent ? "page" : void 0,
|
|
53
|
+
children: labelWithIcon
|
|
54
|
+
}), /* @__PURE__ */ jsxs(GroupElement, {
|
|
55
|
+
className: style_default.SidebarExpander,
|
|
56
|
+
...collapsible ? { open: !entry.collapsed || isAnyItemCurrent(entry.entries) } : {},
|
|
57
|
+
children: [
|
|
58
|
+
/* @__PURE__ */ jsxs(GroupLabelElement, {
|
|
59
|
+
className: style_default.ExpanderSummary,
|
|
60
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
61
|
+
"aria-hidden": entry.target ? "true" : void 0,
|
|
62
|
+
children: labelWithIcon
|
|
63
|
+
}), entry.entries.length > 0 && collapsible && /* @__PURE__ */ jsx(ChevronRight, {
|
|
64
|
+
size: 16,
|
|
65
|
+
strokeWidth: 1,
|
|
66
|
+
className: `${style_default.Icon} ${style_default.ExpanderSummaryIcon}`
|
|
67
|
+
})]
|
|
68
|
+
}),
|
|
69
|
+
restorePointIndex !== void 0 && /* @__PURE__ */ jsx("sl-sidebar-restore", { "data-index": restorePointIndex }),
|
|
70
|
+
entry.entries.length > 0 && /* @__PURE__ */ jsx(StlSidebarSublist, {
|
|
71
|
+
entries: entry.entries,
|
|
72
|
+
entryToIndex
|
|
73
|
+
})
|
|
74
|
+
]
|
|
75
|
+
})]
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function StlSidebar({ entries, withStarlightRestoration }) {
|
|
79
|
+
const entryToIndex = withStarlightRestoration ? computeEntryToIndex(entries) : void 0;
|
|
80
|
+
return /* @__PURE__ */ jsx("div", {
|
|
81
|
+
className: `${style_default.Root} ${style_default.Sidebar}`,
|
|
82
|
+
children: /* @__PURE__ */ jsx(StlSidebarSublist, {
|
|
83
|
+
entries,
|
|
84
|
+
entryToIndex
|
|
85
|
+
})
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function computeEntryToIndex(allEntries) {
|
|
89
|
+
const entryToIndex = /* @__PURE__ */ new Map();
|
|
90
|
+
let currentIndex = 0;
|
|
91
|
+
function addEntries(entries) {
|
|
92
|
+
for (const entry of entries) if (entry.type === "group") {
|
|
93
|
+
entryToIndex.set(entry, currentIndex);
|
|
94
|
+
currentIndex++;
|
|
95
|
+
addEntries(entry.entries);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
addEntries(allEntries);
|
|
99
|
+
return entryToIndex;
|
|
100
|
+
}
|
|
101
|
+
function* walkSidebar(entries) {
|
|
102
|
+
for (const entry of entries) {
|
|
103
|
+
yield entry;
|
|
104
|
+
if (entry.type === "group") yield* walkSidebar(entry.entries);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function isAnyItemCurrent(entries) {
|
|
108
|
+
for (const e of walkSidebar(entries)) if (e.isCurrent) return true;
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
//#endregion
|
|
112
|
+
export { StlSidebar };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as useComponents, i as useComponentContext, n as ComponentsContextType, r as customizeComponents, t as ComponentProvider } from "../component-generics-q-ujwX4P.js";
|
|
2
|
+
export { ComponentProvider, ComponentsContextType, customizeComponents, useComponentContext, useComponents };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { t as index_d_exports, y as index_d_exports$1 } from "../index-gGDaf6FK.js";
|
|
2
|
+
//#region src/contexts/component-types.d.ts
|
|
3
|
+
type AppComponents = typeof index_d_exports;
|
|
4
|
+
type AppLanguage = typeof index_d_exports$1;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { AppComponents, AppLanguage };
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { t as index_d_exports, y as index_d_exports$1 } from "../index-gGDaf6FK.js";
|
|
2
|
+
import { n as ComponentsContextType } from "../component-generics-q-ujwX4P.js";
|
|
3
|
+
import React from "react";
|
|
4
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
5
|
+
|
|
6
|
+
//#region src/contexts/component.d.ts
|
|
7
|
+
type AppComponents = typeof index_d_exports;
|
|
8
|
+
type AppLanguage = typeof index_d_exports$1;
|
|
9
|
+
declare const defaultContextValue: ComponentsContextType<AppComponents, AppLanguage>;
|
|
10
|
+
declare function ComponentProvider({
|
|
11
|
+
components,
|
|
12
|
+
language,
|
|
13
|
+
children
|
|
14
|
+
}: {
|
|
15
|
+
components?: Partial<AppComponents>;
|
|
16
|
+
language?: { [K in keyof AppLanguage]?: Partial<AppLanguage[K]> };
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
}): react_jsx_runtime0.JSX.Element;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { AppComponents, AppLanguage, ComponentProvider, defaultContextValue };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { n as customizeComponents, t as ComponentProvider$1 } from "../component-generics-DYxBWv1v.js";
|
|
2
|
+
import { t as components_exports } from "../components/index.js";
|
|
3
|
+
import { t as languages_exports } from "../languages/index.js";
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
//#region src/contexts/component.tsx
|
|
7
|
+
const defaultContextValue = {
|
|
8
|
+
components: components_exports,
|
|
9
|
+
language: languages_exports
|
|
10
|
+
};
|
|
11
|
+
function ComponentProvider({ components, language, children }) {
|
|
12
|
+
return /* @__PURE__ */ jsx(ComponentProvider$1, {
|
|
13
|
+
value: React.useMemo(() => customizeComponents(defaultContextValue, {
|
|
14
|
+
components,
|
|
15
|
+
language
|
|
16
|
+
}), [components, language]),
|
|
17
|
+
children
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { ComponentProvider, defaultContextValue };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { _ as useSnippetResponse, a as DocsProviderProps, c as useContentPanelLayout, d as useIgnoredResources, f as useLanguage, g as useSnippetIds, h as useSnippet, i as DocsProvider, l as useDeclaration, m as useSettings, n as Declaration, o as PropertySettingsType, p as useResource, r as DocsContextType, s as useAvailableLanguages, t as ContentPanelLayout, u as useDocs, v as useSnippets, y as useSpec } from "../docs-DSjdvCh5.js";
|
|
2
|
+
export { ContentPanelLayout, Declaration, DocsContextType, DocsProvider, DocsProviderProps, PropertySettingsType, useAvailableLanguages, useContentPanelLayout, useDeclaration, useDocs, useIgnoredResources, useLanguage, useResource, useSettings, useSnippet, useSnippetIds, useSnippetResponse, useSnippets, useSpec };
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import * as React$1 from "react";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
//#region src/contexts/docs.tsx
|
|
4
|
+
const DocsContextDefaults = {
|
|
5
|
+
settings: {},
|
|
6
|
+
language: "node",
|
|
7
|
+
spec: null
|
|
8
|
+
};
|
|
9
|
+
const DocsContext = React$1.createContext(DocsContextDefaults);
|
|
10
|
+
function useDocs() {
|
|
11
|
+
return React$1.use(DocsContext);
|
|
12
|
+
}
|
|
13
|
+
function useSpec() {
|
|
14
|
+
return useDocs().spec;
|
|
15
|
+
}
|
|
16
|
+
function useSettings() {
|
|
17
|
+
return useDocs().settings;
|
|
18
|
+
}
|
|
19
|
+
function useSnippets(stainlessPath, language) {
|
|
20
|
+
const defaultLanguage = useLanguage();
|
|
21
|
+
const lang = language ?? defaultLanguage;
|
|
22
|
+
const snippetLanguage = lang === "http" ? "http.curl" : `${lang}.default`;
|
|
23
|
+
return useSpec()?.snippets?.[snippetLanguage]?.[stainlessPath];
|
|
24
|
+
}
|
|
25
|
+
function useSnippetIds(stainlessPath, language) {
|
|
26
|
+
const snippets = useSnippets(stainlessPath, language);
|
|
27
|
+
if (!snippets) return void 0;
|
|
28
|
+
return Object.keys(snippets).flatMap((key) => {
|
|
29
|
+
const customPrefix = "custom:";
|
|
30
|
+
if (key.startsWith(customPrefix)) return `${customPrefix}${key.slice(7)}`;
|
|
31
|
+
if (key === "default") return "default";
|
|
32
|
+
return [];
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/** Find a custom snippet named Default (case-insensitive); otherwise use the generated default */
|
|
36
|
+
function getDefaultSnippet(snippets) {
|
|
37
|
+
return Object.entries(snippets).find(([key]) => key.toLowerCase() === "custom:default")?.[1] ?? snippets.default;
|
|
38
|
+
}
|
|
39
|
+
function useSnippet(stainlessPath, language, snippetId) {
|
|
40
|
+
const snippets = useSnippets(stainlessPath, language);
|
|
41
|
+
if (!snippets) return void 0;
|
|
42
|
+
if (!snippetId) return getDefaultSnippet(snippets)?.content;
|
|
43
|
+
return snippets?.[snippetId]?.content;
|
|
44
|
+
}
|
|
45
|
+
function useSnippetResponse(stainlessPath, snippetId) {
|
|
46
|
+
const responses = useSpec()?.snippetResponses?.http?.[stainlessPath];
|
|
47
|
+
if (!responses) return void 0;
|
|
48
|
+
if (!snippetId) return getDefaultSnippet(responses);
|
|
49
|
+
return responses[snippetId];
|
|
50
|
+
}
|
|
51
|
+
function useDeclaration(stainlessPath, required, language) {
|
|
52
|
+
const defaultLanguage = useLanguage();
|
|
53
|
+
const decl = useSpec()?.decls?.[language ?? defaultLanguage]?.[stainlessPath];
|
|
54
|
+
if (required && !decl) throw new Error(`Declaration not found for '${stainlessPath}'`);
|
|
55
|
+
return decl;
|
|
56
|
+
}
|
|
57
|
+
function useAvailableLanguages(stainlessPath) {
|
|
58
|
+
const spec = useSpec();
|
|
59
|
+
return Object.keys(spec?.decls ?? {}).filter((lang) => spec?.decls?.[lang]?.[stainlessPath] !== void 0).filter((e) => spec?.docs?.languages?.includes(e));
|
|
60
|
+
}
|
|
61
|
+
function useIgnoredResources() {
|
|
62
|
+
return ["(resource) webhooks > (model) unwrap_webhook_event > (schema)"];
|
|
63
|
+
}
|
|
64
|
+
function useResource(name) {
|
|
65
|
+
return useSpec()?.resources?.[name];
|
|
66
|
+
}
|
|
67
|
+
function useLanguage() {
|
|
68
|
+
return useDocs().language;
|
|
69
|
+
}
|
|
70
|
+
function useContentPanelLayout() {
|
|
71
|
+
return useDocs().settings?.contentPanelLayout ?? "double-pane";
|
|
72
|
+
}
|
|
73
|
+
function DocsProvider({ spec, language, settings, children }) {
|
|
74
|
+
return /* @__PURE__ */ jsx(DocsContext, {
|
|
75
|
+
value: React$1.useMemo(() => ({
|
|
76
|
+
...DocsContextDefaults,
|
|
77
|
+
spec,
|
|
78
|
+
settings: settings ?? DocsContextDefaults.settings,
|
|
79
|
+
language: language ?? DocsContextDefaults.language
|
|
80
|
+
}), [
|
|
81
|
+
spec,
|
|
82
|
+
language,
|
|
83
|
+
settings
|
|
84
|
+
]),
|
|
85
|
+
children
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
//#endregion
|
|
89
|
+
export { DocsProvider, useAvailableLanguages, useContentPanelLayout, useDeclaration, useDocs, useIgnoredResources, useLanguage, useResource, useSettings, useSnippet, useSnippetIds, useSnippetResponse, useSnippets, useSpec };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { g as useLanguageComponents } from "../index-gGDaf6FK.js";
|
|
2
|
+
import { a as useNavigation, i as NavigationProviderProps, n as NavigationHandler, r as NavigationProvider, t as NavigationContextType } from "../navigation-C9ckAfpV.js";
|
|
3
|
+
import { a as SuspensefulMarkdownProvider, c as useRenderMarkdown, i as MarkdownProviderProps, n as MarkdownContextValue, o as useHighlight, r as MarkdownProvider, s as useMarkdownContext, t as MarkdownContext } from "../markdown-Cwdboi_V.js";
|
|
4
|
+
import { a as useComponents, i as useComponentContext, n as ComponentsContextType, r as customizeComponents, t as ComponentProvider } from "../component-generics-q-ujwX4P.js";
|
|
5
|
+
import { _ as useSnippetResponse, a as DocsProviderProps, c as useContentPanelLayout, d as useIgnoredResources, f as useLanguage, g as useSnippetIds, h as useSnippet, i as DocsProvider, l as useDeclaration, m as useSettings, n as Declaration, o as PropertySettingsType, p as useResource, r as DocsContextType, s as useAvailableLanguages, t as ContentPanelLayout, u as useDocs, v as useSnippets, y as useSpec } from "../docs-DSjdvCh5.js";
|
|
6
|
+
export { ComponentProvider, ComponentsContextType, ContentPanelLayout, Declaration, DocsContextType, DocsProvider, DocsProviderProps, MarkdownContext, MarkdownContextValue, MarkdownProvider, MarkdownProviderProps, NavigationContextType, NavigationHandler, NavigationProvider, NavigationProviderProps, PropertySettingsType, SuspensefulMarkdownProvider, customizeComponents, useAvailableLanguages, useComponentContext, useComponents, useContentPanelLayout, useDeclaration, useDocs, useHighlight, useIgnoredResources, useLanguage, useLanguageComponents, useMarkdownContext, useNavigation, useRenderMarkdown, useResource, useSettings, useSnippet, useSnippetIds, useSnippetResponse, useSnippets, useSpec };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { t as __exportAll } from "../chunk-pbuEa-1d.js";
|
|
2
|
+
import { DocsProvider, useAvailableLanguages, useContentPanelLayout, useDeclaration, useDocs, useIgnoredResources, useLanguage, useResource, useSettings, useSnippet, useSnippetIds, useSnippetResponse, useSnippets, useSpec } from "./docs.js";
|
|
3
|
+
import { i as useComponents, n as customizeComponents, r as useComponentContext, t as ComponentProvider } from "../component-generics-DYxBWv1v.js";
|
|
4
|
+
import { NavigationProvider, useNavigation } from "./navigation.js";
|
|
5
|
+
import { MarkdownContext, MarkdownProvider, SuspensefulMarkdownProvider, useHighlight, useMarkdownContext, useRenderMarkdown } from "./markdown.js";
|
|
6
|
+
//#region src/contexts/index.tsx
|
|
7
|
+
var contexts_exports = /* @__PURE__ */ __exportAll({
|
|
8
|
+
ComponentProvider: () => ComponentProvider,
|
|
9
|
+
DocsProvider: () => DocsProvider,
|
|
10
|
+
MarkdownContext: () => MarkdownContext,
|
|
11
|
+
MarkdownProvider: () => MarkdownProvider,
|
|
12
|
+
NavigationProvider: () => NavigationProvider,
|
|
13
|
+
SuspensefulMarkdownProvider: () => SuspensefulMarkdownProvider,
|
|
14
|
+
customizeComponents: () => customizeComponents,
|
|
15
|
+
useAvailableLanguages: () => useAvailableLanguages,
|
|
16
|
+
useComponentContext: () => useComponentContext,
|
|
17
|
+
useComponents: () => useComponents,
|
|
18
|
+
useContentPanelLayout: () => useContentPanelLayout,
|
|
19
|
+
useDeclaration: () => useDeclaration,
|
|
20
|
+
useDocs: () => useDocs,
|
|
21
|
+
useHighlight: () => useHighlight,
|
|
22
|
+
useIgnoredResources: () => useIgnoredResources,
|
|
23
|
+
useLanguage: () => useLanguage,
|
|
24
|
+
useLanguageComponents: () => useLanguageComponents,
|
|
25
|
+
useMarkdownContext: () => useMarkdownContext,
|
|
26
|
+
useNavigation: () => useNavigation,
|
|
27
|
+
useRenderMarkdown: () => useRenderMarkdown,
|
|
28
|
+
useResource: () => useResource,
|
|
29
|
+
useSettings: () => useSettings,
|
|
30
|
+
useSnippet: () => useSnippet,
|
|
31
|
+
useSnippetIds: () => useSnippetIds,
|
|
32
|
+
useSnippetResponse: () => useSnippetResponse,
|
|
33
|
+
useSnippets: () => useSnippets,
|
|
34
|
+
useSpec: () => useSpec
|
|
35
|
+
});
|
|
36
|
+
function useLanguageComponents() {
|
|
37
|
+
const language = useLanguage();
|
|
38
|
+
const definition = useComponentContext().language[language];
|
|
39
|
+
if (!definition) throw new Error(`Language component definition not found for language: ${language}`);
|
|
40
|
+
return definition;
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { ComponentProvider, DocsProvider, MarkdownContext, MarkdownProvider, NavigationProvider, SuspensefulMarkdownProvider, customizeComponents, contexts_exports as t, useAvailableLanguages, useComponentContext, useComponents, useContentPanelLayout, useDeclaration, useDocs, useHighlight, useIgnoredResources, useLanguage, useLanguageComponents, useMarkdownContext, useNavigation, useRenderMarkdown, useResource, useSettings, useSnippet, useSnippetIds, useSnippetResponse, useSnippets, useSpec };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as SuspensefulMarkdownProvider, c as useRenderMarkdown, i as MarkdownProviderProps, n as MarkdownContextValue, o as useHighlight, r as MarkdownProvider, s as useMarkdownContext, t as MarkdownContext } from "../markdown-Cwdboi_V.js";
|
|
2
|
+
export { MarkdownContext, MarkdownContextValue, MarkdownProvider, MarkdownProviderProps, SuspensefulMarkdownProvider, useHighlight, useMarkdownContext, useRenderMarkdown };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { useLanguage } from "./docs.js";
|
|
2
|
+
import { Suspense, createContext, use, useMemo } from "react";
|
|
3
|
+
import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
|
|
4
|
+
//#region src/contexts/markdown.tsx
|
|
5
|
+
const HighlightLanguageMappings = {
|
|
6
|
+
node: "typescript",
|
|
7
|
+
http: "bash",
|
|
8
|
+
cli: "bash"
|
|
9
|
+
};
|
|
10
|
+
const MarkdownContext = createContext({
|
|
11
|
+
highlight: (content) => content,
|
|
12
|
+
render: (content) => content
|
|
13
|
+
});
|
|
14
|
+
const useMarkdownContext = () => use(MarkdownContext);
|
|
15
|
+
function useRenderMarkdown(content) {
|
|
16
|
+
const { render } = use(MarkdownContext);
|
|
17
|
+
return useMemo(() => {
|
|
18
|
+
if (!content) return void 0;
|
|
19
|
+
const rendered = render(content);
|
|
20
|
+
return typeof rendered === "string" ? rendered : use(rendered);
|
|
21
|
+
}, [content, render]);
|
|
22
|
+
}
|
|
23
|
+
function useHighlight(content, language) {
|
|
24
|
+
const { highlight } = use(MarkdownContext);
|
|
25
|
+
const defaultLanguage = useLanguage();
|
|
26
|
+
const lang = language ?? defaultLanguage;
|
|
27
|
+
return useMemo(() => {
|
|
28
|
+
if (lang === "none") return content;
|
|
29
|
+
const rendered = highlight(content, HighlightLanguageMappings[lang] ?? lang);
|
|
30
|
+
return typeof rendered === "string" ? rendered : use(rendered);
|
|
31
|
+
}, [
|
|
32
|
+
content,
|
|
33
|
+
highlight,
|
|
34
|
+
lang
|
|
35
|
+
]);
|
|
36
|
+
}
|
|
37
|
+
function MarkdownProvider({ render, highlight, children }) {
|
|
38
|
+
return /* @__PURE__ */ jsx(MarkdownContext, {
|
|
39
|
+
value: useMemo(() => ({
|
|
40
|
+
render,
|
|
41
|
+
highlight
|
|
42
|
+
}), [render, highlight]),
|
|
43
|
+
children
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function SuspensefulMarkdownProviderInner({ value, children }) {
|
|
47
|
+
return /* @__PURE__ */ jsx(MarkdownContext, {
|
|
48
|
+
value: use(value),
|
|
49
|
+
children
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function SuspensefulMarkdownProvider({ value, children }) {
|
|
53
|
+
return /* @__PURE__ */ jsx(Suspense, {
|
|
54
|
+
fallback: /* @__PURE__ */ jsx(Fragment$1, { children }),
|
|
55
|
+
children: /* @__PURE__ */ jsx(SuspensefulMarkdownProviderInner, {
|
|
56
|
+
value,
|
|
57
|
+
children
|
|
58
|
+
})
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//#endregion
|
|
62
|
+
export { MarkdownContext, MarkdownProvider, SuspensefulMarkdownProvider, useHighlight, useMarkdownContext, useRenderMarkdown };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as useNavigation, i as NavigationProviderProps, n as NavigationHandler, r as NavigationProvider, t as NavigationContextType } from "../navigation-C9ckAfpV.js";
|
|
2
|
+
export { NavigationContextType, NavigationHandler, NavigationProvider, NavigationProviderProps, useNavigation };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React$1 from "react";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
//#region src/contexts/navigation.tsx
|
|
4
|
+
const Defaults = { basePath: "/" };
|
|
5
|
+
const NavigationContext = React$1.createContext(Defaults);
|
|
6
|
+
function useNavigation() {
|
|
7
|
+
return React$1.use(NavigationContext);
|
|
8
|
+
}
|
|
9
|
+
function NavigationProvider({ basePath, selectedPath, onNavigate, children }) {
|
|
10
|
+
return /* @__PURE__ */ jsx(NavigationContext, {
|
|
11
|
+
value: {
|
|
12
|
+
...Defaults,
|
|
13
|
+
onNavigate,
|
|
14
|
+
basePath,
|
|
15
|
+
selectedPath
|
|
16
|
+
},
|
|
17
|
+
children
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { NavigationProvider, useNavigation };
|