@stainless-api/docs 0.1.0-beta.1 → 0.1.0-beta.10

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 (40) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/components/variables.css +0 -4
  3. package/package.json +6 -5
  4. package/plugin/components/search/SearchAlgolia.astro +0 -7
  5. package/plugin/globalJs/navigation.ts +0 -1
  6. package/plugin/helpers/getPageLoadEvent.ts +1 -1
  7. package/plugin/index.ts +1 -0
  8. package/plugin/loadPluginConfig.ts +8 -0
  9. package/plugin/react/Routing.tsx +3 -2
  10. package/plugin/replaceSidebarPlaceholderMiddleware.ts +4 -0
  11. package/stl-docs/components/APIReferenceAIDropdown.tsx +40 -68
  12. package/stl-docs/components/Header.astro +1 -1
  13. package/stl-docs/components/ThemeSelect.astro +1 -6
  14. package/stl-docs/components/content-panel/ContentPanel.astro +7 -7
  15. package/stl-docs/components/content-panel/ProseAIDropdown.tsx +8 -17
  16. package/stl-docs/components/headers/DefaultHeader.astro +1 -1
  17. package/stl-docs/components/headers/HeaderLinks.astro +1 -1
  18. package/stl-docs/components/headers/StackedHeader.astro +1 -1
  19. package/stl-docs/components/icons/chat-gpt.tsx +17 -0
  20. package/stl-docs/components/icons/claude.tsx +10 -0
  21. package/stl-docs/components/icons/markdown.tsx +10 -0
  22. package/stl-docs/components/mintlify-compat/Accordion.astro +4 -37
  23. package/stl-docs/components/mintlify-compat/AccordionGroup.astro +9 -23
  24. package/stl-docs/components/mintlify-compat/callouts/Callout.astro +10 -3
  25. package/stl-docs/components/mintlify-compat/callouts/Check.astro +7 -3
  26. package/stl-docs/components/mintlify-compat/callouts/Danger.astro +7 -3
  27. package/stl-docs/components/mintlify-compat/callouts/Info.astro +7 -3
  28. package/stl-docs/components/mintlify-compat/callouts/Note.astro +7 -3
  29. package/stl-docs/components/mintlify-compat/callouts/Tip.astro +7 -3
  30. package/stl-docs/components/mintlify-compat/callouts/Warning.astro +7 -3
  31. package/stl-docs/components/nav-tabs/NavDropdown.astro +1 -6
  32. package/stl-docs/components/nav-tabs/buildNavLinks.ts +3 -3
  33. package/stl-docs/components/{Sidebar.astro → sidebars/BaseSidebar.astro} +2 -3
  34. package/stl-docs/components/sidebars/SDKSelectSidebar.astro +8 -0
  35. package/stl-docs/index.ts +17 -4
  36. package/stl-docs/loadStlDocsConfig.ts +3 -2
  37. package/stl-docs/tabsMiddleware.ts +2 -2
  38. package/styles/page.css +1 -1
  39. package/theme.css +11 -1
  40. package/virtual-module.d.ts +3 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,76 @@
1
1
  # @stainless-api/docs
2
2
 
3
+ ## 0.1.0-beta.10
4
+
5
+ ### Patch Changes
6
+
7
+ - dc059d2: should include option in stl-docs virtual module
8
+
9
+ ## 0.1.0-beta.9
10
+
11
+ ### Patch Changes
12
+
13
+ - d15a520: fix initialization of dropdown buttons
14
+ - Updated dependencies [d15a520]
15
+ - @stainless-api/ui-primitives@0.1.0-beta.8
16
+ - @stainless-api/docs-ui@0.1.0-beta.7
17
+
18
+ ## 0.1.0-beta.8
19
+
20
+ ### Minor Changes
21
+
22
+ - 917493d: move stainlessDocs into default export
23
+
24
+ ## 0.1.0-beta.7
25
+
26
+ ### Patch Changes
27
+
28
+ - Updated dependencies [34e7c61]
29
+ - @stainless-api/ui-primitives@0.1.0-beta.7
30
+ - @stainless-api/docs-ui@0.1.0-beta.6
31
+
32
+ ## 0.1.0-beta.6
33
+
34
+ ### Patch Changes
35
+
36
+ - 34cbd12: verify publishing
37
+ - Updated dependencies [f664b4d]
38
+ - Updated dependencies [34cbd12]
39
+ - @stainless-api/ui-primitives@0.1.0-beta.6
40
+ - @stainless-api/docs-ui@0.1.0-beta.5
41
+
42
+ ## 0.1.0-beta.5
43
+
44
+ ### Patch Changes
45
+
46
+ - Updated dependencies [e7a2a96]
47
+ - @stainless-api/ui-primitives@0.1.0-beta.5
48
+ - @stainless-api/docs-ui@0.1.0-beta.4
49
+
50
+ ## 0.1.0-beta.4
51
+
52
+ ### Patch Changes
53
+
54
+ - Updated dependencies [2853ae8]
55
+ - @stainless-api/ui-primitives@0.1.0-beta.4
56
+ - @stainless-api/docs-ui@0.1.0-beta.3
57
+
58
+ ## 0.1.0-beta.3
59
+
60
+ ### Patch Changes
61
+
62
+ - Updated dependencies [870af8d]
63
+ - @stainless-api/ui-primitives@0.1.0-beta.3
64
+ - @stainless-api/docs-ui@0.1.0-beta.2
65
+
66
+ ## 0.1.0-beta.2
67
+
68
+ ### Patch Changes
69
+
70
+ - Updated dependencies [7a5c841]
71
+ - @stainless-api/docs-ui@0.1.0-beta.2
72
+ - @stainless-api/ui-primitives@0.1.0-beta.2
73
+
3
74
  ## 0.1.0-beta.1
4
75
 
5
76
  ### Patch Changes
@@ -1,7 +1,4 @@
1
1
  :root {
2
- --sl-font: 'Geist', system-ui, sans-serif;
3
- --sl-font-mono: 'Geist Mono', ui-monospace, monospace;
4
-
5
2
  --stldocs-font: var(--sl-font, system-ui, sans-serif);
6
3
  --stldocs-font-mono: var(--sl-font-mono, ui-monospace, monospace);
7
4
 
@@ -78,7 +75,6 @@
78
75
  /* UI Overrides */
79
76
  --stl-ui-button-border-radius: var(--sl-button-border-radius);
80
77
  --stl-ui-text-body: var(--sl-text-sm);
81
- --stl-ui-font-family: var(--sl-font);
82
78
  --stl-ui-button-size: var(--sl-button-size);
83
79
 
84
80
  --stl-ui-color-accent-low: var(--sl-color-accent-low);
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@stainless-api/docs",
3
- "version": "0.1.0-beta.1",
3
+ "version": "0.1.0-beta.10",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
7
  "description": "",
8
8
  "type": "module",
9
9
  "exports": {
10
+ ".": "./stl-docs/index.ts",
10
11
  "./plugin": "./plugin/index.ts",
11
12
  "./OverviewRoute": "./plugin/routes/Overview.astro",
12
13
  "./DocsRoute": "./plugin/routes/Docs.astro",
@@ -16,10 +17,10 @@
16
17
  "./replaceSidebarPlaceholderMiddleware": "./plugin/replaceSidebarPlaceholderMiddleware.ts",
17
18
  "./plugin/middleware": "./plugin/middlewareBuilder/stlStarlightMiddleware.ts",
18
19
  "./plugin/MiddlewareTypes": "./plugin/middlewareBuilder/stainlessMiddleware.d.ts",
19
- "./stainless-docs": "./stl-docs/index.ts",
20
20
  "./Header": "./stl-docs/components/Header.astro",
21
21
  "./ThemeSelect": "./stl-docs/components/ThemeSelect.astro",
22
- "./Sidebar": "./stl-docs/components/Sidebar.astro",
22
+ "./BaseSidebar": "./stl-docs/components/sidebars/BaseSidebar.astro",
23
+ "./SDKSelectSidebar": "./stl-docs/components/sidebars/SDKSelectSidebar.astro",
23
24
  "./ContentPanel": "./stl-docs/components/content-panel/ContentPanel.astro",
24
25
  "./tabsMiddleware": "./stl-docs/tabsMiddleware.ts",
25
26
  "./stainless-docs/mintlify-compat": "./stl-docs/components/mintlify-compat/index.ts",
@@ -54,8 +55,8 @@
54
55
  "shiki": "^3.9.2",
55
56
  "web-worker": "^1.5.0",
56
57
  "yaml": "^2.8.0",
57
- "@stainless-api/docs-ui": "0.1.0-beta.1",
58
- "@stainless-api/ui-primitives": "0.1.0-beta.1"
58
+ "@stainless-api/docs-ui": "0.1.0-beta.7",
59
+ "@stainless-api/ui-primitives": "0.1.0-beta.8"
59
60
  },
60
61
  "devDependencies": {
61
62
  "@markdoc/markdoc": "^0.5.2",
@@ -2,13 +2,6 @@
2
2
  import { Icon } from '@astrojs/starlight/components';
3
3
  import { DocsSearch } from './SearchIsland';
4
4
  import { SEARCH } from 'virtual:stl-starlight-virtual-module';
5
-
6
- import '@stainless-api/docs-ui/src/styles/resets.css';
7
- import '@stainless-api/docs-ui/src/styles/primitives.css';
8
- import '@stainless-api/docs-ui/src/styles/main.css';
9
- import '@stainless-api/docs-ui/src/styles/snippets.css';
10
- import '@stainless-api/docs-ui/src/styles/search.css';
11
- import '../../../components/variables.css';
12
5
  ---
13
6
 
14
7
  <site-search>
@@ -37,7 +37,6 @@ document.addEventListener(getPageLoadEvent(), () => {
37
37
  });
38
38
 
39
39
  document.addEventListener(getPageLoadEvent(), () => {
40
- console.log('Initializing AI Dropdown');
41
40
  initDropdownButton({
42
41
  dropdownId: 'ai-dropdown-button',
43
42
  onSelect: onSelectAIOption,
@@ -1,4 +1,4 @@
1
- // import { ENABLE_CLIENT_ROUTER } from 'virtual:stl-stl-starlight-virtual-module';
1
+ // import { ENABLE_CLIENT_ROUTER } from 'virtual:stl-docs-virtual-module';
2
2
 
3
3
  export function getPageLoadEvent() {
4
4
  // if (ENABLE_CLIENT_ROUTER) {
package/plugin/index.ts CHANGED
@@ -213,6 +213,7 @@ async function stlStarlightAstroIntegration(
213
213
  EXPERIMENTAL_COLLAPSIBLE_SNIPPETS: pluginConfig.experimentalCollapsibleSnippets,
214
214
  PROPERTY_SETTINGS: pluginConfig.propertySettings,
215
215
  SEARCH: pluginConfig.search,
216
+ INCLUDE_AI_DROPDOWN_OPTIONS: pluginConfig.includeAIDropdownOptions,
216
217
  }),
217
218
  vmMiddlewareExport,
218
219
  ].join('\n');
@@ -117,6 +117,13 @@ export type StainlessStarlightUserConfig = {
117
117
  * Defaults to `false`.
118
118
  */
119
119
  experimentalCollapsibleSnippets?: boolean;
120
+
121
+ /**
122
+ * When set to `true`, a dropdown button will be included on all pages to allow users to
123
+ * view or send markdown to an LLM.
124
+ * Defaults to `false`.
125
+ */
126
+ includeAIDropdownOptions?: boolean;
120
127
  };
121
128
 
122
129
  export type ExternalSpecServerUserConfig = Omit<StainlessStarlightUserConfig, 'stainlessProject'> & {
@@ -190,6 +197,7 @@ function normalizeConfig(partial: SomeStainlessStarlightUserConfig, command: Ast
190
197
  search: {
191
198
  enableAISearch: partial.search?.enableAISearch ?? false,
192
199
  },
200
+ includeAIDropdownOptions: partial.includeAIDropdownOptions ?? false,
193
201
  };
194
202
 
195
203
  function getSpecRetrieverConfig(): SpecRetrieverConfig {
@@ -48,6 +48,7 @@ import {
48
48
  HIGHLIGHT_THEMES,
49
49
  BREADCRUMB_CONFIG,
50
50
  PROPERTY_SETTINGS,
51
+ INCLUDE_AI_DROPDOWN_OPTIONS,
51
52
  } from 'virtual:stl-starlight-virtual-module';
52
53
  import style from '@stainless-api/docs-ui/src/style';
53
54
  import { createHighlighter, type BundledLanguage, type BundledTheme, type HighlighterGeneric } from 'shiki';
@@ -332,7 +333,7 @@ export function RenderSpec({
332
333
  basePath={BASE_PATH}
333
334
  config={BREADCRUMB_CONFIG}
334
335
  />
335
- <APIReferenceAIDropdown />
336
+ {INCLUDE_AI_DROPDOWN_OPTIONS && <APIReferenceAIDropdown />}
336
337
  </div>
337
338
  <SDKMethod
338
339
  method={resource.methods[parsed.method]}
@@ -348,7 +349,7 @@ export function RenderSpec({
348
349
  basePath={BASE_PATH}
349
350
  config={BREADCRUMB_CONFIG}
350
351
  />
351
- <APIReferenceAIDropdown />
352
+ {INCLUDE_AI_DROPDOWN_OPTIONS && <APIReferenceAIDropdown />}
352
353
  </div>
353
354
  <SDKOverview resource={resource} />
354
355
  </div>
@@ -15,6 +15,10 @@ export const onRequest = defineRouteMiddleware(async (context) => {
15
15
 
16
16
  const slug = `/${context.locals.starlightRoute.id}`; // same as .slug but not deprecated
17
17
 
18
+ context.locals.starlightRoute._stlStarlight = {
19
+ basePath: BASE_PATH,
20
+ };
21
+
18
22
  const apiReferencePlaceholderItems = getAPIReferencePlaceholderItems(context.locals.starlightRoute.sidebar);
19
23
 
20
24
  const spec = await cmsClient.getSpec();
@@ -1,53 +1,30 @@
1
- import {
2
- DropdownButton,
3
- DropdownButtonDivider,
4
- DropdownButtonItem,
5
- DropdownButtonItemIcon,
6
- DropdownButtonItemText,
7
- DropdownButtonItemTextSubtle,
8
- DropdownButtonMenu,
9
- DropdownButtonPrimaryAction,
10
- DropdownButtonPrimaryActionText,
11
- DropdownButtonTrigger,
12
- } from '@stainless-api/ui-primitives';
1
+ import { DropdownButton } from '@stainless-api/ui-primitives';
13
2
  import { CopyIcon } from 'lucide-react';
3
+ import { ChatGPTIcon } from './icons/chat-gpt';
4
+ import { ClaudeIcon } from './icons/claude';
5
+ import { MarkdownIcon } from './icons/markdown';
14
6
 
15
7
  export function AIDropdownOptions() {
16
8
  return (
17
9
  <>
18
- <DropdownButtonItem value="chat-gpt" isExternalLink>
19
- <DropdownButtonItemIcon>
20
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
21
- <path
22
- d="M3.13924 10.6036L6.28658 8.84444L6.33924 8.69111L6.28658 8.60638H6.13266L5.60608 8.5741L3.8076 8.52568L2.2481 8.46113L0.737215 8.38043L0.356456 8.29973L0 7.83169L0.0364557 7.59766L0.356456 7.38382L0.814177 7.42416L1.82684 7.49276L3.34582 7.59766L4.4476 7.66222L6.08 7.83169H6.33924L6.3757 7.72678L6.28658 7.66222L6.21772 7.59766L4.64608 6.53649L2.94481 5.4148L2.05367 4.76922L1.57165 4.44239L1.32861 4.13574L1.22329 3.46595L1.66076 2.98581L2.2481 3.02615L2.39797 3.0665L2.99342 3.52244L4.26532 4.50292L5.92608 5.72145L6.16911 5.92319L6.26633 5.8546L6.27848 5.80618L6.16911 5.62461L5.26582 3.99856L4.30177 2.34426L3.87241 1.65833L3.75899 1.24678C3.71848 1.07731 3.69013 0.93609 3.69013 0.762591L4.18835 0.0887672L4.4638 0L5.1281 0.0887672L5.4076 0.330859L5.82076 1.27098L6.48911 2.75178L7.52608 4.76518L7.82987 5.36234L7.9919 5.91512L8.05266 6.08459H8.15797V5.98775L8.24304 4.85395L8.40101 3.46192L8.55494 1.67044L8.60759 1.16608L8.85873 0.560847L9.35696 0.234023L9.74582 0.419627L10.0658 0.875567L10.0213 1.17011L9.83089 2.40075L9.45823 4.32942L9.21519 5.62058H9.35696L9.51899 5.45918L10.1752 4.59168L11.277 3.21983L11.763 2.67512L12.3301 2.07392L12.6947 1.78745H13.3833L13.8896 2.53793L13.6628 3.31263L12.9539 4.20837L12.3666 4.96693L11.5241 6.09669L10.9975 7.0005L11.0461 7.07313L11.1716 7.06103L13.0754 6.65754L14.1043 6.47193L15.3316 6.26212L15.8866 6.52035L15.9473 6.78262L15.7286 7.31926L14.4162 7.64205L12.877 7.9487L10.5843 8.48937L10.5559 8.50954L10.5884 8.54989L11.6213 8.64673L12.0628 8.67094H13.1443L15.1575 8.82023L15.6841 9.16723L16 9.59089L15.9473 9.91368L15.1372 10.3252L14.0435 10.067L11.4916 9.46177L10.6167 9.24389H10.4952V9.31652L11.2243 10.0267L12.561 11.229L14.2339 12.7784L14.319 13.1618L14.1043 13.4644L13.8775 13.4321L12.4071 12.3306L11.84 11.8343L10.5559 10.757H10.4709V10.8699L10.7666 11.3017L12.3301 13.6419L12.4111 14.3601L12.2977 14.5941L11.8927 14.7354L11.4471 14.6547L10.5316 13.3756L9.58785 11.9352L8.82633 10.644L8.73316 10.6964L8.28354 15.5181L8.07291 15.7642L7.58684 15.9498L7.18177 15.6432L6.96709 15.1469L7.18177 14.1664L7.44101 12.8874L7.65165 11.8706L7.84203 10.6077L7.95544 10.1881L7.94734 10.1598L7.85418 10.1719L6.89823 11.4792L5.44405 13.4361L4.29367 14.6627L4.01823 14.7717L3.54025 14.5255L3.58481 14.0857L3.85215 13.6944L5.44405 11.6769L6.40405 10.4261L7.0238 9.70387L7.01975 9.59896H6.98329L2.75443 12.3346L2.00101 12.4314L1.67696 12.1288L1.71747 11.6325L1.87139 11.4711L3.14329 10.5996L3.13924 10.6036Z"
23
- fill="#D97757"
24
- />
25
- </svg>
26
- </DropdownButtonItemIcon>
27
- <DropdownButtonItemText>
28
- <DropdownButtonItemTextSubtle>Open in</DropdownButtonItemTextSubtle> Claude
29
- </DropdownButtonItemText>
30
- </DropdownButtonItem>
31
- <DropdownButtonItem value="chat-gpt" isExternalLink>
32
- <DropdownButtonItemIcon>
33
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
34
- <g clip-path="url(#clip0_2771_126147)">
35
- <path
36
- d="M14.853 6.54857C15.216 5.45907 15.091 4.26557 14.5105 3.27457C13.6375 1.75457 11.8825 0.972574 10.1685 1.34057C9.40596 0.481574 8.31046 -0.00692579 7.16196 7.42116e-05C5.40996 -0.00392579 3.85546 1.12407 3.31646 2.79107C2.19096 3.02157 1.21946 3.72607 0.650955 4.72457C-0.228545 6.24057 -0.0280446 8.15157 1.14696 9.45157C0.783955 10.5411 0.908955 11.7346 1.48946 12.7256C2.36246 14.2456 4.11746 15.0276 5.83146 14.6596C6.59346 15.5186 7.68946 16.0071 8.83796 15.9996C10.591 16.0041 12.146 14.8751 12.685 13.2066C13.8105 12.9761 14.782 12.2716 15.3505 11.2731C16.229 9.75707 16.028 7.84757 14.8535 6.54757L14.853 6.54857ZM8.83896 14.9541C8.13746 14.9551 7.45796 14.7096 6.91946 14.2601C6.94396 14.2471 6.98646 14.2236 7.01396 14.2066L10.2 12.3666C10.363 12.2741 10.463 12.1006 10.462 11.9131V7.42157L11.8085 8.19907C11.823 8.20607 11.8325 8.22007 11.8345 8.23607V11.9556C11.8325 13.6096 10.493 14.9506 8.83896 14.9541ZM2.39696 12.2026C2.04546 11.5956 1.91896 10.8841 2.03946 10.1936C2.06296 10.2076 2.10446 10.2331 2.13396 10.2501L5.31996 12.0901C5.48146 12.1846 5.68146 12.1846 5.84346 12.0901L9.73296 9.84407V11.3991C9.73396 11.4151 9.72646 11.4306 9.71396 11.4406L6.49346 13.3001C5.05896 14.1261 3.22696 13.6351 2.39746 12.2026H2.39696ZM1.55846 5.24807C1.90846 4.64007 2.46096 4.17507 3.11896 3.93357C3.11896 3.96107 3.11746 4.00957 3.11746 4.04357V7.72407C3.11646 7.91107 3.21646 8.08457 3.37896 8.17707L7.26846 10.4226L5.92196 11.2001C5.90846 11.2091 5.89146 11.2106 5.87646 11.2041L2.65546 9.34307C1.22396 8.51407 0.732955 6.68257 1.55796 5.24857L1.55846 5.24807ZM12.6215 7.82257L8.73196 5.57657L10.0785 4.79957C10.092 4.79057 10.109 4.78907 10.124 4.79557L13.345 6.65507C14.779 7.48357 15.2705 9.31807 14.442 10.7521C14.0915 11.3591 13.5395 11.8241 12.882 12.0661V8.27557C12.8835 8.08857 12.784 7.91557 12.622 7.82257H12.6215ZM13.9615 5.80557C13.938 5.79107 13.8965 5.76607 13.867 5.74907L10.681 3.90907C10.5195 3.81457 10.3195 3.81457 10.1575 3.90907L6.26796 6.15507V4.60007C6.26696 4.58407 6.27446 4.56857 6.28696 4.55857L9.50746 2.70057C10.942 1.87307 12.776 2.36557 13.603 3.80057C13.9525 4.40657 14.079 5.11607 13.9605 5.80557H13.9615ZM5.53596 8.57707L4.18896 7.79957C4.17446 7.79257 4.16496 7.77857 4.16296 7.76257V4.04307C4.16396 2.38707 5.50746 1.04507 7.16346 1.04607C7.86396 1.04607 8.54196 1.29207 9.08046 1.74007C9.05596 1.75307 9.01396 1.77657 8.98596 1.79357L5.79996 3.63357C5.63696 3.72607 5.53696 3.89907 5.53796 4.08657L5.53596 8.57607V8.57707ZM6.26746 7.00007L7.99996 5.99957L9.73246 6.99957V9.00007L7.99996 10.0001L6.26746 9.00007V7.00007Z"
37
- fill="#262626"
38
- />
39
- </g>
40
- <defs>
41
- <clipPath id="clip0_2771_126147">
42
- <rect width="16" height="16" fill="white" />
43
- </clipPath>
44
- </defs>
45
- </svg>
46
- </DropdownButtonItemIcon>
47
- <DropdownButtonItemText>
48
- <DropdownButtonItemTextSubtle>Open in</DropdownButtonItemTextSubtle> ChatGPT
49
- </DropdownButtonItemText>
50
- </DropdownButtonItem>
10
+ <DropdownButton.MenuItem value="claude" isExternalLink>
11
+ <DropdownButton.MenuItemIcon>
12
+ <ClaudeIcon />
13
+ </DropdownButton.MenuItemIcon>
14
+ <DropdownButton.MenuItemText subtle>
15
+ Open in
16
+ <strong> Claude</strong>
17
+ </DropdownButton.MenuItemText>
18
+ </DropdownButton.MenuItem>
19
+ <DropdownButton.MenuItem value="chat-gpt" isExternalLink>
20
+ <DropdownButton.MenuItemIcon>
21
+ <ChatGPTIcon />
22
+ </DropdownButton.MenuItemIcon>
23
+ <DropdownButton.MenuItemText subtle>
24
+ Open in
25
+ <strong> ChatGPT</strong>
26
+ </DropdownButton.MenuItemText>
27
+ </DropdownButton.MenuItem>
51
28
  </>
52
29
  );
53
30
  }
@@ -55,32 +32,27 @@ export function AIDropdownOptions() {
55
32
  export function APIReferenceAIDropdown() {
56
33
  return (
57
34
  <DropdownButton id="ai-dropdown-button">
58
- <DropdownButtonPrimaryAction>
35
+ <DropdownButton.PrimaryAction>
59
36
  <CopyIcon size={16} />
60
- <DropdownButtonPrimaryActionText>Copy Markdown</DropdownButtonPrimaryActionText>
61
- </DropdownButtonPrimaryAction>
62
- <DropdownButtonTrigger />
63
- <DropdownButtonMenu>
37
+ <DropdownButton.PrimaryActionText>Copy Markdown</DropdownButton.PrimaryActionText>
38
+ </DropdownButton.PrimaryAction>
39
+ <DropdownButton.Trigger />
40
+ <DropdownButton.Menu>
64
41
  <AIDropdownOptions />
65
- <DropdownButtonDivider />
66
- <DropdownButtonItem value="copy-as-markdown" isExternalLink>
67
- <DropdownButtonItemIcon>
42
+ <hr />
43
+ <DropdownButton.MenuItem value="copy-as-markdown" isExternalLink>
44
+ <DropdownButton.MenuItemIcon>
68
45
  <CopyIcon size={16} />
69
- </DropdownButtonItemIcon>
70
- <DropdownButtonItemText>Copy Markdown</DropdownButtonItemText>
71
- </DropdownButtonItem>
72
- <DropdownButtonItem value="view-as-markdown" isExternalLink>
73
- <DropdownButtonItemIcon>
74
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
75
- <path
76
- d="M14.8447 3.33301C15.151 3.33301 15.4455 3.45527 15.6621 3.67188C15.8785 3.88844 16 4.18213 16 4.48828V12.0254C15.9997 12.3315 15.8777 12.6254 15.6611 12.8418C15.4446 13.0581 15.1508 13.1797 14.8447 13.1797H1.15527C0.848967 13.1797 0.55449 13.0584 0.337891 12.8418C0.121288 12.6252 0 12.3307 0 12.0244V4.48828C1.09706e-05 4.18213 0.121501 3.88844 0.337891 3.67188C0.554493 3.45527 0.848951 3.33301 1.15527 3.33301H14.8447ZM1.15527 4.10254C1.10457 4.10245 1.0537 4.11247 1.00684 4.13184C0.960202 4.15116 0.917554 4.17917 0.881836 4.21484C0.845984 4.2507 0.817213 4.29396 0.797852 4.34082C0.778601 4.38756 0.769447 4.43773 0.769531 4.48828V12.0254C0.76962 12.0759 0.779409 12.1262 0.798828 12.1729C0.81827 12.2196 0.846978 12.2621 0.882812 12.2979C0.918602 12.3335 0.961134 12.3616 1.00781 12.3809C1.05454 12.4001 1.10474 12.4102 1.15527 12.4102H14.8447C14.9467 12.4101 15.045 12.3699 15.1172 12.2979C15.1893 12.2258 15.2293 12.1274 15.2295 12.0254V4.48828C15.2296 4.43774 15.2204 4.38755 15.2012 4.34082C15.1819 4.29403 15.1529 4.25166 15.1172 4.21582C15.0814 4.17999 15.0389 4.15126 14.9922 4.13184C14.9455 4.11249 14.8952 4.10258 14.8447 4.10254H1.15527ZM5.38477 7.56348L6.92285 5.64062H8.46094V10.8721H6.92285V7.87109L5.38477 9.79492L3.8457 7.87109V10.8711H2.30762V5.63965H3.8457L5.38477 7.56348ZM12.6924 8.33301H14.2305L11.9229 10.8711L9.61523 8.33301H11.1533V5.64062H12.6924V8.33301Z"
77
- fill="#262626"
78
- />
79
- </svg>
80
- </DropdownButtonItemIcon>
81
- <DropdownButtonItemText>View as Markdown</DropdownButtonItemText>
82
- </DropdownButtonItem>
83
- </DropdownButtonMenu>
46
+ </DropdownButton.MenuItemIcon>
47
+ <DropdownButton.MenuItemText>Copy Markdown</DropdownButton.MenuItemText>
48
+ </DropdownButton.MenuItem>
49
+ <DropdownButton.MenuItem value="view-as-markdown" isExternalLink>
50
+ <DropdownButton.MenuItemIcon>
51
+ <MarkdownIcon />
52
+ </DropdownButton.MenuItemIcon>
53
+ <DropdownButton.MenuItemText>View as Markdown</DropdownButton.MenuItemText>
54
+ </DropdownButton.MenuItem>
55
+ </DropdownButton.Menu>
84
56
  </DropdownButton>
85
57
  );
86
58
  }
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  import config from 'virtual:starlight/user-config';
3
3
 
4
- import { HEADER_LAYOUT } from 'virtual:stl-stl-starlight-virtual-module';
4
+ import { HEADER_LAYOUT } from 'virtual:stl-docs-virtual-module';
5
5
  import DefaultHeader from './headers/DefaultHeader.astro';
6
6
  import StackedHeader from './headers/StackedHeader.astro';
7
7
 
@@ -1,10 +1,5 @@
1
1
  ---
2
- import {
3
- Dropdown,
4
- DropdownTrigger,
5
- DropdownMenu,
6
- DropdownItem,
7
- } from '@stainless-api/docs-ui/src/components/dropdown';
2
+ import { Dropdown, DropdownTrigger, DropdownMenu, DropdownItem } from '@stainless-api/docs-ui/src/components/dropdown';
8
3
 
9
4
  const options = [
10
5
  {
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  import { ContentBreadcrumbs } from './ContentBreadcrumbs';
3
3
  import { ProseAIDropdown } from './ProseAIDropdown';
4
+ import { INCLUDE_AI_DROPDOWN_OPTIONS } from 'virtual:stl-docs-virtual-module';
4
5
  const currentPath = Astro.url.pathname;
5
6
  ---
6
7
 
@@ -8,7 +9,11 @@ const currentPath = Astro.url.pathname;
8
9
  <div class="sl-container stl-ui-prose">
9
10
  <div class="stl-ui-not-prose stl-page-nav-container stl-prose-page-nav-container">
10
11
  <ContentBreadcrumbs currentPath={currentPath} sidebarEntry={Astro.locals.starlightRoute.sidebar} />
11
- <ProseAIDropdown currentPath={currentPath} sidebarEntry={Astro.locals.starlightRoute.sidebar} />
12
+ {
13
+ INCLUDE_AI_DROPDOWN_OPTIONS && (
14
+ <ProseAIDropdown currentPath={currentPath} sidebarEntry={Astro.locals.starlightRoute.sidebar} />
15
+ )
16
+ }
12
17
  </div>
13
18
  <slot />
14
19
  </div>
@@ -26,10 +31,6 @@ const currentPath = Astro.url.pathname;
26
31
  max-width: var(--sl-content-width);
27
32
  }
28
33
 
29
- .sl-container > :global(* + *) {
30
- margin-top: 1.5rem;
31
- }
32
-
33
34
  @media (min-width: 72rem) {
34
35
  .sl-container {
35
36
  margin-inline: var(--sl-content-margin-inline, auto);
@@ -39,7 +40,7 @@ const currentPath = Astro.url.pathname;
39
40
  /* Overrides */
40
41
  @layer stainless {
41
42
  .content-panel {
42
- padding: 0 var(--sl-content-pad-x);
43
+ padding: 0 0.5rem 0 var(--sl-content-pad-x);
43
44
  }
44
45
 
45
46
  .stl-prose-page-nav-container {
@@ -60,7 +61,6 @@ const currentPath = Astro.url.pathname;
60
61
  import { onSelectAIOption } from '../../../plugin/globalJs/ai-dropdown.ts';
61
62
 
62
63
  document.addEventListener(getPageLoadEvent(), () => {
63
- console.log('Initializing AI Dropdown');
64
64
  initDropdownButton({
65
65
  dropdownId: 'prose-ai-dropdown-button',
66
66
  onSelect: (option: string) => onSelectAIOption(option, false),
@@ -1,11 +1,7 @@
1
- import {
2
- DropdownButton,
3
- DropdownButtonMenu,
4
- DropdownButtonPrimaryAction,
5
- DropdownButtonTrigger,
6
- } from '@stainless-api/ui-primitives';
1
+ import { DropdownButton } from '@stainless-api/ui-primitives';
7
2
  import { AIDropdownOptions } from '../APIReferenceAIDropdown';
8
3
  import type { StarlightRouteData } from '@astrojs/starlight/route-data';
4
+ import { ClaudeIcon } from '../icons/claude';
9
5
 
10
6
  const sidebarHasEntry = (sidebarEntry: StarlightRouteData['sidebar'], currentPath?: string) => {
11
7
  if (!currentPath) return false;
@@ -46,19 +42,14 @@ export function ProseAIDropdown({
46
42
 
47
43
  return (
48
44
  <DropdownButton id="prose-ai-dropdown-button">
49
- <DropdownButtonPrimaryAction>
50
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
51
- <path
52
- d="M3.13924 10.6036L6.28658 8.84444L6.33924 8.69111L6.28658 8.60638H6.13266L5.60608 8.5741L3.8076 8.52568L2.2481 8.46113L0.737215 8.38043L0.356456 8.29973L0 7.83169L0.0364557 7.59766L0.356456 7.38382L0.814177 7.42416L1.82684 7.49276L3.34582 7.59766L4.4476 7.66222L6.08 7.83169H6.33924L6.3757 7.72678L6.28658 7.66222L6.21772 7.59766L4.64608 6.53649L2.94481 5.4148L2.05367 4.76922L1.57165 4.44239L1.32861 4.13574L1.22329 3.46595L1.66076 2.98581L2.2481 3.02615L2.39797 3.0665L2.99342 3.52244L4.26532 4.50292L5.92608 5.72145L6.16911 5.92319L6.26633 5.8546L6.27848 5.80618L6.16911 5.62461L5.26582 3.99856L4.30177 2.34426L3.87241 1.65833L3.75899 1.24678C3.71848 1.07731 3.69013 0.93609 3.69013 0.762591L4.18835 0.0887672L4.4638 0L5.1281 0.0887672L5.4076 0.330859L5.82076 1.27098L6.48911 2.75178L7.52608 4.76518L7.82987 5.36234L7.9919 5.91512L8.05266 6.08459H8.15797V5.98775L8.24304 4.85395L8.40101 3.46192L8.55494 1.67044L8.60759 1.16608L8.85873 0.560847L9.35696 0.234023L9.74582 0.419627L10.0658 0.875567L10.0213 1.17011L9.83089 2.40075L9.45823 4.32942L9.21519 5.62058H9.35696L9.51899 5.45918L10.1752 4.59168L11.277 3.21983L11.763 2.67512L12.3301 2.07392L12.6947 1.78745H13.3833L13.8896 2.53793L13.6628 3.31263L12.9539 4.20837L12.3666 4.96693L11.5241 6.09669L10.9975 7.0005L11.0461 7.07313L11.1716 7.06103L13.0754 6.65754L14.1043 6.47193L15.3316 6.26212L15.8866 6.52035L15.9473 6.78262L15.7286 7.31926L14.4162 7.64205L12.877 7.9487L10.5843 8.48937L10.5559 8.50954L10.5884 8.54989L11.6213 8.64673L12.0628 8.67094H13.1443L15.1575 8.82023L15.6841 9.16723L16 9.59089L15.9473 9.91368L15.1372 10.3252L14.0435 10.067L11.4916 9.46177L10.6167 9.24389H10.4952V9.31652L11.2243 10.0267L12.561 11.229L14.2339 12.7784L14.319 13.1618L14.1043 13.4644L13.8775 13.4321L12.4071 12.3306L11.84 11.8343L10.5559 10.757H10.4709V10.8699L10.7666 11.3017L12.3301 13.6419L12.4111 14.3601L12.2977 14.5941L11.8927 14.7354L11.4471 14.6547L10.5316 13.3756L9.58785 11.9352L8.82633 10.644L8.73316 10.6964L8.28354 15.5181L8.07291 15.7642L7.58684 15.9498L7.18177 15.6432L6.96709 15.1469L7.18177 14.1664L7.44101 12.8874L7.65165 11.8706L7.84203 10.6077L7.95544 10.1881L7.94734 10.1598L7.85418 10.1719L6.89823 11.4792L5.44405 13.4361L4.29367 14.6627L4.01823 14.7717L3.54025 14.5255L3.58481 14.0857L3.85215 13.6944L5.44405 11.6769L6.40405 10.4261L7.0238 9.70387L7.01975 9.59896H6.98329L2.75443 12.3346L2.00101 12.4314L1.67696 12.1288L1.71747 11.6325L1.87139 11.4711L3.14329 10.5996L3.13924 10.6036Z"
53
- fill="#D97757"
54
- />
55
- </svg>{' '}
45
+ <DropdownButton.PrimaryAction>
46
+ <ClaudeIcon />
56
47
  Open in Claude
57
- </DropdownButtonPrimaryAction>
58
- <DropdownButtonTrigger />
59
- <DropdownButtonMenu>
48
+ </DropdownButton.PrimaryAction>
49
+ <DropdownButton.Trigger />
50
+ <DropdownButton.Menu>
60
51
  <AIDropdownOptions />
61
- </DropdownButtonMenu>
52
+ </DropdownButton.Menu>
62
53
  </DropdownButton>
63
54
  );
64
55
  }
@@ -4,7 +4,7 @@ import Search from 'virtual:starlight/components/Search';
4
4
  import SiteTitle from 'virtual:starlight/components/SiteTitle';
5
5
  import HeaderLinks from './HeaderLinks.astro';
6
6
  import NavLinks from '../nav-tabs/NavTabs.astro';
7
- import { TABS } from 'virtual:stl-stl-starlight-virtual-module';
7
+ import { TABS } from 'virtual:stl-docs-virtual-module';
8
8
  import ThemeSelect from 'virtual:starlight/components/ThemeSelect';
9
9
  import SplashMobileMenuToggle from './SplashMobileMenuToggle.astro';
10
10
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- import { HEADER_LINKS } from 'virtual:stl-stl-starlight-virtual-module';
2
+ import { HEADER_LINKS } from 'virtual:stl-docs-virtual-module';
3
3
  import { Button } from '@stainless-api/ui-primitives';
4
4
  ---
5
5
 
@@ -3,7 +3,7 @@ import LanguageSelect from "virtual:starlight/components/LanguageSelect";
3
3
  import Search from "virtual:starlight/components/Search";
4
4
  import SiteTitle from "virtual:starlight/components/SiteTitle";
5
5
  import HeaderLinks from './HeaderLinks.astro';
6
- import { TABS } from "virtual:stl-stl-starlight-virtual-module";
6
+ import { TABS } from "virtual:stl-docs-virtual-module";
7
7
  import ThemeSelect from "virtual:starlight/components/ThemeSelect";
8
8
  import SecondaryNavTabs from "../nav-tabs/SecondaryNavTabs.astro";
9
9
  import SplashMobileMenuToggle from "./SplashMobileMenuToggle.astro";
@@ -0,0 +1,17 @@
1
+ export function ChatGPTIcon() {
2
+ return (
3
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
4
+ <g clip-path="url(#clip0_2771_126147)">
5
+ <path
6
+ d="M14.853 6.54857C15.216 5.45907 15.091 4.26557 14.5105 3.27457C13.6375 1.75457 11.8825 0.972574 10.1685 1.34057C9.40596 0.481574 8.31046 -0.00692579 7.16196 7.42116e-05C5.40996 -0.00392579 3.85546 1.12407 3.31646 2.79107C2.19096 3.02157 1.21946 3.72607 0.650955 4.72457C-0.228545 6.24057 -0.0280446 8.15157 1.14696 9.45157C0.783955 10.5411 0.908955 11.7346 1.48946 12.7256C2.36246 14.2456 4.11746 15.0276 5.83146 14.6596C6.59346 15.5186 7.68946 16.0071 8.83796 15.9996C10.591 16.0041 12.146 14.8751 12.685 13.2066C13.8105 12.9761 14.782 12.2716 15.3505 11.2731C16.229 9.75707 16.028 7.84757 14.8535 6.54757L14.853 6.54857ZM8.83896 14.9541C8.13746 14.9551 7.45796 14.7096 6.91946 14.2601C6.94396 14.2471 6.98646 14.2236 7.01396 14.2066L10.2 12.3666C10.363 12.2741 10.463 12.1006 10.462 11.9131V7.42157L11.8085 8.19907C11.823 8.20607 11.8325 8.22007 11.8345 8.23607V11.9556C11.8325 13.6096 10.493 14.9506 8.83896 14.9541ZM2.39696 12.2026C2.04546 11.5956 1.91896 10.8841 2.03946 10.1936C2.06296 10.2076 2.10446 10.2331 2.13396 10.2501L5.31996 12.0901C5.48146 12.1846 5.68146 12.1846 5.84346 12.0901L9.73296 9.84407V11.3991C9.73396 11.4151 9.72646 11.4306 9.71396 11.4406L6.49346 13.3001C5.05896 14.1261 3.22696 13.6351 2.39746 12.2026H2.39696ZM1.55846 5.24807C1.90846 4.64007 2.46096 4.17507 3.11896 3.93357C3.11896 3.96107 3.11746 4.00957 3.11746 4.04357V7.72407C3.11646 7.91107 3.21646 8.08457 3.37896 8.17707L7.26846 10.4226L5.92196 11.2001C5.90846 11.2091 5.89146 11.2106 5.87646 11.2041L2.65546 9.34307C1.22396 8.51407 0.732955 6.68257 1.55796 5.24857L1.55846 5.24807ZM12.6215 7.82257L8.73196 5.57657L10.0785 4.79957C10.092 4.79057 10.109 4.78907 10.124 4.79557L13.345 6.65507C14.779 7.48357 15.2705 9.31807 14.442 10.7521C14.0915 11.3591 13.5395 11.8241 12.882 12.0661V8.27557C12.8835 8.08857 12.784 7.91557 12.622 7.82257H12.6215ZM13.9615 5.80557C13.938 5.79107 13.8965 5.76607 13.867 5.74907L10.681 3.90907C10.5195 3.81457 10.3195 3.81457 10.1575 3.90907L6.26796 6.15507V4.60007C6.26696 4.58407 6.27446 4.56857 6.28696 4.55857L9.50746 2.70057C10.942 1.87307 12.776 2.36557 13.603 3.80057C13.9525 4.40657 14.079 5.11607 13.9605 5.80557H13.9615ZM5.53596 8.57707L4.18896 7.79957C4.17446 7.79257 4.16496 7.77857 4.16296 7.76257V4.04307C4.16396 2.38707 5.50746 1.04507 7.16346 1.04607C7.86396 1.04607 8.54196 1.29207 9.08046 1.74007C9.05596 1.75307 9.01396 1.77657 8.98596 1.79357L5.79996 3.63357C5.63696 3.72607 5.53696 3.89907 5.53796 4.08657L5.53596 8.57607V8.57707ZM6.26746 7.00007L7.99996 5.99957L9.73246 6.99957V9.00007L7.99996 10.0001L6.26746 9.00007V7.00007Z"
7
+ fill="var(--stl-ui-foreground)"
8
+ />
9
+ </g>
10
+ <defs>
11
+ <clipPath id="clip0_2771_126147">
12
+ <rect width="16" height="16" fill="white" />
13
+ </clipPath>
14
+ </defs>
15
+ </svg>
16
+ );
17
+ }
@@ -0,0 +1,10 @@
1
+ export function ClaudeIcon() {
2
+ return (
3
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
4
+ <path
5
+ d="M3.13924 10.6036L6.28658 8.84444L6.33924 8.69111L6.28658 8.60638H6.13266L5.60608 8.5741L3.8076 8.52568L2.2481 8.46113L0.737215 8.38043L0.356456 8.29973L0 7.83169L0.0364557 7.59766L0.356456 7.38382L0.814177 7.42416L1.82684 7.49276L3.34582 7.59766L4.4476 7.66222L6.08 7.83169H6.33924L6.3757 7.72678L6.28658 7.66222L6.21772 7.59766L4.64608 6.53649L2.94481 5.4148L2.05367 4.76922L1.57165 4.44239L1.32861 4.13574L1.22329 3.46595L1.66076 2.98581L2.2481 3.02615L2.39797 3.0665L2.99342 3.52244L4.26532 4.50292L5.92608 5.72145L6.16911 5.92319L6.26633 5.8546L6.27848 5.80618L6.16911 5.62461L5.26582 3.99856L4.30177 2.34426L3.87241 1.65833L3.75899 1.24678C3.71848 1.07731 3.69013 0.93609 3.69013 0.762591L4.18835 0.0887672L4.4638 0L5.1281 0.0887672L5.4076 0.330859L5.82076 1.27098L6.48911 2.75178L7.52608 4.76518L7.82987 5.36234L7.9919 5.91512L8.05266 6.08459H8.15797V5.98775L8.24304 4.85395L8.40101 3.46192L8.55494 1.67044L8.60759 1.16608L8.85873 0.560847L9.35696 0.234023L9.74582 0.419627L10.0658 0.875567L10.0213 1.17011L9.83089 2.40075L9.45823 4.32942L9.21519 5.62058H9.35696L9.51899 5.45918L10.1752 4.59168L11.277 3.21983L11.763 2.67512L12.3301 2.07392L12.6947 1.78745H13.3833L13.8896 2.53793L13.6628 3.31263L12.9539 4.20837L12.3666 4.96693L11.5241 6.09669L10.9975 7.0005L11.0461 7.07313L11.1716 7.06103L13.0754 6.65754L14.1043 6.47193L15.3316 6.26212L15.8866 6.52035L15.9473 6.78262L15.7286 7.31926L14.4162 7.64205L12.877 7.9487L10.5843 8.48937L10.5559 8.50954L10.5884 8.54989L11.6213 8.64673L12.0628 8.67094H13.1443L15.1575 8.82023L15.6841 9.16723L16 9.59089L15.9473 9.91368L15.1372 10.3252L14.0435 10.067L11.4916 9.46177L10.6167 9.24389H10.4952V9.31652L11.2243 10.0267L12.561 11.229L14.2339 12.7784L14.319 13.1618L14.1043 13.4644L13.8775 13.4321L12.4071 12.3306L11.84 11.8343L10.5559 10.757H10.4709V10.8699L10.7666 11.3017L12.3301 13.6419L12.4111 14.3601L12.2977 14.5941L11.8927 14.7354L11.4471 14.6547L10.5316 13.3756L9.58785 11.9352L8.82633 10.644L8.73316 10.6964L8.28354 15.5181L8.07291 15.7642L7.58684 15.9498L7.18177 15.6432L6.96709 15.1469L7.18177 14.1664L7.44101 12.8874L7.65165 11.8706L7.84203 10.6077L7.95544 10.1881L7.94734 10.1598L7.85418 10.1719L6.89823 11.4792L5.44405 13.4361L4.29367 14.6627L4.01823 14.7717L3.54025 14.5255L3.58481 14.0857L3.85215 13.6944L5.44405 11.6769L6.40405 10.4261L7.0238 9.70387L7.01975 9.59896H6.98329L2.75443 12.3346L2.00101 12.4314L1.67696 12.1288L1.71747 11.6325L1.87139 11.4711L3.14329 10.5996L3.13924 10.6036Z"
6
+ fill="#D97757"
7
+ />
8
+ </svg>
9
+ );
10
+ }
@@ -0,0 +1,10 @@
1
+ export function MarkdownIcon() {
2
+ return (
3
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
4
+ <path
5
+ d="M14.8447 3.33301C15.151 3.33301 15.4455 3.45527 15.6621 3.67188C15.8785 3.88844 16 4.18213 16 4.48828V12.0254C15.9997 12.3315 15.8777 12.6254 15.6611 12.8418C15.4446 13.0581 15.1508 13.1797 14.8447 13.1797H1.15527C0.848967 13.1797 0.55449 13.0584 0.337891 12.8418C0.121288 12.6252 0 12.3307 0 12.0244V4.48828C1.09706e-05 4.18213 0.121501 3.88844 0.337891 3.67188C0.554493 3.45527 0.848951 3.33301 1.15527 3.33301H14.8447ZM1.15527 4.10254C1.10457 4.10245 1.0537 4.11247 1.00684 4.13184C0.960202 4.15116 0.917554 4.17917 0.881836 4.21484C0.845984 4.2507 0.817213 4.29396 0.797852 4.34082C0.778601 4.38756 0.769447 4.43773 0.769531 4.48828V12.0254C0.76962 12.0759 0.779409 12.1262 0.798828 12.1729C0.81827 12.2196 0.846978 12.2621 0.882812 12.2979C0.918602 12.3335 0.961134 12.3616 1.00781 12.3809C1.05454 12.4001 1.10474 12.4102 1.15527 12.4102H14.8447C14.9467 12.4101 15.045 12.3699 15.1172 12.2979C15.1893 12.2258 15.2293 12.1274 15.2295 12.0254V4.48828C15.2296 4.43774 15.2204 4.38755 15.2012 4.34082C15.1819 4.29403 15.1529 4.25166 15.1172 4.21582C15.0814 4.17999 15.0389 4.15126 14.9922 4.13184C14.9455 4.11249 14.8952 4.10258 14.8447 4.10254H1.15527ZM5.38477 7.56348L6.92285 5.64062H8.46094V10.8721H6.92285V7.87109L5.38477 9.79492L3.8457 7.87109V10.8711H2.30762V5.63965H3.8457L5.38477 7.56348ZM12.6924 8.33301H14.2305L11.9229 10.8711L9.61523 8.33301H11.1533V5.64062H12.6924V8.33301Z"
6
+ fill="#262626"
7
+ />
8
+ </svg>
9
+ );
10
+ }
@@ -1,46 +1,13 @@
1
1
  ---
2
2
  export interface Props {
3
3
  title: string;
4
+ children: astroHTML.JSX.Children;
4
5
  }
5
6
 
6
7
  const { title } = Astro.props;
7
8
  ---
8
9
 
9
- <details class="stl-ui-mintlify-compat-accordion" role="button" data-stl-ui-element>
10
- <summary class="stl-ui-mintlify-compat-accordion-title">{title}</summary>
11
- <div class="stl-ui-mintlify-compat-accordion-content" role="contentinfo">
12
- <slot />
13
- </div>
10
+ <details>
11
+ <summary>{title}</summary>
12
+ <slot />
14
13
  </details>
15
-
16
- <style>
17
- @layer stl-ui-mintlify-compat {
18
- .stl-ui-mintlify-compat-accordion {
19
- border-inline-start: none;
20
- padding-inline-start: 0;
21
- border-radius: 12px;
22
- border: 1px solid var(--sl-color-hairline);
23
- overflow: hidden;
24
-
25
- summary {
26
- padding: 16px;
27
- margin-inline-start: 0;
28
- overflow: hidden;
29
-
30
- &:hover {
31
- background-color: var(--sl-color-hairline);
32
- }
33
- }
34
-
35
- .stl-ui-mintlify-compat-accordion-title {
36
- display: flex;
37
- align-items: center;
38
- gap: 8px;
39
- }
40
-
41
- .stl-ui-mintlify-compat-accordion-content {
42
- padding: 16px;
43
- }
44
- }
45
- }
46
- </style>
@@ -1,25 +1,11 @@
1
- <div class="stl-ui-mintlify-compat-accordion-group">
2
- <slot />
3
- </div>
4
-
5
- <style>
6
- @layer stl-ui-mintlify-compat {
7
- .stl-ui-mintlify-compat-accordion-group {
8
- border-radius: 12px;
9
- border: 1px solid var(--sl-color-hairline);
10
- overflow: hidden;
11
- padding-inline-start: -5rem;
1
+ ---
2
+ import { DetailsGroup } from '@stainless-api/ui-primitives';
12
3
 
13
- .stl-ui-mintlify-compat-accordion {
14
- margin: 0;
15
- border-inline-start: none;
16
- border: none;
17
- border-radius: 0;
4
+ export interface Props {
5
+ children: astroHTML.JSX.Children;
6
+ }
7
+ ---
18
8
 
19
- &:not(:last-child) {
20
- border-bottom: 1px solid var(--sl-color-hairline);
21
- }
22
- }
23
- }
24
- }
25
- </style>
9
+ <DetailsGroup>
10
+ <slot />
11
+ </DetailsGroup>
@@ -1,7 +1,14 @@
1
1
  ---
2
- import { Aside } from '@astrojs/starlight/components';
2
+ import { Callout as StainlessCallout, type CalloutVariant } from '@stainless-api/ui-primitives';
3
+
4
+ export interface Props {
5
+ variant?: CalloutVariant;
6
+ children: astroHTML.JSX.Children;
7
+ }
8
+
9
+ const { variant } = Astro.props;
3
10
  ---
4
11
 
5
- <Aside>
12
+ <StainlessCallout variant={variant}>
6
13
  <slot />
7
- </Aside>
14
+ </StainlessCallout>
@@ -1,7 +1,11 @@
1
1
  ---
2
- import { Aside } from '@astrojs/starlight/components';
2
+ import { Callout } from '@stainless-api/ui-primitives';
3
+
4
+ export interface Props {
5
+ children: astroHTML.JSX.Children;
6
+ }
3
7
  ---
4
8
 
5
- <Aside>
9
+ <Callout variant="success">
6
10
  <slot />
7
- </Aside>
11
+ </Callout>
@@ -1,7 +1,11 @@
1
1
  ---
2
- import { Aside } from '@astrojs/starlight/components';
2
+ import { Callout } from '@stainless-api/ui-primitives';
3
+
4
+ export interface Props {
5
+ children: astroHTML.JSX.Children;
6
+ }
3
7
  ---
4
8
 
5
- <Aside type="danger">
9
+ <Callout variant="danger">
6
10
  <slot />
7
- </Aside>
11
+ </Callout>
@@ -1,7 +1,11 @@
1
1
  ---
2
- import { Aside } from '@astrojs/starlight/components';
2
+ import { Callout } from '@stainless-api/ui-primitives';
3
+
4
+ export interface Props {
5
+ children: astroHTML.JSX.Children;
6
+ }
3
7
  ---
4
8
 
5
- <Aside>
9
+ <Callout variant="info">
6
10
  <slot />
7
- </Aside>
11
+ </Callout>
@@ -1,7 +1,11 @@
1
1
  ---
2
- import { Aside } from '@astrojs/starlight/components';
2
+ import { Callout } from '@stainless-api/ui-primitives';
3
+
4
+ export interface Props {
5
+ children: astroHTML.JSX.Children;
6
+ }
3
7
  ---
4
8
 
5
- <Aside>
9
+ <Callout variant="note">
6
10
  <slot />
7
- </Aside>
11
+ </Callout>
@@ -1,7 +1,11 @@
1
1
  ---
2
- import { Aside } from '@astrojs/starlight/components';
2
+ import { Callout } from '@stainless-api/ui-primitives';
3
+
4
+ export interface Props {
5
+ children: astroHTML.JSX.Children;
6
+ }
3
7
  ---
4
8
 
5
- <Aside type="tip">
9
+ <Callout variant="tip">
6
10
  <slot />
7
- </Aside>
11
+ </Callout>
@@ -1,7 +1,11 @@
1
1
  ---
2
- import { Aside } from '@astrojs/starlight/components';
2
+ import { Callout } from '@stainless-api/ui-primitives';
3
+
4
+ export interface Props {
5
+ children: astroHTML.JSX.Children;
6
+ }
3
7
  ---
4
8
 
5
- <Aside type="caution">
9
+ <Callout variant="warning">
6
10
  <slot />
7
- </Aside>
11
+ </Callout>
@@ -1,10 +1,5 @@
1
1
  ---
2
- import {
3
- Dropdown,
4
- DropdownTrigger,
5
- DropdownMenu,
6
- DropdownItem,
7
- } from '@stainless-api/docs-ui/src/components/dropdown';
2
+ import { Dropdown, DropdownTrigger, DropdownMenu, DropdownItem } from '@stainless-api/docs-ui/src/components/dropdown';
8
3
  import { Icon } from '@astrojs/starlight/components';
9
4
  import { buildNavLinks } from './buildNavLinks';
10
5
 
@@ -1,9 +1,9 @@
1
1
  import type { StarlightRouteData } from '@astrojs/starlight/route-data';
2
- import { TABS } from 'virtual:stl-stl-starlight-virtual-module';
2
+ import { TABS } from 'virtual:stl-docs-virtual-module';
3
3
 
4
4
  export function buildNavLinks(starlightRoute: StarlightRouteData) {
5
- // TODO: specify the type of Astro.locals.starlightRoute._stlStarlight
6
- const activeTabIndex = starlightRoute._stlStarlight?.activeTabIndex;
5
+ // TODO: specify the type of Astro.locals.starlightRoute._stlDocs
6
+ const activeTabIndex = starlightRoute._stlDocs?.activeTabIndex;
7
7
 
8
8
  const navLinks = TABS.map((item, index) => ({
9
9
  ...item,
@@ -1,11 +1,10 @@
1
1
  ---
2
2
  import Default from '@astrojs/starlight/components/Sidebar.astro';
3
- import SDKSelect from '../../plugin/components/SDKSelect.astro';
4
- import HeaderLinks from './headers/HeaderLinks.astro';
3
+ import HeaderLinks from '../headers/HeaderLinks.astro';
5
4
  ---
6
5
 
7
6
  <div class="stl-sidebar-header-links">
8
7
  <HeaderLinks />
9
8
  </div>
10
- <SDKSelect />
9
+ <slot name="sdk-select" />
11
10
  <Default><slot /></Default>
@@ -0,0 +1,8 @@
1
+ ---
2
+ import BaseSidebar from './BaseSidebar.astro';
3
+ import SDKSelect from '../../../plugin/components/SDKSelect.astro';
4
+ ---
5
+
6
+ <BaseSidebar>
7
+ <SDKSelect slot="sdk-select" />
8
+ </BaseSidebar>
package/stl-docs/index.ts CHANGED
@@ -40,14 +40,21 @@ function stainlessDocsStarlightIntegration(config: NormalizedStainlessDocsConfig
40
40
  }
41
41
 
42
42
  type ComponentOverrides = StarlightConfigDefined['components'];
43
+ const plugins = [...config.starlightCompat.plugins];
44
+
43
45
  const componentOverrides: ComponentOverrides = {
44
- Search: '@stainless-api/docs/Search',
45
- Sidebar: '@stainless-api/docs/Sidebar',
46
+ Sidebar: '@stainless-api/docs/BaseSidebar',
46
47
  Header: '@stainless-api/docs/Header',
47
48
  ThemeSelect: '@stainless-api/docs/ThemeSelect',
48
49
  ContentPanel: '@stainless-api/docs/ContentPanel',
49
50
  };
50
51
 
52
+ if (config.apiReference !== null) {
53
+ componentOverrides.Sidebar = '@stainless-api/docs/SDKSelectSidebar';
54
+ componentOverrides.Search = '@stainless-api/docs/Search';
55
+ plugins.unshift(stainlessStarlight(config.apiReference));
56
+ }
57
+
51
58
  // TODO: re-add once we figure out what to do with the client router
52
59
  // if (config.enableClientRouter) {
53
60
  // // logger.info(`Client router is enabled`);
@@ -94,12 +101,12 @@ function stainlessDocsStarlightIntegration(config: NormalizedStainlessDocsConfig
94
101
  ],
95
102
  routeMiddleware: [...config.starlightCompat.routeMiddleware, '@stainless-api/docs/tabsMiddleware'],
96
103
  customCss: ['@stainless-api/docs/theme', ...config.customCss],
97
- plugins: [stainlessStarlight(config.apiReference), ...config.starlightCompat.plugins],
104
+ plugins,
98
105
  });
99
106
  }
100
107
 
101
108
  function stainlessDocsIntegration(config: NormalizedStainlessDocsConfig): AstroIntegration {
102
- const virtualId = `virtual:stl-stl-starlight-virtual-module`;
109
+ const virtualId = `virtual:stl-docs-virtual-module`;
103
110
  // The '\0' prefix tells Vite “this is a virtual module” and prevents it from being resolved again.
104
111
  const resolvedId = `\0${virtualId}`;
105
112
  let redirects: NormalizedRedirectConfig | null = null;
@@ -116,6 +123,10 @@ function stainlessDocsIntegration(config: NormalizedStainlessDocsConfig): AstroI
116
123
 
117
124
  updateConfig({
118
125
  vite: {
126
+ ssr: {
127
+ noExternal: ['@stainless-api/ui-primitives'],
128
+ },
129
+ optimizeDeps: { include: ['@stainless-api/ui-primitives'] },
119
130
  plugins: [
120
131
  {
121
132
  name: 'stl-docs-vite',
@@ -132,6 +143,7 @@ function stainlessDocsIntegration(config: NormalizedStainlessDocsConfig): AstroI
132
143
  HEADER_LINKS: config.header.links,
133
144
  HEADER_LAYOUT: config.header.layout,
134
145
  ENABLE_CLIENT_ROUTER: config.enableClientRouter,
146
+ INCLUDE_AI_DROPDOWN_OPTIONS: config.includeAIDropdownOptions,
135
147
  });
136
148
  }
137
149
  },
@@ -166,6 +178,7 @@ export function stainlessDocs(config: StainlessDocsUserConfig) {
166
178
  process.exit(1);
167
179
  }
168
180
  const normalizedConfig = normalizedConfigResult.config;
181
+
169
182
  return [
170
183
  react(),
171
184
  stainlessDocsStarlightIntegration(normalizedConfig),
@@ -58,7 +58,7 @@ export type HeaderLink = {
58
58
  };
59
59
 
60
60
  export type StainlessDocsUserConfig = {
61
- apiReference: StainlessStarlightUserConfig;
61
+ apiReference?: StainlessStarlightUserConfig;
62
62
  tabs?: Tabs;
63
63
  header?: {
64
64
  layout?: HeaderLayout;
@@ -126,8 +126,9 @@ function normalizeConfig(userConfig: StainlessDocsUserConfig) {
126
126
  routeMiddleware: normalizeRouteMiddleware(userConfig),
127
127
  },
128
128
  enableClientRouter: userConfig.experimental?.enableClientRouter ?? false,
129
- apiReference: userConfig.apiReference,
129
+ apiReference: userConfig.apiReference ?? null,
130
130
  sidebar: userConfig.sidebar,
131
+ includeAIDropdownOptions: userConfig.apiReference?.includeAIDropdownOptions ?? false,
131
132
  };
132
133
 
133
134
  return configWithDefaults;
@@ -1,7 +1,7 @@
1
1
  import type { StarlightRouteData } from '@astrojs/starlight/route-data';
2
2
  import { defineRouteMiddleware } from '@astrojs/starlight/route-data';
3
3
 
4
- import { SPLIT_TABS_ENABLED, TABS } from 'virtual:stl-stl-starlight-virtual-module';
4
+ import { SPLIT_TABS_ENABLED, TABS } from 'virtual:stl-docs-virtual-module';
5
5
  import clsx from 'clsx';
6
6
 
7
7
  // this fn is loaded in the plugin via addRouteMiddleware
@@ -143,7 +143,7 @@ export const onRequest = defineRouteMiddleware(async (context) => {
143
143
  }
144
144
 
145
145
  // We store the active tab index so we can use it in our nav tabs component
146
- context.locals.starlightRoute._stlStarlight = {
146
+ context.locals.starlightRoute._stlDocs = {
147
147
  activeTabIndex: activeTabIndex.index,
148
148
  };
149
149
 
package/styles/page.css CHANGED
@@ -64,7 +64,7 @@
64
64
  align-items: center;
65
65
  justify-content: space-between;
66
66
  gap: 1rem;
67
- padding: 1rem 1rem 0;
67
+ padding: 1rem 0 0 1rem;
68
68
  flex-wrap: wrap;
69
69
  }
70
70
  }
package/theme.css CHANGED
@@ -1,5 +1,7 @@
1
1
  @layer starlight.base, starlight.reset, starlight.core, starlight.content, starlight.components, starlight.utils;
2
- @layer starlight, docs-ui, stl-ui, stainless;
2
+ @layer starlight;
3
+ @layer stl-ui.typography, stl-ui.components;
4
+ @layer stl-ui, docs-ui, stainless;
3
5
 
4
6
  @import './styles/fonts.css';
5
7
  @import './styles/variables.css';
@@ -13,3 +15,11 @@
13
15
  @import './styles/sdk_select.css';
14
16
  @import '@stainless-api/ui-primitives/styles.css';
15
17
  @import './styles/mintlify-compat.css';
18
+
19
+ @import '@stainless-api/docs-ui/src/styles/resets.css';
20
+ @import '@stainless-api/docs-ui/src/styles/primitives.css';
21
+ @import '@stainless-api/docs-ui/src/styles/main.css';
22
+ @import '@stainless-api/docs-ui/src/styles/snippets.css';
23
+ @import '@stainless-api/docs-ui/src/styles/search.css';
24
+
25
+ @import './components/variables.css';
@@ -18,9 +18,10 @@ declare module 'virtual:stl-starlight-virtual-module' {
18
18
  export const PROPERTY_SETTINGS: PropertySettingsType;
19
19
  export const MIDDLEWARE: StlStarlightMiddleware;
20
20
  export const SEARCH: StainlessStarlightUserConfig['search'];
21
+ export const INCLUDE_AI_DROPDOWN_OPTIONS: boolean;
21
22
  }
22
23
 
23
- declare module 'virtual:stl-stl-starlight-virtual-module' {
24
+ declare module 'virtual:stl-docs-virtual-module' {
24
25
  import type { ButtonVariant } from '@stainless-api/ui-primitives';
25
26
  import type { AnchorHTMLAttributes } from 'react';
26
27
 
@@ -40,4 +41,5 @@ declare module 'virtual:stl-stl-starlight-virtual-module' {
40
41
  export const SPLIT_TABS_ENABLED: boolean;
41
42
  export const HEADER_LAYOUT: 'default' | 'stacked';
42
43
  export const ENABLE_CLIENT_ROUTER: boolean;
44
+ export const INCLUDE_AI_DROPDOWN_OPTIONS: boolean;
43
45
  }