@stainless-api/docs-ui 0.1.0-beta.9 → 0.1.0-beta.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/dist/breadcrumbs-BaNU4WsC.d.ts +25 -0
  2. package/dist/chunk-pbuEa-1d.js +13 -0
  3. package/dist/component-generics-D9XaPlr8.d.ts +30 -0
  4. package/dist/component-generics-DYxBWv1v.js +42 -0
  5. package/dist/components/MaskedInput.d.ts +14 -0
  6. package/dist/components/MaskedInput.js +74 -0
  7. package/dist/components/breadcrumbs.d.ts +2 -0
  8. package/dist/components/breadcrumbs.js +61 -0
  9. package/dist/components/icons.d.ts +72 -0
  10. package/dist/components/icons.js +953 -0
  11. package/dist/components/index.d.ts +10 -0
  12. package/dist/components/index.js +72 -0
  13. package/dist/components/method.d.ts +2 -0
  14. package/dist/components/method.js +94 -0
  15. package/dist/components/overview.d.ts +2 -0
  16. package/dist/components/overview.js +139 -0
  17. package/dist/components/primitives.d.ts +2 -0
  18. package/dist/components/primitives.js +250 -0
  19. package/dist/components/properties.d.ts +2 -0
  20. package/dist/components/properties.js +143 -0
  21. package/dist/components/sdk-sidebar.d.ts +2 -0
  22. package/dist/components/sdk-sidebar.js +49 -0
  23. package/dist/components/sdk.d.ts +2 -0
  24. package/dist/components/sdk.js +487 -0
  25. package/dist/components/snippets.d.ts +2 -0
  26. package/dist/components/snippets.js +183 -0
  27. package/dist/components/stl-sidebar.d.ts +2 -0
  28. package/dist/components/stl-sidebar.js +111 -0
  29. package/dist/contexts/component-generics.d.ts +2 -0
  30. package/dist/contexts/component-generics.js +2 -0
  31. package/dist/contexts/component-types.d.ts +7 -0
  32. package/dist/contexts/component-types.js +0 -0
  33. package/dist/contexts/component.d.ts +20 -0
  34. package/dist/contexts/component.js +21 -0
  35. package/dist/contexts/docs.d.ts +2 -0
  36. package/dist/contexts/docs.js +89 -0
  37. package/dist/contexts/index.d.ts +6 -0
  38. package/dist/contexts/index.js +43 -0
  39. package/dist/contexts/markdown.d.ts +2 -0
  40. package/dist/contexts/markdown.js +62 -0
  41. package/dist/contexts/navigation.d.ts +2 -0
  42. package/dist/contexts/navigation.js +21 -0
  43. package/dist/contexts/use-components.d.ts +6 -0
  44. package/dist/contexts/use-components.js +5 -0
  45. package/dist/docs-D0qzNoXq.d.ts +62 -0
  46. package/dist/index-DFr9Mesr.d.ts +1776 -0
  47. package/dist/index-Dt9uPKZP.d.ts +464 -0
  48. package/dist/index.d.ts +5 -0
  49. package/dist/index.js +7 -7542
  50. package/dist/languages/cli.d.ts +2 -0
  51. package/dist/languages/cli.js +164 -0
  52. package/dist/languages/csharp.d.ts +2 -0
  53. package/dist/languages/csharp.js +281 -0
  54. package/dist/languages/go.d.ts +2 -0
  55. package/dist/languages/go.js +301 -0
  56. package/dist/languages/http.d.ts +2 -0
  57. package/dist/languages/http.js +381 -0
  58. package/dist/languages/index.d.ts +2 -0
  59. package/dist/languages/index.js +30 -0
  60. package/dist/languages/java.d.ts +2 -0
  61. package/dist/languages/java.js +401 -0
  62. package/dist/languages/php.d.ts +2 -0
  63. package/dist/languages/php.js +310 -0
  64. package/dist/languages/python.d.ts +2 -0
  65. package/dist/languages/python.js +267 -0
  66. package/dist/languages/ruby.d.ts +2 -0
  67. package/dist/languages/ruby.js +385 -0
  68. package/dist/languages/terraform.d.ts +2 -0
  69. package/dist/languages/terraform.js +258 -0
  70. package/dist/languages/typescript.d.ts +2 -0
  71. package/dist/languages/typescript.js +447 -0
  72. package/dist/markdown/index.d.ts +11 -0
  73. package/dist/markdown/index.js +86 -0
  74. package/dist/markdown/md.d.ts +15 -0
  75. package/dist/markdown/md.js +39 -0
  76. package/dist/markdown/printer.d.ts +13 -0
  77. package/dist/markdown/printer.js +73 -0
  78. package/dist/markdown/utils.d.ts +28 -0
  79. package/dist/markdown/utils.js +31 -0
  80. package/dist/markdown-B30HO-Vy.d.ts +33 -0
  81. package/dist/method-BKJnP-rW.d.ts +59 -0
  82. package/dist/navigation-DGl8lR6w.d.ts +29 -0
  83. package/dist/overview-iH1evPEF.d.ts +39 -0
  84. package/dist/primitives-BHt-BuLf.d.ts +107 -0
  85. package/dist/properties-CCbMRhSX.d.ts +54 -0
  86. package/dist/routing-yTSG7nWM.d.ts +61 -0
  87. package/dist/routing.d.ts +2 -0
  88. package/dist/routing.js +174 -150
  89. package/dist/sdk-BengV7mg.d.ts +128 -0
  90. package/dist/sdk-sidebar-CRqLm3YO.d.ts +15 -0
  91. package/dist/spec.d.ts +65 -0
  92. package/dist/spec.js +165 -0
  93. package/dist/stl-sidebar-Pra9uCYo.d.ts +58 -0
  94. package/dist/style.d.ts +178 -0
  95. package/dist/style.js +178 -0
  96. package/dist/styles/main.css +765 -755
  97. package/dist/styles/primitives.css +359 -442
  98. package/dist/styles/resets.css +25 -41
  99. package/dist/styles/search.css +187 -270
  100. package/dist/styles/sidebar.css +155 -69
  101. package/dist/styles/variables.css +23 -89
  102. package/dist/styles.css +3171 -0
  103. package/dist/utils.d.ts +20 -0
  104. package/dist/utils.js +52 -0
  105. package/package.json +75 -22
  106. package/dist/mcp.js +0 -16003
  107. package/dist/styles/snippets.css +0 -132
  108. package/src/components/breadcrumbs.tsx +0 -94
  109. package/src/components/chat.tsx +0 -154
  110. package/src/components/dropdown.tsx +0 -91
  111. package/src/components/icons.tsx +0 -584
  112. package/src/components/index.ts +0 -9
  113. package/src/components/method.tsx +0 -146
  114. package/src/components/overview.tsx +0 -160
  115. package/src/components/primitives.tsx +0 -284
  116. package/src/components/properties.tsx +0 -130
  117. package/src/components/scripts/dropdown.ts +0 -78
  118. package/src/components/sdk.tsx +0 -403
  119. package/src/components/sidebar.tsx +0 -99
  120. package/src/components/snippets.tsx +0 -180
  121. package/src/contexts/component-generics.tsx +0 -48
  122. package/src/contexts/component-types.tsx +0 -5
  123. package/src/contexts/component.tsx +0 -32
  124. package/src/contexts/docs.tsx +0 -75
  125. package/src/contexts/index.tsx +0 -17
  126. package/src/contexts/markdown.tsx +0 -43
  127. package/src/contexts/navigation.tsx +0 -44
  128. package/src/contexts/search.tsx +0 -28
  129. package/src/contexts/use-components.tsx +0 -4
  130. package/src/index.ts +0 -6
  131. package/src/languages/go.tsx +0 -281
  132. package/src/languages/http.tsx +0 -321
  133. package/src/languages/index.ts +0 -26
  134. package/src/languages/java.tsx +0 -358
  135. package/src/languages/python.tsx +0 -255
  136. package/src/languages/ruby.tsx +0 -320
  137. package/src/languages/typescript.tsx +0 -393
  138. package/src/markdown/index.ts +0 -107
  139. package/src/markdown/md.ts +0 -45
  140. package/src/markdown/utils.ts +0 -49
  141. package/src/routing.ts +0 -238
  142. package/src/search/form.tsx +0 -127
  143. package/src/search/index.tsx +0 -1
  144. package/src/search/indexer.ts +0 -246
  145. package/src/search/mcp.ts +0 -61
  146. package/src/search/printer.tsx +0 -86
  147. package/src/search/providers/algolia.ts +0 -88
  148. package/src/search/providers/fuse.ts +0 -19
  149. package/src/search/providers/pagefind.ts +0 -17
  150. package/src/search/providers/walker.ts +0 -30
  151. package/src/search/results.tsx +0 -182
  152. package/src/search/state.ts +0 -64
  153. package/src/search/types.ts +0 -116
  154. package/src/style.ts +0 -196
  155. package/src/styles/main.css +0 -986
  156. package/src/styles/primitives.css +0 -580
  157. package/src/styles/resets.css +0 -39
  158. package/src/styles/search.css +0 -341
  159. package/src/styles/sidebar.css +0 -85
  160. package/src/styles/snippets.css +0 -130
  161. package/src/styles/variables.css +0 -86
  162. 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-Dt9uPKZP.js";
2
+ export { MultiSnippets, MultiSnippetsProps, Snippet, SnippetButtons, SnippetCode, SnippetCodeProps, SnippetContainer, SnippetContainerProps, SnippetFooter, SnippetProps, SnippetRequestContainer, SnippetRequestContainerProps, SnippetResponse };
@@ -0,0 +1,183 @@
1
+ import { useDeclaration, useLanguage, useSnippet, useSnippetIds, useSnippetResponse } from "../contexts/docs.js";
2
+ import { useHighlight } from "../contexts/markdown.js";
3
+ import "../contexts/index.js";
4
+ import { useComponents } from "../contexts/use-components.js";
5
+ import style_default from "../style.js";
6
+ import { useCallback, useId, useRef, useState } from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import clsx from "clsx";
9
+ import { CheckIcon, CircleAlertIcon, CopyIcon } from "lucide-react";
10
+ import { Badge, Button, getHttpMethod } from "@stainless-api/ui-primitives";
11
+ //#region src/components/snippets.tsx
12
+ function SnippetCode({ content, language }) {
13
+ const lang = useLanguage();
14
+ const highlighted = useHighlight(content, language || lang);
15
+ return /* @__PURE__ */ jsx("div", {
16
+ className: style_default.SnippetCode,
17
+ "data-stldocs-copy-content": true,
18
+ dangerouslySetInnerHTML: { __html: highlighted }
19
+ });
20
+ }
21
+ function SnippetContainer({ children, className, ...props }) {
22
+ return /* @__PURE__ */ jsx("div", {
23
+ className: clsx(style_default.Snippet, className),
24
+ ...props,
25
+ children
26
+ });
27
+ }
28
+ function SnippetRequestContainer({ children }) {
29
+ return /* @__PURE__ */ jsx("div", { children });
30
+ }
31
+ function Snippet({ requestTitle, method, snippet, transformRequestSnippet }) {
32
+ const Docs = useComponents();
33
+ const language = useLanguage();
34
+ const originalSnippetContent = useSnippet(method.stainlessPath, void 0, snippet);
35
+ const snippetResponses = useSnippetResponse(method.stainlessPath, snippet);
36
+ const decl = useDeclaration(method.stainlessPath, false);
37
+ const signature = decl && "qualified" in decl ? decl.qualified : void 0;
38
+ if (!originalSnippetContent) {
39
+ console.warn(`Snippet not found for method '${method.stainlessPath}'`);
40
+ return null;
41
+ }
42
+ const snippetContent = transformRequestSnippet ? transformRequestSnippet({
43
+ snippet: originalSnippetContent,
44
+ language
45
+ }) : originalSnippetContent;
46
+ const httpMethod = getHttpMethod(method.httpMethod);
47
+ return /* @__PURE__ */ jsxs(Docs.SnippetContainer, {
48
+ signature,
49
+ method,
50
+ children: [snippetContent && /* @__PURE__ */ jsx(Docs.SnippetRequestContainer, {
51
+ signature,
52
+ children: /* @__PURE__ */ jsxs("div", {
53
+ className: style_default.SnippetRequest,
54
+ "data-stldocs-copy-parent": true,
55
+ children: [
56
+ /* @__PURE__ */ jsxs("div", {
57
+ className: style_default.SnippetRequestTitle,
58
+ children: [
59
+ /* @__PURE__ */ jsxs("div", {
60
+ className: style_default.SnippetRequestTitleMethod,
61
+ children: [httpMethod && /* @__PURE__ */ jsx(Badge.HTTP, {
62
+ method: httpMethod,
63
+ iconOnly: true
64
+ }), /* @__PURE__ */ jsx("h3", { children: method.summary || method.title })]
65
+ }),
66
+ /* @__PURE__ */ jsx("div", {
67
+ className: style_default.SnippetRequestTitleContent,
68
+ children: requestTitle
69
+ }),
70
+ /* @__PURE__ */ jsx(Docs.SnippetButtons, { content: snippetContent })
71
+ ]
72
+ }),
73
+ /* @__PURE__ */ jsx(Docs.SnippetCode, {
74
+ content: snippetContent,
75
+ signature
76
+ }),
77
+ /* @__PURE__ */ jsx(Docs.SnippetFooter, {})
78
+ ]
79
+ })
80
+ }), /* @__PURE__ */ jsx(Docs.SnippetResponse, { responses: snippetResponses })]
81
+ });
82
+ }
83
+ function MultiSnippets({ requestTitle, method }) {
84
+ const snippetIds = useSnippetIds(method.stainlessPath)?.filter((id) => id !== "default");
85
+ const radioId = useId();
86
+ const Docs = useComponents();
87
+ if (!snippetIds) return null;
88
+ return /* @__PURE__ */ jsxs("div", {
89
+ className: style_default.SnippetMulti,
90
+ "data-stldocs-multi-snippet-container": true,
91
+ children: [/* @__PURE__ */ jsx("div", {
92
+ className: style_default.SnippetMultiTabs,
93
+ "data-stldocs-multi-snippet-tabs": true,
94
+ children: snippetIds.map((snid, idx) => /* @__PURE__ */ jsxs("label", {
95
+ className: style_default.SnippetMultiTab,
96
+ children: [/* @__PURE__ */ jsx("input", {
97
+ type: "radio",
98
+ name: `snippet-example-radio-${radioId}`,
99
+ value: idx,
100
+ defaultChecked: idx === 0
101
+ }), /* @__PURE__ */ jsx("span", { children: snid.slice(7) })]
102
+ }, `snippet-example-${idx}`))
103
+ }), /* @__PURE__ */ jsx("div", {
104
+ className: style_default.SnippetMultiContent,
105
+ children: snippetIds.map((snid, idx) => {
106
+ return /* @__PURE__ */ jsx("div", {
107
+ className: clsx(style_default.SnippetMultiPane, idx === 0 && style_default.SnippetMultiPaneActive),
108
+ "data-stldocs-multi-snippet-id": idx,
109
+ children: /* @__PURE__ */ jsx(Docs.Snippet, {
110
+ method,
111
+ snippet: snid,
112
+ requestTitle
113
+ })
114
+ }, `snippet-example-content-${idx}`);
115
+ })
116
+ })]
117
+ });
118
+ }
119
+ function SnippetButtons({ content }) {
120
+ const [CopyButtonIcon, setCopyButtonIcon] = useState(CopyIcon);
121
+ const timeoutRef = useRef(null);
122
+ const handleCopy = useCallback(() => {
123
+ if (timeoutRef.current) clearTimeout(timeoutRef.current);
124
+ navigator.clipboard.writeText(content).then(() => {
125
+ setCopyButtonIcon(CheckIcon);
126
+ }).catch(() => {
127
+ setCopyButtonIcon(CircleAlertIcon);
128
+ }).finally(() => {
129
+ timeoutRef.current = setTimeout(() => setCopyButtonIcon(CopyIcon), 1e3);
130
+ });
131
+ }, [content]);
132
+ return /* @__PURE__ */ jsx(Button, {
133
+ variant: "outline",
134
+ "data-stldocs-snippet-copy": true,
135
+ children: /* @__PURE__ */ jsx(CopyButtonIcon, {
136
+ size: 16,
137
+ className: style_default.Icon,
138
+ onClick: handleCopy
139
+ })
140
+ });
141
+ }
142
+ function SnippetFooter() {
143
+ return null;
144
+ }
145
+ function SnippetResponse({ responses }) {
146
+ const Docs = useComponents();
147
+ if (!responses || responses.length === 0) return null;
148
+ const tabs = responses.map(({ status }, index) => ({
149
+ status,
150
+ index,
151
+ label: status ? `${status} example` : null
152
+ }));
153
+ const hasTabs = tabs.length > 1 || tabs.some((tab) => tab.label);
154
+ return /* @__PURE__ */ jsx("div", {
155
+ className: style_default.SnippetMultiResponse,
156
+ children: /* @__PURE__ */ jsxs("div", {
157
+ className: clsx(style_default.Snippet),
158
+ children: [hasTabs && /* @__PURE__ */ jsx("div", {
159
+ className: clsx(style_default.SnippetResponseTab, tabs.length === 1 && style_default.SnippetResponseTabSingleReturn),
160
+ children: tabs.map(({ status, label }, index) => /* @__PURE__ */ jsx("div", {
161
+ "data-snippet-response-tab-id": `snippet-response-tab-${status}-${index}`,
162
+ className: clsx(style_default.SnippetResponseTabItem, index === 0 && style_default.SnippetResponseTabItemActive),
163
+ children: /* @__PURE__ */ jsx(Button, {
164
+ disabled: responses.length === 1,
165
+ variant: "ghost",
166
+ children: label ?? `Example ${index + 1}`
167
+ })
168
+ }, `snippet-response-tab-item-${status}-${index}`))
169
+ }), responses.map(({ status, content, contentType }, index) => {
170
+ return typeof content === "string" ? /* @__PURE__ */ jsx("div", {
171
+ className: clsx(style_default.SnippetResponsePane, index === 0 && style_default.SnippetResponsePaneActive),
172
+ "data-snippet-response-pane-id": `snippet-response-tab-${status}-${index}`,
173
+ children: /* @__PURE__ */ jsx(Docs.SnippetCode, {
174
+ content,
175
+ language: contentType === "application/json" || !contentType ? "json" : "none"
176
+ })
177
+ }, `snippet-response-${status}-${index}`) : null;
178
+ })]
179
+ })
180
+ });
181
+ }
182
+ //#endregion
183
+ 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-Pra9uCYo.js";
2
+ export { StlSidebar, StlSidebarEntry, StlSidebarGroup, StlSidebarLink, StlSidebarProps, StlSidebarTarget };
@@ -0,0 +1,111 @@
1
+ import { useComponents } from "../contexts/use-components.js";
2
+ import style_default from "../style.js";
3
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
+ import clsx from "clsx";
5
+ import { ChevronRight } from "lucide-react";
6
+ //#region src/components/stl-sidebar.tsx
7
+ function targetToAttributes(target) {
8
+ return {
9
+ href: target.type === "href" ? target.href : void 0,
10
+ stainlessPath: target.type === "stainlessPath" ? target.stainlessPath : void 0
11
+ };
12
+ }
13
+ function StlSidebarSublist({ entries, entryToIndex }) {
14
+ return /* @__PURE__ */ jsx("ul", {
15
+ className: style_default.SidebarList,
16
+ children: entries.map((entry, index) => entry.type === "link" ? /* @__PURE__ */ jsx(LinkEntry, { entry }, index) : /* @__PURE__ */ jsx(GroupEntry, {
17
+ entry,
18
+ entryToIndex
19
+ }, index))
20
+ });
21
+ }
22
+ function EntryItem({ className, children }) {
23
+ return /* @__PURE__ */ jsx("li", {
24
+ className: clsx(style_default.SidebarEntry, className),
25
+ children
26
+ });
27
+ }
28
+ function LinkEntry({ entry }) {
29
+ const Docs = useComponents();
30
+ return /* @__PURE__ */ jsx(EntryItem, {
31
+ className: style_default.SidebarEntryLink,
32
+ children: /* @__PURE__ */ jsxs(Docs.Link, {
33
+ ...targetToAttributes(entry.target),
34
+ "aria-current": entry.isCurrent ? "page" : void 0,
35
+ ...entry.attrs,
36
+ children: [entry.icon, entry.label]
37
+ })
38
+ });
39
+ }
40
+ function GroupEntry({ entry, entryToIndex }) {
41
+ const Docs = useComponents();
42
+ const restorePointIndex = entryToIndex?.get(entry);
43
+ const { collapsible = true } = entry;
44
+ const labelWithIcon = /* @__PURE__ */ jsxs(Fragment, { children: [entry.label, entry.icon] });
45
+ const GroupElement = collapsible ? "details" : "div";
46
+ const GroupLabelElement = collapsible ? "summary" : "div";
47
+ return /* @__PURE__ */ jsxs(EntryItem, {
48
+ className: style_default.SidebarEntryGroup,
49
+ children: [entry.target && /* @__PURE__ */ jsx(Docs.Link, {
50
+ ...targetToAttributes(entry.target),
51
+ "aria-current": entry.isCurrent ? "page" : void 0,
52
+ children: labelWithIcon
53
+ }), /* @__PURE__ */ jsxs(GroupElement, {
54
+ className: style_default.SidebarExpander,
55
+ ...collapsible ? { open: !entry.collapsed || isAnyItemCurrent(entry.entries) } : {},
56
+ children: [
57
+ /* @__PURE__ */ jsxs(GroupLabelElement, {
58
+ className: style_default.ExpanderSummary,
59
+ children: [/* @__PURE__ */ jsx("span", {
60
+ "aria-hidden": entry.target ? "true" : void 0,
61
+ children: labelWithIcon
62
+ }), entry.entries.length > 0 && collapsible && /* @__PURE__ */ jsx(ChevronRight, {
63
+ size: 16,
64
+ strokeWidth: 1,
65
+ className: `${style_default.Icon} ${style_default.ExpanderSummaryIcon}`
66
+ })]
67
+ }),
68
+ restorePointIndex !== void 0 && /* @__PURE__ */ jsx("sl-sidebar-restore", { "data-index": restorePointIndex }),
69
+ entry.entries.length > 0 && /* @__PURE__ */ jsx(StlSidebarSublist, {
70
+ entries: entry.entries,
71
+ entryToIndex
72
+ })
73
+ ]
74
+ })]
75
+ });
76
+ }
77
+ function StlSidebar({ entries, withStarlightRestoration }) {
78
+ const entryToIndex = withStarlightRestoration ? computeEntryToIndex(entries) : void 0;
79
+ return /* @__PURE__ */ jsx("div", {
80
+ className: `${style_default.Root} ${style_default.Sidebar}`,
81
+ children: /* @__PURE__ */ jsx(StlSidebarSublist, {
82
+ entries,
83
+ entryToIndex
84
+ })
85
+ });
86
+ }
87
+ function computeEntryToIndex(allEntries) {
88
+ const entryToIndex = /* @__PURE__ */ new Map();
89
+ let currentIndex = 0;
90
+ function addEntries(entries) {
91
+ for (const entry of entries) if (entry.type === "group") {
92
+ entryToIndex.set(entry, currentIndex);
93
+ currentIndex++;
94
+ addEntries(entry.entries);
95
+ }
96
+ }
97
+ addEntries(allEntries);
98
+ return entryToIndex;
99
+ }
100
+ function* walkSidebar(entries) {
101
+ for (const entry of entries) {
102
+ yield entry;
103
+ if (entry.type === "group") yield* walkSidebar(entry.entries);
104
+ }
105
+ }
106
+ function isAnyItemCurrent(entries) {
107
+ for (const e of walkSidebar(entries)) if (e.isCurrent) return true;
108
+ return false;
109
+ }
110
+ //#endregion
111
+ 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-D9XaPlr8.js";
2
+ export { ComponentProvider, ComponentsContextType, customizeComponents, useComponentContext, useComponents };
@@ -0,0 +1,2 @@
1
+ import { i as useComponents, n as customizeComponents, r as useComponentContext, t as ComponentProvider } from "../component-generics-DYxBWv1v.js";
2
+ export { ComponentProvider, customizeComponents, useComponentContext, useComponents };
@@ -0,0 +1,7 @@
1
+ import { t as index_d_exports, y as index_d_exports$1 } from "../index-Dt9uPKZP.js";
2
+
3
+ //#region src/contexts/component-types.d.ts
4
+ type AppComponents = typeof index_d_exports;
5
+ type AppLanguage = typeof index_d_exports$1;
6
+ //#endregion
7
+ 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-Dt9uPKZP.js";
2
+ import { n as ComponentsContextType } from "../component-generics-D9XaPlr8.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-D0qzNoXq.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-Dt9uPKZP.js";
2
+ import { a as useNavigation, i as NavigationProviderProps, n as NavigationHandler, r as NavigationProvider, t as NavigationContextType } from "../navigation-DGl8lR6w.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-B30HO-Vy.js";
4
+ import { a as useComponents, i as useComponentContext, n as ComponentsContextType, r as customizeComponents, t as ComponentProvider } from "../component-generics-D9XaPlr8.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-D0qzNoXq.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-B30HO-Vy.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-DGl8lR6w.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 };
@@ -0,0 +1,6 @@
1
+ import { t as index_d_exports } from "../index-Dt9uPKZP.js";
2
+
3
+ //#region src/contexts/use-components.d.ts
4
+ declare const useComponents: () => typeof index_d_exports;
5
+ //#endregion
6
+ export { useComponents };
@@ -0,0 +1,5 @@
1
+ import { i as useComponents$1 } from "../component-generics-DYxBWv1v.js";
2
+ //#region src/contexts/use-components.tsx
3
+ const useComponents = () => useComponents$1();
4
+ //#endregion
5
+ export { useComponents };